Modern Software Engineering notes

Last night I had the pleasure of attending an IRL talk in Belfast from Dave Farley, co-author of the famous “Continuous Delivery” DevOps book.

Dave’s talk covered areas from his new book Modern Software Engineering , whose general thesis is that we should be optimising for learning within our software development processes by taking an iterative experimental approach.

I thought I’d share with you some short notes on areas of his talk that I found interesting:

  • There is a crossover between 5 qualities that are desirable in software (Modularity, Cohesion, Separation of concerns, Abstraction, Loose coupling) and how the presence of these qualities in your code amplifies the testability of it. This is a great reason to practise TDD.
  • On these 5 qualities: “I expect none of you will disagree with any of these 5. You may have some of your own you wish to add”. The presence of (the right amount of) these qualities is almost universally accepted as desirable, irrespective of an application’s architecture or tech stack.
  • Testable code makes assertions easy. If you can’t find anything to assert on at the end of your test case, you need to change your module interfaces.

And he finished with a really interesting anecdote that he’d recently learned:

“SpaceX use TDD, trunk based development and release software changes 45 mins before take off”.

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 >>