Software Engineering
2024
Mastering Programming - by Kent Beck ↗ Reading List
2023
What a good debugger can do ↗ Reading List
There’s nothing more powerful than a developer with a good debugger and the knowledge of how to use it.
A Skeptic’s Guide to Software Architecture Decisions ↗ Reading List
Admittedly, I’m often too positive on assumptions and not sceptical enough. This is a good article to help fix that or change the approach.
You Want Modules, Not Microservices ↗ Reading List
Another article of why Microservices might not be the right solution to your problem.
2022
The Perfect Commit ↗ Reading List
I aspire to at least have a pull request with those features.
Generous use of git rebase
make it possible for very commit.
This requires some planning ahead and cleanup but makes reviews now or later so much easier.
Staff engineer archetypes ↗ Reading List
In my career I’ve been all these roles at one point or another, but at smaller sizes. My current role fits neatly into the Team Lead. There are aspirations for Architect though.
More...Uncommon Uses of Python in Commonly Used Libraries ↗ Reading List
I have complicated feelings about TDD • Buttondown ↗ Reading List
TDD often makes your design better!
My point is that it can also make your design worse. Some TDD is better than no TDD, but no TDD is better than excessive TDD. TDD is a method you use in conjunction with other methods. Sometimes you’ll listen to the methods and they’ll give conflicting advice. Sometimes, TDD’s advice will be right and sometimes it will be wrong. Sometimes it’ll be so wrong that you shouldn’t use TDD in that circumstance.
It’s one of many tools you have at your disposal, but like any of them it’s not the panacea that solves all your problems.
Introducing Ristretto: A High-Performance Go Cache - Dgraph Blog ↗ Reading List
You Don’t Need Microservices. ↗ Reading List
Most companies and projects are by far not big enough to benefit from microservices, and not good enough to deal with the implications and repercussions. There’s a reason “distributed systems” are hard: it’s the next difficulty level after multi-threaded concurrency — harder to observe, harder to reason about.
How finishing what you start makes teams more productive and predictable ↗ Reading List
The aspect of “transaction cost” for doing a particular thing once or multiple times is interesting.
Starting a bunch of things in parallel will often lead to many being finished at a similar point in time, often all at once and leading to the dreaded ‘big bang integration’, which even in short sprints may be painful enough already.
That said, I love starting multiple things at once. Sometimes being ‘stuck’ on the same thing and not having some other outlet or diversion to put your mind to makes a task take longer. Having the ‘diversion’ often gives me more energy to breeze through the other task… and sometimes it doesn’t. It’s not scientific.
Richardson Maturity Model (for REST) ↗ Reading List
A follow-up to the question whether we do REST wrong that provides examples of what constitutes a fully RESTful service.
How Did REST Come To Mean The Opposite of REST? ↗ Reading List
And here I thought I knew full well what RESTful APIs had to look like. The constraint in my head was that individual resources (e.g. items in a database) should have their own URL and you used the HTTP verbs (GET
, POST
, DELETE
, etc.) correctly.
What was missing from that is the Hypermedia aspect, where each response defines the appropriate URLs for the possible next steps.
More...the wild web: Reckless Software Construction ↗ Reading List
“Be an engineer, not MacGyver.”