We all know company culture is crucial to a successful and productive workplace, but it’s often a characteristic that goes unnoticed. We focus on details instead of the big picture, we scan numbers in spreadsheets, graphs, and codes without realizing the true force that energizes your success has little to do with those never-ending digits.
It’s the big picture.
Corporate culture is a businesses’ capacity to handle – or not handle – trust, uneasiness, and clashing interests. All too many times managers and executives tame these workplace difficulties by engaging in micromanagement and related processes, exerting control over their employees and making strategic decisions without knowledge of the day to day context their work involves. Now, the IT industry has come to learn over the years that control is not the right tool and that decisions should be, for the most part, handled by the people in charge of producing the work.
So, this leaves the question – what makes a good developer culture?
A successful developer culture should revolve around five essential components, related to the team, experimenting, learning, failure management, and employees’ responsibility.
So, let’s dive in:
Excellent software development is the product of a team. No one individual can, or should, take merit for a high-quality product. In smaller businesses and startups where there is only one programmer this obviously not a concern, but generally in the majority of bigger companies it is. A culture that praises one team member over another is bound to fail.
What distinguishes a team from a group of developers is the group members’ commitment to achieving a goal. If all members are committed to the project, they are a team. This commitment does not originate from simply working for a company, dedication and enthusiasm for one’s work is created through an atmosphere of trust, transparency, and effective leadership on the part of management. If a developer is committed to the project, he or she will be excited to speak about the company and its products as well as put more effort and time into a given task.
The benefits of experimenting
It is no secret that some product features will be more successful than others, but without experimentation there can be no improvement. A successful developer culture encourages experimentation over endless debate. Sometimes uncertainty can be paralyzing, so it is important to preset common standards for measuring success, listen to customer feedback, and let the team focus on what they do best – building the software. A trial and error approach promotes continuous enhancement as the product evolves and improves.
Another main pillar of a successful developer culture is to promote learning, especially in familiarizing developers with the tools and duties required for producing successful software. Informing a team on why things are executed the way they are, rather than just outlining how they’re done is beneficial as it prevents future mistakes that arise from keeping employees in the dark. In our experience, automating as much as possible and keeping outside influence to a minimum seems like the best option, but delegating a certain amount of freedom to developers will yield better results, creating a healthy balance between automation and employee influence. If developers feel they have power over the processes, it reminds them they are trusted and responsible for the final product.
No product is perfect, even the most skilled and experienced developers make mistakes. What’s important is how failure is managed and incorporated into the overall company culture. Failure is crucial to improvement and it makes a team better, so learning from errors and integrating new knowledge into the project will help drive success in the future.
Of course, businesses don’t fall when they fail, they fall when they run out of money. A manager’s attitude towards failure can make or break a successful company, let alone developer, culture. Open communication about failure and the definition of clear outcome metrics for a projects’ success help teams get a clear picture on the risks and ultimate goals of every project, ultimately rendering failure less intimidating.
We saved the best for last. The most important component of a successful developer culture is in fact, as aforementioned, employees’ stake in the product. For developers to give it all in building a software, the project must mean something to them.
An excellent way for developers to see the fruits of their labor and boost their interest is to encourage contact with the users. Exposing programmers to user feedback, by joining the customer service team for a day, involving them in company conventions, or allowing them to accompany the sales team in visiting clients, gives them an opportunity to see how their product makes an impact on other people’s lives. For a developer to meet and talk to users is an immensely rewarding feeling and boosts their commitment to making the product even better.
Another great way to encourage developer commitment to the product is to empower them in other areas of the product feature. For example, many times product design and engineering teams work separately, with no form of communication. These two teams should have the chance to work together and influence each other’s work in productive ways. By giving developers the opportunity to have a say in how the product is designed boosts their commitment to the final outcome, as opposed to simply being restricted to doing what they are told.
At the end of the day
Every company and teams are different and should operate based on their specific needs and restrictions, these tips are a good foundation for building a strong developer culture and should act as a general guideline.