In order to have a strong technology startup, company culture is vital. Specifically, engineering culture is vital, no matter how small the team. A great engineering culture will not only attract top engineers, but also help keep them happy and productive to drive the company forward.
Despite the the common images of ping pong tables, free lunches and casual Fridays, strong company culture isn’t any of those. (Oursky has casual weekdays, team dinners, a foosball table and 4 cats, but we’re more than that!) Engineering culture is the set of guidelines, values and standards that engineers use to guide themselves. This culture is a positive form of peer pressure that motivates team members to create quality work. (By the way, sticking a poster with your company’s values on a wall happens after you’ve already developed those values, not before.) Culture about introducing an attitude, and feeding and tending to that attitude on a daily basis.
Needless to say, every company’s culture is different, so every company will build up their culture in a different way. Instead of thinking about the specific things you need, think about using the methods common to numerous popular companies. This post will help you understand how you can build up a culture even when your team is still small.
Discussion and debate are vital.
Encourage open discussion and debate between all members. Open discussion and debate is vital for pooling ideas and acknowledging people’s contributions. Still, debate can often cause tension because people care and feel strongly about their strategies.
Discussions need to be well moderated to engage all team members. For example, a team with extroverts may need a different set of protocols than a mixed team with introverts and extroverts. A good leader will moderate and also demonstrate by example how to challenge and debate ideas that develop – rather than hurts – relationships between team members.
It is also an unavoidable fact that some people simply are argumentative. Problems can arise when people begin to create conflict or begin to squabble with no constructive goals. Identifying nonconstructive conversations and diffusing sources of tension as the discussion progresses is key to building strong communication channels. Similarly…
Emphasis on quality, not rank.
A team that buys into the idea of choosing the best option rather than the higher rank has a solid culture. Seniority should not matter when debating ideas. What matters is which idea is better, so let the ideas speak for themselves. As explained by Scott Cook, co-founder of Intuit, “Traditional management prioritizes projects and assigns people to them. But increasingly, managers are not the source of the idea.”
This isn’t to say that teams shouldn’t have managers. Managers are needed to help make executive decisions, especially when two ideas seem equally good, but probably have entirely different directions. Since projects aren’t abstract debates to be shelved, the proposed ideas need to be executed. Senior managers can help the team along after a healthy debate and also take executive responsibility for guiding the team in a certain direction.
A strong team culture will accommodate these decisions, which are usually done with transparency. A senior member’s role is to help make a decision, support everyone to execute and ultimately take responsibility if it doesn’t work. The role of a senior team member isn’t to impose decisions, but rather to help move the team along at a cross-roads. And while you’re at it…
Say goodbye to code ownership.
Although code ownership seems great at first (control and credit where it’s due), there are many long-term disadvantages. Code ownership means working alone when in reality, everyone pitches in for small teams. Ultimately, letting go of code ownership allows code to get better. Ensuring code quality allows the next developer to pick up the code without spending too much time understanding the logic.
Thinking as a team encourages developers to consult each other as well because they are coding with others in mind. It’s pretty common for a developer to completely forget the logic and context of a piece of code s/he developed 6 months ago, so code needs to be self-explanatory and have a well-defined architecture to keep all engineers – including the original developer – in the loop. Two heads are better than one, so to speak!
Optimise for iteration speed.
This will not only increase innovation output in your company, but will give engeineers greater flexibility. Fast iteration will keep a team focused, rewarded in meaningful cycles, and motivated. Fast iteration comes in two types. Firstly, there is bureacratic and organisational. Secondly, there is the actual code and product. Buraucracy is a bottleneck that slows down launch, which is a source of frustration. A product with long cycles and huge overhauls means that engineers can’t see the results of their progress or test as they go; this is time-investment risk and also a psychological drain if projects fall behind. And finally…
Think about your teams.
How many teams are in your company and how many people do they have? If your company is growing (yay!) consider breaking down into smaller teams. Small, structured teams have stronger and faster communication as well as flexibility. These are vital for moving quickly in development cycles. Once these teams are created, tasks should be broken down by project managers to help oversee the project timeline and make sure workloads as manageable. Always let your developers know exactly what they are expected to deliver. Small teams also stop doubling up and ownership confusion. A small team structure helps improve:
- Focus: Small teams mean that a manager or team leader will be able to spend more time with each individual person.
- Cohesion: Small teams generally find it easier to act as a united whole.
- Interaction: Leaders can keeping track of everyone’s progress and address issues quickly.
- Visibility: Small teams make it much easier for leaders to weed out those who are holding the team back.
- Administration: Small teams mean the recruitment and training process will be much quicker, allowing the team to start working much sooner.
- Clarity: Even though people often cover for each other in small teams, everyone knows what everyone else is doing. The team is able to keep track of all successes, expectations, failures and circumstances.
For more tips on keeping your team running smoothly, check out our post on Lean Project Management: Field Notes from 8 Years of Development!
If you find this post interesting, subscribe to our newsletter to get notified about our future posts!