Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I would split the books into two categories: those that improve the way you structure your code and deliver a software solution, and those that improve your technical understanding of the software platform and the computer you're using.

The first are books like Pragmatic Programmer, Mythical Man Month, Code Complete, Design Patterns, talks by Alan Kay on software systems and OOP, even Game Engine Architecture etc. A lot of the content there is distilled experience which is much faster to learn from a book than gain the hard way on the job.

The other books are practical deep dives. Here I would recommend a variety of books like Inside the Machine by Stokes, Computer Architecture by Hennessy, 21st Century C by Klemens, Crafting Interpreters by Nystrom, Compilers by Aho, Effective Java, Nature of Code by Shiffman, Ray Tracing Challenge by Buck, Hands on Hacking by Hickey, and others, depending on your interest and area of focus.



I split my library alongside the same line. One section to answer the following questions: Why should I do it, how should I do it, how should I not do it, how does it work,.. and the other section answer the following: What to do, what to use,... The first one helps decision and planning, the second is what you use.

So there's the philosophy of the craft which are mostly the core skills of software engineering (or engineering in general). Problem solving, project planning, resources planning, methodologies,... Then the various theories (computer science). Algorithms, Data Structures, Computer organization, Networking, Databases, Operating Systems,... And then the skills. Programming Languages, Libraries, Tools (editors, shells, build systems, debuggers, test runners). Being a good programmer involves being fairly knowledgeable in all three.


Why is Effective Java in the second group?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: