tmaly 5 years ago

Getting Things Done (2001) by David Allen - great method to organize all your tasks and stay on top of things

Clean Coder by Bob Martin - good ideas on being a professional programmer

A Philosophy of Software Design by John Ousterhout - big picture ideas on design

Test Driven Development by Kent Beck - good basis for thinking about design and testing

Legacy Code by Michael Feathers - understanding the issues of legacy code helps us to design better software

  • sureshjayaraman 5 years ago

    Does "A Philosophy of Software Design" need some experience to appreciate what the author is talking about?

    • tmaly 5 years ago

      It is very approachable even for a junior developer

rcavezza 5 years ago

In a CS program, you learn a lot about algorithmic efficiency and theory, but you don't learn a lot about software construction. Here's my list of must read software books related to this:

Clean Coder by Uncle Bob Martin

Clean Code by Uncle Bob Martin

Refactoring by Martin Fowler

Design Patterns by the gang of four

dontbenebby 5 years ago

* The Millionaire Next Door.

* The Four Pillars of Investing

* A Random Walk Down Wall Street

I've seen fellow interns blow their salaries on 200 jeans, clubbing, and eating every meal out.

Meanwhile, the IRA I started in grad school is growing at ~7% a year providing a nice nest egg.

Financial security gives you the freedom to take risks. Some discipline in your 20s will make your 30s more awesome than you can imagine :)

hhs 5 years ago

I'm using "How to Design Programs", 2nd edition, and it's helpful. It's on Amazon, and free online by Felleisen and colleagues here: https://htdp.org/2018-01-06/Book/part_preface.html

  • sureshjayaraman 5 years ago

    Honestly, I have found reading "How do Design Programs" challenging. May be it doesn't flow perhaps because of the use of an unfamiliar language? Do you have a specific approach that helps you?

    • hhs 5 years ago

      I'm a beginner, so it's helping me see the big picture. One advice: Browse books in the bookstore and library, and figure out the seasoned authors whose prose connects with you. It's going to be different for everyone; this has helped me when I start learning something new. Then I advance and get systematic.

  • smnplk 5 years ago

    way better than any "Uncle Bob" book for sure.

swanson 5 years ago

Start with "Apprenticeship Patterns" (learn how to learn, get a mentor, approach your career in the right way) and "Pragmatic Programmer" (a bunch of practical techniques that are language/tool agnostic and exposure to a bunch of shared vocabulary/jargon you will likely hear).