

Books you shouldn't read when starting out as a programmer - tswicegood
http://www.travisswicegood.com/index.php/2009/12/01/books-i-don-t-recommend-if-you-re-starti

======
gruseom
I disagree that _Patterns of Enterprise Application Architecture_ is an
excellent book. I found it to be poorly written and appallingly edited.
(Martin Fowler is capable of much better.) More importantly, the patterns
themselves give an impression of coherence and well-understoodness to a space
that is in fact incoherent and poorly understood. This results in people
thinking and talking more about patterns than about the problems they're
actually trying to solve with software. In other words, the whole enterprise
(pun intended) is premature optimization at a meta level.

 _Refactoring_ is better because it's on a smaller scale and thus able to
deliver roughly what it promises.

As far as the enterprise-OO space goes, though, the best book by far IMO is
Eric Evans' _Domain Driven Design_. One reason it's better (apart from being
superbly written) is that it's much more exploratory: it doesn't pretend to
have figured things out, but rather offers principles you can use to figure
things out. Also, the principles, though deep, are easy to understand (as
opposed to "enterprise application architecture patterns" which get more
confusing the more you try to understand them). In fact, the only weak spots
in DDD are the points at which it veers closer to the PEAA approach.

(Disclosure: I worked with Eric for several years. But my high opinion of his
book was not caused by this; it was the other way around.)

------
bumblebird
God don't read anything about patterns or refactoring. That'll sap all of your
creativity and cover you in a tight fitting straight jacket. Read a language
spec. That gives you the building blocks. Then go away and play with them.

~~~
fizx
I read the Gang of Four Design Patterns book straight out of college when I
had a job as a dev lead at a small lifestyle software startup. Man, I tried to
make every problem fit into that mindset.

I'd do things like hand-roll my own XML parser in PHP (never mind LibXML
bindings, etc) while trying to make sure I was observing the Visitor and
Command patterns, oblivious to the silliness of the situation.

I also missed the understanding of dependency injection (or just management in
general) that would have made that hellishly large Flash project so much
easier to test and assemble.

Somehow I still managed to get a lot done. I feel in retrospect, that the
Design Patterns are good to know about, but I don't know about whether anyone
should intend to implement them.

~~~
akeefer
Patterns are primarily useful when you refactor to a pattern once you've
gotten through the implementation to the point where you realize that applying
the pattern would improve the code you've already written and make it
clearer/more flexible/easier to extend. Starting with the intention of
implementing a given pattern is almost always the wrong thing; recognizing
when you've inconsistently half-implemented something very similar to a well-
established pattern can actually help improve your code.

Unfortunately, people do often attempt to start from the pattern, which gives
the whole idea of patterns a bad name, since most people's primary exposure to
them comes from Some Guy In The Office Who Just Read The Gang Of Four Book And
Now Tries To Use Patterns For Everything He Does. And everyone, rightly, hates
working with that guy or his code. The same thing happens with XP/Agile/TDD,
where most people's exposure to them is from some annoying zealot rather than
someone a little more experienced and pragmatic.

------
TrevorBramble
Glad to hear I'm not the only one with a copy of _The Pragmatic Programmer_ on
its way to tatters as a result of chronic re-reading; I'd begun to think I
wasn't getting out of it what I should be. I likewise recommend it to other
programmers, new or otherwise.

I avoided _The Passionate Programmer_ when it was called _My Job Went To
India_ , deterred by the title and lack of reader recommendation. Maybe I'll
give it a look now. Somewhat related, I found _Land The Tech Job You Love_ to
be a comprehensive and insightful resource.

~~~
tswicegood
I avoided the first edition too. Dave Thomas' blog post about the new edition
is what got me to read it.

I've yet to read Land the Tech Job You Love. I know I should, I just sort of
have the tech job I love :-) At any rate, they're both supposed to be very
complimentary.

------
tmikew
How does one know a great book with out consuming some junk? We learn when we
do it wrong up much more often than when do it right. It is not always clear
in the beginning that putting business logic in with the view or the data
layer code will later be impossibly difficult to untangle. I would suggest
read what you want then do what you think is best. It doesn't matter if it is
completely correct. (whatever correct is) Some good peer review will keep the
bad trouble away, or at least the decision to keep it will be made with the
eyes open. Nothing will create a great programmer faster than untangling those
darn tangles.

------
joblessjunkie
Good lord, the article doesn't actually contain the proper titles of the
books!

~~~
tswicegood
Please do tell? Patterns of Enterprise Application Architecture (PEAA),
Refactoring, Refactoring to Patterns, and the various Pragmatic books.

------
Kirby
Twilight, because it's god-awful.

Oh, you meant _programming_ books. Never mind!

~~~
telemachos
I understand that this is off-topic, but is it really necessary to downvote it
to invisibility? It's a silly joke. It costs you two seconds of your life to
read it, and none for laughing if you don't find it funny. Just move on.

This place can be awfully humorless at times.

~~~
AlisdairO
I think it's meant to be. Much as I love a bit of humour, take a look at
reddit. Endless pun-threads and stupid jokes do drag down the quality of
conversation - and people are no doubt afraid of the slippery slope.

As things stand, I like HN the way it is, and if I feel like something a bit
more laid back then i read proggit.

~~~
telemachos
A reasonable answer, but I keep thinking that there has to be _some_ middle
ground between pummeling the occasional (and clearly not mean-spirited or
cruel or nasty) joke and the barbarian hordes of _pick your least favorite
other place_.

 _Edit_ : Based on the voting, I'm clearly in the minority, so I'll leave it
alone in the future.

