There is an absolute wealth of technical knowledge found in books out there, but nobody has time to read them all. What's on the top of your "must-read" list, either in your specific technology or in general?
I've got three.
First, The Little Schemer taught me how to think recursively more effectively than any other material I've read. You don't come out understanding recursive solutions to a set of problems, you come out equipped to tackle any problem at all recursively. It was a powerful experience, and a fun reading style.
Second, Programming in Scala, 3rd edition. This is a book about Scala but I learned a lot about programming in general from it and the author cleared up some misconceptions I'd held especially around closures. I didn't end up going on to use Scala much but this book made me a stronger programmer.
Finally, I've only just begun Mazes for Programmers but it's already a blast. It's both a nice reintroduction to Ruby and a super fun way to explore a bunch of algorithms. The subject matter is light and not academically presented but does not mean this book isn't absolutely packed with algorithmic goodness.
What else ya got?
Top comments (36)
_why's Poignant Guide to Ruby made programming fun for me again, years ago.
Michael Feathers's Working Effectively with Legacy Code is long and a bit dense, but it's an intensely practical look at navigating systems that are complicated, untested, and too big to fit in your head at once.
Sandi Metz's Practical Object-Oriented Design in Ruby looks like a simple primer on what OO is, but if one goes into it expecting to learn things it emerges as something much more multi-layered. I figure out something new every time I reread it. Her follow-up with Katrina Owen (99 Bottles of OOP) is also brilliant and is specifically structured to hack away at one's preconceptions.
James Coglan's JavaScript Testing Recipes is dense and not really what one would expect from a recipes book -- it's not "here's what to type in," it's about the theory of testing JS effectively. Because testing well changes the shape of your code, I learned a whole bucket about how to write effective, composable JS by paying attention to the edges of the book. I'm really looking forward to James's upcoming book on rewriting the Git internals in Ruby. (Disclaimer: he's a friend of mine.)
And then of course there's my book, Untangling Asynchronous JavaScript, which ought to be coming out in February or so. :)
Excellent! It seems like dropping everything and running towards whatever Sandi Metz has written is a pretty good policy, and I think the Poignant Guide probably gets the dubious honor of being the first programming text I ever read.
Testing theory is a huge gap in my knowledge, I'm definitely looking forward to exploring that book, and a HUGE congrats on getting so close to publishing! Let us know when we can buy it, yeah?
Mazes for Programmers, looks an amazing Ruby book, I want to read. Thanks share. I need a great book to learn algorithm, maybe this is a fun and not boring one.
Authors I like include: Robert.M(3 Clean Books), Pragmatic(DRY), Kent.B(TDD), Fowler(Refactoring), Eric.E(Domain Driven)
Eloquent Ruby, is my ruby aha book.
Thanks for the author list! I've heard good things about Eloquent Ruby - it's definitely on the list if I keep exploring the language.
The mazes book wont replace a rigorous study of algorithms (there's no proofs or anything), but it's a great way to see them in action and start to figure out how to apply them.
Could you share some example code of mazes book so let us know if we can understand it?
Sure, here's a partial (but functional) implementation of the
Cell
class used in the book. It is not advanced Ruby, but the author does not spend any time teaching Ruby concepts - this code snippet appears early on in the first chapter and the assumption is the reader can understand it:And the simplest algorithm:
Basic building blocks, but you do need to know what, for example,
attr_accessor
meansI'm following along in TypeScript and finding the translation straightforward.
Thanks, I almost understand it.
Clean Code
Clean Architecture
Domain Driven Design
The Pragmatic Programmer
Awesome! That's 3 for Pragmatic Programmer, and thanks for the more general suggestions too - these sound like books everyone could benefit from.
For good reason, it's a fantastic book!
I noticed you lean toward FP, an area that I'm just starting to explore. I'm not sure how much Domain Driven Design will help in that realm.
Clean Code and Clean Architecture should have plenty of wisdom nuggets for both FP and OOP languages.
Ah that thread is actually very cool. Thank you so much Ben for starting it.
I purchased so many books during the last years (~100 mostly from manning and pragprog). OFC, I didn't read them all yet but I have already plenty to do with this.
I would absolutely recommend:
I've read that a some people recommend The Art of Computer Programming. I didn't read them myself but I've seen recommendations when I was looking at some reviews from other MIT Press books.
Awesome List! Grokking Algorithms is definitely worthwhile, I really like his style. I'm not familiar with the rest of your list, thanks for the suggestions!
Effective C++ by Scott Meyers. The guy is a C++ titan and has a lot of great insight on that language. This book is perfect for any c++ intermediate developer looking to make their code more efficient.
This book taught me how little I know about C++. I'm going to have to come back to it a little more equipped, but this seems to be a universal recommendation. Thanks!
At first it can seems daunting, but you only have to read the entire tutorials on cplusplus dot com and you should be fine to understand the book pretty well.
I've found Adaptive Code: Agile coding with design patterns and SOLID principles by Gary McLean Hall really good. I'm also currently reading The Pragmatic Programmer at the moment. It has loads of really good reviews but I've literally just started so I can't speak from experience.
The Pragmatic Programmer comes up a lot - I should probably get around to it sometime.
Thanks for the suggestions!
The books I read was Head First Python, C# 2nd and 3rd edition - but i didnt finished them yet.
Also this year i started to read The Pragmatic Programmer but still not finished.
And i am planning to read the Eric Evan´s book about domain driven design.
Any hints?
That's two votes for the Pragmatic Programmer!
I agree with you, Ben.
Reading is not everything on development, but is actually something 😀
How about Hackers & Painters by Paul Graham?
I think you might like it because he's a Lisp programmer.
I haven't read any of your list ever but they seem interesting!
Neat! I enjoyed his On Lisp but hadn't heard of Hackers & Painters. I'll have to check it out!
Gonna +1 for The Pragmatic Programmer, as I credit reading that to much of my approach to development. I have a copy that gets passed from dev to dev in my office; the book is well worn but loved.
Release It! by Michael Nygard has also been a great read (not quite finished, but has been massively helpful already.
Awesome! Because of this thread I've started reading it and even just two chapters in I think I understand the hype.
Release It! seems like a great resource too for filling in some common sense that's hard to build on your own, thank you for the suggestion!
I wrote a small collection in LinkedIn long back about this. and i keep adding when more to the collection. please have a look.
linkedin.com/pulse/books-software-...
Clean Code: A Handbook of Agile Software Craftsmanship (Robert C. Martin)
Code Complete Paperback by Steve
Refactoring: Improving the Design of Existing Code by Martin Fowler (Author), Kent Beck (Author),
John Brant (Author), William Opdyke (Author), Don Roberts (Author)
Test Driven Development: By Example By Kent Beck
The Art of Unit Testing: with examples in C# by Roy Osherove
Design Patterns: Elements Of Reusable Object-Oriented Software by Gamma
Patterns of Enterprise Application Architecture By Martin Fowler
The Pragmatic Programmer By Hunt
Thank you for sharing the link!