De beste boeken over software ontwikkeling die ik in 2024 las
Het is weer die tijd van het jaar! Wat waren de beste boeken over softwareontwikkeling die ik het afgelopen jaar heb verorberd? (Klik voor 2020, 2021, 2022 en 2023.)
Top 1 - 5
1. Kent Beck - Tidy First?: A Personal Exercise in Empirical Software Design
Helemaal aan het begin van 2024 las ik de tweede editie van Extreme Programming Explained van Kent Beck met Cynthia Andres. En die had niet misstaan op deze lijst, ware het niet dat James Shore me al met het gros van de ideeën erin bekend had gemaakt, in The Art of Agile Development (ook een tweede editie – mijn op één na favoriete boek van 2022). Wat ik bedoel te zeggen is: het was een goed jaar om Kent Beck te lezen.
Tidy First? is zijn nieuwste boek, en die stelt de vraag: moet ik nu opruimen, of straks? Het antwoord is: it depends, maar liever nu. Omdat mooie code voor gelukkiger ontwikkelaars zorgt? Ook, maar bij Beck draait het om de knaken: in het derde deel van het boek geeft hij een interessante analyse van de economie van coderen. Ik schreef over deze verhandeling over empirische softwareontwikkeling in deze, deze, deze, een beetje in deze en deze, en deze blog.
2. David Farley - Modern Software Engineering: Doing What Works to Build Better Software Faster
Ook Dave Farley biedt een hoogover blik van wat het betekent softwareontwikkelaar te zijn – of zoals hij het liever noemt: software engineer. Het werk van een softwareontwikkelaar valt volgens Farley ruwweg in twee delen uiteen: optimaliseren voor leren, en het binnen de perken houden van complexiteit. Zijn pleidooi voor het gebruik van wetenschappelijke rationaliteit is een aanrader voor junior én senior.
Voor de niet-lezers onder ons: zijn YouTubekanaal is ook niet te versmaden.
3. Frederick P. Brooks, Jr. - The Mythical Man-Month: Essays on Software Engineering (Anniversary Edition, 2nd Edition)
Ik zal je eerlijk zeggen: het was voor mij een worsteling om door Fred Brooks' klassieke essaybundel over het managen van softwareprojecten heen te komen. Maar dat werd meer dan goed gemaakt door het fantastische essay No Silver Bullet, waarin de schrijver voorspelt dat alle nieuwe technische ontwikkelingen in programmeerland er niet in zullen slagen een verbetering van 10× te bewerkstelligen. (Het is grappig om te zien dat de hypes uit Brooks' tijd hun belofte nog altijd niet hebben waargemaakt: zijn essay uit 1986 (!) heeft het onder andere over kunstmatige intelligentie en low code oplossingen, naast het gedoodverfde objectgeoriënteerd programmeren).
Want die ontwikkelingen richten zich op de accidentele complexiteit in softwareontwikkeling. Een verbetering van 10× zou zich moeten richten op de essentiële complexiteit: erachter komen wat er überhaupt gemaakt moet worden. Met andere woorden: de essentie van softwareontwikkelen is niet building the thing right, het is building the right thing.
4. Cary Milsap - How to Make Things Faster: Lessons in Performance From Technology & Everyday Life
De kern van Cary Milsaps boek over performanceverbetering is even eenvoudig als waarachtig: zorg dat je de bron van het probleem te pakken hebt voordat je het probleem probeert op te lossen. Hij illustreert dit gegeven aan de hand van tal van anekdotes – sommige technische, andere persoonlijk, maar altijd vlot en met humor geschreven. Die hard techneuten zullen met How to Make Things Faster niet aan hun trekken komen, maar als inleiding in performanceoptimalisatie is deze absoluut een aanrader.
5. Nicole Forsgren, Jez Humble, Gene Kim - Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations
De inhoud van Accelerate was al via verschillende conferentiepraatjes tot me gekomen. (Farley haalt het onderzoek ook aan in Modern Software Engineering.) Ik ben dus late to the party, maar toch is het de moeite waard om naar de bevindingen van Forsgren, Humble en Kim te kijken – het is immers het resultaat van hoogwaardig empirisch onderzoek. (Daar is Farley weer met zijn wetenschappelijke rationaliteit!)
Accelerate biedt de lezer genoeg handvaten om zijn proces van softwareontwikkeling te verbeteren. Het boek zit vol verwijzingen naar concrete praktijken die je morgen kunt implementeren om sneller hoogwaardige software op te leveren. – Helaas is wijzen naar de bevindingen alleen nog niet genoeg gebleken om mijn team ervan te overtuigen trunk based development te proberen.
Top 6 - 10
- Wouter Groeneveld - The Creative Programmer
- Scott Wlaschin - Domain Modeling Made Functional: Domain-Driven Design and F#
- Jim Highsmith - Wild West to Agile: Adventurs in Software Development Evolution and Revolution
- Anna Skoulikari - Learning Git: A Hands-On and Visual Guide to the Basics of Git
- Simon J. Painter - Functional Programming with C#: Create More Supportable, Robust and Testable Code
Top 11 (bonustip)
11. Hannah Arendt - The Human Condition (Second Edition)
Misschien is het melig om Hannah Arendt op je tiplijst van softwareboeken te zetten – dat weet ik niet. Maar: Arendts fenomenologische analyse van het actieve leven leerde me daadwerkelijk iets over sommige aspecten van mijn werk. (– O God, dat klinkt nog meliger.)
Sommige zaken in ons leven zijn doelgericht, ze hebben een begin en een eind. Het ontwikkelen van een nieuwe feature of het fixen van een bug valt in die categorie. Andere zaken zijn daarentegen circulair, het is een steeds terugkerende bezigheid die nu eenmaal hoort bij de menselijke (of in dit geval: softwareontwikkelende) conditie. Refactoren valt in die categorie.
De les is dan ook: wee degene die refactoring in die doelgerichte mal probeert te drukken! Ik schreef er hier en hier over – maar onder ons: dit boek is ook een aanrader als je geen softwreontwikkelaar bent.
Welke goede boeken heb jij het afgelopen jaar gelezen?