HACKER Q&A
📣 aireo

What software development book should I read over my winter break?


Hello, HN. I wanted to ask your advice.

I recently completed my first year of a two-year software development diploma. I learned Python in my first term, Java in my second. I'll be learning C in January, my third term.

To improve my skills over the winter break, I'm building a Wordle clone in Java. In addition, I'd like to read a book on software development. Problem is, there are so many books, so many topics, that I'm honestly a bit overwhelmed.

For example, do I do a deep dive on Java? Or do I focus on a more language-agnostic topic, such as refactoring or design patterns?

I have a few great books, and I'd love your input on which I should tackle first:

-- Core Java (Horstmann) -- The Pragmatic Programmer (Hunt & Thomas) -- Refactoring (Fowler) -- Head First Design Patterns (Freeman et al.) -- Design Patterns (Gamma et al.) -- Clean Code (Martin)

I'm more than happy to hear other recommendations, too. (I have a running list, and I plan to read them all and get better, little by little.)

Thanks for considering my question. I appreciate any and all feedback!


  👤 mindcrime Accepted Answer ✓
Will you be taking a course on computer architecture and organization? If not, I'd strongly suggest Code[1] by Charles Petzold. Or The Elements of Computing Systems[2] by Noam Nisan and Shimon Schocken. Both will help you develop more of an understanding of what's happening "under the hood" and that knowledge will, IMO, ultimately benefit you - even if you're not looking to become an assembly language developer per-se.

Another thing to consider: I believe that a lot of developers could stand to know more about the basics of networking, including things like ARP, DNS, subnetting, etc. With that in mind, a good basic book on network fundamentals is never a bad idea.

[1]: https://www.codehiddenlanguage.com/

[2]: https://www.nand2tetris.org/book


👤 cratermoon
The Pragmatic Programmer (Hunt & Thomas) is the most all-around applicable and readable over a break. Of the rest, I'd recommend Refactoring (Fowler). Not on your list, but a good follow-on to Refactoring is Refactoring to Patterns (Joshua Kerievsky)