Hacker News new | ask | show | jobs
Ask HN: What software development book should I read over my winter break?
2 points by aireo 1273 days ago
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!

2 comments

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

I did take a course on computer architecture and organization. Just this last term, in fact. It's been one of my favourite course so far. Our final (small) project for that class was writing a simple assembly program -- ours asked the user for a word, counted the number of vowels in that word, then printed that result to the console. Challenging, but very, very interesting.

I've added those two books to my list. Thank you for the recommendation!

Rad. If you've already had that class, then the stuff in those books won't be totally novel to you. But you may still learn some stuff from one or both.
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)
I'd agree with that. And also add to the list (for later, maybe) two books by Steve McConnell[1] - Code Complete and Rapid Development.

[1]: https://stevemcconnell.com/books/

Fantastic. Jotted those two down. Thanks for the input -- I really appreciate it.
Code Complete is good but it's much longer. Not easy to tackle over a break.
I figured The Pragmatic Programmer might be a good one. I'll begin with that. I've added Refactoring to Patterns to my list. Thanks for sharing this.