Robert C. Martin
Clean Code: A Handbook of Agile Software Craftsmanship
Really good book
I second that
I third that.
Distributed counting is hard. 😜
I fourth that
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.
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.
Great list 👏
Python, if Learn Python the Hard Way is too much, 'Automate the Boring Stuff w/ Python' is more interactive.
"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".
Definitely all of the following:
My "good to read" list includes:
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.)
Both of them are excelent pieces.
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.
Oh, this sounds great.
You don't know JS by Kyle Simpson
Definitely The Pragmatic Programmer. So many priceless tips.
Just finished reading it and I know I'll be going back to it periodically.
So many useful tips!
Second to recommend it, what a great book!
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)
The Art of Computer Programming
Hackers: Heroes of the Computer Revolution Good insight into how great programmers think.
As much as you can afford on your primary programming language. You may find that answer to a vexing problem in only one book.
The Pragmatic Programmer.
The Mythical Man-Month.
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.
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.
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!
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
I second that. This is probably my favorite book about software.
This one is great for any developer
I wrote this blog on my #must-read list
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.
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 have 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.
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".
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.
"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.
+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.
I really loved Steve McConnell's Code Complete
+1. Such a great book!
"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
Agile Principles, Patterns, and Practices in C# also from @unclebobmartin
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.
By far, it's Structure and Interpretation of Computer Programs (mitpress.mit.edu/sicp/full-text/bo...).
You Don't Know Js github.com/getify/You-Dont-Know-JS
Introduction to Algorithms 3rd Edition
"Working Effectively with Legacy Code" by Michael C. Feathers, and "C++ Coding Standards" by Herb Sutter and Andrei Alexandrescu.
Pragmatic Programmer and Code Complete.
Code Complete Second Edition by Steve McConnell
The Practice of Programming
The Pragmatic Programmer
The Art of UNIX Programming
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 :(
I apologize because these aren't books, but I think they deserve an honorable mention (forgive me!).
The Book of Shaders - thebookofshaders.com/ - (not really a book)
WebGL Fundamentals - webglfundamentals.org/
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/
The Mythical Man-Month by Fred Brooks.
A timeless classic in various aspects to software engineering and project management.
The C Programming Language, Second Edition
The Practice of Programming
The Unix Programming Environment
21st Century C
Autotools: A Practitioner's Guide to GNU Autoconf, Automake, and Libtool
"Code Simplicity: The Fundamentals of Software" by Max Kanat-Alexander
Agile Web Development with Rails # by Sam Ruby
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.
Any good book about continues integration and continues deployment?
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.
All from Scott Meyers.
For Beginners: Structure and Interpretation of Computer Programs, by Abelson and Sussman.
Soft Skills: The Software Developer's Life Manual from @jsonmez
Growing Object Oriented Software Guided by Tests
Nat Pryce and Steve Freeman
The art of readable code.
Not focussing on any tech/language, but on general thoughts, ideas and tips regarding how to write beautiful code. :-)
Grokking Algorithms by Aditya Bhargava. Really good even for non CS people.
The Pragmatic Programmer
Head First: Design Patterns
Refactoring - Improving the design of existing code
"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. :)
Java: Effective Java
C#: C# In Depth
[Haskell: Learn You a Haskell for Great Good]
General: Clean Code, The Mythical Man-Month
"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. :)
Being Geek and Team Geek are my favorite.