
Book Recommendation for Interns - sureshjayaraman
What are books that are appropriate to be recommended to a Software Engineering Intern who aspires to become a great software engineer someday? Why?
======
tmaly
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
Does "A Philosophy of Software Design" need some experience to appreciate what
the author is talking about?

~~~
tmaly
It is very approachable even for a junior developer

------
rcavezza
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
* 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
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](https://htdp.org/2018-01-06/Book/part_preface.html)

~~~
sureshjayaraman
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
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.

------
swanson
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).

~~~
sureshjayaraman
Looks like a good list to start with.

------
anujmehta
Pragmatic Programmer

[https://pragprog.com/book/tpp/the-pragmatic-
programmer](https://pragprog.com/book/tpp/the-pragmatic-programmer)

