The success of a startup depends on its people, culture, and product-market fit. As a startup grows, culture evolves. At an early stage of a startup, it’s vital to have a strong cultural foundation and build a strong core of people and culture.
The same concept applies to build an engineering organization within a startup. And a strong engineering core means to have a strong foundation on people, practice, and process. Who we hire, what we do, and how we do things will change as we grow. One useful pattern that reflects the constant change is “3/10 rule”, which states that when the headcount of an organization changes from “3-something” to “10-something”, it needs to change the way it operates: grow from 3 to 10 people, 10 to 30 people, 30 to 100 people, etc.
Handling such change relies on a solid core of culture and people. At each stage of growth, different pains emerge, but there are patterns and best practices we can learn and adapt along the way. A solid startup core manifests in people, practice, and process.
The foundation of people starts with the hiring process. Having a great hiring process is a great challenge in itself, and one aspect of hiring that companies emphasize more on is diversity and inclusion. This is a great trend because a diverse team builds empathetic and resilient products. Additionally, a diverse team brings different perspectives, and by sharing, debating, and implementing different ideas, we help each other grow and build relationships.
The foundation of engineering practice originates from how an engineering team does things daily. To lead a solid practice, as engineering leaders, we need to practice what we preach. For example, if we want the team to practice test-driven development, we should write thorough tests ourselves when submitting a code review. If we want to encourage written communication, we should write clean, well-organized documents ourselves. Evolving certain practices requires patience and consistency, and they don’t change overnight. When trying to form a new practice, introduce them at a good pace, practice them with consistency, and iterate on the change by listening to the team’s feedback.
For example, when I started at my current startup, I wanted to introduce a better way to leave comments on code reviews, so I started adding “blocking” or “non-blocking” prefix to each of my comments to indicate the importance of each comment. This small practice added more clarity on code review, and over time the team started to adopt the practice.
The foundation of the engineering process requires detailed observations and orchestration of engineering practice. Each process should have a clear purpose behind it, and a good exercise is to document and track current engineering processes and layout their purpose. If a purpose is not clear or overlaps with another process, we might consider refactoring a redundant process. Additionally, resist the temptation of putting a new process when certain practice is broken. For example, schedule a new weekly meeting immediately after we realize product requirements are being miscommunicated. Take some time to internalize a broken practice and then understand the root cause, and sometimes we find that a root cause can be fixed, instead of reacting with fixing a symptom right away.
People, practice, process are the main factors that lead to a great engineering core in a startup. What other factors do you think that impacts a startup’s engineering culture?