loading...

What are your must-read programming books?

Ben Halpern on January 11, 2017

pic
Editor guide
Collapse
mohamed3on profile image
Mohamed Oun

Currently reading Don't Make Me Think by Steve Krug.
It's an excellent book on UX that I think is important for all developers (especially front-end) and designers.

Collapse
mariosangiorgio profile image
Mario Sangiorgio

In addition to the many good suggestions already posted I'd recommend Designing Data-Intensive Applications by Martin Kleppmann.

It's very good if you're interested in distributed systems.

Collapse
nemrism profile image
Aymeric A

Robert C. Martin
Clean Code: A Handbook of Agile Software Craftsmanship

Collapse
cristian_sima profile image
Cristian Sima

Really good book

Collapse
olioskar profile image
Oli Oskar

I second that

Collapse
thomaswdmelville profile image
Collapse
driscollwebdev profile image
Brian Driscoll

I third that.

Collapse
jlhcoder profile image
James Hood

Distributed counting is hard. 😜

Collapse
adaelxp profile image
Carlos Gant

I fourth that

Collapse
nitishdayal profile image
Nitish Dayal

JavaScript:
Essential JavaScript - Solid introduction to JavaScript and common programming principles
Secrets of the JavaScript Ninja, 2nd Edition - Function context, closures, ES6, oh my!
Learning JavaScript Design Patterns - Because fundamentals are good, and you should work on them.

Swift:
The Swift Programming Language (ie: the docs!) - It's literally the docs. That's how conversational the documentation for Swift is; they took it and put it in a book and it actually reads like one. 10/10 pretty much my only resource for learning Swift.

Python:
Learn Python The Hard Way - It's. Uh. Amazing.
Learning Django Web Development - Django documentation is great tbh, but it can be a little overwhelming given how deep every section goes. This book is a solid way to gain clarity on some of the verbose sections in the documentation.

Collapse
kardonice profile image
shitpost_​​​​​​​bot

"Learn Python the Hard Way" teaches you all the wrong lessons in the wrong way. I learned using those books, and unfortunately had to relearn most of the lessons taught to me from that and "Learn C The Hard Way". Try "Dive Into Python".

Collapse
realanitaolsen profile image
Anita Olsen

Oh no, I hope not, I am currently learning from that book! Learn Python 3 the Hard Way that is. How could they be the wrong lessons in the wrong way?

Collapse
rxhl profile image
Rahul Sharma

I second that. Learn Python The Hard Way introduces a lot of noise and unnecessary stuff which you might never use in the future. Also, the examples are boorish and make no sense.

Collapse
ben profile image
Ben Halpern Author

Great list 👏

Collapse
nitishdayal profile image
Nitish Dayal

Written in order of recommendation per topic. Eloquent JS is a great lead-in into SotJS (which has become my favorite JS book), and once you've got a firm grasp on those core concepts understanding the various implementations of modules and stuff is covered pretty well in Learning JavaScript Design Patterns. Swift docs genuinely are as awesome as I hype them up to be.

Python, if Learn Python the Hard Way is too much, 'Automate the Boring Stuff w/ Python' is more interactive.

Collapse
driscollwebdev profile image
Brian Driscoll

Definitely all of the following:

  1. Clean Code by Robert Martin
  2. Design Patterns Explained by Shalloway and Trott
  3. Joel on Software by Joel Spolsky

My "good to read" list includes:

  1. Working Effectively with Legacy Code by Michael Feathers
  2. More Joel on Software by Joel Spolsky
  3. Smart and Gets Things Done by Joel Spolsky
  4. Design of Everyday Things by Donald Norman
  5. Return on Software by Steve Tockey
Collapse
grmpyprogrammer profile image
Chris Hartjes

I am on my second, dog-eared copy of The Pragmatic Programmer by Andrew Hunt and David Thomas. Cannot recommend this book enough as a blueprint for your minimal skills base

Collapse
claudiordgz profile image
Claudio Rodriguez

This one is great for any developer

Collapse
thisfred profile image
eric casteleijn

TDD by Example, by Kent Beck. This is the one programming book I go back to every few years, and even though it's not a huge book, I always come away with something new.

Refactoring, by Martin Fowler. Though I don't revisit this one quite as often (except maybe to look up one of the less common recipes, I think it's still a book ever programmer should read at least once.)

Collapse
cristian_sima profile image
Cristian Sima

Both of them are excelent pieces.

Collapse
tra profile image
Tariq Ali

Software Engineering by Ian Sommerville. This is not a book about writing code. It is instead about all the non-technical aspects of programming, such as the trade-offs of code reuse, managing risks to projects, dealing with complex "socio-political systems", and handling ethical dilemmas. It's a college textbook but it has practical advice for dealing with real-world situations, and it is the first book that I read that made me scared for programming. Even the textbook questions at the end of each chapter can give me pause.

Collapse
ben profile image
Ben Halpern Author

Oh, this sounds great.

Collapse
vy_nessa profile image
Vanessa Ejikeme

You don't know JS by Kyle Simpson
Eloquent Javascript
Professional JavaScript for Web Developers by Nicholas C Zakas

Collapse
ben profile image
Ben Halpern Author

Between Eloquent Javascript and Professional JavaScript for Web Developers, which should I read first?

Collapse
de__bug profile image
Bug

Eloquent Javascript

Collapse
mohamed3on profile image
Mohamed Oun

Definitely The Pragmatic Programmer. So many priceless tips.

Collapse
thomaswdmelville profile image
Thomas Melville

Just finished reading it and I know I'll be going back to it periodically.
So many useful tips!

Collapse
netanelravid profile image
Netanel Ravid

Second to recommend it, what a great book!

Collapse
rapidnerd profile image
George Marr

Got quiet a few

1: Learning Java (Patrick Niemeyer& Jonathan Knudsen)
2: Clean Code (Robert C. Martin)
3: Java Pocket Guide (Robert Liguori & Patricia Liguori)
4: Elements of Programming (Alexander A. Stepanov, Paul McJones · Addison-Wesley)
5: Debian GNU/Linux (Heike Jurzik · Rheinwerk Verlag GmbH)
6: Linux Bible (Christoper Negus)

Collapse
simplymanas profile image
Manas Ranjan Dash

I wrote this blog on my #must-read list

medium.com/@simplymanas/books-for-...

  • 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
  • Microsoft.NET Architecting Applications for the Enterprise 2 by Dino Esposito and Andrea Saltarello
  • Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation (Addison-Wesley Signature Series)
  • RESTful Web APIs By Leonard Richardson and Mike Amundsen with Foreword by Sam Ruby
  • Adaptive Code via C#: Agile coding with design patterns and SOLID principles
  • Effective Java (2nd Edition) Paperback — by Joshua Bloch (Author)
Collapse
jdraiv profile image
Jdraiv

The Pragmatic Programmer.
The Mythical Man-Month.

Collapse
joshcheek profile image
Josh Cheek

For testing: the RSpec book. I know it's old and dated, but nothing made it click for me like that book did.

For understanding programming: the Elements of Computing Systems. Amazing book (people are calling it "Nand to Tetris" these days). That book is the reason I understand hardware (the big patterns, not like all the nuances of modern complex hardware).

For Ruby: The Pickaxe and Ruby Under a Microscope. The pickaxe is shockingly practical. I wasted so much effort trying to learn stuff that was in that book. A lot of it is just docs, too, which makes it thick and scary, but the first half is a wonderful collection of super practical information. Ruby Under a Microscope is basically "how does Ruby work", pick that one up if you're writing Ruby based on syntactic patterns you've seen and you want to actually understand why anything does what it does.

The book Absolute Java was wonderful when I read it, too. At that time, I was very new, so their lengthy explanations of how things worked were very useful and enlightening. Now it's an obvious / boring read for me, but I'm not its audience any more. So if you've got less than a year or two of experience, this book does a good job of helping you understand how language level stuff are implemented. If you've never worked with a typed language before, it's also worth reading for that reason (any typed language will be good for your programming brain, it will make explicit and obvious a class of errors and ways of thinking that dynamic languages leave implicit).

I'm sure there are others, but my books are in storage.

Collapse
dschapal profile image
Dominique Schapal
  • Dependency Injection in .NET (Seemann, Mark)
  • Domain-Driven Design (Evans, Eric)
  • Ry's Git Tutorial (Hodson, Ryan)
Collapse
kerka00 profile image
Markus Müller

Erlang
for newcomer:

  • Learn You Some Erlang for Great Good! (Fred Hébert)
  • Erlang and OTP in Action (Martin Logan und Eric Merritt) for advanced:
  • Designing for Scalability with Erlang/OTP (Francesco Cesarini und Steve Vinoski)
Collapse
patricktingen profile image
Patrick Tingen

I really loved Steve McConnell's Code Complete

Collapse
jlhcoder profile image
James Hood

+1. Such a great book!

Collapse
speedmaster profile image
Speedmaster

Programming Pearls by Jon Bentley. Code Complete by Steve McConnell. The C Programming Language by Kernighan and Ritchie. The Design of Everyday Things by Donald Norman. Writing Solid Code. Writing Solid Code by Steve Maguire.

Collapse
wilsoncampusano profile image
Wilson Campusano Jorge
  • clean code
  • the clean coder
  • design patterns
  • Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman
  • Test Driven: TDD and Acceptance TDD for Java Developers
  • Test-Driven Development: A Practical Guide: A Practical Guide
Collapse
booradley profile image
boo radley

Patterns of Enterprise Application Architecture - our goto resource for breaking down development and design problems.

Continuous Delivery by Jez Humble and David Farley. One of the best books for clearly justifying the costs and processes of CI/CD patterns to non-IT people.

Collapse
danielsarmiento profile image
Daniel 👨‍💻

It's not about programming but definitely can help with development-related or documentation stuff:

Practical Typography by Matthew Butterick

Basically it's a book about writing professional documents properly. And it's "free".

Collapse
donbavand profile image
Daniel Donbavand
  • Code Complete
  • C# in Depth
  • Clean Code
  • C# in a Nutshell
Collapse
k2t0f12d profile image
Bryan Baldwin

The C Programming Language, Second Edition
The Practice of Programming
The Unix Programming Environment
C Unleashed
21st Century C
Autotools: A Practitioner's Guide to GNU Autoconf, Automake, and Libtool

Collapse
neilmadden profile image
Neil Madden

Release It! by Michael T. Nygard - lots of solid advice on building robust systems.

Effective Java - does what it says on the tin.

Paradigms of Artificial Intelligence Programming by Peter Norvig - the content is out of date, but one of the best books on programming I've ever read.

Essentials of Programming Languages (1st edition) by Friedman, Wand and Haynes. My first introduction to Scheme and Lisp many years ago and it blew me away.

Concepts Techniques and Models of Computer Programming - Peter Van Roy and Seif Haridi. Comprehensive coverage of pretty much every programming paradigm ever invented. It's a big book!

Other good older books that I learned a lot from: ML for the Working Programmer, The Craft of Prolog, Practical Programming in Tcl/Tk.

Collapse
jkfellow profile image
Hal Incandenza

For Beginners: Structure and Interpretation of Computer Programs, by Abelson and Sussman.

Collapse
bogdangaliceanu profile image
Bogdan Galiceanu

"Dependency Injection in .NET" by Mark Seemann. It teaches you so much more than what the title says.

"C# in Depth" and "C# in a Nutshell" are very good.

As a non-techincal book but excellent nonetheless, "The Clean Coder" by Uncle Bob.

Collapse
liekenssteven profile image
Steven Liekens

+1 for DI in .NET. That book helps me deal with coworkers who have learned one of the many DI antipatterns and misconceptions. Must read for anyone who is learning about DI, no matter what language they use.

Collapse
justgeekgirl profile image
Jennifer

The Art of Computer Programming

Hackers: Heroes of the Computer Revolution Good insight into how great programmers think.

Code Complete

Hakmem

As much as you can afford on your primary programming language. You may find that answer to a vexing problem in only one book.

Collapse
ben profile image
Collapse
phpandcigars profile image
PHP and cigars
  • Software Engineering by Ian Sommerville.
  • Clean Code by Robert C. Martin.
  • The Art of War by Sun Tzu. I don't have a project manager. So this book helps me to decide with features to implement next.
  • Peopleware: Productive Projects and Teams by Tom DeMarco and Tim Lister.
Collapse
vgrovestine profile image
Vincent Grovestine

C: How to Program (Deitel & Deitel)

It was the book used in my core Computer Science classes some 20+ years ago; and it remains the standard by which I judge all programming books. Clear, concise, easy-reading, plenty of examples; an absolute pleasure to learn from!

Collapse
cyberglot profile image
Ju Gonçalves

By far, it's Structure and Interpretation of Computer Programs (mitpress.mit.edu/sicp/full-text/bo...).

Collapse
garysieling profile image
Gary Sieling

"Relevant Search" is a good, practical book on solr/elastic search

I like "Natural Language Processing with Python" as an introduction to text processing problems (techniques are dated but I thought the examples were helpful)

Code Complete is a good general coding book

"Secrets of the javascript ninja" and "3rd party javascript" taught me a lot about javascript, and tend to have a lot of practical lessons

Collapse
davidoest profile image
David Oesterreich

Pragmatic Programmer and Code Complete.

Collapse
bgadrian profile image
Adrian B.G.

All 3 Clean ... by Robert C. Martin (uncle bob) books, After 2-3 yrs of experience.

Refactoring: Improving the Design of Existing Code (Addison-Wesley Object Technology Series) Martin Fowler (Author). You will not be afraid after this to work with legacy code.

For JavaScript Nicholas C. Zakas books

I do not recommend learning a programming language from a book, do an interactive course (like Udacity platform, Khan Academy or gamification platform like codingwars), OR read a book but stop after each 10-30 pages and practice.

Like cooking or any other craft you need to practice it in order to learn it.

Collapse
mhabibi profile image
Mohammad Mehdi Habibi

1) Interchange learning English series of Cambridge to learn English first.
2) Introduction to Algorithms or foundations of Algorithms
3) Any books for learning Assembly
4) Software engineering (Pressman)

Then depending on which field or language you prefer books vary. But starting with C++ is always good.

Collapse
djviolin profile image
István Lantos
  • The Go Programming Language (Alan A. A. Donovan, Brian W. Kernighan)
  • Programming: Principles and Practice Using C++, 2nd Edition (B. Stroustrup)
  • JavaScript: The Definitive Guide, 6th Edition (David Flanagan)
  • The C Programming Language, 2nd edition (Brian W. Kernighan, Dennis M. Ritchie)

These are all crazily well-written introduction books for their respective languages. I think either you choose to start with these books, or you crazy enough not to... And wear the consequences, because one day you have to read them in your career.

Collapse
nickgs profile image
Nick Selvaggio

The Mythical Man-Month by Fred Brooks.

A timeless classic in various aspects to software engineering and project management.

Collapse
jesuszilla_tm profile image
Jesuszilla イエスジラ

Refactoring: Improving the Design of Existing Code; Fowler

Design Patterns; Gamma, Helm, Johnson, Vlissides

There's a couple I recommend for game dev but I'm going for the general sense.

Collapse
gfred profile image
Gfred
  • Programming Pearls
  • Structure and Interpretation of Computer Programs
Collapse
mkraetke profile image
Martin Kraetke

For XML-oriented functional programmers, I would recommend these books:

XSLT 2.0 and XPath 2.0
by Michael Kay

XSLT Cookbook. Solutions and Examples for XML and XSLT Developers
by Sal Mangano

as an aside: forget XSLT 1.0. XSLT 2.0 and 3.0 are real fun.

Collapse
realanitaolsen profile image
Anita Olsen

I am currently learning from "Learn Python 3 the Hard Way" by Zed A. Shaw. I can not tell if it is a good one or not compared to all the other ones out there (but it seems pretty good to me!). It is the only one I have had in Python (and my second code book in total as the other one was way thicker and on C++).

Collapse
codemouse92 profile image
Jason C. McDonald

"Dreaming in Code" by Scott Rosenberg should be read by anyone who works with tech in any capacity.

"Game Programming Patterns" by Robert Nystrom, meanwhile, should be read by any coder with a pulse. :)

Collapse
nivesh002 profile image
Nivesh

Javascript:

Books:

  • Javascript: The Good Parts,
  • Javascript Design Patterns.

Articles:

  • Airbnb Style Guide,
  • Clean code in JS,
Collapse
gimoteco profile image
Guilherme Ferreira

Soft Skills: The Software Developer's Life Manual from @jsonmez

Collapse
tamas profile image
Tamás Szelei

All from Scott Meyers.

Collapse
gonzalodelgado profile image
Gonzalo

The Practice of Programming
The Pragmatic Programmer
The Art of UNIX Programming

Collapse
antonfrattaroli profile image
Collapse
bnhn profile image
Rayy Benhin

Eloquent JavaScript
Introduction to Algorithms 3rd Edition

Collapse
ennor profile image
Enno Rehling (恩諾)

"Working Effectively with Legacy Code" by Michael C. Feathers, and "C++ Coding Standards" by Herb Sutter and Andrei Alexandrescu.

Collapse
gimoteco profile image
Guilherme Ferreira

Agile Principles, Patterns, and Practices in C# also from @unclebobmartin

Collapse
chrispickard profile image
Chris Pickard

Effective Java

Collapse
inickvel profile image
Nicolay Velizhanin

Code Complete Second Edition by Steve McConnell

Collapse
computingsavvy profile image
Computing Savvy

I am currently reading "C Programming Absolute Beginner’s Guide" a best book for learning C programming.
computingsavvy.com/books/free-down...

Collapse
albertdugba profile image
Albert

1.Pragmatic Programming
2.Mythical Myth
3.Clean code

These are the three books I have read so far which are very informative

Collapse
akeelhaider profile image
Akeel Haider

You don't know JS(Kyle Simpson)?

Collapse
adrianmann profile image
Adrian Mann

Agile Web Development with Rails # by Sam Ruby

Collapse
purplediane88 profile image
Diane Chen

Python:
Think Python by Allen B. Downey - Especially good for new programmers.
Fluent Python by Luciano Ramalho - Good for those moving to Python from other languages.

Collapse
integralist profile image
Collapse
simonbaeumer profile image
Simon Bäumer

The Pragmatic Programmer
Head First: Design Patterns
Refactoring - Improving the design of existing code

Collapse
djangotricks profile image
Aidas Bendoraitis

"Building Scalable Web Sites" by Cal Henderson.

"Python 201 - Intermediate Python" by Michael Driscoll.

And of course "Web Development with Django Cookbook - Second Edition" by me. :)

Collapse
mpron profile image
Mitch Pronschinske

"Code Simplicity: The Fundamentals of Software" by Max Kanat-Alexander

Collapse
ichaos1985 profile image
Ben Wolf

The art of readable code.
Not focussing on any tech/language, but on general thoughts, ideas and tips regarding how to write beautiful code. :-)

Collapse
rezadehganpour profile image
Reza Dehganpour

Any good book about continues integration and continues deployment?

Collapse
yeedle profile image
yeedle

Java: Effective Java
C#: C# In Depth
JavaScript: You Don't Know JS series
[Haskell: Learn You a Haskell for Great Good]

General: Clean Code, The Mythical Man-Month

Collapse
stevebennett profile image
Steve Bennett

Growing Object Oriented Software Guided by Tests
Nat Pryce and Steve Freeman

Collapse
chimerastrain profile image
Aaron ¯\_(ツ)_/¯

I'm surprised no one's mentioned anything about books on shader code. I'm compiling a list and its the only thing missing so far :(

Collapse
chimerastrain profile image
Aaron ¯\_(ツ)_/¯

I apologize because these aren't books, but I think they deserve an honorable mention (forgive me!).

For shaders:
The Book of Shaders - thebookofshaders.com/ - (not really a book)
WebGL Fundamentals - webglfundamentals.org/

For graphics:
LunarXchange by Valve - vulkan.lunarg.com/sdk/home - host of VulkanSDK and tutorials and tools on how to implement Vulkan in C++
Open.GL - open.gl/
OpenGL Turotial - opengl-tutorial.org/

Collapse
alrz profile image
Alireza Habibi

Being Geek and Team Geek are my favorite.

Collapse
bertvv profile image
Bert Van Vreckem
  • Clean Code, Robert C. Martin
  • Practical Object Oriented Programming, Sandi Metz
  • Structure and Interpretation of Computer Programs, Abelson & Sussman
Collapse
heyitshannes profile image
Hannes Calitz

The clean coder by Uncle Bob Martin

Collapse
cptstroparo profile image
Collapse
chitchu profile image
Vicente Jr Yuchitcho

Grokking Algorithms by Aditya Bhargava. Really good even for non CS people.