The Pragmatic Programmer by David Thomas, Andrew Hunt
I am not sure where I come across this book, but I bought it, because it looked promising as I am always interested in the books of the “programming philosophy” topic.
The 20th anniversary of The Pragmatic Programmer proves that the book stood the test of the time. And every software developer knows, that 20 years in programming feels like centuries.
The book content is series of short lessons accompanied by tips, each aimed at selected specifics of programmer’s job, the situations he may encounter and how to solve them most professionally as he can.
Somebody might say, that the book is not revolutionary in any way. That might be a fair point, it does not bring anything new to the table. But the power of this book lies in the fact that all of this information is in the single place and in easily readable (and sometimes fun) manner.
Few personal picks
Why spend your life developing software unless you care about doing it well?
This question is so true it goes way above software development. I think we all sometimes fall into the pit of laziness and want quick results over quality and that’s (kind of) okay. But the problem starts if this becomes your regular state of mind. I have seen so many times results of poor workmanship when we were renovating our flat with the help of hired workers, who neglected many important details when working to save time and collect $$$ ASAP, that I said to myself I do not ever want to be in the camp of those lousy workers.
So every time I find myself trying to do something quick to spare some time in the short run, I stop, rethink and do it properly in the desired quality, because I do not want the things I have done to backfire in the long run. It might postpone the final result, but it almost always worth it being it software, woodworking, bricklaying, or whatever.
Provide options, do not make lame excuses
A situation many programmers are in daily. We are often in situation we cannot continue with our work, i.e. because of missing information or others. You can always blame the task stakeholder and say “It’s his/her fault”, stopping work, or doing it just half-baked. But tru professional will go beyond and start to investigate. Instead of saying “I don’t know”, you will say “I don’t know, but I will figure it out” 💪.
Design to test
The purpose of this should be starting thinking about testing before writing a line of code. Some people (claim that they) use test driven development (TDD), which have never worked for me when coding more complex functionalities (I find myself TDD being kind of a hype - many people write about it on blogs, but I don’t know anyone personally who does it). Instead, I personally usually write test along with the code.
But before writing the code, I try to imagine the functionality public interface and how will I test it, so it doesn’t violate the encapsulation principle, uses proper dependency management etc. (anyone out there testing private methods just because the programming language allows you to do so? Yes, I am looking at you Python! 👀)
Achieve editor fluency
No matter what IDE/editor are you using, knowing your toolchain inside out boosts productivity. But what boosts it even more is knowing keyboard shortcuts for the most (or all) features you use.
For example: I work mainly with JetBrains IDEs, and default settings is using tabs for each opened file. I have found that in my case turning tabs off and switching between recent files using keyboard shortcuts increased my workflow speed significantly. Basically, if you need to reach your mouse for every second task, you will waste a lot of time. The book suggests losing your mouse for a week, so you are forced to control your whole computer (not just IDE) with nothing else but keyboard. I haven’t gone that hardcore (yet), but I stuck to not-so-hardcore variant of consciously trying and learning new keyboard shortcuts from time to time for my IDE and operating system too ⌨️.
- Easy and fun to read
- Much wisdom
- Very knowledge
- Book comes with accompanying cheatsheet
- My rating: 5/5