Book review: New Programmer's Survival Manual
Disclaimer: I do have a small credit in this book. A long time ago, the author mentioned that he was looking for people to help out, so I stepped up. It was only participating in discussions like âWhat do you think about version controlâs use in industry?â; I didnât help with any actual writing, and yesterday was my first time reading virtually all the final content. No monetary interest, of course.
Lots of new books lately
Iâve been doing a lot of reading over the last few weeks, some of it technical, some of it non. Iâve been meaning to type up a few book reviews, and yesterday I finished reading my copy of Josh Carterâs âNew Programmerâs Survival Manual,â published by PragProg. Since thatâs a bit lighter material than Spinoza, I figured Iâd write it up first.
The Survival Manual is intended to be the book you should buy after you graduate from college, but before you get a job. Itâs a bunch of tips, arranged by topic, that give you a taste of what âreal worldâ programming is like, as well as what working life is about. I think that it accomplishes this goal wonderfully, but if youâd like to hear specifics, read on.
The Good
One of my roommates is not particularly technical. She picked the book up, and read the introduction and the first tip. She then said something that, after reading all of it, I agree with 100%. âI like this guyâs writing style. Itâs very⌠readable.â Joshâs prose feels⌠comfortable. Like youâre talking to a down-to-earth friend, or co-worker. Which is great, given the topic. I really enjoyed the actual reading of this book. Especially in technical books, this is a great quality to have, but I guess this book isnât exactly technical; itâs much more about soft skills than hard.
I also really enjoyed the cookbook-style organization. Basically, the book is one big ball of tips that you can read individually. Theyâre grouped together with three or four others that are on the same topic, but each stands alone, and they cross-reference each other when appropriate. While I sat down and read it front to back, Iâd imagine itâs pretty easy to cherry-pick certain things and read it in a more non-linear fashion.
I also feel that âpragmaticâ is a good description of most of the content. In particular, as much as we all love DVCS, the book frankly states that most places still use centralized version control, which is totally true. He makes sure to carefully not be particularly dogmatic about the specifics of anything, focusing on strategy more than tactics. For example, âGet good with your editor, make sure it can work effectively without using the mouse, for speed,â not âzomg emacs r teh suck, use vim.â
Finally, Josh links to copious other works, and provides references for all of it. Some stuff is just general internet culture, but the bibliography alone would assist any programmer in finding some useful primary materials to read. Hereâs the first six: SICP, Getting Things Done, Extreme Programming Explained, TDD By Example, The Mythical Man-Month, and Foundations of Object Oriented Languages: Types and Semantics. Oh, and just because thereâs some XP/Agile stuff in those particular books, donât think itâs slanted towards that: waterfall is explained as well. Just so happens those books were first.
The Bad
Thereâs not that much bad that I can say about this book, really. There are a few small things, though:
Thereâs a âwhite belt brown belt black beltâ metaphor thatâs supposed to indicate a difficulty of each tip. Given that thereâs only two black belt tips, I didnât feel that three levels were really needed. I also just thought that there wasnât a huge difference between white and brown, either, so Iâm not sure that it really adds any utility.
Because this book is fairly high-level, it might be hard to actually apply these lessons. This might be more of a problem with readers than with the actual book, but I canât count how many times I (and others) have said âOf course, write descriptive variable names!!1â and then typed x = 5
. Itâs just the way things are. And since this book is essentially a collection of advice at that high level, I can see someone reading this book, and then just simply not following the advice. Iâm not sure if this is something Josh could have fixed, or if itâs inherent in this kind of book. Also, it wonât affect a diligent reader. It is something to think about, though.
Summary: If you just graduated, buy this book
This book is totally worth it. The style reminds me of the seminal Pragmatic Programmers. If youâre a freshly minted graduate, put this book at the top of your reading list, then also grab a copy of all the books in the bibliography to read later.