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”.
Indie Cloud Consultant helping small teams learn and build with serverless.
Learn more how I can help you here.
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.