Are there any great programming or software development books that are language agnostic? Why should I read it?
-
3I think you should narrow your question to specific programming books. If you include software development, you open the door books including Software Project Survival Guide, A Discipline for Software Engineering, Waltzing with Bears, The Cathedral & The Bazaar, Software Architectures in Practice, Distributed Systems Concepts and Design, Software Requirements, Rapid Development...these are great and well-cited books that have everything to do with software development/engineering, but little to do with the actual programming of software.– Thomas Owens ♦Commented Sep 1, 2010 at 21:19
10 Answers
The Pragmatic Programmer: From Journeyman to Master - Andrew Hunt and David Thomas
This book is all about how to write code that works and is maintainable. A key concept is being practical. Everything in the book is boiled down to 70 tips that are easy to remember that help you deliver better, higher-quality software.
Code Complete: A Practical Handbook of Software Construction by Steve McConnell
This book is probably the definitive book on software construction. It discusses topics such as the foundations for construction (requirements, architecture, and design), choosing a programming language, choosing a development methodology, designing classes and objects, writing high-quality functions and methods, defensive programming, the use and naming of variables, data types, organizing and formatting statements, collaborative programming, testing, debugging, refactoring, and development tools.
This is a must have on every software engineer's shelf, even if you aren't explicitly writing code.
-
1It's interesting that immutability isn't mentioned anywhere in the book.– JonasCommented Sep 2, 2010 at 8:49
-
1Wow. I just looked through the index - there isn't any mention of immutability.– Thomas Owens ♦Commented Sep 2, 2010 at 18:18
-
I think it's a great book and still well worth reading, but some bits (and ommissions) are beginning to date the book a little– FinnNkCommented Oct 17, 2010 at 20:15
My favorite is: Structure and Interpretation of Computer Programs
It was my first academic text-book 10 years ago, and it still blows my mind how relevant it is in predicting trends in state of the art "Software Engineering", and programming in general.
It uses LISP for it's examples, but I don't consider LISP any kind of language, hence it's totally agnostic ;)
-
SICP, is just a wonderful book. One of these days I have to sit down and go threw the entire thing again, in a way I haven't in almost 20 years. Commented Feb 24, 2011 at 15:11
Clean Code - Robert Martin
-
would you mind explaining about this in more detail - how and why does it answer the question asked? "Link-only answers" are not quite welcome at Stack Exchange– gnatCommented Apr 11, 2013 at 6:10
The Mythical Man Month - Frederick P Brooks
This is a must have book for software developers. Most software development tomes talk about coding software, programming languages and the latest technologies and techniques to write software.
In "The Mythical Man Month" - Mr. Brooks tackles a more fundamental (IMO) aspect of software development - the social aspect. He addresses the problems faced in a major software project, from the problem of adding people, the second system effect, and the need for proper process.
This books is one that looks at programming from the perspective of making it an engineering discipline, something that can be used to engineer a large, complex piece of software.
Design Patterns. The patterns largely OOP-bent, but within OOP, they're pretty applicable to any language.
You should read it because it'll make you a better designer. It teaches you good ways to solve subsystem design problems that you might not have figured out until you'd been designing systems for 40 years. They're reusable solutions to semi-common problems. That said, there's a pattern that sophomores go through when they learn design patterns in school:
- Design patterns are kinda neat. I wonder how I can use them in this project I'm working on?
- Design patterns are 10x better than sliced bread! I'm gonna use'em everywhere!
- Ok, there is a time and a place for using specific patterns. Moderation is good.
- We should solve this problem with solution X. Oh right, that happens to be pattern Y. How 'bout that.
Domain-driven Design: Tackling Complexity in the Heart of Software
Eric Evans
Lots of high level concepts, its a pretty advanced book that I would not recommend to novice developers. If you are working on a large scale software project with lots of inter-dependencies, this is a great reference.
Code - Microsoft Press.
It's an excellent causal computer book that takes you from Morse code to Binary and back.
Test-Driven Development: By Example by Kent Beck.
A super introduction to TDD. Got me started on the TDD path. Code samples are Java, but the material is otherwise very language-agnostic.
- Code Complete 2
- Pragmatic Programmer
- Design Patterns Explained
- Writing Solid Code
- Refactoring - Martin Fowler (He's got a few actually all worthwhile)
- Clean Code
- 97 things Programmers should know.
These are all books I've either read through completely or reread significant portions of a few times and are well put together. I'm a newcomer to programming as a whole so I've used these to get contextual understanding of what I should learn how to do.
Oh for the database stuff
- The Art of SQL
- Simply SQL
- SQL For Smarties - Joe Celko
- These all spring to mind off the top of my head, so forgive me for not recalling all the authors-I was on my way to another post about memorising syntax :).