It’s been over 10 years since I’ve started my career in IT as a developer. It seems so long ago and looking back, I can only be proud of myself in how far I have come and how much I have grown. Over the years, my growth was accelerated either through reading or through listening to people who are much more knowledgeable than me and I’d love to share these. To me, what I’ll be summing up is nothing less than what I see as basic knowledge that every developer should have.
Uncle Bob’s Clean Code series
Yes, they are extremely absurd. I’ve seen Monty Python sketches that raised less eyebrows than your average episode of Clean Code. But the knowledge contained within these episodes has epic proportions. It’s easy to dismiss most of the things Robert C. Martin preaches as self-evident, but the reality is that in most cases, it’s a huge kick in the butt and a reality check. Most of us talk about TDD, SOLID principles and code conventions, but if we would all adhere to the principles of Clean Code, there wouldn’t be that much crappy code out there. And believe me, there is some seriously crappy code out there. The episodes aren’t that expensive and I suggest you take the downloadable version, it’s just so much easier. And let’s face it, even if you only take the first 18 episodes, which are to me the most important, it’s the best course you’ll get for $360. And while you’re at it, buy the Clean Code and The Clean Coder book and re-read them often.
Implementing Domain Driven Design
Domain Driven Design is to me the best way to design business software. As a developer, it’s way to easy to get dragged into the technicalities of a certain framework or languages and lose sight of what is most important: writing software that fulfills the business goal of the end user. DDD is nothing more than a set of guidelines and practices on how good software should be designed and written. The original DDD book is a bit dry and frankly not much fun to read. If you do want the concise version, I suggest buying Domain Driven Design Distilled. But the real value is in the Implementing Domain Driven Design book. This book translates into practice how and why you should write software a certain way.
Writing good software is hard, writing software that’ll behave as you would want it to in production is even harder. I’ve had to buy this book twice because of the wear and tear this one had to endure. Especially in the age of DevOps practices, this book is unmistakenly one of the hidden gems not a lot of developers will have read. A lot of developers know what Hystrix is or how a thread pool works, but this books shows you why you need these and what the consequences could be if you don’t take them into account.
Devoxx recordings on YouTube
If you’re not able to attend Devoxx, that’s no longer a big issue. All the talks have been made available for free on YouTube and there are quite a few that merit your time. A small selection:
- Principles Of Microservices
- Core Design Principles for Software Developers
- Software architecture as code
But if you have some time off, just look at a Devoxx recording instead of starting up your favorite game (but not all the time, gaming is important too!).
Pragmatic Thinking and Learning
This book is not technical at all, but it changed how I actually operate in a huge way. This book explains how the average developer’s brain works and how you can leverage certain tricks in order to think in a much more efficient way. Because of this book, I now always walk around with a small notebook to write down my ideas. It’s one of the simple ideas that actually have a tremendous impact on your cognitive ability.
- The Mythical Man Month: interesting and still relevant, but getting quite dated
- Design Patterns: basic knowledge, but it’s quite an unpleasant book to read
- Effective Java: great book, but needs some updating