Tag Archives: books

Software Books

I know there’s a lot of reviews out there. And hopefully you already have these books if you work or intend to work in the software industry.

Designing Data-Intensive Applications by Martin Kleppmann

A comprehensive book on actually using distributed systems. You’ll want to know what the effects are from your design choices. And this book goes into databases based on the experiences of someone that’s done this work before you. I read this after prototyping a system, and I think the content here is worth about six months of full time work and research. Plus he has citations if you want to go more in depth.

Refactoring by Martin Fowler

Software can change over time and you can change your mind about design choices as the solution changes. Functional or Object-Oriented or IOC or visitor pattern, this walks through practical mechanical steps to show how easy it is to make changes that simplify programs for readability and maintenance. And shows how to go back the other way, too, because maybe that way is better.

You’ll see your programs with many more opportunities to express your designs, and it’ll help you choose for better code.

And I’ll conclude with a short list of books you’ll have to one day see if you study software, but are much less practical. The Art of Computer Programming volumes 1 – 4b, the “CLRS” algorithms book, the compilers “Dragon book.” You’ll have to have them, I guess.

10 Good Books

This week’s viral facebook post asks people to share 10 favorite or influential books with their friends. It’s a bit biased to the small sample of books I’ve actually read. And really, rather than targeted at the original goal, when I finished the list it’s just a list of books that are good and worth reading.

1. People’s History of the United States by Howard Zinn
The history books (and textbooks) I’ve seen before I ran into this one were all about the rulers. The nobility, the clergy, the philosophers, the scientists, the artists were all there. Zinn writes about the struggles of the common man that fought and worked.

2. The Hobbit by JRR Tolkien
Because adventure is FUN.

3. The Sun Also Rises by Ernest Hemingway
It’s an enjoyable read. The characters are interesting and their interactions are great. Though as far as plot is concerned almost nothing happens. That’s great.

4. Confederacy of Dunces
A fun and generally dislikable main character has escapades and interacts with many other interesting characters. Then you can visit the statue of the character in New Orleans.

5. Dune by Frank Herbert
Sci-fi thriller about politics and trade and sand worms. A bit of the coming-of-age challenge story thrown in too. “I must not fear. Fear is the mind-killer” is great to repeat as a narrative choice and in your normal life.

6. Fear and Loathing in Las Vegas by Hunter S Thompson
I saw the movie before reading the book. But hearing the lines delivered I remembered it was a book and knew it was one I wanted to read. It’s like the best parts of the movie, but goes on for page after page.

7. Zen and the Art of Motorcycle Maintenance
What’s a way to make Buddhism palatable to Americans? A metaphor to tuning and gasoline burning and steel of course. An academic with a shadowy antagonist and internal struggle.

8. Grapes of Wrath
A bit fiction a bit history. It’s a story about getting by in America. And not the American Dream, but the uncaring one that’ll crush you if you have no money.

9. Cat’s Cradle by Kurt Vonnegut
I always heard this was a story about Ice-9 that could destroy the planet. It’s not. It’s about Bokononism, which is the coolest religion I’ve heard of. Its holy book begins, “All of the true things that I am about to tell you are shameless lies.” And it only gets better and makes more sense from there.

10. Refactoring by Martin Fowler
I wanted to put one professional oriented book here. Object oriented programming isn’t in fashion as much as a few years ago, but this is the best book on the topic. He doesn’t explain much. The book is pages of actual example after example. Each technique uses object oriented methods to alter one idea into another form. And then another technique alters it back! The idea is that figuring out which is better in your situation is up to you and your analysis of the details.