How can we build software applications that are resilient to changes in the engineering team?

A while back, I posed the question “Are software applications getting harder to maintain?” and then I read this tweet yesterday which again touches on the consequences of high engineer turnover and potential for misaligned incentives:

Dare Obasanjo tweet

Replies to Dare’s tweet seem to focus on solving the problem of “How can we get engineers to stay longer in the same company?”, with ideas for improving internal company culture and other non-compensation related quality of life aspects. This is all noble stuff and I don’t disagree with these suggestions. But as someone who (a) has not been a full-time employee for almost a decade, and (b) believes that exposure to many working environments is the best way to learn and grow, I don’t feel I’m in a position to weigh in on that debate.

Instead, I’m more interested in asking the question: “How can we build software applications such that they’re resilient to changes in the engineering team?”. The old bus factor discussion. Begin with the assumption that there’s a chance that some key team members may not still be there in a few months’ time and act accordingly.

The high-level approach to doing is a pretty boring one: KISS when choosing tech and architecture, write tests, write good docs and automate your releases. Obviously this is much easier said than done. And perhaps it’s true that many FTE engineers with lots of job opportunities don’t have enough skin in the game to devote time to some of these, or worse, are actively incentivised to do the opposite and choose more complex techs in order to further their career.

I don’t know the best way to change this, but it’s something I’m going to think more about. Would love to hear any thoughts or experiences you’ve had in this area.

— Paul

Join daily email list

I publish short emails like this on building software with serverless on a daily-ish basis. They’re casual, easy to digest, and sometimes thought-provoking. If daily is too much, you can also join my less frequent newsletter to get updates on new longer-form articles.

    View Emails Archive

    ☎️ Serverless Clarity Call

    Need quick guidance on a specific issue on your AWS serverless project? Or just wondering where to start with serverless?

    Book a call and ask me anything.

    Learn more >>

    🛫 Serverless Launchpad

    Ready to start building your new AWS serverless project but need help with getting everything setup?

    The Serverless Launchpad is a done-for-you DevOps service installed in under a week. You get a leading-practice multi-account AWS environment, a scaffolded codebase and architecture including the common AWS serverless services, isolated cloud environments for individual developers, automated delivery pipelines right through to production and much more. Everything is IaC, extensively documented and handed over to your developers.

    Learn more >>