Book that increased your programming skills the most? Why?
What single book has increased your programming skills the most? Why?
There’s a book I went through in my younger years that surprisingly keeps on giving and giving. If I could pick one and only one book which I would ascribe a majority of my skills to it would be, without hesitation, this one.
Let me add to that, I’m not being hyperbolic at all when I say that anyone who goes through this book will emerge a decidedly better programmer, improving virtually every skill that a programmer needs in his professional life.
Without further ado:

Open-source software is one of the best sources (pun intended) of learning available to a programmer. Navigating open-source, however, can be confusing and daunting. Now it will probably take you a few months to go through this book but once you’re done you’ll be intimately familiar with all aspects of OSS.
What this book essentially teaches you is to build an entire Linux distro from scratch. Piece-by-piece you make your own Fedora/Ubuntu and gradually everything is demystified. Here’s a partial list of reasons why this book is the bee’s knees:
- Moderate Level of Complexity
 Sure, you can directly pick up a book about the kernel or the X window server. It will however be confusing and perplexing to the point of being of no use, especially to a beginner. LFS is not about understanding any component in detail, it won’t bother you with how Qt works. What it will make you understand is how Qt fits in the bigger picture.
- Improves Core Programming Skills
 Writing code/typing on a keyboard actually consumes very little portion of a good programmer’s schedule. Most of their time is spent on designing systems, understanding issues, comparing solutions or writing angry rants on Slashdot. (You think Trump is a contentious issue? Try posting a comment there in favor of systemd.) LFS will, almost inevitably, break on you many many times. Each time you’ll learn something invaluable. From debugging to linking to library loading, you’ll be exposed to a shitload of issues that you will eventually face in your professional life anyway. The goal of this exercise is not to make a daily-use laptop but to understand how nuts and bolts of a Linux distro work together. These internals barely hold together properly in an official distro, your end-result will likely end up being worse than Windows 3.1 running on a Raspberry Pi. Nevertheless, it will significantly improve your fundamental programming skills, e.g., troubleshooting nasty integration issues, hacking fugly workarounds to make things work, navigating — at times endless and at times non-existent — information, getting help from OSS community and learning to curse at your machine without throwing it at the wall.
- Teaches Long-term SkillsIf you’re worried about whether the things you build in LFS will be relevant by the time you’re done, Don’t Panic. While open-source does fragment at a scorching pace you’ll be surprised at how much of the current stuff is at-its-core the same thing as before (or at least very similar to it). At some point in the future, Wayland might replace X everywhere but you’ll know what a display server is for and how it is different from a widget toolkit.
Unfortunately, it’s not a trivial undertaking. You’ll need lots of time and a spare machine (do not try to build LFS on a machine you care about). You also need a working knowledge of at least C, C++ and Python. If you make it through though it’ll be worth it. You’ll be blistering your way through codebases you thought were incomprehensible. You’ll start seeing open-source as Neo sees the Matrix. You’ll feel smug to the point of absurdity as someone looks at your finished product and asks …
“Which distro is this?”
I’ve tried to find clever replies to this one, but owing to my utter lack of creativity I usually go with “None, I built it myself.”
Gnome, KDE and Xfce: Surrounded by thousands of bugs, quietly starting at you, waiting for your next move
answered by Kamran Khan on quora.com

Comments
Post a Comment