[Oldletter #11] Software complexity, How to teach code and You Probably Are Gonna Need It

Every Friday, I’m sharing a short list of evergreen articles/resources broadly related to software engineering that wouldn’t typically get shared in most tech newsletters or social media feeds.

My backlog is running low again, so please send me any new recommendations you have.


  • Extracts from “A Philosophy of Software Design” (2020) reviewed by Florian Sauter. Software design is all about dealing with complexity either by avoidance or encapsulation. Complexity has 3 symptoms: Change Amplification, Cognitive Load and Unknown Unknowns. Thanks to reader Juan Tomas Garcia for this recommendation.
  • How to teach code (2020) by Ali Spittel. If you’ve ever thought about teaching code either internally or publicly, this article has a lot of great tips. Ali discusses selecting the right lesson formats to keep people engaged, pitching content at the right level and being ok with not having all the answers.
  • Preemptive Pluralization is (Probably) Not Evil (2021) by Shawn Swyx Wang. I’m a huge YAGNI proponent, but there are occasionally exceptions to this where you make a call to build in some feature early for which there is no immediate requirement, particularly when the following 2 statements are true: there’s a non-negligible probability that you may need it in the future, and if you do, it would involve significantly more effort to do at later stage than to do it now. Shawn gives a good example of this here around designing 1:1 relations between entities as 1:many.

    Before you write any code — ask if you could ever possibly want multiple kinds of the thing you are coding. If yes, just do it. Now, not later.

    If you view “code that doesn’t blow up in my face a year from now” as your job, then it is not (premature).


Submitting your recommendations

If you’d like to share an evergreen article/book which has significantly influenced your thinking or practice around software delivery, please email it through to me and I’ll add it to my backlog for sharing in future editions.

Have a great weekend!

— 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

    🩺
    Architecture & Process Review

    Built a serverless app on AWS, but struggling with performance, maintainability, scalability or DevOps practices?

    I can help by reviewing your codebase, architecture and delivery processes to identify risk areas and their causes. I will then recommend solutions and help you with their implementation.

    Learn more >>

    🪲 Testing Audit

    Are bugs in production slowing you down and killing confidence in your product?

    Get a tailored plan of action for overhauling your AWS serverless app’s tests and empower your team to ship faster with confidence.

    Learn more >>