The Single Most Important Asset of any Startup | Software Architecture Series, Part V
Over the years, I’ve had the pleasure of working with companies of all shapes and sizes, from pre-seed to late stages of funding. This experience has taught me a lot about what makes a good company succeed and what are early stages of serious problems.
Without a doubt, the biggest challenge any engineering startup department faces has little to do with the technology itself. As Technical Leads, we can often get entangled in idealistic dreams about where we want to be, how we get there and what approaches we can take to arrive at that point. With the everyday grind to get technology working, we can make the mistake of forgetting that technology is only made possible by people.
Previously, in What is the best Tech Stack for my Startup in 2021? Software Architecture Series, Part II we’ve explored how to look at technology in a pragmatic way. This consists of empowering the skillsets of the team you already have and prioritising time to market over perceived engineering excellence.
Software Engineering is very much a human process — we have a team of people, from different backgrounds, possessing a wide range of skills, working together in harmony. This harmony however is both hard to achieve and even harder to maintain over long periods of time.
The responsibility of a Tech Lead is, in good part, technical. Taking the right decisions about tools, architecture and modelling complex systems. At the same time, a bigger responsibility lies in ensuring all your team members are well cared for and creating a thriving work environment.
For engineers promoted to management roles, this is often a challenging process. As an engineer, you spend a lot of time resolving technical tasks. As a manager, however, you spend much of your time caring for your team’s needs and ensuring they have all they need to resolve the technical challenges.
In my experience, two major issues are present in many fast-moving startups. Without proper checks in place, these can quickly spiral out of control.
Common Issue #1: Lack of Prioritisation
Team members can quickly become exhausted with a lack of proper planning and prioritisation. In a company where everything is a priority, nothing is a priority.
Few things cause people to leave faster than the feeling of their work is always changed, de-prioritised and urgent requirements creep in every day. While true emergencies should require everybody’s attention, a constant series of emergencies means there are more serious problems underneath.
Common Issue #2: Blame & Lack of Accountability
In certain unhealthy company cultures, members can be afraid to be honest about a mistake, fearing that it will look bad in their performance reviews.
When it goes unchecked, this kind of culture will encourage people to keep issues to themselves for longer than needed and be afraid to reach out to fellow teammates that can help them resolve them faster.
Ensuring that people feel safe to come to you for any kind of problems, big or small, is a distinguishing factor for an efficient Tech Lead.
Challenge: F**k-up Fridays
As I was writing this article, a really cool bit of content came from HBO’s Twitter feed. They’ve recently made an error that caused a test system to email live customers with a harmless message. The way this issue was reported showcases the best attributes of handling a tough situation: own the mistake.
Messages in the thread are quite interesting, turning in a long list of people expressing their own adventures doing thing the wrong way, trying to inspire the young intern that this is not such a big deal.
One of my favourite ways to help loosen up the rigid structures around accountability & ownership of mistakes is to create a safe environment for team members to express their recent mishaps.
We would set up about 1.5–2 hours every Friday, get together around the office, or remotely recently, over some nice snacks & pizza and casually talk about all the mistakes each one of us has done the past week and how we’ve fixed it.
The important aspect of this exercise is twofold. First, it helps your team embrace the concept that nobody is perfect and mistakes happen, at all levels of experience. Second, it enforces the concept of accountability across everybody — nobody will judge you for making the mistake as long as you come out quickly and do everything you can to resolve the problem alongside your team.
At first, things can be weird yet the conversation can be lead by example. It’s a really powerful message when tech leads express their own mishaps in front of the team, further embracing the concept of accountability at all levels.
In summary, make sure that as a technical lead, you empower your team to both to achieve results on a technical front, yet equally ensure a healthy, harmonious working environment for everyone involved.