tech

Developer Relations: (More Than) The Art of Talking Good

Thank you to Sarah Drasner and Chloe Condon and Matty Stratton for reading this over and making sure there are only a few typos.

If you’ve come out from under your Christmas tree with a stomach full of cookies and fudge to hop on Twitter, you’ll have discovered that Developer Relations is taking some heat. Again.

Over the last few weeks, some influential members of tech have criticized developer relations — hard. Even going so far as to say it’s worthless and the role should be eliminated. Ouch.

What Is Developer Relations?

Well, great question. A lot has been written on the topic. I highly recommend Mary Thengvall’s book, The Business Value of Developer Relations. The truth is, there are a lot of definitions and the industry as a whole is still developing and figuring it out.

In my opinion, someone in developer relations serves as an advocate for the tech community within their company. And we do a lot more than go to conferences. We use the product and give feedback, we help product teams prioritize, we develop tools to help you use the product, we write tutorials, we make connections between people and departments. We write, we speak, we code, we do a little bit of everything. And we work with engineering, marketing and product departments — helping them all communicate with each other.

When I go to a conference, I’m never one to drop in, give a talk and then book it. (Unless there is a damn good reason.) Because I don’t gain anything by giving a talk and leaving. That’s self-serving and useless.

The value I get from conferences is, well, talking to you. I listen. I may not get it right every time or get to talk to each of you, but I really do listen. And I really do care. I take the stories you tell me and bring them back to my team and my company. I am a catalyst that serves to amplify your voice and, hopefully, help deliver you a better product.

That information is absolutely priceless to Microsoft, my employer. And that actually translates into money for the company. I’ll touch on this later but I do want to be absolutely clear about one thing: there is ZERO expectation that I sell you some Azure. I would quit if that ever became a measure of my success. (Because that means I’d be in sales and should be making more money.)

If I can point you to a service in Azure that actually solves your problem, awesome. But I will NEVER point you to Azure — or anything Microsoft — unless I absolutely believe it’s the best product for you.

The more valuable conversations I have with you, the better Microsoft can build out Azure. You can help us improve. Because it is still an immature product in some ways, it’s pliable. My excitement about Azure is just that — we actually want your input. And we’re acting on it.

A Bit Of A DevRel Bubble

Yes, I said it. I believe there’s a developer relations bubble. At some point in the last few years, companies woke up to this idea of developer advocacy. We can thank the API. Because developers are the ones who have to implement APIs and (usually) choose the tools to use, tech companies realized traditional sales and marketing wouldn’t work. Engineers can smell a salesperson like a shark smells blood. And they’re not having any of it.

Please don’t take this to mean I have a problem with sales and marketing. I used to work in PR and marketing. I actually believe those departments play a fundamental role in business and do a lot of the work you and I don’t really want to do. (Isn’t that crazy?! It’s like different skill sets and interests make for a good team…)

Microsoft has completely turned around their relationship with the tech community. This is a company that went from actively trying to undermine and destroy opensource communities to contributing enormous amounts of work toward opensource software. That’s quite the turnaround. One I believe in and stand behind.

Microsoft has also made quick work of hiring huge swaths of people in developer relations. My team employs dozens of engineers with a vast variety of skill sets, backgrounds, interests and styles. Not to mention personalities.

And we’re not the only team growing quickly.

Maybe there will be a contraction in the developer relations market, maybe there won’t. But I do think the industry is in its teenage years of growth. We’re discovering who we are and occasionally appear a bit acne-ridden and hormonal.

My Value-Add

I fear we’ve conflated “influence” — or, really, number of followers on twitter — with skill in developer relations. I think this is bullshit and I loathe the belief that because someone has a large number followers that they’re better or more valuable than someone who writes code all day or supports infrastructure or anything else.

We all contribute to this community. It’s just in different ways. And we need to stop arguing over the value of each contribution. This is not something that should be stack ranked because people should not be stack ranked.

The truth is I think I’m a pretty average engineer. I can write code. And I contributed to my team when I developed APIs and (macro)services full-time. But I’ll never be the most brilliant engineering mind in the room. And I think that’s all right. I actually really like it because I get to listen to and learn from all you brilliant people. It’s just not my value-add.

My contribution to the community is that I’m gifted at storytelling. I can listen to a brilliant mind talk about something obtuse and hard and distill that information into something that is palatable for the audience.

I think this is actually why I excel in the DevOps space. Because I’m able to experience a pain point with someone and put that feeling into words with clarity and confidence. I enable other people to communicate their feelings and frustrations in productive ways.

Because I’m not an expert — in anything — I serve as a bridge between people and communities. That is my value-add. That is my passion. And that is why I care about this community (and you) so deeply.

I’m Human Too

Up until earlier this year I operated under an assumption. I believed Twitter was an extension of real life. I believed others knew me. The real me. Knew my reputation. Knew my heart.

What I didn’t realize is that something had already happened. At some point prior to that moment, I stopped being a person. And I became a persona.

That is not something I chose. It is not something I would ever choose. I am real. And human. And flawed. I talk to my daughter about a growth mindset all the time. That we have to be able to screw up, own it and then fix it. That philosophy is important to me.

Fewer than 500 people have a good idea of who I am. Fewer than 50 actually know me. Fewer than 5 understand my deepest hopes and ambitions and fears and regrets.

Five people don’t follow me on Twitter. Nor do 50. Nor do 500. I now have over 10K followers.

Our emphasis on Twitter disgusts me, but that’s a different topic. My point is this — most of the people who follow me on Twitter understand a fraction of who I am. They don’t know or understand all of me. I am basically a horcrux. (Minus the murder-y bit.)

And if you’re thinking, Isn’t that inauthentic? Again, excellent question! One I have toiled over for almost a year. How can I be genuine and authentic while still retaining my reputation and ensuring I maintain my approachability?

Because the truth is there are bad actors out there. There are people who want to see me (and my team) fail. And those people can’t wait for me to screw up.

Those are the people who steal my humanity on the internet. Those are (some of) the people who make Twitter — and tech — unsafe. Those are the people who deny us our ability to be vulnerable with each other, make mistakes and then figure it out. Together.

Criticism Hurts

The people you follow on Twitter have bad days. They get frustrated. They have conflict with people. And when they type something flippantly out of an expression of their human emotion, things can get out of hand pretty quickly.

One of the things that bothers me most about tech is how many people — including “influencers” — knock each other down in extremely public ways. I want to hear from the positive voices. I want to hear who’s doing great work. Who’s struggling. Who needs love and support. Who is excited about something new. Who had a baby or got a puppy. Life is way too short to be cutting each other down, especially when our community is so small. All that does is put us back on the playground in school. It makes us bullies and we’re better than that.

Personally, this criticism of developer relations hurts. It’s my work. It’s what I do. It’s what I care about. And to have it so easily dismissed as something that’s useless or simply being a Twitter celebrity makes me sad. That’s certainly not what most of us feel is our job. And I’m going to work to better convey what I, and my team, do.

You Don’t See All The Work

A lot of the work of developer relations is done behind closed doors. No, I will never criticize Microsoft on Twitter. Mostly because if you do follow me, you know I have extremely strong feelings about public criticism and public shaming. I also won’t do that because that’s simply not being a professional.

But mostly I won’t speak poorly about Microsoft because Microsoft isn’t a single entity. It’s a collection of people. And those people also have feelings.

If I slam a product or service I don’t like on Twitter, I’m publicly making a whole lot of engineers who put lot of work into it feel like shit. And that’s not behavior I find acceptable.

If you’re an engineer, you know so much of your job is making tough choices. How can you solve this problem given your resources? What gets cut? What technical debt is acceptable? What risks are you willing to take with your availability and security?

Sometimes, with hindsight, those decisions weren’t the best. But they were made with the best intentions and there are real people behind the products we love (and hate). So no, I’m never going to publicly share which products I think need drastic improvements.

But I do work internally to carry that feedback to the teams in a humane and respectful way. In fact, I’m moving onto an internally-focused team within the Developer Relations organization at Microsoft whose mission is to help product teams maintain their momentum, improve their products and ensure design decisions are made with engineers in mind.

Incentives

There’s been some concern that those of us who work in developer relations for large companies are biased toward that company’s products or that we feel pressure by our employers to say good things about the products.

I’m still pretty new and just now digging into Azure. (I have some things I want to do around Azure as I learn it so keep an eye out.) But let me assure you, I will not be promoting something I don’t believe in. Azure is great for some problems and not for others. Like all products. There’s no one-size-fits-all in tech, nor should there be.

Much of my ability to be successful in developer relations is based on reputation. And I won’t sacrifice that for any company.  

I have also never felt any pressure from anyone in the organization to go out into the community and evangelize Microsoft. Personally, I haven’t had a deeply technical product to work with in over a year so I’m excited to dig into it. But if I wanted to go around and only talk about DevOps or engineering management and never mention Microsoft, my managers would be supportive.

Remember, my value to Microsoft is that I gather honest feedback from the community and ensure our products are built for you.

I am not a developer marketer. I am not an influencer marketer. I don’t consider myself an influencer. I hate the term thought-leader. I think of myself as someone who struggles just like you. And I believe if we stick together, we can have enormous positive impact on our community and our world. Whether you’re a developer or a developer advocate.

Stop Being Mean

The day everyone stops being mean to each other is the day I never get on another stage ever again. And yet, here we are. We’re still making ourselves feel better by cutting other people down. We’re still conflating personal problems with individuals to entire groups of people. We’re still subtweeting. We’re still gossiping. And we’re still making other people feel unsafe.

I hate it. This — THIS — is the thing that keeps me up at night. All my talks are different. But they’re also all the same. Be kind. Give grace. Learn. Be humble. Forgive.

You aren’t perfect. Neither am I. We all have bad days. But please remember that the people whom you criticize are people with feelings. And many of those people are fighting for you — whether you see it or not.

Dr. Seuss Guide to Code Craftsmanship

I have a two-year-old daughter who adores Dr. Seuss. And as I was reading Cat in the Hat for the 214th time, I realized Dr. Seuss had it all figured out.

His words are odd. The cadence confusing. But there’s a gem hidden in all his children’s rhymes.

You see, Dr. Seuss would have made an excellent engineer. Because great code isn’t about choosing the perfect method name or building out 95% test coverage. All that is great, but it doesn’t make great code.

YOU DO.

It likely never feels that way. There’s a rhythm to software development that goes something like this:

  1. “Easy. I’ve got this.”
  2. “Uhhh, maybe not.”
  3. “HALP! I have no idea what the f*ck I’m doing.”
  4. "How did I not think of that before?"
  5. “I AM A GOD.”  

This process is okay if you’re comfortable having a mild psychotic break every sprint. I’m not.

I think we’re going about it all wrong. Putting ourselves — our egos — above our code. No judgment. I do it too. We’re human. It’s okay. 

But I think we can bypass our egos and the emotional ups and downs it produces. 

Imposter Syndrome

If you haven’t heard of imposter syndrome, it’s a concept describing high-achieving individuals — like you! — who struggle to internalize their accomplishments and experience a persistent fear of being exposed as a "fraud."

And if you think I don’t feel like a total fraud every time I stand up in front of a crowd at a conference, you’re wrong. 

I think any thoughtful, intelligent person deals with self-doubt. Some of us deal with it a lot. 

A few months ago, I did something pretty stupid. I volunteered to demonstrate a mock technical interview in front of 100 students.

My motivation was pure. Students at Turing, the code school where I learned to program, are terrified of technical interviews. Because they’re scary. Right?!

(And junior engineers seem to think seniors code like Neo.)

So my mentor, Ian Douglas, and I thought we’d show them what to expect. Ian would throw some tough questions at me and I’d illustrate how to handle questions you don’t know the answer to. 

I don’t normally quote Mike Tyson, but he has one great saying I love. “Everyone has a plan until they get punched in the mouth.” 

Dr. Seuss.019.png

Ian asked his first question and I froze. I realized that 100 people were staring at me. Expecting me to know the answer. And that all of them would leave thinking I’m an idiot. 

Which left me looking a lot like a sad pug — can we make #sadpug a thing?! It was scary, but I muscled through it as best I could. Like every technical interview I’ve had, I left feeling a bit down. The quiet but persistent whisper of doubt left me skeptical of my technical abilities. And I started wondering again if I was really cut out for engineering.

This feeling was reinforced when I found out a student had expressed disappointment at my performance to Ian. He thought my answers were weak and, if it were a real interview, I should not be offered the job. 

Gonna be honest, I cried. 

Because it fed into all the doubts I’ve had over the last year. When I graduated Turing I had a lot of success in the job search. I was offered 4 jobs which made me feel extraordinarily lucky and wonder if I somehow oversold my talent in those interviews. 

But the last year hasn’t been easy. I’ve struggled. And I’ve worried constantly that I haven’t been growing fast enough. That I had beginner’s luck. That I won’t be able to get another job. Certainly not one I love. 

Imposter syndrome isn’t limited to me or you or this industry. Imposter syndrome is a human problem. There’s something called negativity bias. And it’s played a crucial role in keeping humans alive all this time. Basically, if we hear a noise in the dark, our brains assume it’s a lion about to eat us. Not a mouse scrambling through the grass. 

Negativity bias is awesome if predators are an everyday threat. But we don’t have to worry about being eaten much these days. These days, negativity bias adds stress and anxiety to our lives. Certainly to mine. Who’s had a good day only to wonder what disaster is awaiting you around the next corner? As if we can only have so much good before it’s balanced out by something terrible.

Like many of you, my heroes are the extraordinary men and women in history who stood up against a fearsome power and overtook it. The little guy going toe-to-toe against the giant. And, against all odds, winning. 

I love stories of underdogs. I actually think we all do. Because it’s fundamental to American culture. We were founded by rebels and embody the attitude of we’re gonna make it on our own — no matter what it takes or how hard it is. 

It doesn’t matter the risks. It doesn’t matter the odds. We believe, as a people, that hard work can overcome just about anything. 

I like to think sometimes about what it felt like to be Caesar standing before the Rubicon or Hannibal facing the Alps. I picture strong, confident men. Filled with hubris and might. Commanding enormous armies filled with men loyal to their cause and their cult of personality. 

But I know how their stories ended. They — in that moment — did not.

Abraham Lincoln might never have been president. (He had lost 8 elections prior.) George Washington could have been hanged for treason. And Rosa Parks might have decided to sit where she was supposed to.

It’s easy to look at historical figures and think how courageous they must have been. How sure of themselves they were to take the action they did. They weren’t. Like each of us would be, they were scared. Afraid they would fail.

Dr. Seuss

Dr. Seuss started life as Theodor Seuss Geisel. His first book, Mulberry Street, was rejected 27 times. 

Walking home from the book's twenty-seventh rejection, with the manuscript and drawings tucked under his arm, he ran into a friend from Dartmouth College. His friend — Mike McClintock — had been made editor of children’s books that morning at Vanguard publishing. 

Geisel said later “If I’d been doing down the other side of Madison Avenue, I’d be in the dry-cleaning business today.” 

It may feel as if all your accomplishments can be attributed to luck. And everyone else’s to their intelligence and hard work. That’s not true. Every success story is a little of both. 

So if we know this is the reality, how can we feel like it in our everyday lives? Dr. Seuss has some hints. 

 

Find A Mentor

Sometimes the questions are complicated and the answers are simple.

I firmly believe that your mentors should be people outside of work. It’s important to remember that humans are motivated by different things and sometimes it creates a conflict of interest. 

For example, your boss — as awesome as he or she may be — will likely not recommend you ask for $20,000 more than you currently make because he or she does not want to pay you that. Whereas someone without that conflict of interest may recognize that you’re currently underpaid. 

I have 2-3 mentors in tech whom I trust implicitly. Whenever I need encouragement, honest feedback or career guidance, I call them. They’re generous with their time and believe in me as a person and as a professional. 

That all sounds great. But how do you go about finding a mentor? 

My best advice is to be vulnerable. Do the scary thing. Reach out to people you respect and ask them to coffee. Mentorship doesn’t have to be a formal arrangement. It can be an organic friendship between two professionals. 

 

!Networking

Why fit in when you were born to stand out?

People talk a lot about the importance of networking. But, to me, networking conjures an image of a silver-tongued salesman with slicked back hair working a room and collecting business cards. I don’t know about you, that’s not my kind of thing. I’d rather sit at home and watch Netflix. 

So let’s not call it networking. Let’s call it connecting. And that requires vulnerability — the foundation of genuine relationships.

There are jerks in this world. And being vulnerable is risky. Everyone in this room has had their hearts broken. We’ve been hurt. Exposed. Rejected. That’s why we have walls. To protect us. 

But there are an extraordinary number of wonderful human beings that walk this planet. Those are the people I’m asking you to be vulnerable for. Those people are good and kind and trustworthy. They deserve to know you.

 

Be You

Today you are You, that is truer than true. 
There is no one alive who is Youer than You.

The real you. Nobody is better at being you than you. Seriously. Your authentic self is a 1000% better than you acting like someone else. If you spend your time thinking you need to be different, you’re cheating yourself — and the world — of something amazing. You. 

The freedom you will feel when you are authentically you is flabbergasting. Plus, the rest of us get to know someone pretty freaking cool. 

 

Stay Curious

You have brains in your head. You have feet in your shoes. 
You can steer yourself any direction you choose.

If you haven’t read Mindset by Carol Dweck, I really can’t recommend it enough. It’s a life-changing book about growth mindset and enthusiastically learning new things without fear of being “bad” at it. 

It rejects the notion that we are limited to our god-given talents and instead focuses on the ability to learn new skills. Even if we’re initially pretty terrible at something. 

I think a great way to exercise this concept is to constantly try new things and take lessons in random subjects. I have a friend who takes improv and another who’s in salsa classes.

A few years ago, I decided to get my motorcycle license. Will I ever own a motorcycle? Probably not.

But, much to the chagrin of my mother, I wanted to prove to myself that I could do it. I showed up to a classroom of adrenaline-junkie 18-year-olds and one recently retired man. I didn’t exactly fit in. But guess what? It was a blast. It didn’t matter that I looked like an idiot. And, to be clear, I definitely looked like an idiot. But I had fun and I learned something new. 

You all are here, which means you care about learning and growing. Never let that be extinguished. If learning fuels you, make sure you make it a priority. Which brings me to...

 

Keep Learning

The more that you read, the more things you will know.
The more that you learn, the more places you’ll go.

Negotiate an educational stipend. When you start a new job, ask what the budget is for conferences. And don’t accept “it’s as needed” as a response. It blows my mind how many of my peers have to beg their boss for a $150 ticket to a local conference when sales and marketing regularly spend $2000 on booze for potential clients. 

Developers must adapt to changing technology. That means constantly learning and absorbing information. Your job isn’t to pump out 40 hours worth of code every week. Your job is to be a subject-matter expert and continuing education is a huge contributor to your success in that role.

 

Take Small Risks

If you never did you should. These things are fun, and fun is good.

If you want to learn a new technology or implement a change at work, do it. It’s better to beg for forgiveness than ask for permission. Create a proof of concept and then advocate for it. 

And don’t be afraid to fail. Everyone in this room has or will bring down the site at one point in their career. That’s awesome. Because that means you’re trying. You’re doing something. Keep doing that. 

And when you do fail, publicize it.

 

Publicize Failure

Today was good. Today was fun. Tomorrow is another one.

This is admittedly a weird one. But start sharing when you screw up is especially a great idea for those of you who are senior or principal engineers. 

It’s the best thing you could do for your team. When people I respect tell me their mistakes, it sends the signal that it’s okay to take risks and fall flat on your face. And you’ll be amazed at the response. You’ll see your team share lessons learned and become more collaborative.

A culture of being “right” all the time is toxic (and all too common). Collaboration will nosedive, silos will develop and people will cover their tracks when something goes wrong.

 

Celebrate Your Successes

Unless someone like you cares a whole awful lot, nothing is going to get better. It’s not.

I like to keep a “Yay Me!” file. Whenever someone sends me a nice note or emails my boss about what a great job I did on something, I save it in my “Yay Me!” folder. 

The alternative to this is to keep a gratitude journal. And before you scoff at the image of a diary on your nightstand, hear me out. Taking the last 5 minutes of your day to jot down the 3 things you were most grateful for that day is a surprisingly helpful practice. 

Remember negativity bias? We focus on the bad by our nature. Reminding yourself of everything going right in your life does wonders for your mental health.

 

Keep Going

And will you succeed? Yes you will indeed! (98 and 3/4 percent guaranteed.)

I’m a fan of running toward the open door until the moment it closes. Perhaps you want to launch a business in a year. Or move to a different city. Or just found out you’re expecting a child. The natural inclination is to start planning, to think a year in advance and have that plan dictate your everyday behavior at work. 

Don’t. There’s no reason to treat the next year as biding time. Just keep going and figure everything out later. Avoid planning in detail so far in advance — it only causes you to slow down and not take opportunities that you normally would. Anything could happen, plans fall through. Just keep going, but...

 

Pace Yourself

Step with care and great tact, and remember that life’s a great balancing act.

Burnout is real, folks. I’ve been in this industry a year and I can already feel the reaper coming for me. If you’re ambitious, the hardest thing to do is to recognize that careers are marathons, not sprints. 

Embrace work/life balance. Make it a priority. 

I went through Turing with a 6-month-old. Which meant my schedule was pretty intense. I woke up, got her to the nanny and went to school. I left school at 4:00, ate dinner and put her to bed. Then I did homework from 6:00 – 9:00 before going to bed (more like collapsing). That routine was my life for 7 months. 

It wasn’t easy. There were a lot of tears and wine involved. But my daughter was a critical part of my success in school. She gave me balance. Demanded I stop. Take a break. Play. Read books. And say goodnight. She gave me a break from coding and school provided me a reprieve from being a mom.  

Don’t answer emails after dinner. Don’t look at your phone the minute you wake up. Don’t work on the weekends. 

Play is not just a different kind of work. Find what you love and embrace it with child-like joy. Eat great food. Spend time with your families. And pick up that hobby you’ve been thinking about for the last few years. We get one life. And we all deserve to enjoy the shit out of it. 

 

Don't Be an Asshole

A person’s a person, no matter how small.

It’s golden rule time, folks. I’m amazed at how small of a world it really is. And people truly matter. They’re really all that matters.

It’s easy to go full Frank Underwood when you’re in a position of power. When you have the advantage. But take a step back. Be kind.

I believe we get what we give. You can’t control the behavior of others, but you can definitely control your own. Empathy is a powerful tool. Use it. You have absolutely no idea what someone else is going through. 

 

Embrace Your Humanity

Think and wonder, wonder and think.

You’re not a snowflake. Neither am I. Who’s left a crappy job and thought, “Good luck, you won’t last two weeks without me!” Only to find out the business kept on chugging along. The future of the planet doesn’t rest on your shoulders. Nor mine. And think about what a relief that is! I feel less stressed just thinking about it. We’re humans. We’re fallible. 

Here’s the cool thing. The more human you are, the more vulnerability you show, the more people will grow to trust you. 

None of this is to say you can’t make an impact. Quite the opposite. You will leave your footprint on this world. Whether it’s with the people you love most, your community or the globe. But you can let go of the pressure that you’re critical to everything. People will pick up the slack if you let them. Relax. Let go.

 

Value Old Friends

You’re in pretty good shape for the shape you are in.

Hold onto your childhood friends. The people who knew you when you were young are the most honest friends you’ll have. They don’t expect anything of you. They don’t see you as fancy or special or important. 

To them, you’re still the scrawny kid with glasses who sucks at kickball. And they love you anyway.

They’ll kick your ass when you need a dose of reality and they’ll sit beside you in silence during the worst moments of your life. 

They’re not perfect. None of us are. But they’re worth more than gold. Make sure you tell them that.

 

Make New Friends

Think left and think right and think low and think high. 
Oh, the things you can think up if only you try!

Create a small group of trusted peers. I have two groups like this. One is more for shooting the shit with people I like and the other is focused on goal accountability. 

The former is a small group of wicked smart, ambitious, female developers. They’re strong, resilient and full of grit, which means they inspire me and lift me up when I need it. 

The latter is called Wine + Goals because we literally drink wine and discuss goals. (No one said we were creative.) One Wednesday a month, 7-8 of us from varying industries and career paths sit down to discuss our highs and lows of the month and our goals for the next. Then we’re randomly assigned an accountability partner for the month, who checks in on how things are going. It’s a small, friendly kick-in-the-ass. 

 

Embrace the Suck

“Everything stinks till it’s finished.

Some days are going to suck. Nothing will go right. 

You’ll get decaf coffee and a fork with your oatmeal. It’ll take you 3 hours to debug a method only to realize you reversed a boolean value and should have figured it out 2 hours and 59 minutes ago. Not that that’s happened to me. You’ll get in a fight with a loved one and hit every single red light on the way home. 

Want to know what I do on those days? I break out a bottle of wine — yes, I drink a lot of wine — run a bath and turn on Real Housewives.

What I don’t do is start evaluating my life choices. Let bad days pass by. Look forward to the morning. Start again. 

 

Quit Comparing

I’m afraid that sometimes you’ll play lonely games too. Games you can’t win ‘cause you’ll play against you.

Stop comparing yourself to others. I know, I know. Easier said than done. But one of the most detrimental things you can do yourself is compare your bloopers to someone else’s highlight reel. 

I’m a great example of this. When I give a conference talk, I know every time I say "um" or "so," miss a bullet point or get off-track. But it’s not nearly as obvious to the audience (hopefully). 

Remember imposter syndrome? It would be very easy to look at me and assume that I must know more than you. But I don’t. I promise. You know things I don’t. And everyone has something to contribute.

Focus on what you can give. Forget about what the person next to you is doing.

 

Life is Short

How did it get so late so soon?

But it’s also long. Many of the choices you make won’t matter. Some will matter a lot. 

Live your life. Enjoy every moment of it. Friends who make you feel bad about yourself aren’t friends at all. Drop them. Surround yourself with people who inspire you, challenge you and love you. 

Play. And laugh. Show humility. Never stop learning. Be kind. And remember… 

 

"You have brains in your head. You have feet in your shoes.

You can steer yourself any direction you choose. 

You’re on your own. And you know what you know. 

And YOU are the guy who’ll decide where to go."

 

YOU are what makes your code great. I believe in you. And you should too. 

 

Implementing Quicksort

A few weeks ago, Ian Douglas asked me to help give mock technical interviews for Turing students. As someone coming out of a code school, tech interviews are the emotional equivalent of walking into Mordor. They're absolutely horrifying. (Full disclosure: I cry after every tech interview. And then drink heavily. I can't be the only one.)

I've been thinking a lot about the questions asked lately. And, unsurprisingly to you, O(n) and sorts come up frequently. I'm not going to go into too much detail about O(n) because, frankly, I don't feel qualified. Greek symbols in math scare me. They're like warning signs for the rest of us. 

For developers, the purpose of these questions is to measure your understanding of time complexity — the length of time your algorithm (function, method, code) takes to process the result.

O(n) refers to linear time. The algorithm will take more time proportionate to the size of the input. 

 
o(n).001.png.001.png
 

Sample Problem

Let's take an interview question like: Write a function that takes a list of integers and returns it from least to greatest in O(n) time. Godspeed if you have to do this on a whiteboard. Sending good thoughts your way. 

Sorts have always fascinated me and I don't know much about them so it's a great opportunity to learn something new. (If you haven't seen the Hungarian folk dance of bubble sort, you're missing out.)

I'm the first to admit that computer science fundamentals are a growth area for me. I'm far from an expert in the area of well-known algorithms. A little googling and I found that the most reliably linear algorithm for sorting is quicksort. Awesome. (I should say here that algorithms are always evaluated on worst-case scenario. And in worst-case, quicksort is not O(n). That said, it's pretty darn good.)

A little more googling and it turns out quicksort should be called hardestsort. But I decided to give it a shot anyway. 

An article on DevCamp gave me a start. But, Ruby's syntactic sugar was too much for me. I couldn't tell what was happening. This solution is beautiful, but I need to keep looking.

This StackOverflow post (note the verbose quicksort algorithm toward the bottom) led me to Khan Academy and helped me break down what exactly is happening. 

Here's how quicksort works:

  1. You have a list. Yay for arrays!

  2. You choose a pivot point. This is an index in the list you'll use to split the array into three parts: the left array, the pivot and the right array. From my research, I've seen the pivot selected randomly, as well as first or last index being used. Let's talk about this using the first item in the array as the pivot.

  3. Compare the pivot to the value to its right. If the pivot is smaller than its neighbor, leave it. If the pivot is larger than the value to the right, switch their positions.

  4. Buckle up for recursion. Move the pivot and do the same thing.

Handcrafted Quicksort

Let's dive into some code. 

If you're still confused about what's happening, let's look at the output. This is the list each time we call quicksort(). I added a bit of color whenever two values are swapped.

 
$ quicksort([0, 7, 0, 87, 4567, 18, 65, 55, 55, 99, 987, 2345678, 0, 1, 10000])
 

Pretty cool, huh? 

Fancy Quicksort

OK, I feel like I have much more of a grasp of what's actually happening. I'd be lying if I said I could deliver an hour-long lecture about it, but I'm learning!

I wanted to revisit the "elegant" version I saw before. And found this lovely video.

To the code, Batman! 

This implementation involves meta-programming (I'm a little nervous about this) and extending the Array class. 

OMG is that so much better that the first go. 

Remember how we pass the block in with the less than symbol? This sorts the numbers greatest to least. If you were to call partition(&pivot.method(:>)) instead, it would sort the values least to greatest.  

For more reading on the partition method, check out the docs

I sincerely hope this helps you on your next interview question on sorting. But like I said, if you're at the whiteboard, I'm sorry. Good luck!

Pythons + Vipers: Empathy in Tech

I want to talk to you a little bit about snakes. Specifically, pythons and vipers. (Well, sorta.)

When I was researching this topic, I pretty much thought a snake was a snake. After all, they all have scales and embody the devil — right? But I was wrong. 

Pythons move in rectilinear progression. Scientists actually used to think they used their ribs to "walk." Instead, they use their scales and muscles to pick up parts of their body off the ground and move forward in a straight line by scrunching and expanding. Like a very scary inch worm. They're big, slow (they move at about 1 mph) and non-venomous. They're constrictors, so they squeeze you until you die and then eat you. Fun!

Vipers use undulatory locomotion — favorite phrase of the week! — to propel themselves. It's that serpentine movement we're all used to. They're small, fast and venomous.  

But humans aren't like snakes. Humans are herd animals. 

Evolution

I know we don’t like to think of ourselves as equal to the other creatures that walk this earth. We cook our food and use computers, after all. We build robots and shoot humans (and monkeys and dogs) into space! We must be more advanced.

But at our core, we are herd animals.

We’re just not as fierce as some other animals — specifically the predators I think we like to associate ourselves with. Who doesn't have a CEO who considers himself or herself a "lion of industry?"

We don’t have the speed of cheetahs, the strength of bears or the armor of rhinos. In fact, we’re pretty weak.

Take me for example. I don’t have a lot of fat to survive a long winter. I’m not strong enough to fight off large predators. I have no camouflage, venom or other defenses.

No, humans have only survived because we have each other. Once we figured out the basics of food, water, fire and shelter, we were able to create specialization and division of labor. Some of us hunted. Others gathered. We shared food. We protected each other and raised children together.

I don’t know about you. I think that’s pretty cool.

Group > Individual

But this evolutionary dynamic has one critical repercussion: The group is held far above the individual.

As a result, our brains desire conformity.

Think about your group of friends. Shut your eyes. Really take a minute.

  • What do they look like?
  • What are their characteristics?
  • What do you like most about them?

Most of my friends are white, college-educated and have a similar socio-economic status. I prefer being around people who are smart, strong-willed, hard-working and ambitious.

If I’m honest, they’re not too dissimilar to me. Or, more likely, they reflect my favorite parts of myself.

This affinity for conformity goes well beyond our friendships. Which brings me to social influence and social conformity.

Social Norms

We all conform to social norms. We follow (most) traffic laws. Sure, we speed, but usually within that grey zone of 10 mph over the speed limit. We dress up for weddings and funerals. We bring a class of wine to parties and speak quietly in libraries.

These are all behaviors we don't even think about. They were taught to us through our everyday social interactions throughout our entire lives. And these social norms dictate our behavior.

Think back to high school. (I'm sure it was a super awesome time for all of us.) The popular kids set the canon for what was “cool” and the rest of us spent way too much energy trying to catch up. We wanted to belong.

Some conformity is referred to as non-conscious automatic mimicry. Like when we yawn after seeing someone else yawn. 

But conformity generally describes how we adjust our behavior and thinking to the rules of the group. It’s something psychologists have been interested in for a long time.

Asch + Conformity

In the 1950s, Polish-American psychologist Solomon Asch performed a simple test on small groups of people sat around a table. 

His study — looking at conformity and social influence — was presented under the guise of a study on visual perception.

Volunteers were shown a standard line and three comparison lines. Then they were asked to identify which of the three lines matched the comparison line.

Now anyone with their glasses on would be able to tell you it’s B.

But imagine sitting there. You're in a room with 5 strangers. You'll respond last. The person to the left of you says the answer A.

Huh? You shrug it off. He looks a little weird anyway. Then the next person responds with A.

You’d probably start wondering if you were stroking out. Or going blind. Or have a brain tumor...

What the volunteers didn’t realize was that everyone else in the group was a plant. The last person to respond was the only true participant. A common deception in studies — sneaky scientists.

In every group, the real participant struggled. Should they trust their own eyes or go with the group? 

And here’s the disturbing part: more than a third of participants gave the wrong answer.

Asch and other researchers have found people more likely to conform if:

  • They’re made to feel incompetent or insecure
  • They’re in a group of three or more
  • Everyone else agrees
  • They feel as if others are watching

Rejection

Think about a time you’ve been excluded from a group. Or different in some way. Again, think back to high school.

Were you bullied? Didn’t quite fit in? Perhaps you were defined by your group of friends — nerds, goths, athletes or mathletes.

Remember how you felt? Different. Rejected. Alone. It sucks in the short-term. And absolutely brutal to experience for years, even decades.

You may be the oldest engineer on your team. Or the youngest. Perhaps you use Emacs and everyone else uses Vim. You're the only woman or person of color. The only person with depression or anxiety. Maybe you have diabetes or a disability. You're married. Have children. Care for an ailing parent. You're gay. You're straight. You're transgender. 

Celebrate Diversity

We’re all a bit different. I think that should be celebrated.

But that isn’t always the case. Sometimes, often, our differences divide us. Or create subtle social norms that drive our behavior — and the behavior of those around us.

I’m an extrovert. But I was raised in a household of three extremely sensitive, introverted artists — talk about stereotypes.

Through years of attrition, they taught me to be sensitive to the way introverts communicate. I recognize that the quietest voices in the room are sometimes the most valuable.

Against all my extroverted instincts, I hold my words to allow the thoughtful introverts around me to gather and convey their thoughts. It takes energy but it is absolutely worth the effort.

It's Hard But Worth It

Before I continue, I want to acknowledge that embracing differences is hard. Especially at work. We all have a job to do. 

Social diversity — the kind that comes from diversity of race, ethnicity, gender and sexual orientation — can cause conflict, discomfort, distrust, disrespect and more restricted communication.

That all sounds awful. Is there an upside? Hell yes.

Being exposed to diversity alters the way you think.

  • Diversity enhances creativity and innovation
  • It encourages teams to seek out different perspectives
  • It improves decision-making and problem-solving
  • And it increases the bottom line of organizations

I’m not making this up. There are decades of research to support this. NCWIT — the National Center for Women and Information Technology — located in Boulder, is a great resource for more information on this topic.

#womenintech

Unsurprisingly, I’m a woman in tech. This term gets thrown around a lot. And god knows everyone is well aware of the diversity problem in tech.

I’m not asking you to solve it. Or implement changes at work. Or even really care.

What I’m going to ask you to do is pay attention. For a few minutes, I want you to let go of assumptions or questions or rebuttals. I want you to hear me. To feel empathy for my experience. And the experience of so many others around you.

I’m the only female engineer on my team. In 95% of the meetings I attend, I’m the only woman in the room.

And while that in and of itself isn’t that bad…

A lot of the time, it doesn't feel like the left picture below. It feels like the one to the right.

I’m different. And that subtle social cue makes it just that much harder to speak up. To take a risk and share an opinion. Because if I go against the group again, I risk being further isolated.

That’s heavy, I know. And I want to be clear: I’m not asking you to solve diversity issues in tech. It is so much bigger than you and me.

What I am asking of you is to do one thing. Just one thing.

Pay Attention

At your next meeting observe those around you. Who’s different and who’s the same? Is their behavior equal? Are those who are different given a chance to speak and are their ideas really heard? If the idea is implemented, is credit given to the correct person?

Search your own assumptions and actions. We can all share more empathy with those around us. And make tech more awesome in the process.

Post-Conference Depression

There’s a phenomenon in tech — the post-conference depression. You’ve probably experienced it. Though you may not have realized it.

Here’s how it goes. You attend a conference. After you arrive, grab your nametag and t-shirt, you settle into a chair. There’s some awkward introductions. Maybe you see someone you know five rows up from you.

A mic screeches and a hush falls over the room. The first speaker dons the stage. There’s usually a few technical issues because — let’s face it — a room full of engineers can’t figure out an AV system to save our lives.

Then something magical happens.

Conference Magic

A developer, someone just like you, starts to share a problem you’ve had. The topics run the gamut:

  • How to sell DevOps to your team.
  • Lessons learned from that time your boss asked you to upgrade Ruby from 2.1.1 to 2.4.1 overnight after he figured out it’s no longer supported (even though you’ve written 14 emails and had 2 architecture meetings about it).
  • ChatOps and how it can simplify deploys.

Your shoulders relax. You chuckle. You realize you’re with your people. You’re home.

The next speaker comes up with an equally enlightening talk. You realize that everyone deals with the same bullshit you do day in and day out. We don’t have it all figured out. But we’re trying. We’re sharing lessons learned. We’re striving to be better.

That night, you grab a beer with a group of conference attendees. You meet some new friends and lament as a group about how incompetent your manager is, how you haven’t gotten a raise in 2 years but seriously don’t want to go on technical interviews because it would destroy your ego if, as a senior with 12 years experience, you bombed bubble sort. (Not that any of us have had that conversation…)

The next day is even better. Sure, you’re all a bit hungover. But the room is relaxed. There’s fewer awkward encounters. You’re friends now. All victims of the same bureaucracy and overwhelming tech debt.

Heading home that weekend, you’re full of ideas.

A new blog post you need to write. A new book concept. Hell — you’re making business plans for that company you’ve always wanted to start. The sun shines a little brighter. The air is a little fresher. You feel like you can breathe again. Like you’ve got it all figured out.

Off To Work...

Sunday comes too fast and you’re off to work again. Monday morning, after nabbing your favorite liquid treat from the coffee shop — and a chocolate muffin, admit it! — you stroll into the office with a little extra pep in your step.

Right into a brick wall.

But you muster the strength to fight against the overwhelming sense of dread permeating your office. You know the other devs just don’t know how bright a world it can be. They haven’t heard your awesome new ideas.

So you sit down and write out a thoughtful email. You collect your top 3 favorite talks and include the videos. Proud of your work, you click “Send.”

And wait. And wait. And wait. Crickets.

No one mentions it during standup. It’s just the usual, somber regurgitation of what each person worked on the previous day. No one replies. Your boss is too busy bouncing from meeting to meeting to read email.

Throughout the week, you realize you’re just one person. Trying to change the hearts and minds of 9 others. You knew it wasn’t going to be easy, but you didn’t expect this much pushback. No, apathy.

The week progresses and you start wondering if you can be the change agent you thought you could be. Should you start studying bubble sort? It may be time to face the whiteboard again…

This is the post-conference depression. What was irritating but tolerable becomes staggeringly deflating. You saw the light at the end of the tunnel only to realize it was a train.

Change Agents Are Like Water

You work from home Thursday to escape the melancholy and shuffle into standup Friday morning. A colleague taps you on the arm before the scrum master begins calling on people, third-grade style.

“Loved that talk on Apache. Let’s look into whether we could implement the same solution.”

After the momentary look of shock and confusion falls off your face, you smile and nod. “Awesome. Yea, let’s do it.”

Change is slow. Painfully slow. You are not an earthquake. You are not a mountain violently emerging from the surface. That kind of sudden change doesn’t last anyway.

True change agents are like water. Slowly and consistently, they carve grooves into the landscape. They don’t quit. You shouldn’t either.