Make your engineering team fun.

Attracting and retaining great employees is one of the key factors that separates the best startups from the mediocre. But it’s a big world out there, and your engineers have a lot of options. You better believe that recruiters from Uber have reached out to most, if not all of your engineers. And when people start leaving, it won’t be your poor performers — your best employees are well aware of their options, and will be first to leave if they are not completely satisfied.

So, how can you get your team members to stick around for the long haul? There are many things which motivate people to keep turning up at work day after day, but I believe most of these can be boiled down to three main factors: Company Growth, Compensation, and Happiness.

Retention = Company Growth * Compensation * Happiness

Company Growth

In the words of Paul Graham, Startup = Growth. Most people that join a startup dream of seeing hypergrowth, and if your startup is going through this phase, then your team will probably be so busy holding on for the ride that they won’t have the time to notice the overwhelming work load and communication breakdowns.

Compensation

While everyone values money differently, there is usually a price which will keep most people working at your company indefinitely. Unfortunately for most startups, money is not an unlimited commodity, so it is nonsensical to simply pay everyone ridiculous sums of money.

Happiness

If your company is a fun place to work, then all else can be forgiven. Even lack of growth or poor compensation will be ignored if your team members generally like their work environment, the work they are doing, and the people they work with. Luckily, this is the one factor which is entirely under your control. Unfortunately, many companies go about creating a fun work environment entirely the wrong way.

What makes a fun engineering environment ?

While many startups claim to be “fun” places to work, often times this is based on highly superficial factors, and not things which your team members are genuinely excited by. Here are some unconventional tips to make your company a truly fun place to work:

Lose the nerf guns.

Mini-putt and nerf guns do not a fun startup make. Yes, it’s cool that your office is a fun environment where people are free to live out the fantasies they missed out on during their childhood. Unfortunately, some toys significantly detract from the environment. There is nothing more annoying as an engineer than having your focus broken mid-difficult problem by a fucking nerf dart hitting your screen.

Your startup is not a frat party.

It’s great that today’s companies want to be fun places to work. But many a startup has taken this too far by scheduling endless team events, dinners, office parties, donut/pastry/cake/candy deliveries, whiskey tastings, beer pong tournaments, and Hawaiian Shirt Fridays. There’s definitely a time and place for all of these things, but make sure that you’re not overwhelming your team members with unhealthy food and events which they feel obliged to attend. Sometimes, the best way to keep your employees engaged is to let them go home and unwind over dinner with their friends and family.

Explore new technologies.

We get it. Your engineering team would be much more efficient if everyone just used the same technology for everything. Your engineers could stop getting excited about the latest client-side immutable-stateless-modular-isomorphic-shadow-dom-hotness, which provides little-to-marginal improvement over existing tools, and get back to delivering those new features you asked for. Unfortunately, engineers are naturally curious creatures. The entire role of software engineer is basically that of a life-long student, because there are always new tools, techniques or APIs which require mastering. Great engineers will want to be continuously learning, and when you stop learning, it stops being fun. By letting your team try out new technologies, you will keep them engaged. Yes, your website might end up having a few different patterns used in different places, and yes, not everyone in the team will immediately know how to work on every part of the codebase. But you will end up with an overall happier, healthier team.

Build high quality products.

No one wants to build products they aren’t proud of. While it can be tempting as a startup to constantly push forward and launch shiny new features all the time, you should pay extra attention to your engineers when they complain about the code being a mess. You can get away with accruing technical debt for short periods of time, but in the long run it will slow down the pace which new features can be added, and cause irreparable harm to your employee motivation levels. There’s definitely a middle ground here, and it’s certainly possible for companies to descend into an endless cycle of optimizations without launching any new features. But if there’s one part of your codebase that you’re always discovering bugs in and everyone hates dealing with, then it’s probably time for a refactor.

Assign ownership.

What to do with that one part of the codebase no one ever wants to work on? Stop treating it as a shared burden and let someone take ownership of it. I don’t mean assigning the bugs to the same person every time. Find a person (or people) in your team who wants to take on more responsibility, and let them plan and execute a wholesale refactor. To a great engineer, this is an exciting challenge, and it will not only keep them engaged and happy, but will increase the morale of your whole team as the overall quality of your software increases.

Build a culture of trust and autonomy.

Trust is universally considered a Good Thing™, and it has appeared in many company mission statements. However, in practice giving your employees autonomy and trusting them to do their job is much easier said than done. Make sure you are holding your employees accountable for their output, while getting out of their way and letting them choose their own methods for achieving it. Let your managers decide how they want to structure their team workflow, and let your engineers decide which tools are right for a particular job. If people feel they have all of the responsibility, and none of the freedom required to be successful in their role, they will quickly start thinking about their next move. If you don’t trust your employees enough to let them independently decide how to go about achieving their goals, then it’s time to fire them and find people you can trust.

None of these tips are particularly complicated, but like with product development itself, it’s often the little things that matter most. Tools like employee engagement surveys are a nice way of getting metrics on your overall company morale, but risk coming across as overly corporate or out of touch. Simply grabbing coffee with your team members 1:1 outside of work is often the best way to find out how they are really feeling. Above all, by the time you suspect your team is unhappy it’s probably common knowledge on the ground floor, so make sure you’re always on the lookout for team morale slipping, and make keeping your existing employees even more important than hiring the best.

Thanks to Maura Baskauskas, Brian Armstrong, and Jori Lallo for reading drafts of this post.