January 28, 2021
Best Practices for Creating a Software Culture Where Teams Can Thrive
“Culture” comes up an awful lot when we talk about work.
On the surface, it seems like a small thing, but it’s actually one of the most vital elements in any brand’s business strategy. Culture is a set of shared values, practices, and goals that guide the activities, actions, and decisions of a group of people within a team or organization.
It comes through in the way that teams collaborate, communicate, set goals, and manage priorities. Further, it includes factors that impact the products, services, and messaging customers interact with throughout the buyer’s journey.
Creating a software development culture that is equitable, accountable, and fair sets the stage for teams that thrive. In turn, this culture enables organizations to serve up the high-value experiences and innovative solutions with a direct impact on the bottom line.
This article looks at some of the “key ingredients” for creating a software engineering culture that makes workers want to stick around for the long haul.
Transparency & Accountability
A great software development culture starts with trust, as development teams must work collaboratively to achieve the best possible outcomes.
That means making information available and accessible to all team members and ensuring everyone is in alignment around why they’re doing the work, how it’s done, and establishing consensus around the quality and functionality of that work.
Transparency isn’t always intuitive.
Managers must lead by example–being open about their own work, making regular updates mandatory–whether that’s through project management apps, Slack channels, or during daily standup meetings.
Additionally, a strong software engineering culture is a culture of ownership. Employees should be involved in big-picture goals/have a clear understanding of their role in achieving those goals and how it fits in with the rest of the team.
Gather, share, implement feedback from customers and employees. Work as a team to address challenges.
Managers should also conduct regular 1:1s with employees, provide specific, actionable feedback, and keep developers motivated to keep challenging themselves and improving. That means helping them identify roadblocks or current challenges that may require some extra support from their manager or colleagues.
Finally, managers should set expectations upfront. At the same time, they should be giving employees the space to make decisions and “learn by doing,” always monitoring the process to ensure that workers follow best practices and stay on track to turn in deliverables on time.
Common wisdom says that companies should look for employees who are passionate about what they do–excited by the opportunity to be part of an organization with X, Y, and Z qualities.
Yes, you want “passionate” people who enjoy what they do.
Attracting and retaining top talent also means you need to pay people what they’re worth. This holds true, particularly in software development, where we’re currently in the midst of a global skills shortage.
Basecamp and Netflix aim to attract employees by offering salaries in the top 5% of the industry.
It’s also worth noting–since we’re talking about teams–that you can’t just hire people and never talk about money again–otherwise, there ends up being pay discrepancies/employees feeling like they got the short end of the stick when a recent grad comes in or a new hire with excellent negotiation skills.
Instead, make sure salaries rise with market rates and cost of living expenses, provide all employees with a transparent path toward earning bonuses/raises/promotions. When everyone knows what’s expected of them and everyone is held to the same standard, you’ll find fewer instances of productivity-killing resentment.
That said, competitive pay extends way beyond the money itself–a frustrating job with a great salary will cause employees to burn out fast.
Consider how you might incentivize employees in other ways. For example, as remote work becomes the norm, it might increasingly make sense to create compensation packages that help new employees set up their home office.
Ultimately, a compensation package should communicate to employees that the company cares about them–not just as workers, but as actual people.
Many people avoid leaving their current jobs for a new opportunity if medical insurance is lacking. Even if, with the pay difference, workers can easily pay for their own plan, offering the bare minimum when it comes to benefits communicates to potential employees that this company is willing to cut costs wherever they can.
Empathy may well be the buzzword of the COVID era, but it’s important to remember that it’s always been a crucial part of creating a software engineering culture that people want to be a part of—regardless of role or industry.
Developers (and really, anyone who works with others) need to feel psychologically safe on the job. After all, no one wants to work in a toxic environment where workers are constantly undermining each other or where adult bullies run the show.
Human decency is an essential part of any work environment. However, empathy and kindness alone don’t fix bugs or code errors–empathy must be actionable.
Without empathy, people get defensive, mistakes slip through the cracks. Under these circumstances, no one wants to speak up or admit they were wrong.
It’s essential to have processes in place for dealing with problems that focus on learning from mistakes or failures–as well as the kind of environment that fosters productive discussion and collaborative problem-solving.
For example, team leads might use the 5-Whys problem-solving technique to find the root cause of a problem and identify potential solutions–with the goal of making the team aware of the issue, learning what went wrong, then proposing a series of next steps for avoiding the same problem in the future.
Teams are Equipped for Success
Team leaders play a crucial role when it comes to setting the team up for success. Effective team leaders should have the proper training–both on the technical side and people management–empathy, conflict resolution, and keeping “cool” in a stressful–before taking on this role.
Access to the right tools
Make sure that developers have access to the tools they need to perform their job without friction. That means providing computers with enough power to complete their tasks, a reliable, stable internet connection, as well as technologies that enable automated testing, “sandbox” environments, collaboration tools, and analytics/intelligence that drive major performance gains.
Another important success factor is making sure you’re creating the kind of environment that enables developers to do their best work.
If you’re working in an office setting (or plan on returning to one post-COVID), there’s the open-vs-closed floor plan debate to consider. While many companies argue in favor of the open office plan, as it facilitates spontaneous collaboration, research has shown that open plans can limit creativity and productivity.
Because design and programming require your complete focus, it can be stressful to work while your colleagues are engaging in small talk right behind you. Instead, consider setting up dedicated collaboration spaces for group discussions and workstations that support sustained focus.
Exposure to New Technologies & Growth Opportunities
Many companies work with a limited portfolio of tools and skills at their disposal, in part because leadership often views investments in new tech as expensive or unnecessary, especially if those investments support efforts that fall outside of core business expenses.
While it’s not the only factor behind the software development skills gap, that mindset does nothing to help close it.
Organizations that don’t provide opportunities for developers to learn new programming languages or take on new challenges will risk losing talent to firms that offer a more stimulating environment. The ripple effect has these organizations also lose ground to competitors that can provide more modern solutions.
Most developers love learning and value workplaces that nurture growth. Ensure you are providing ongoing training and opportunities to upskill (and pass that knowledge to the rest of the team), and even the freedom to explore personal projects on “company time.”
Keep in mind that “personal growth” alone isn’t enough–learning new skills only to keep doing the same work day after day gets old fast.
Developers want to be challenged with new projects that give them a chance to put new skills to work and won’t stick around for long if such opportunities aren’t “enough” or don’t exist at all.
Instead, you’ll want to look for ways to build innovation into your company culture. For example, you might try embracing a concept known as “intrapreneurship,” a strategy that allows employees to act like an entrepreneur—think self-motivated and proactive—within their organization.
The idea is, organizations treat their staff as though they are running their own business—giving them the freedom to look for problems and solutions on their own. Here, individuals receive the experience of entrepreneurship, while the company takes on the risk–benefitting from wins and bouncing back from losses.
Rather than looking at investing in software development culture as an expense, companies should consider it an investment in their future success.
Healthy cultures unite teams around the same common goals—delivering high-quality solutions, continuously improving, and allowing teams to leverage their knowledge and creativity to create value for their clients.