2020 summer's links
Links from my readings of the summer: software, product, startups and the internet.
I had quite a long interruption this summer. Here is a long list of the best reads I had during that time. It's about software craft, product craft, internet and startups.
Model, system, code
There is an approach to design that many, if not most, developers adopt unthinkingly. Let’s call it Code Driven Design. It’s the process we’re likely to follow automatically; the path of least resistance.
Nice article by David Seddon about his personnal software design process. In my experience, a good part of software developpers' issues originates in a lack of a clear and structured methodology.
So here is one to inspire you.
The alternative to roadmaps
I've discovered the Silicon Valley Product Group blog pretty recently, and I became some sort of fan boy instantly. This piece is already five years old and is inspiring. In a nutshell, the alternative is:
- Empowered, autonomous teams with some form of OKR
- High integrity commitments (https://svpg.com/managing-commitments-in-an-agile-team/)
Property-based testing and hypothesis in python
Property-based testing is some complicated word for a simple idea: some part of your software presents properties that can always be verified. In Python, hypothesis is a library to achieve easily that type of tests. The funny part is, I had already used hypothesis and made some property-based testing without realising it, up until I read this article! It was kind of a "ahah" moment, since I finally understood why hypothesis is clearly not suitable for all tests in Python.
The most famous loop
Alex Danco's newletter Two truths and a take is great. This one is very interesting. He elaborates an analogy between thermodynamic's Carnot cycle loop and business loops, with one powerful idea: expansion and contraction of disorder is an essential part of efficient loops.
A must read!
UI as an afterthought
This post explains how one should model and design front-end software, starting from state and processes, rather than from UI. Stated differently, Domain Driven Design apply to front-end development too ;)
Fast design will kill your product
As a software engineer, and sometimes team lead, I often feel odd when stakeholder (CEO most of the time) ask me to put some small changes on top of our backlog. Most of the time, justification is: "it's a quick win". And yes, sometimes these are real wins, quick to implement - but not all.
The problem is, how can you keep a consistent product design when you are taking a lot of fast design decisions ?
This post is a concise explanation of why you should be very careful when doing fast design. I'd add that you should be careful with quick wins - sometimes it is not really quick, and sometimes it's not even a win...
#NOESTIMATES - La fin des estimations ? (in french)
A great video by Frédéric Leguedois about estimates in software development. Full of interesting considerations - and a lot of punchlines!
India, Jio, and the Four Internets
On one hand, large U.S. tech companies are winners, at least relative to everyone else: yes, all of the regulatory red tape increases costs (and, for targeted advertising, may reduce revenue), but the impact is far greater on would-be competitors. To put it in allegorical terms, the E.U. is restricting the size of the castle even as it dramatically increases the moat.
In this Stratechery issue about TikTok, Ben Thompson describes the different Internet models, from US to China and European one. Obviously, his opinion on EU model strikes me: yes, we are gaining more and more protection for citizens. But it comes at a cost, that is not recognised explicitly most of the time: these regulations are barrier for new incumbents. The same regulations that are protecting us citizens are also preventing us to grow our own Internet giants, and thus let us completely dependent of US techs.
Maybe the most effective way to fight against GAFAM in EU would be to have our own GAFAMs.