3 [+1] Books to Become a Better Developer
Published on AprĀ 20, 2022 (updated DecĀ 27, 2024), filed under development (feed). (Share this on Mastodon orĀ Bluesky?)
4 Books to Become More Efficient and Effective kicked it off; hereās the second of four pieces about books I highly recommend reading:
A Philosophy of Software Design by John K. Ousterhout
I have noticed that the design-it-twice principle is sometimes hard for really smart people to embrace. When they are growing up, smart people discover that their first quick idea about any problem is sufficient for a good grade; there is no need to consider a second or third possibility. This makes it easy to develop bad work habits. However, as these people get older, they get promoted into environments with harder and harder problems. Eventually, everyone reaches a point where your first ideas are no longer good enough; if you want to get really great results, you have to consider a second possibility, or perhaps a third, no matter how smart you are. The design of large software systems falls in this category: no-one is good enough to get it right with their first try. Unfortunately, I often see smart people who insist on implementing the first idea that comes to mind, and this causes them to underperform their true potential (it also makes them frustrating to work with).
The Pragmatic Programmer by Thomas David and Hunt Andrew
Donāt Live with Broken Windows
Donāt leave ābroken windowsā (bad designs, wrong decisions, or poor code) unrepaired. Fix each one as soon as it is discovered. If there is insufficient time to fix it properly, then board it up. Perhaps you can comment out the offending code, or display a āNot Implementedā message, or substitute dummy data instead. Take some action to prevent further damage and to show that youāre on top of the situation.
Clean Code by Robert C. Martin
Programmers face a conundrum of basic values. All developers with more than a few years experience know that previous messes slow them down. And yet all developers feel the pressure to make messes in order to meet deadlines. In short, they donāt take the time to go fast!
True professionals know that the second part of the conundrum is wrong. You will not make the deadline by making the mess. Indeed, the mess will slow you down instantly, and will force you to miss the deadline. The only way to make the deadlineāthe only way to go fastāis to keep the code as clean as possible at all times.
Addition: Fundamentals of Software Architecture by Mark Richards and Neal Ford
Everything in software architecture is a trade-off.
Itās December 2024, Iāve just finished Fundamentals of Software Architecture, and Iām rating it 5 stars and a must-read if youāre a technical lead or manager. For the moment, Iām leaving this as isāif I can, Iāll properly fold this recommendation into the article.
ā§ You notice how Iām skipping a detailed account of how these three four books have made me a better developer. Yet my experience reading both of them, late (2020ā2022), was more one of pouring concrete into my foundation as a developer, rather than leveling me up. And thatās how I think you may experience these books: As a junior developer, these will level you up, and as a senior developer, they reinforce your base.
You may also notice how I, as a frontend developer, are only listing three four books here, and not even one about frontend development. Do I only write, but not read books about frontend development? Are there no good books on frontend development?
Thatās not it. I do read books about frontend development, and some are really good (check my 4- and 5-star ratings). But none Iāve read were as strong and impactful as A Philosophy of Software Design, The Pragmatic Programmer, Clean Code, and then Fundamentals of Software Architecture. If you know oneāplease let me know!
About Me
Iām Jens (long: Jens Oliver Meiert), and Iām a web developer, manager, and author. Iāve been working as a technical lead and engineering manager for companies youāve never heard of and companies you use every day, Iām an occasional contributor to web standards (like HTML, CSS, WCAG), and I write and review books for OāReilly and Frontend Dogma.
I love trying things, not only in web development and engineering management, but also in other areas like philosophy. Here on meiert.com I share some of my experiences and views. (I value you being critical, interpreting charitably, and giving feedback.)