developers

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. 

 

Humpty Dumpty + DevOps

I’m convinced Humpty Dumpty is a story of DevOps gone wrong. 

Humpty Dumpty sat on a wall,
Humpty Dumpty had a great fall.
All the king's horses and all the king's men
Couldn't put Humpty together again.

First, who asks a horse to do surgery? Hoofs can’t hold scalpels. Second, either the king’s men are inept or they’re not communicating. Two kindergarteners with some Elmer’s could have done the job.

You see, Humpty is a deploy. He was fine in staging but shit the bed in production. Now the site’s down and your boss is threatening everyone’s jobs. IT is saying the code is broken. The developers are saying it’s a server issue. 

Meanwhile, Humpty is bleeding out. And your customers are complaining on Twitter. Which means a customer service rep has entered the #incident channel to tell you the site’s down. Yea, no shit, Tom. 

Sound familiar? 

We’ve all been there. A deploy goes awry and the entire department is up in arms, defending themselves and blaming each other.

All The King’s Horses and All The King’s Men

So there we are. In chaos. The site’s down. The boss is pissed. 

I don’t know about you, but I always think best when my boss has morphed into Al Capone and I’m staring down the barrel of a metaphorical Tommy Gun.

Not.

At first glance, you might think we’ve assembled the best team to handle the crisis. There are engineers who know the code inside and out and an ops team that can handle any systems fire. 

Yet, it doesn’t work out that way. It always devolves into a blame game. You know the scene.

Developers say…

  • “It’s a server issue.” 
  • “My code worked in staging.”
  • “A configuration must have changed.”

Operations people say…

  • “Has to be a code change from the last deploy.”
  • “What was just deployed?...”
  • “Why are we the only ones that know what is broken?...”

All the king’s horses and all the king’s men aren’t working together.  

Let’s Stop Fighting

Ok, first, I’m not going to address all-out fist fights. Because honestly, if your department hosts a weekly version of Fight Club, you should really change jobs. 

I’m talking more about what could be described as friction, attitude, or a general inability to tolerate each other without eye rolls and audible sighs. What I like to call good ’ol Southern-style passive aggressiveness.

I’ll give you an example. 

I recently had some mild conflict with one of our DevOps guys. A day after a deploy, a feature on one of our sites — the ability for admins to upload new photos — wasn’t working. The user didn’t receive an error message after uploading. The new photo just didn’t show up. 

A project manager (PM) messaged me and an ops guy.

I had 20 minutes before another meeting — why are there so many meetings?! — so I felt a little pressure to locate the issue quickly. I should have recognized that I was on edge and ill prepared to deal with the situation at that moment.

But I didn’t. I’m human. 

To make matters worse, an eerily similar issue had come up during testing in QA. During that code hunt, the ops team lovingly implied that it was my problem. And after an hour or two of log reading and double-checking my work, I discovered it was in fact an ops issue. 

Not that it isn’t my fault sometimes. I make plenty of mistakes. And then I obsess about them for months...

Fast-forward two weeks and here we are again. So I’m primed and have plenty of attitude. My bad. 

I holler across the room to see what the logs say. 

“I don’t know.”

Um, wanna go look it up?! 

OK, I didn’t actually say that. But I’m 80% sure I got the message across with my eyes. 

So I track down the production logs while coordinating with the PM so I didn’t have to test the issue in production. 

Minutes pass and now I’m in my meeting trying to do both. Because multi-tasking is proven to be so effective. 

The production logs have nothing but 200s and everything looks good. 

Finally, the ops guy checks the S3 logs. Surprise, surprise. The image is there. Pff! Not my fault. (My inner dialogue may or may not be an eight-year-old.)

Yep, you guessed it. Another ops issue. 

Now it’s not that I think operations issues are easy. They scare the shit out of me. But I get a little huffy puffy when I’m constantly met with “it must be the code.” And I’m sure it’s beyond irritating that ops teams constantly get “it must be a server issue.” 

Which brings me to my core point: we need to work together, guys.

“Dev”.concat(“Ops”)

Change is hard. I dislike it as much as the next person. But I think this cultural shift is worth the struggle. 

By now you’ve probably heard something about DevOps. It’s all the rage these days. 

But if you aren’t an expert in what exactly the term DevOps means, here’s a quick history. 

The term was coined by Patrick Debois and Andrew Clay Shafer while attending a conference in 2008. Hilariously, Patrick had planned to speak about DevOps at the event, but received such negative feedback that he decided to skip his own session. (TIL don’t give up on ideas just because you get a poor response.)

John Allspaw and Paul Hammond joined the #devops conversation with a talk called 10+ Deploys per Day: Dev and Ops Cooperation at Flickr. The talk is 40 minutes but very much worth your time. Just play it during dinner tonight. Your kids are gonna love it. Promise.

Since then, DevOps has become a term that encompasses a company culture where developers and operations people work together. 

Traditional Thinking

Before we continue toward DevOps nirvana, it’s important to recognize your development team has a fundamentally different priority than your operations team. 

Like it not, developers are measured by the number of features they release. No CEO has ever cracked open code to review your thorough test suite or pondered at the glorious variable name you picked out. (I appreciate it, though. So you have that going for you.) 

If all of us decided to tackle our growing mound of tech debt this month instead of working on the latest and greatest idea your sales team came up with, you better believe we’d be hauled into someone’s office and chided. 

But operations people are measured on an entirely different aspect of the business: site reliability and uptime. And you better believe keeping a site up 99.999% of the time is no easy feat. 

I’ll spare you the math. That’s a little over 5 minutes downtime per year. FIVE. MINUTES. PER. YEAR.  

So, to break this down, developers must deploy new code to release new features. But deploys are the most frequent cause of downtime. 

No wonder we’re natural enemies. 

Be The Change

What we need is operations teams that think like developers and developers that think like operations people. 

It’s not easy. But it is simple. 

Operations: Empower Your Developers

Trust your team

You’re on the same side. If a developer says the code works, trust them. They’re not lying to you. And they don’t want to make your life a living hell. They honestly believe the code works. Which brings me to...

Give read-only access to all developers

To what? To EVERYTHING. I’m not saying to hand out root access like candy. But you are not the gatekeeper of information. Do you like being interrupted every 5 minutes so you can copy and paste an error message? I didn’t think so.

Developers are writing the code that runs on your systems. It’s not a reach to think they should be able to get some feedback about whether it works. After all, don’t expect developers to jump in and help when they don’t have access to your machines. 

Create consistent platforms

Integrated platforms are easier to develop and support. Pay attention to the parity between environments. Staging and production should be identical. That means the same allocated resources and the same data. Otherwise deploying will always be a roll of the dice. 

Share source control

Keep your configuration tools on GitHub with the rest of your company’s code. Code is code. It’ll be much easier for operations and developers to solve problems together if everyone knows how to locate the affected code.

Add your devs to the on-call rotation

My friend likes to say, “You build it, you support it.” No one likes to be woken up at 2:00 a.m. And if you’re tired of stumbling through the dark toward your computer in the middle of the night, share the pain. There’s no reason developers shouldn’t be on rotation. Remember, they can access logs and view your configuration tools now. Awesome!

Simplify deploys

Pushing code to production should not be a production. Unnecessary steps increase the opportunity for error and decrease the number of people who can deploy.

Oh, one more thing. Stop preventing developers from deploying their code to the QA and staging environments. Seriously. If I have to ask permission to test my shit anywhere other than dev, you deserve to put out the fire. 

Developers: Stop Being Assholes

Make operations part of the planning process

Thinking about a feature? Include operations. Talk about what will change before you write a single line of code. Discuss why this feature is important, who will need to be involved and what the risks are. You can’t deploy mystery code and then get irritated with your operations team when they start asking 100 questions. 

Make small changes. Deploy. Repeat.

If your feature requires you to change 30% of your app’s spaghetti code, break the feature into smaller pieces. Not sure if your feature is too big? Apply the same rule you use for method naming. If the method needs an “and” it’s doing too much. Small deploys make it MUCH easier to determine what went wrong in case of failure.

Communicate

You know how you already included operations in your feature planning? Notify the operations team when you deploy too. Whether you use Slack or HipChat, make sure all developers and operations people have a single place to communicate. Lots of companies use an #incident channel. Find what works for you and then use it. 

Yes, and…

There’s a rule in improve that forces participants to say “yes, and…” rather than “yes, but…” Try this next time you’re in a meeting and the results will likely surprise you. That simple language change will make everyone feel heard, validated and a part of the team. 

Be open to other options

If someone on operations says there’s going to be a problem, listen to them. That means shutting your mouth and really hearing what they have to say. You’re an engineer, not God. The core competency of operations is site reliability. Let them help you. The solution you come to together will be much better than the one you thought of on your own.

Have some humility

If someone was woken up in the middle of the night because of something you released, say sorry. Buy some coffee. Help ’em out. Own your shit. When you take responsibility for a mistake, your colleagues are much less likely to make a voodoo doll of you and keep it by their bed. 

Practice Failing Together

Failure is never a question of if, but when. 

You will fail. A deploy will bring down the site. A typo in your configuration will bring users to Twitter fisticuffs. 

It happens. We’re human. And until Skynet, we’re all stuck dealing with our occasional mistakes. 

Have a healthy attitude around failure

You need to 80/20 your failure preparedness procedures. It’s okay to spend 80% of your time trying to prevent failure, but devote at least 20% to practicing how you will handle failure when it happens. We all half ignore the safety talk given at the start of every flight, but I appreciate that oxygen falls from the ceiling in the event Bane decides to crash my plane.  

Stop pointing fingers

Avoid blame. It never feels good to make a mistake. And when 20 people are required to rectify it, it feels even worse. When I screw up, I’m embarrassed. And if I feel attacked, I become defensive. I think most of you would probably say the same. Let’s give everyone a little slack. It could have been your typo. 

Leave your egos at the door

When I started powerlifting seriously, I joined a small team of intimidating lifters. The head of the group — a 60-year-old Juggernaut-like man whose traps rose to just under his ears — had one rule: leave your ego at the door. It didn’t matter that we had to strip off 400 pounds every time it was my turn to squat. All that mattered was that I listened, learned and respected the team. We could all learn a lot from that. 

Recommended Reading

Here’s a short list of books you may be interested in:

And no, I haven’t read all those books. I’m convinced people lie about how many books they’ve read. Or I watch too much Netflix. Don’t judge me.