What makes a great development culture? Free drinks? Free breakfast? Everyday happy hour? Sure, those things are attractive. But, cool perks are par for the course these days. Virtually every startup and their uncle with a round of funding have perks of some sort. So, if perks are ubiquitous, there must be more to a great development culture than perks.
I’ve been a Developer, a Team Lead, and now a Manager at Achievers. Throughout my career there, I’ve been exposed to many habits and behaviours that have really influenced my own day-to-day happiness and engagement. When writing this piece, I took a step back and really thought about what I’ve valued during my career working as a developer. From that perspective, I’d like to recommend a few ideas that I believe will help you achieve and maintain a development culture where happy, engaged teams can thrive.
Why Is As Important As What
Software developers are problem solvers at heart. Taking a problem, coding up a solution, and seeing it through into production is definitely satisfying. But, what’s even more satisfying is knowing that the solution being implemented is the best one possible.
Educate your teams about business problems, usability concerns, and feature ideas. Engage your teams in the brainstorming process. Express why a given problem is a problem and why it’s the current priority. Knowing the why can inspire new and better solutions.
Everyone Is A Product Owner
If you’re working in Agile, you probably have a Product Owner for each feature or team. While the Product Owner has their own set of duties and responsibilities, I like to think of the entire team as being product owners because every individual contributes to the delivery of the final product.
Each person has their own unique set of values enabling them to think in their own unique ways. Encouraging a sense of ownership in everyone by seeking input from the team in all phases of development results in a sincere desire to improve the product, different perspectives, fresh ideas, and improved features.
Silos Are For Farmers
Frequently, teams are organized by feature or skill set. Either way, this doesn’t mean that the things they own should be the only things they do. Sometimes, a team will require a change to a feature, service, layer, etc. owned by another team. There’s a few choices: delegate the work to the owning team and let them prioritize the work within their current set of priorities (or negotiate new priorities), take on the work yourself, or don’t do the work at all. All of these are viable options. But, the second is one that shouldn’t be overlooked. Taking on work you don’t normally do is a great way to collaborate, stay challenged, and learn new skills. Don’t funnel developers into silos. Give them the freedom to contribute outside of their comfort zone. They will be grateful.
Trust Your Talent
Software developers are smart people. They’ve been hired for a reason. They’re experts in their domain. Let them be experts and do what they do best. Smart people need the autonomy to learn, think, question, break things, and put them back together until the right solutions present themselves. Very often, if given a little direction and time, they’ll get the job done. Developers — especially developers — don’t particularly enjoy being micromanaged.
Software is built by people for people. The end goal should be that the people you’re building your software for will fall in love with it. And, when they do, share those success stories with your development teams. As a developer, realizing the value the features you’re building are bringing to your customers can be very inspiring.
When you can get software into your customers’ hands as quickly as possible, the results are even better. Employ Continuous Delivery (easier said than done, of course) to shrink your feedback cycle and create more opportunities to celebrate success. The benefits from continuous delivery are too great to write about here, but it’s worth mentioning that seeing the code that you write go live daily is very empowering. Moving to continuous delivery has been one of the best experiences of my career.
Success is an important component, and it’s something that can be realized even before you’ve gone to market with your product or features. Take the time to allow teams to showcase in progress work, so that they can provide visibility to the challenges they’ve faced and overcome. They’ll get a chance to feel that sense of pride everyone feels when showing off a great achievement, and stakeholders will get iterative glimpses into the future value being created.
Create an environment where everything is evolving. A product should evolve, but the people building it should evolve with it. Constant learning is key to maintaining a team that feels challenged and grows.
Many developers enjoy sharing what they’ve learned in their coding journeys. Facilitating sharing by creating opportunities for developer hosted learning sessions whether through meetings, meet-ups, blogs, or presentations allows those developers to shine and grow skills within the team at the same time.
As the product and people evolve, processes grow stale and need to evolve too. Development processes shouldn’t be set in stone. Let your teams have input into what doesn’t work and work together to improve things.
Look Beyond Features
You could argue that being innovative through investing in creative solutions while developing features is innovation at its best. And, that argument is a good one. However, you’ll likely find that your developers will want more. I think that’s more than OK, and it’s actually quite healthy. Being part of a team full of developers that want to be creative is a good problem to have. Give them a creative outlet. That could be hackathons, 20% time, innovation sprints, or something completely different. You could try planning for innovation as part of the normal sprint planning process, for example. This has the benefit of continuing feature and experimental development concurrently instead of punting things down the road.
Use appropriate tools to facilitate the creative process. We use Slack quite heavily, as it’s a great way to carry on constant communication about new ideas. And, as I mentioned above, no process should be set in stone. It’s a big plus to have the freedom to innovate on your development processes as well.
Say Thank You
Most importantly, say thank you. Say, great work. Say, you’re awesome. Say it and mean it. Simple.
Happiness Is The Best Perk
While not an exhaustive list, the above ideas will go a long way to building a culture where developers can not only provide value in many different ways, but feel they’re providing value as well. Happy teams are teams that can understand why their contributions have an impact. When they can contribute to the entire development process all the way from ideation to delivery, they’ll develop a heightened sense of product ownership, and therefore feel a strong desire to improve things.
Cultivating good habits in an organization comes much easier when you have the right people on board. Speaking from my own experience, particularly at Achievers, I’m grateful to have been surrounded by great people. Working in an environment with this kind of culture has been very inspiring. Work towards living the behaviours I’ve recommended in your teams, and you’ll be well on your way to a development culture that goes well beyond cool perks.
(Originally posted on Medium.com)