My philosophy on startup engineering teams
April 30, 2020
When I took over my first engineering team I thought deeply about my core philosophy for an engineering team and how that might impact my decision making. I try (and occasionally succeed) at being as consistent as possible so that engineers on my team have a good sense of what they can expect from my thought process. Most of these thoughts are not original but I think they form a good basis for how to approach thinking about startup engineering.
-
The main purpose of a startup engineering team is to solve business problems with technology. Everything the team does must be taken within that context and must always ask how does this work impact the business?
-
Focus on building systems around core competencies and use open-source or buy technologies for already solved problems.
-
Startups usually operate without existing patterns to build on and to succeed they must experiment as often as possible on new ideas around the business. The engineering team is the "tip of the spear" building most of those experiments and the tech stack needs to enable that ability.
-
Velocity (the rate at which new features are shipped) is a competitive advantage for the business and therefore a good team dedicates time to increasing velocity through improvements to their systems, tooling and code.
-
Improving code without a business objective should be considered wasteful but it's not necessary to always prove every single improvement has a defined impact. Sometimes it's important to trust that the ROI is self-evident when there is team consensus or has been proven in the tech industry already.
-
There is no team without happy engineers so keeping an engineer happy and productive is a very good reason to focus on improving code or tooling.
-
Don't be dogmatic. A good team continuously reflects and evolve how they think about their technology and what the stack should look like in the future. That means every tech stack should be considered a work in progress and will constantly be under revision.
-
Startup engineering necessitates making trade-offs that over time will no longer seem like a good idea. Try and approach past decisions without seeking blame and instead recognize that there were probably decent reasons at the time the decision was made.
-
Smart engineers know that not every decision will go their way. Make sure your team gives you reasonable time to make your best case for why you believe in a certain decision but learn to commit to an outcome you don't agree with when you aren't able to convince others.
-
Creativity comes from feeling safe to fail. Failures borne from good intentions and process should be celebrated because there is always a learning in failure. Build an engineering team that feel safe to fail or you'll build an engineering team that is scared to try.