Company culture in the software development world has always been this wishy-washy vague idea that means something different to anyone you ask.
Some developers might see company culture as not being forced to participate in work happy hours or team-building retreats. Others might think it means not getting yelled at for leaving expired milk in the fridge 🥛
Another confusing aspect of company culture is that it’s sometimes formalized as ‘company policy’. Other times it flies out of left field, becomes a part of your company’s DNA, and is casually justified as, “That’s just how we do things around here.”
While many believe culture to be “over-hyped, under-managed, and of little tangible value,” I truly believe it can be clearly articulated and developed with commitment and ambition.
I've put down some ideas in this guide. I hope it will shed some light on company culture in tech and how to improve it.
So, What Is Company Culture?
Company culture can be defined as the shared values, beliefs, attitudes, behaviors, and practices that shape the working environment and the overall personality of an organization.
In Simon Sinek’s book, "Leaders Eat Last," he stresses the importance of these shared values manifesting in actual behavior.
I totally agree with him. Culture goes beyond having your core values written on the wall or providing flashy perks like ping-pong tables - It’s about leaders living and breathing these values so well that their teams adopt a similar mindset.
The problem arises when leaders preach about values instead of mirroring the behaviors these values espouse. And when there’s a discrepancy between expectations and reality, all efforts towards building a culture become futile and lose their meaning. In many cases, morale plunges and engagement drops. Culture dies.
Why Is Company Culture So Important?
When culture is dynamic, cohesive, and aligned with the company’s vision, teams are happier, motivated, and more likely to perform better. There has been a great deal of research done in recent years to support this claim.
For example, a strong company culture leads to high engagement which is linked to 81% less absenteeism, 23% higher profitability, and 18% higher productivity.
Company culture is also emerging as the victor in the battle to attract top talent. According to a Glassdoor survey, a significant 77% of respondents expressed that they would take into account an organization's culture before applying for a job. Even more striking, 73% mentioned that they would not consider applying for a position unless the company's values were in sync with their own.
When companies invest in building a culture of wellbeing, employees also feel psychologically safe and experience less stress.
23 Proven Strategies to Foster a Positive Company Culture in Software Development
In a strong culture, collaboration is ingrained in workflows, processes, and attitudes. This is especially important in building technology because collective intelligence and knowledge-sharing lead to the most innovative and creative solutions to problems.
Some key aspects of collaboration in software development include:
Teamwork: Developers, designers, testers, and other stakeholders collaborate to contribute their expertise and skills to various aspects of the software development lifecycle.
Communication: Effective communication ensures everyone is on the same page, understands requirements, addresses challenges, and provides feedback.
Version Control: Collaboration often involves using version control systems like Git, allowing multiple developers to work on the same codebase simultaneously while managing changes.
Code Reviews: Team members review each other's code to identify errors, improve code quality, and ensure adherence to best practices.
Agile Practices: Collaboration is a fundamental principle of Agile methodologies like Scrum and Kanban, where cross-functional teams collaborate closely and frequently with stakeholders.
Continuous Integration/Continuous Deployment (CI/CD): Collaboration facilitates the automation and seamless integration of code changes into the software project, allowing for frequent releases and updates.
Knowledge Sharing: Collaborative environments encourage sharing knowledge and expertise, fostering continuous learning and improvement.
Conflict Resolution: When disagreements arise, effective collaboration involves resolving conflicts constructively to maintain a positive working environment.
Feedback and Iteration: Collaborative teams embrace a culture of continuous feedback and iteration to refine the software iteratively.
Set OKRs and Work Towards Achieving Them
Having OKRs when developing software is important because it provides a powerful framework for setting clear and ambitious goals while tracking progress and measuring success.
OKRs allow teams to align their efforts with the overall business objectives. If there’s no clear sense of purpose and direction, your developers will be lost and wandering through a maze of bugs and getting tangled in code cobwebs 🕸️🐛
By focusing on specific and measurable key results, OKRs promote transparency, accountability, and collaboration among team members.
Develop a Mission Statement
A mission statement is like the foundation of a tall, sturdy building, providing a solid base upon which an organization builds its identity and future 🏛️
A well-crafted mission statement articulates the team's core values, goals, and the impact they aim to make. It helps align the team members' efforts, ensuring that everyone is working toward a shared vision.
A mission statement should be what your developers look towards, fostering a positive and cohesive work culture. Moreover, your stakeholders and clients will understand your team's focus and values, building trust and credibility.
Take Innovation Seriously
Though non-technical departments might have established processes and operate at a much different pace, you can’t let that be the status quo with your dev teams.
Software developers need to adapt quickly to ever-changing market demands and technological advancements. One way to do this is to give your developers free rein to experiment and explore new ideas with investment time, regular hackathons, tech talks, and innovation days. The most valuable opportunities often arise from discoveries rather than direct user or stakeholder requests.
As an engineering leader, create an environment where creativity and innovation are encouraged and valued. Support such experimentation and risk-taking, and learn how to deal with failure as part of your and your developers’ learning.
This mindset will inspire your software developers to think outside the box and come up with groundbreaking solutions.
Learning & Mentorship
If you don’t take your developers’ learning seriously, they will leave. I’m being serious here. Companies are spending a fortune on talent acquisition and retention, and one of the biggest draws recruiters - or poachers - are using is growth opportunities.
Because developers are constantly encountering new challenges and opportunities, ensure they are up-to-date with the latest tools and techniques, enabling them to deliver high-quality, innovative solutions. Encourage them to take a course or to pair up with a senior for mentoring.
Every story, bug, feature, or interaction can be a starting point for continuous development.
Trust Your Developers
Your developers should be listened to for ideas and thoughts about solutions rather than ignored.
With good insights and expert knowledge, encourage your developers to contribute to the decision-making process. This sense of autonomy will give them the wings they need to deliver creative and unique ideas.
Overall, trusting your developers empowers them to take ownership of their work, fuels their motivation, and paves the way for a more collaborative and innovative tech development process.
A common misconception is that leaders need to be mean to be good at their job. Not true. As one of the most important attributes a leader could have, empathy is a powerful driver of positive company culture.
When empathy is cultivated and you “lead with love,” developers feel understood, valued, and connected. They’re more willing to listen and understand each other's perspectives, resulting in improved collaboration and communication.
This, in turn, boosts morale, engagement, and productivity, as individuals feel more comfortable expressing their ideas and concerns.
An empathetic company culture promotes a sense of belonging, reduces conflicts, and encourages a collective effort towards shared goals, ultimately leading to higher job satisfaction, retention rates, and overall success for the organization.
Hiring for Cultural Fit Should Be Values-Driven
It happens quite often. A new senior developer with an astounding skill set is hired and onboarded, but he brings his culture from a previous company, and it turns out to be incompatible with the existing company's culture. This causes serious problems and, frequently, high attrition, as things settle down.
That’s why I believe technical skills can be acquired and honed over time - it’s your new hire's value system that needs to be evaluated to make sure it aligns with the company’s value system.
When your dev team shares core values, communicates effectively, and collaborates well, this creates a positive work environment that enhances productivity, creativity, and innovation. Conflict is then reduced and a synergy is felt throughout the team, and that drives the company's success in an ever-competitive market.
Fire Toxic Unproductive Developers
Just as bad customers could drive away good customers, bad developers could drive away good ones, taking down entire dev teams.
Over time, if bad developers are kept on the payroll, this could lead to frustration among your top software developers who have to bear the burden of extra responsibilities, leaving you with a team of mediocre and underperforming developers.
When you find yourself in such a situation, you’ll have to conduct the most difficult boss ceremony and let them go. This could be hard because they could in fact be very well-liked. Check out one of our most popular posts about firing a developer and how to part ways amicably.
An alternative and somewhat contentious solution to such a problem is to “promote” a well-liked individual with mediocre coding skills, putting them in a role that requires less technical expertise. I’ve seen developers become excellent testers, business analysts, and project managers.
I’ll leave you with an interesting quote from Steve Gruenert to really drive this point home: “The culture of any organization is shaped by the worst behavior its leader is willing to tolerate.”
Create a Psychologically Safe Work Environment
Psychological safety is a big topic nowadays within software development. We’re talking about making sure your developers don’t fear being open and honest with their mistakes and opinions.
If engineering managers unleash their wrath on developers for making even minor mistakes, like non-critical bugs, it will lead to a culture where developers feel compelled to conceal their errors.
The idea is to create an open and honest space where problems could be discussed for the purpose of learning from them. Understanding failures will force you to investigate the reasons behind them and develop strategies for moving forward.
Champion Code Quality on Day One
There are two camps to this idea. One camp, the “Just get it up and running” camp, says that you have to rush to get your solution out before your competitors do. This often means using shortcuts. The other camp says that good-quality code means less technical debt. With good-quality code, you can also innovate faster when you finally hit traction.
I personally feel that writing high-quality code always should be a priority and a part of your best practices. Doing this actually speeds up development in the long run as it lowers risk, reduces the chance of finding bugs, and creates a more efficient development pipeline.
Focusing on code quality allows companies to establish a foundation for continuous growth and success, all while maintaining agility in bringing products to market.
With technological advancement, evolving employment trends, and the growing demand for flexible work schedules, engineering managers must adapt their approaches to remote working.
As an engineering manager, it's essential to recognize and cater to the diverse work styles and preferences of your development team members. Provide opportunities for flexible work arrangements, including remote work options and flexible hours.
By cultivating such a flexible work environment, you empower your team members with a sense of autonomy and work-life balance, resulting in increased job satisfaction and overall team happiness.
Recognize and Celebrate Achievements
Rewarding your software developers requires a deliberate and systematized strategy that demonstrates your appreciation for their efforts and acknowledges their hard work.
Celebrating your team’s achievements also serves as a powerful motivator, driving them to perform at their best. This creates loyalty and boosts overall productivity.
Moreover, in today's competitive landscape, where software developers are in high demand, offering meaningful rewards helps engineering managers retain top talent and prevents costly turnovers.
Prioritize Work-Life Balance
Promoting a healthy work-life balance in the workplace is a non-negotiable, especially within the realm of software development.
You can do this by encouraging your developers to create boundaries and adhering to them, like logging off at the end of the day or taking breaks and vacations. Other activities include implementing team-building, establishing a healthy technical habits protocol, or encouraging them to learn something new.
Avoid pushing your team to its limits with excessive work or unrealistic deadlines. Remember, a happy, well-rested, and inspired team is a more focused and productive one.
Here’s a list of ten things your software developers could do right now to improve a healthy work-life balance:
- Set clear boundaries and define specific working hours.
- Limit overtime and avoid consistently working late into the night.
- Take regular breaks during work hours to avoid burnout.
- Prioritize tasks and manage time effectively to prevent overloading.
- Communicate openly with team members and managers about workload and deadlines.
- Utilize project management tools to streamline workflows and avoid last-minute rushes.
- Encourage flexible work arrangements, such as remote work or flexible hours, when possible.
- Engage in physical activities or hobbies outside of work to relax and de-stress.
- Practice mindfulness and stress-reduction techniques like meditation or deep breathing.
- Plan vacations and time off in advance to recharge and rejuvenate.
Lead By Example
Company culture starts at the top. In most cases, it's the engineering manager whose actions set the tone by defining the cultural norms, setting expectations, and reinforcing ethics.
When engineering managers successfully demonstrate the values, work ethic, and behaviors they expect from their team members, it creates a culture of trust, respect, and accountability.
As an engineering manager, set an example by embodying the values you want to promote within your teams. Show empathy, effective communication, and a willingness to embrace change.
Implement Feedback Mechanisms
In the interest of transparency and openness, make feedback a regular and deliberate practice baked into your company culture. The best way is to do this through one-on-one meetings.
Good forward-focused feedback builds trust, sparks innovation, and nurtures a thriving work environment. When everyone on the team knows what's going on and why, they become engaged and more creative in tackling challenges.
For engineering managers, feedback allows them to identify pain points and areas for improvement, then take actionable steps to address them. When leaders don’t follow through on feedback, they risk losing trust in their developers.
Several notable companies place a strong emphasis on feedback. Among them, Amazon stands out with its "Feedback is a Gift" philosophy, often considered its love language. Likewise, Salesforce organizes regular V2MOM meetings (Vision, Values, Methods, Obstacles, Measures) to foster a culture of feedback and meaningful communication.
Organize Team-Building Activities
Organize regular team-building activities and social events to help build stronger bonds among team members.
In our case, we do Pizza Fridays 🍕 and team outings and sports activities. Creating opportunities for team members to connect on a personal level enhances camaraderie and team spirit. You also end up having each other’s backs when you’re working on finding solutions together.
Here are ten fun team-building activities to try out:
- Escape Room Challenge: Divide the team into groups and have them work together to solve puzzles, find clues, and escape from a themed room within a set time limit.
- Outdoor Adventure Day: Plan a day of outdoor activities like hiking, rope courses, or team sports to encourage teamwork and camaraderie in a fun and adventurous setting.
- Cooking or Baking Class: Attend a cooking or baking class as a team, where members collaborate to prepare a meal or dessert together.
- Team Bonding Games: Organize games like scavenger hunts, tug-of-war, or relay races to promote friendly competition and teamwork.
- Volunteer Work: Participate in a community service project or charity event as a team, helping others while strengthening team bonds.
- Team Building Workshops: Conduct workshops focused on improving communication, problem-solving, and conflict-resolution skills within the team.
- Personality Assessments: Have team members take personality assessments (e.g., Myers-Briggs, DISC) and discuss the results to better understand each other's strengths and working styles.
- Team Trivia Night: Host a trivia night with questions related to the team's work, industry, or general knowledge to encourage collaboration and friendly competition.
- Building Challenges: Provide teams with materials to build something together, such as a bridge or a tower, to promote teamwork and creativity.
- Office Olympics: Create a series of lighthearted office-based challenges and games that employees can participate in during breaks or after work.
Implement a Strong Requirement Gathering and Backlog Management Process
Through effective requirement gathering, dev teams gain a deeper understanding of their clients’ needs, expectations, and project scope, ensuring that the final product meets stakeholders' expectations.
A well-managed backlog facilitates prioritization, clear communication, and seamless collaboration among team members, leading to streamlined development cycles and timely delivery.
By having a structured process in place, software development teams can avoid scope creep, reduce rework, and minimize project risks, ultimately increasing productivity, customer satisfaction, and the overall success of software development.
Handle Interpersonal Conflict Between Developers
I cannot begin to stress how important it is to address conflicts directly and compassionately. Because if you ignore conflicts and let them fester, your dev team will lose trust in your leadership. The result is valuable developers choosing to leave the organization.
Engineering managers at all times must show their commitment to the wellbeing of the team, fostering a healthy and harmonious work environment where challenges are addressed constructively, and team members feel valued and supported. This approach not only promotes stronger team dynamics but also contributes to higher developer retention rates, ultimately benefiting the organization's overall success.
Stop Echo Chambers From Forming Within the Company
Engineering managers spend most of their working hours in meetings, and a good portion of those meetings is listening to their developers, especially when they’re facing challenges.
While this may be manageable in smaller companies, as organizations grow, there's a risk of leaders surrounding themselves with other leaders, creating echo chambers that detach them from the realities faced by their developers.
By default, echo chambers also form with their developers, and this shuts down communication all around via your regular channels.
To escape an echo chamber, actively seek diverse perspectives by engaging with colleagues from different backgrounds and departments. You can also encourage open discussions where alternative viewpoints are welcomed and explore external sources like conferences and industry groups.
The challenge lies not only in ensuring that your developers possess the necessary skill set — which enhances cost-effectiveness, boosts productivity, reduces errors, and fosters positive work cultures — but also in defining effective communication practices within your company, particularly with the rise of remote work becoming the norm. That means emphasizing great documentation and remote collaborating.
Encourage your developers to proactively share information publicly within appropriate channels, allowing them to freely express ideas, concerns, and feedback. This fosters a collaborative and open work environment.
To avoid the grapevine effect, which is when someone will always know more, try to minimize those informal backchannels. They’ll always be there, just encourage info to always be shared through regular team meetings, Slack, or one-on-one discussions.
Improve your DEI
A candidate that is a “good cultural fit” means that he or she has a set of values that align closely with the company's mission, ethics, and collaborative working approach. But diversity also plays into cultural fit as candidates can contribute various perspectives and experiences, making the organization a better place to work.
Striking the right balance between diversity and cultural fit is key. By defining core values and assessing candidates based on those principles, companies can be both inclusive and diverse.
Pay Your Developers
The tech industry in particular is renowned for its distinctive work culture and perks (Please, no more ping pong tables!) 🏓
But culture can devolve into company-wide resentment towards upper management when developers feel they’re not being adequately compensated. That’s why some developers say, “Well, culture doesn’t pay the bills.”
Sometimes developers get even more cynical when companies champion their culture but also use it as an excuse to underpay and overwork developers.
So, I say, pay your developers and make sure they are happy with their salaries. That way culture just becomes that extra nice thing thrown into the mix.
Just as a person's personality shapes their behavior and interactions, a company's culture influences its values, norms, and work environment. So, it pays to improve the culture within your software development teams. Done right, it can lead to a more engaged, motivated, and collaborative workforce.
When engineering managers are not fully prepared to take on the task of improving company culture, it’s unreasonable to expect your developers to be happy, motivated, engaged, or invested in their work 🪕