Throughout my career, I’ve spent a lot of time and energy helping companies to optimize their engineering work culture for happiness. You see, for most of my career, I’ve worked as an engineer at non-tech companies from major retailers to financial institutions that view engineers almost as factory workers. Business leaders usually think, “Oh, we have a big deadline or a bigger scope of work? Throw more engineers at it to speed things up.”
What I evangelize is optimizing culture to make engineers happier and, consequently, more productive. There have been many studies, like this one, that show how unhappy developers have lower motivation, productivity, and code quality. So what motivates us? What makes us happy?
Here’s what, from my career experience, makes a good engineering culture. And, spoiler alert, it doesn’t involve red bull and video games.
Freedom to fail
Engineers crave permission, courage, and trust from an organization. We thrive when an organization shows a willingness to be experimental. We want the freedom to experiment, iterate, and ultimately fail fast and forward.
Failure is one step on the way to success. If we always play it safe, we’ll probably never fail, but that also means we’ll never innovate either. Having a company and engineering culture that not only accepts failure but embraces the learnings that can come from failure is crucial to creating an environment where we can make great things happen.
Finishing the job: Ship it! ?
Engineers feel satisfaction by being able to finish a job. This means pushing code all the way through to production. Continuous integration (CI) and continuous deployment (CD) allow engineers to “finish the job.”
Here at Choozle, we’ve simplified the deployment process so that it’s easy and frictionless. Even non-engineers can deploy. We’re working hard on getting to continuous deployment. There are so many benefits of CD. For one, smaller changes are more atomic and have fewer unintended consequences. Isolating problems is also simpler and quicker. In addition, the product improves rapidly through fast feature introduction and fast turnaround on changes.
Continuous learning
Probably my favorite thing about being an engineer all these years is the opportunity to learn continuously. Engineers love learning new technologies and keeping up with new ideas. New tools, frameworks, and paradigms are constantly being developed, and it’s important to continuously learn them and ultimately try them out.
Managers and organizations should encourage this curiosity and allow space for proof of concepts and learning. Without support from leadership, it can lead to a stagnant culture where developers lose their spark of curiosity. Eventually, your top talent will leave, and you’ll have trouble finding anyone who is willing to work on dormant projects.
Any investment in your team’s learning is money well spent. It’ll contribute to your team’s overall happiness and, ultimately, the success of your projects.
Focus time: Flow
It’s not a big revelation that software development requires long stretches of uninterrupted time to focus. Meetings can fragment an engineer’s day and eliminate the stretches of uninterrupted time required to build software. In the interest of preserving these blocks of focus time, it’s in the organization’s best interest to minimize meetings and group meetings or even create no-meeting days.
At Pinterest, the product engineering team has moved to a three-day no-meeting schedule–a real dream for engineers! This is one area we’re looking to optimize our engineering culture at Choozle.
Collective code ownership
Within the various teams I’ve been on, I’ve found the best-performing and happiest teams to be ones that subscribe to the idea of collective code ownership. This is the notion that the code base is owned by the entire team, and anyone may make changes anywhere. Everyone works together to produce a product of quality. No one individual is greater than the rest of the team members.
At Choozle, we very much subscribe to collective ownership. We are one team and we succeed together and fail together. There is nothing worse for an engineering culture than playing the blame game–avoid it at all costs!
Hopefully, this gives you some insight into optimizing culture for engineering happiness. Small organizational changes can have a big impact on your engineering team and ultimately your product.