Hacker News new | ask | show | jobs
by shock3naw 5045 days ago
I'll be honest, I've read a very small number of books on software development throughout the years. I've learned all my stuff on the way, from mistakes I've made, associated documentation, and from reading the code that's powering production systems from the engineers before me. In the end? I'm doing pretty well. I'm sure that anyone else in a similar situation would agree.

Reading these books isn't going to make you a rockstar/ninja/allstar programmer. Keep doing what you're doing, learn from the mistakes you make; the lessons you learn from them are going to last a lifetime. The lessons you learn from these books might make you a better programmer, but almost all of it will be gone in a week.

2 comments

I disagree. While it's true that it won't make you a "ninja" programmer, books are still one of the best way to learn something, and obviously that doesn't apply only to programming. Hands-on experience is a very important complement, but if the engineers thatbwrote the production code you learn from aren't any good, and your coworkers are so-so, how will you ever know you're doing things wrong?

Books may also open your mind to new ways of doing things, or a deeper understanding of how / why some things work the way they do. Yes it requires dedication, learning (durably) is hard, it should not be a passive read. For example, I've always been curious about how compilers work, and I'm currently reading the Dragon Book. It is hard, but extremely interesting and fulfilling (if that's the right word, english is not my native language).

So my advice, yes keep writing and reading code (especially from a well-known open-source project), but DO read books. Combined with hands-on experience and serious dedication, the lessons learned will become part of your instincts.

This would be a much stronger argument if you didn't start by saying you hadn't read many books. Both Code Complete and Refactoring changed the way I wrote (and thought) about code in a lasting way.