A common argument for joining a startup is to work on something meaningful — taking on risk, lower pay and longer hours to work on a fulfilling mission. A similar reason is used to argue you shouldn’t join a startup. Most startups aren’t making the world a better place, and it’s just a job, stick with something less risky, better paid and more comfortable. It’s true most startups aren’t changing…
Best practices are, despite the name, not universally good. Many best practices in programming don’t meet the definition. They spread not based on merit or evidence but thanks to authority bias and social utility. As they spread, they lose nuance. As they lose nuance, they become easier to evangelise. Combined with lack of experience, they can lead to cult-like behaviour. Think of an engineering…
In automated software testing, the default approach among developers is bottom up, and the aims are high coverage and working software. This approach misunderstands the goal of testing and often fails to deliver on the goal of reliably shipping working software. The idea of the bottom up approach is that you use tests to show that individual parts are correct, that they integrate, and that your…
Being a tech lead in an empowered product team is not a purely technical role. In addition to your typical engineering duties, you are a part of the product manager/tech lead/product designer trifecta and you collaborate on product decisions. In this post, I want to talk about how the tech lead role is different and what I consider essential to being successful in it. I’m drawing on my own…