
Career-Changing Programming Books - monti004
http://www.nomachetejuggling.com/2014/02/05/top-10-career-changing-programming-books/
======
shubhamjain
I read "The Pragmatic Programmer" about two years back and back then I felt
inspired and excited about all the wonderful ideas shown in the book. Fast
forward to today, it seems that stuff was kinda obvious - automate things,
read, take responsibility, care for the craft, be patient and the other forty
tips.

I kind of believe that, have I not read the book, I would have stumbled upon
the ideas later anyhow, by reading blogs, tinkering, and making mistakes.
Albeit, it is wrong to expect any magical words that can shift your direction
completely, but still I am not sure how much value do printed ideas provide vs
learning them by experience. I am not implying that books like it are futile
but I don't buy that they are "career-changing".

Same goes for reading about Design Patterns. I believe it is better to learn
"Design Patterns" by building and reading code and finding a certain code
organization better for your use-case, rather than enforcing a kung-fu-
singleton-ninja pattern where it might be simply an over-engineering.

~~~
gravlaks
I agree. I have been programming for many years, working in the industry for
four years, and have always been interested in improving with clean code,
testing and whatnot.

I read the Pragmatic Programmer last year, and it was .. very boring. Most of
the tips were like "doh, of course". It's a beginner's book, not for someone
who have been trying to improve their code (and processes around it) already
for some years.

~~~
tapan_k
> It's a beginner's book, not for someone who have been trying to improve
> their code (and processes around it) already for some years.

Yes -- a beginner's book for someone starting now, but essential for everybody
in the industry nonetheless.

Pragmatic Programmer has influenced enough people that it has changed the
industry for better. These ideas and practices may sound common sense now, but
were not until popularized -- I suspect -- by Pragmatic Programmer. If you
found good practices already entrenched in the ecosystem when you joined the
industry, the roots can be traced back to a few good books such as Pragmatic
Programmer. Even though these ideas may not have been ground breaking, nobody
now needs to spend time convincing their peers about these practices from
first principles. Time and energy saved for everyone.

My point is, I have seen enough [senior] programmers to whom clean code etc.
does not come naturally, and they always benefit from reading this book. Not
that they aren't smart, just that someone needs to present a good case which
this book does very well.

------
gfodor
A few of my top non-programming books that have had a major impact on my
career:

The Art of Doing Science and Engineering

How to Solve It

Anything by Tufte

The Millionaire Fastlane (terrible title, brilliant book)

and since I'm in VR, I have to mention Ready Player One.

~~~
Stratoscope
Greg, was it you who recommended Ready Player One to me? Looks like I already
bought it on my Kindle on $MYSTERYPERSON's recommendation, so now I'd better
read it!

Here's an odd one of mine:

The Trachtenberg Speed System of Basic Mathematics

I checked this out from the Scottsdale library when I was 11. I'd learned all
the usual algorithms to multiply and divide and do basic arithmetic, but like
most kids, I assumed that those were the _only_ ways to do those things - that
the steps we learned were truly fundamental and the one and only way to get
the result.

Then I read Trachtenberg and learned that there were other procedures you
could use to get the very same results. The techniques we'd learned were not
the only ones!

Oh, there were tradeoffs - you might have to remember more stuff and more
special cases - but once you had those down you could zip right through a
calculation that would have taken a long time otherwise.

So that's how I learned that there was more than one way to do it.

~~~
gfodor
Maybe! Thanks for the rec, might be a nice companion to the ideas presented in
how to solve it.

------
dwarman
You are young and so forgiven to have not included as #1 the seminal works of
Donald Knuth, "The Art of Computer Programming", still as relevant today as it
was in the late 60's and 70's. What he described is to this day true of the
underpinnings of all we do, everything since is really decoration and
elaboration. And I say this as a still active systems developer, familiar with
and working with current SOC systems from DSP coprocessors on up, not as an
old fogey left by the wayside and complaining about the youngsters today.
Although they really don't know what it took to get here.

~~~
santaclaus
In the preamble the post discusses wanting to learn how to write enterprise-
type code, but if we are going just good ol' CS books in general, no one can
touch SICP. The definition of abstraction in there blew my mind.

~~~
joshAg
SICP is amazing. The only bad thing I can say about it is that since it was my
first CS textbook in college, it naturally became my measuring stick for "good
CS book", which has nearly ruined most of the CS books I read.

------
zgm
As a recent graduate, I cannot recommend Pragmatic Programmer and Code
Complete highly enough.

Pragmatic Programmer fills in the gaps you need to succeed as a professional
programmer.

Code Complete is a field guide to managing software complexity.

~~~
LoSboccacc
come to say this. code complete is basically a free ticket to obtain 10 years
of working experience in one go. I read it after 3 years of career, and still
found the content insightful

I'd also add the mythical man month. being a programmer is good, but
overspecializing as the technical guy cause a certain degree of blindness to
other software requirements (cost, time, quality). some part of that books
can't really work in today work environment because external constraint, like
the surgical team, but every word of it is gold.

------
raverbashing
Yeah, it seems to me most Uncle Bob fans throw all common sense out of the
window and start following him blindly in all his extremist opinions

This is a very good reason I'm not inclined to read his books (and if they're
like his tweets, really not worth it, for me)

Code Complete OTOH is a nice book, that if it has a fault is that of "not
taking sides" and maybe being too generic, but with good advice.

Design Patterns? Yawn

~~~
jghn
GoF came to symbolize everything which went awry with OOP for me

------
Avalaxy
Funny, SICP isnt on the list. It's always mentioned in these list, and it's
probably one of those books that everyone recommends, but no one has ever
read.

~~~
raverbashing
Yeah, I think they recommend it for the "lispier than though" attitude, it's
good if you want to learn Scheme/Lambda Calculus, but it's nothing a "wow"
book (maybe if you're programming for the 1st time it is?)

------
emsy
Since a majority of programming today is still done object oriented, I'd pack
"Growing Object Oriented Software Guided By Tests" on the list, simply because
it teaches you what object orientation actually is and how to apply it. I feel
that most of the hate against OOP would vanish if the knowledge in this book
was shared and applied.

~~~
platz
I got through this book and found myself nodding in agreement with many of
it's observations and recommendations, but I'm not sure it completely sunk in
(despite the examples) the such that I would be able to synthesize the same
results myself. I'm considering a second reading which might be more fruitful
now that I know what's going to be said, and could concentrate harder
generalizing the details.

Maybe it was in fact the such extended example that threw me off.

Also, slightly worried that this style could lead to an object soup?

~~~
emsy
A fellow developer told me he worked the presented project along with the book
and it greatly helped him to understand the content. I plan to do this myself
one day.

I'm not afraid of object soup because first, the alternative is implementation
soup, with methods that span several tens or hundreds of lines. There is
little abstraction of high level concepts. Also it depends on the
organization. I keep everything cohesive and organized in packages (or
namespaces). With Maven, Gradle or most other build tools, you can even divide
your application in Modules that don't know each other. If they need to
communicate, they may use a common Message Bus, that is a separate module.
Another advantage of this is that this makes it easier for you application to
run distributed if desired.

------
saosebastiao
Any suggestions for a pragmatism-oriented functional programming book? It
seems like a lot of inspirational/philosophical books on software development
processes and patterns can't shake the object-oriented examples, even when
they try to be as general as possible.

~~~
efuquen
Functional Programming in Scala would be my suggestion:

[http://www.amazon.com/Functional-Programming-Scala-Paul-
Chiu...](http://www.amazon.com/Functional-Programming-Scala-Paul-
Chiusano/dp/1617290653)

I would consider it an updated and more practically minded version of SICP,
which is of course amazing as well but not the sort of book you asked for.

------
rurban
Cannot agree at all with this list. For me it was:

    
    
      * SICP
      * Antipatterns
      * Bentley Programming Pearls
      * Sedgewick Algorithms
      * Stevens Advanced Programming in the UNIX Environment 
      * Knuth TAOCP
      * Tanenbaum Computer Networks

------
santaclaus
No mention of Code Complete? That book is baller.

~~~
zgm
+1. This book is a goldmine of good coding practices.

------
edwinnathaniel
While the preamble said something along the line of "these books are valuable
for 'enterprise' dev situation', I find that a lot of ideas from those books
are fully applicable to startups/hot-tech-companies.

Release It! => applicable

Continuous Delivery => applicable

Effective Java => absolutely IF you use Java (see other 'effective' series
such as Effective C#, Effective C++ [_the_ grandfather], Effective JavaScript)

Patterns of Enterprise Application Architecture => Guess where Rails come
from? (hint: DHH name is also mentioned somewhere in the book)

------
MollyR
I would like to recommend the clean coder books on the list. They really saved
my butt when I was fresh graduate. I wasn't sure how the whole business
software cycle works or how to communicate effectively with other people in
the company, like my team, and the business analysts and CTO. Those books
saved my butt, I don't know where I'd be in my career with out them.

------
zo1
For me, I think the biggest one was Refactoring by Martin Fowler, which you
can find here: [http://refactoring.com/](http://refactoring.com/)

This post almost seems to be turning out to be an AskHN, with everyone chiming
in on their 'career-changing' programming books.

------
henrik_w
+1 for Clean Code. I just recently read and reviewed it:
[http://henrikwarne.com/2015/01/03/book-review-clean-
code/](http://henrikwarne.com/2015/01/03/book-review-clean-code/)

------
mimighost
Would love to add CSAPP into the list.

My then college director's comment on this book is very insightful and might
be some of the highest you can ever endorse a tech book.

"Worth a second read"

~~~
blake_himself
'CSAPP' = ?

~~~
ranko
I think the OP means "Computer Systems: A Programmer's Perspective"
[http://csapp.cs.cmu.edu/](http://csapp.cs.cmu.edu/)

~~~
smikhanov
Yup, most likely it's the one. It's very deep and well-written book, though
too focused on x86 and Linux. Though, to be fair, trying to cover widespread
alternatives with the same depth would require seveal thousand pages.

------
slantedview
This is a pretty good list. Domain-Driven Design is definitely deserving of
the list. It probably impacted me more than any other (I work on complex
business applications).

------
johnsmth
Surprised that Coders at Work hasn't been mentioned yet. Reminds me of Gigs a
bit if anyone remembers that one - just long form interviews without the
filler.

------
hga
" _No list like this would be complete without a book about design patterns._
"

If this is true, then no such list is complete without the Antipatterns book
_AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis_
([http://www.amazon.com/AntiPatterns-Refactoring-Software-
Arch...](http://www.amazon.com/AntiPatterns-Refactoring-Software-
Architectures-Projects/dp/0471197130/)).

The thesis is that if good software, projects and teams are noted for using
good patterns, then bad versions of any of the above will be marked by bad
patterns, and one won't have the other. This can also be a lot more useful in
practice, since we seldom get complete greenfields to play in, and therefore
antipatterns with prescriptions to fix them more often match what we find in
the real world.

I note there are a number of other antipatterns books; this was the original,
and now seems to be back in print without needing any changes are updating.

