You can write code and make the computer do what you want – no problem. You can even do it in more than one language and you’re fluent in many frameworks. You know all your data structures and algorithms and can use databases and external APIs without breaking a sweat. And you’ve been doing it for some years now.
However, even with all this knowledge and skill and always getting the job done, sometimes you’re not sure if you’re doing it right.
Maybe your code starts pretty good, everything in place and working fine, but after a while, when new functionality is being added, it starts to become confusing and messy. Or bugs start to pop up and it becomes harder and harder to fix stuff without breaking something else.
You spend a lot of time chasing and killing bugs, and coding, which used to be fun, becomes frustrating.
You feel that there must be a better way to do things. And there is!
What you need is a new set of skills. You need to level up.
There are many ways to do it but here I’m going to recommend 3 books that will transform the way you think about and write code. Of course there are many more that are worth your time and money, but I think these 3 cover a lot of ground and will get you a great bang for you buck.
You probably think you know OOP but Sandi will show you there’s way more to it, and how proper OOP design allows you to write beautifully simple maintainable code. It doesn’t really matter that the examples are in Ruby, the concepts are universal and if you’re familiar with any OOP language you should be good.
By the way, Sandi is awesome and you should read all her books and watch all her talks. Seriously.
Test Driven Development: By Example – Kent Beck
TDD is a style of development where you write a tiny test, write the code to make the test pass, refactor the code and repeat this same short cycle for each new code behaviour. Those tests guide you to a better design while keeping a safety net for refactoring and fixing bugs. TDD by Example is the book where its creator (or “re-discoverer”) describes the classic technique that will, for sure, turn the way you write code upside down.
Growing Object-Oriented Software, Guided by Tests – Steve Freeman & Nat Pryce
This book covers a lot of ground combining OOP design, TDD and use of Mock Objects for growing complex codebases. It describes the building of a system from scratch with the decisions, tools and techniques, all shown with the evolution of the code. It’s one of my very favorites and probably the one I recommend the most.
As I said, there are many more excellent books I could recommend for someone aiming to acquire a more senior set of coding skills, but this short list should be enough to introduce you to a new world and bring you back the joy of programming.
What are you waiting for?