78

Possible Duplicate:
What is the single most influential book every programmer should read?

For me, Head First Design Patterns was a book that made Design Patterns click for me. Once I had read it, I found I could return to GoF and take more away from it and it really helped my move on as a developer.

What book really made an impact of how you work as a developer?

Note: One book per answer; upvote any you agree with ;o)

175 accepted

Code Complete

cover

142

The Pragmatic Programmer

It made me think that programming is a craft, not just a job and should be something that I am proud of at the end of the day.

cover image

71

The Mythical Man-Month is a great book; "no silver bullet", "second-system effect", "surgical teams", etc. all helped my development on a meta level. Sure, I couldn't code quick sort any better after reading, but I definitely made better programs.

cover image


Comments by David Berger:
Having started programming in the era of online tutorials, there weren't so many books per se that I would consider indispensable. But I also dropped into software development from the middle of nowhere in a company where all the developers were experienced and minded their own business, so I kind of missed a lot of the acculturation that people get with an academic program or a cohort of junior developers at a first job learning about team projects. The book is aimed rather abstractly at answering the questions "Why is large-scale software development so hard?" and "What can we do to make it more efficient?" I say rather abstractly, but truth be told there's a lot of history involved: it was a bit challenging for me to imagine what development was like in the '70s and '80s when the essays in this book were written.

60

alt text

Head First Design Patterns as well. Not the best book I have read, but it was fun to read and since then I started reading more general books about programming instead of the usual "XY Programming Language in 21 days".

58

Refactoring by Martin Fowler

cover image

43

As a team lead, PeopleWare was invaluable on helping my fellow developers.

alt text

36

Godel, Escher, Bach: An Eternal Golden Braid (A Metaphorical Fugue on Minds and Machines in the Spirit of Lewis Carroll) by Douglas Hofstadter.

Godel-Escher-Bach Cover

OK, this isn't a programming book, but it was a big influence on me in my career as a software engineer. When I first read it way back when it got me excited about math, algorithms, and abstract thinking. Before reading this I had been toying with going back to school to finish my degree. By chance I stumbled upon this book while browsing in a book store. After reading this I knew I wanted to learn more and enrolled, finished my degree, and have been gainfully employed writing various kinds of code ever since.

35

Working Effectively with Legacy Code by Michael C. Feathers.

alt text

The title doesn't do justice to how useful this book is in learning how to better structure software.

33

The Structure and Interpretation of Computer Programs by s Harold Abelson and Gerald Jay Sussman, with Julie Sussman. It's available online for free, and there are even video lectures to go along with it.

cover

32

Effective C++ by Scott Meyers. It's an oldie, but by far the best book on coding I've ever read.

Effective C++ by Scott Meyers

25

Looking for a real development book, I think Design Patterns (the Gang of four book) opened my eyes most. I started to get interested in TDD, reading about XP and Unit Testing. This changed my focus and interest in Software Development forever.

cover

20

Effective Java by Joshua Bloch

19

Richard Feynman, "Surely You're Joking, Mr. Feynman"

cover

16

Domain Driven Design by Eric Evans

cover

12

There are similar questions here and here.

12

Many of the books already mentioned opened my eyes and influenced me, but a book every programmer should read is Test-Driven Development by Example. It really showed me the importance of unit tests and TDD and got me started very quick.

cover

12

Kernighan and Richie's "The C Programming Language" - The only C book you'll ever need.

12
11

Writing Solid Code, by Steve Maguire. Code Complete is a close runner-up.

cover

10

The Art of Unix Programming by Eric Raymond

cover

9

Programming Pearls b Jon Benley (both books)

8

Effective C++ and More Effective C++ by Scott Myers.

8

About Face - The Essentials of Interaction Design (now in third edition)

This book opened my eyes to a very different viewpoint of development, focused on the interactions of the end user. It also helped me realize that creating great software is about more than just patterns and architecture, it's about helping people achieve their goals.

7

This is very similar to this question.

6

I'm really surprised that nobody has mentioned Advanced Programming in the UNIX Environment by W. Richard Stevens. It's not necessarily the book that had the most impact on me, but it definitely deserves a place among many of the other greats mentioned here.

Even though I mostly did (and do) Perl programming, reading this book really helped me understand more about what's going on under the hood. It covers a ton of really critical low-level concepts like File IO, system files (passwd, group, etc), process control, signals, and so on.

Having some idea of how this stuff works at the C level is very useful, even if you never write any C code, because every language you use (on a Unix system) is using these APIs under the hood.

5

Code Complete by Steven McConnell 1993 version of Code Complete

I really should buy the updated version!

5

It's not strictly a development book and I believe that I've mentioned it in another answer somewhere but it's a book I really believe all developers should read, from php to Java to assembly developers.

Code

It really brings together what's under the hood in a computer, why memory shouldn't be wasted and some of the more interesting parts of the history of computing. It's an introduction to the computer and what it is. It gave me my ultimate passion for low level programming and helped me understand pointers and memory more than any other computer.

5

Modern c++ Design.

by Andrei Alexandrescu

4

Pragmatic Unit Testing in C# with NUnit by by Andy Hunt and Dave Thomas with Matt Hargett. It made me really understand unit testing and that affects my code in so many ways. It pushed me towards becoming better at understanding Object Orientation.

4

Rapid Development by McConnell

4

Test Driven Development

3

Programming Perl (O'Reilly)

3

This one started me off into true OOA&D.

Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development - Craig Larman

These would be up there as well:

  • Patterns in Enterprise Application Architecture - Fowler
  • Domain-Driven Design - Eric Evans
3

I suppose we could ask the same top rated question every couple of weeks and upmod all those who mention code complete or The Pragmatic Programmer.

Not that there is anythng wrong with it :-)

3

Programing Pearls by Jon Bentley, a collection of essays that originally appeared Communications of the ACM

3

The Pragmatic Programmer...less about the technical details that Code Complete covers well, and more about thinking at a higher level about programming.

PP and CC, and the Mythical Man-Month should be on everyone's shelves. But they should read them before they put them on the shelf. Just saying.

3

The Mythical Man-Month required reading for any developer. The very fact it is as old as it is and still relevant makes it necessary reading.

3

Actually the book that had a biggest influence on me is often not liked by the programmers: I am talking about Cooper's "Inmates are running the asylum". However this book forever changed the way I look and think about the things I am building.

3

Coder to Developer, by Mike Gunderloy.

3

Code by Charles Petzold. I don't have a traditional CS background, so its a great book for helping people like me understand the machine and what goes on under all those layers of abstraction.

3

Head First Design Patterns is a great book! at first it seemed a bit controvertial but i quickly fell in love with it and carried it with me everywhere until i finished. i tried reading other head first books but none could compare. all the other books i've read were strictly technical and there was nothing fascinating about them.

2

Code Complete 2

Design Patterns in C#

2

Code Complete, Second Edition

www.amazon.com

2

I think code complete is going to be a hugely popular one for this question, for me it corrected many of my bad habits and re-affirmed my good practices.

Also for my Perl background I really like Perl Best Practices from Damian Conway. Perl can be a nasty language if you don't use style and best practices, which is what I was seeing in the scripts I was reading ( and sometimes writing ) .

I like the Head First Series, they are quite good and easy to read when your are not in the mood for more serious style books.

2

Object-Oriented Software Construction by Bertrand Meyer

2

This will probably date me, but the "dragon book" on compilers. It was from the depths of groking that book that I started my first real project, and launched my career.

2

"The Design and Evolution of C++" by Bjarne Stroustrup

Besides giving much background on C++, it is also a lengthy study on the trade-offs and design concerns involved in a large scale program.

BN.com

2

While not strictly a software development book, I would highly recommend that Don't Make me Think! be considered in this list.

2

Working effectively with legacy code

and

Refactoring to Patterns

2

Extreme Programming by Kent Beck

2

The question is, "What book really made an impact of how you work as a developer?" Without any doubt, Programming Windows with MFC, by Jeff Prosise, is the book that had the greatest impact on HOW I work as a developer. It did not teach me the fundamentals of "programming" but it opened the world of Windows platform development to me and many thousands of other developers.

I had written a little Windows code previously in the "Petzold style" before MFC was developed. I quickly decided the Windows platform we just not worth the trouble as a developer. When Prosise came out with his MFC book, I realized (along with thousands of other non-Windows programmers) that I could create an easy to use interface that users would not just understand, but actually enjoy using. I devoured the book, making so many notes in it and turning down so many corners, I eventually bought a second copy.

Prosise, Jeff. Programming Windows with MFC 2nd Ed. Microsoft Press 1999 ISBN: 1-57231-695-0

2

Domain Driven Design by Eric Evans

2

CLR via C#, by Jeffrey Richter

2

Programming Pearls by Jon Bentley

There is nothing like writing your own quicksort implementation to get you thinking about datastructures and algorithms.

2

Separately, I'd mention The Third Manifesto by Hugh Darwen and CJ Date. If you're interested in understanding data (which seems uncommon among programmers) this book is a must-read. It will also make you sad when you realize just how badly broken SQL is, but it'll also help you cope with that brokenness. Knowing how a tool is broken lets you design with those deficits in mind.

2

The most influential programming book for me was Enough Rope to Shoot Yourself in the Foot by Allen Holub.

Cover of the book

O, well, how long ago it was.

2

Martin Fowler's Refactoring: Improving the Design of Existing Code has already been listed. But I will detail why it has impacted me.

The essence of the whole book is about structuring code so that it is simpler to read and understand by humans. It teaches me strongly that the code that I write is meant for my colleagues and successors to consume and possibly learn something good out of it. It inspires me to consciously program in a manner that leaves people praising my name, and not cursing me to damnation for all eternity.

2

Another book that has not been mentioned yet, and SHOULD be required reading for EVERY programmer, newbies on up to gurus, in ANY programming language, is Michael Howard's Writing Secure Code (2nd Edition) from MSPress.

1

Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp by Peter Norvig

1

Design Patterns: Elements of Reusable Object-Oriented Software, by the GoF

1

Modern C++ Design by Andrei Alexandrescu

1

Code Complete by Steve McConnell

1

Code Complete followed closely by Head First Design Patterns

1

Writing Solid Code by Steve Maguire.

1

"Object-Oriented Analysis and Design with Applications" by Grady Booch. I read this a long time ago and it showed me that there could be a methodology to developing Object Oriented Software. Since then many other books have had an impact on me but this one got me started.

1

The Mythical Man-Month here as well. Despite being an old book, a lot of the stuff in there is still true and only new development methods like agile, xp, tdd may change some of this finally. It explains in detail why adding new developers to a late project will make the project even later. It will not improve your coding skills, but after being a developer for a few years, this will open your eyes for sure and explain a lot of the problems you have faced before.

1

Mine is Test Driven Development by Example

1

The Pragmatic Programmer

1

It's a toss up between Head First Design Patterns, for many of the reasons cited above, and Perl Testing: A Developer's Notebook, which should be one of the bibles for any Perl programmer wanting to write maintainable code.

1

Development books:

  • K&R, naturally
  • Apple Machine Language (for the Apple II/IIe)
  • the Macintosh Programming reference library (MacOS 6-8)
  • *NIX Network Programming/Advanced *NIX Programming
  • TCP/IP Illustrated vol 1-3
  • The early O'Reilly library (early-mid '90s)

Non-development:

  • Wargames
1

Win32 Programming by Charles Petzold

1

The Career Programmer: Guerilla Tactics for an Imperfect World by Christopher Duncan

1

The Little Schemer. I've never learned as much about programming than from this book. Teaches you how to solve a problem by decomposing the problem into a step and recursively applying it.

1

Learning C# 2005, by Jesse Liberty & Brian MacDonald (O'Reilly).

ISBN 10: 0-596-10209-7.

When I first made the jump from ASP classic procedural code to object-oriented C# code in VS2005, this book set me on the right path.

1

Software Tools by Brian W. Kernighan and P. J. Plauger by a wide margin had the most effect on me.

1

Inside the C++ Object Model by Stan Lippman. It made C++ finally "click" for me, before it was all "magic". This book gave me a different frame of mind when approaching a new programming language.

1

Literate Programming by Donald Knuth, it's a great book on code structure.

1

Expert C Programming: Deep C Secrets by Peter Van Der Linden

1

Working Effectively with Legacy Code by Feathers

I actually ordered this book one afternoon because I saw it laying in the back seat of someone's car in the parking lot at lunch. The title grabbed me because I was, at the time, trying to figure out how to deal with making a lot of small modifications to a huge code base that had been developed a decade ago and "tweaked" numerous times by people long gone since then. "Working effectively with legacy code" seemed like exactly what I needed to figure out how to do...

The book didn't disappoint.

1

As with others, yes, Code Complete, Bertrand Myers, and so on, are part of my SW dev foundation today. but way back the very first programming "book" was more of a booklet on the Intel 8008. Mail ordered from an ad in an electronics magazine. This had all the opcodes, programmer's model of the chip architecture, etc. No guidance on structuring code, commenting, compiling or linking, algorithms or any of that high level stuff! Now, in my career, i have a deep understanding of register-level programming, bits, pixels, interrupt handlers and all that, but am relatively an idiot at databases, networks, GUI apps, large business systems.

An interesting follow up question: has the way you started in programming been a benefit or hindrance to your career and an influence today, or was it so long ago it doesn't matter? What books helped you expand beyond your initial skills into broad new areas?

1

Most impact? K&R C second edition when I read it at college. It's effectively what started my career.

1

The Productive Programmer by Ford

I'm not quite through this one yet, but I'm already thrilled by some of the tips/tricks I've picked up to become more...well...productive.

Sure, there's plenty of the stuff we all already know (use the keyboard shortcuts, DRY, etc). But there's plenty of new stuff to go with it. And careful readers will quickly start to see how things can be combined for even greater effect.

1

Object Oriented Analysis and Design - by Grady Booch

1

Took my programing to a whole new level.

1

GOF Design Patterns Fowler's Refactoring

1

Kernighan & Ritchie's "The C Programming Language"

1

The Art of Computer Programming by Donald Knuth.

I had to read this at University and I bitched and moaned, like everyone else. But by the end of the course I praised the book, simply for the fact that it shows you why you can't create inefficient loops (conditionals, etc) in code.

On the lighter side, The Pragmatic Programmer is a close runner-up.

1

The Practice of Programming

1

The Art of Computer Programming, by Donald Knuth, especially volumes I and II. (Oops, is that two books?)

1

This might not count as a "development book" but I have to throw it in anyway: Hackers by Stephen Levy. I found that it spoke to the emotional side of programming.

1

Agile Software Development with Scrum by Ken Schwaber and Mike Beedle.

I used this book as the starting point to understanding Agile development.

1

Structure and Interpretation of Computer Programs

1

Many of the books listed could fit the bill. If restricted to one, I'd probably pick "UNIX Programming Environment" by Kernighan and Pike as THE most influential, though "Software Tools" and "The Elements of Programming Style" were also extremely influential on me when I started, a long time ago (80s). Slightly more recent influences would include "The C Programming Language" and both "Code Complete" and "Writing Solid Code" (90s). Current influences (00s) would include - not in order:

  • The Art of Unix Programming
  • Test-Driven Programming
  • Refactoring
  • Pragmatic Programmer
  • The Practice of Programming
  • Working Effectively with Legacy Code
1

Turbo Pascal 7! "I can make the computer do things?!?!?!"

1

Not to mention books that have already been mentioned MANY times, one of the best books on what NOT to do is AntiPatterns (Refactoring Software, Architectures and Projects in Crisis) from Wiley.

1

Thinking in Java - I'm a .net developer now :-)

1

As so many people have listed Head First Design Patterns, which I agree is a very good book, I would like to see if so many people aware of a title called Design Patterns Explained: A New Perspective on Object-Oriented Design.

This title deals with design patterns excellently. The first half of the book is very accessible and the remaining chapters require only a firm grasp of the content already covered The reason I feel the second half of the book is less accessible is that it covers patterns that I, as a young developer admittedly lacking in experience, have not used much.

This title also introduces the concept behind design patterns, covering Christopher Alexander's initial work in architecture to the GoF first implementing documenting patterns in SmallTalk.

I think that anyone who enjoyed Head First Design Patterns but still finds the GoF very dry, should look into Design Patterns Explained as a much more readable (although not quite as comprehensive) alternative.

1

Craig Larman's Applying UML and Patterns. While the Gang of Four book Design Patterns is very instructive, I found that I didn't "get" how to use design patterns until I ran across Larman's book in a programming class.

1

"Head First Design Patterns" helped me to understand objects oriented programming.

This book has opened my mind :-) I've tried GoF first.I was discouraged...

But now, GoF is my next step.

Code Complete 2nd edition is very good too.

1

If you are doing anything in Unix/Linux/MacOS etc, you must read Advanced Programming in the Unix Environment (also known by the acronym APUE), by the late W Richard Stevens. If you don't know how file descriptors work or what sessions are, or all the things you should do when you daemonize yourself (admit it, you don't), then this book will tell you.

You'll feel amatuerish for a bit afterwards, but if you want to consider yourself a professional programmer (in any language) in the Unix environment you need to read this.

1

Zen and art of Motorcycle Maintainence

Undoubtedly.

1

Even though I had been programming rofessionally for years, Rocky Lhotka's "Business Objects" series about his CSLA framework was the book that opened my eyes.

His ideas he got me excited about software development patterns and theory again. It set me on the path of a new interest in learning how to be a better developer, and not just learning about the latest gee-whiz control or library. (Don't get me wrong, I still love a good technical book too - you gotta keep up!)

1

I think it was after "On Lisp" by Paul Graham that I actually understood how much fun I could have while coding. It made me want to look for different ways of writing programs.

1

Fortran IV with Watfor and Watfiv by Cress, Dirkson and Graham.

This book taught me my first programming language that I programmed onto punch cards at the time. After 3 years, the book was all tatters because I had used it so much.

alt text

Fortran was a great language! It had a super optimizer and produced very fast code. It is still very popular in Great Britain and FTN95 is now a very full-featured and capable compiler. I sometimes wish I could have continued to use it, but Delphi is a more than adequate replacement.

1

Hard to say, but the last programming book i found really interesting was "Beautiful Code" by O'Reilly

1

The Scelbi-Byte Primer

I pored over the source code listings in this book many times until, one day, I suddenly grokked 8080 assembly language programming.

1

I bough this when I was a complete newbie and took me from only knowing that Java existed to a reliable team member in a short time

1

Has to be Code Complete. I had the good fortune of buying as I started my first steps as a programmer. I learned so much from it I immediately re-read it. I firmly believe it transformed by skills in a short space of time.

I have recommended it to various junior programmers and university students but sadly my advice always seems to fall on deaf ears. shame really its just so packed with lessons learned from practical experience. It really is a treasure trove of great advice.

1

Three books come to mind for me.

  • The Art of Unix Programming by Eric S. Raymond.
  • The Wizardry Compiled by Rick Cook.
  • The Art of Computer Programming by Donald Knuth.

I also love the writing of Paul Graham.

1

Peter Norton's Assembly Language Book for the IBM PC

alt text

I had spent countless nights in front of the pc (DOS), exploring unknown worlds :-D

1

Code by Microsoft.

Granted, it does NOT teach you about programming but it explains so well how computers work and how humans have learned to translate their thoughts into math and how computers operate.

I never understood Boolean algebra til I read CODE. I consider it a must read book for all beginners in programming.

0

The Interpretation of Object-Oriented Programming Languages by Ian Craig

Because it showed me how much more there was to OO than standard C++/Java idioms

0

Programming in C - K & R

0

Close call: Extreme Programming Explained, Kent Beck, or Refactoring, Martin Fowler.

0

Another vote here for Head First Design Patterns

0

Thinking in Java (Patterns) , Bruce Eckel

0

Professional Excel Development This book showed how to make high quality applications within one of the most ubiquitous programming platforms available.

0

Programming Perl by Larry Wall

0

Cocoa Programming for Mac OS X by Aaron Hillegass

0

The Pragmatic Programmer, probably.

0

PHP objects, patterns and practice. http://www.apress.com/book/view/9781590599099

0

McConnell's Code Commplete Zeldman's Designing With Web Standards

0

'How to be a Programmer: A Short, Comprehensive, and Personal Summary' by Robert L Read

Not exactly a book but an essay, but this one was definitely an inspiration for me when I got into coding. Loved the notion of entering a tribe. Worth a read.

0

Code Complete

0

Beginning Visual C++ (5/6) by Ivor Horton

0

Head First Design Patterns. Still love it

0

In terms of income - Petzold's Programming Win95
In terms of career - Pragmatic Programmer

0

Code Complete by Steve McConnell

0

Mine was The C Programming Language--the original "K&R" book. What fierce simplicity!

Very recently, I'm getting a lot out of Kent Beck's work.

0

C++ How to Program, was very good for me as my first programing book.

0
  • Code Complete
  • Pragmatic Programmer
  • Refactoring by Martin Fowler
  • Mythical Man Month
0

Two: Programming Perl by Larry Wall and Agile Web Development with Rails, by Dave Thomas and DHH

I got complex data structures reading the section on Hash of Hashes in the "camel book", and finally saw MVC as something useful with Rails, learned by reading the Rails book.

0

I enjoy the "blog Book" -- The Best Software Writing - by Joel Spoksky

0

I'm going to cheat and answer with a short list:

  1. The C Programming Language, 1ed (Kernigan & Ritchie)
  2. Large Scale C++ Design (Lakos)
  3. Mr Bunny's Guide to ActiveX (Egremont III)
0

Practical C Programming by Steve Oualline, if for no other reason than that it was the first programming book that I read cover to cover, then started over with again. I might've gotten into programming eventually anyway, but it definitely kickstarted what has since become a life long interest, matter of study and career.

0

The Unix Programming Environment by Kernighan and Pike.

The Unix Programming Environment

More than any other book, it taught me the benefits in building small, easily-tested tools that can be combined to do big things.

0

Object-Oriented Software Construction by Bertrand Meyer

0

The user's manual for Robert Uiterwyk's BASIC for the SWTPC 6800. This was in high school in 1976. (You youngsters have no idea...)

http://www.swtpc.com/mholley/BASIC_2/Uiterwyk.htm

0

For learning how to program: The C Programming Language by Kernigahan and Ritchie although that probably has more to do with my age. For changing my worldview with respect to developing software: Agile Software Development by Alistair Cockburn and Extreme Programming Explained by Kent Beck. More recently books on Test Driven Development.

0

The Pragmatic Programmer is the best book I've read in years. I've read most of the other books mentioned in the answers here, but The PP (hereafter) steps back from specific languages and technologies, and focuses on practices that will make you more effective, regardless of technologies you're using now, or may encounter later on.

In that sense it's similar to (say) Design Patterns, in that it's agnostic with respect to your language etc. However it goes further into software development practices and looks at how you should be designing / writing / testing etc. I reference and recommend it in conversations with every client I deal with.

0

I hate to be a suck-up, but I'm new to this profession and for me the most influential book so far has been More Joel on Software.

0
  • Expert C Programming : Deep C Secrets - amazon
  • The C Programming Language - amazon
  • The C Puzzle Book - amazon
0

Refactoring, Chapter 3. This will teach an intermediate/advanced programmer more about OOD than any other source I've seen.

Design patterns is good for a beginner, but by the time you are intermediate/advanced, you should be using these all anyway--so I always thought the best thing about the design patterns book was providing names so that we could discuss the things we already did.

0

Code Complete Second Edition. Hands down opened my eyes to how development should go.

0

A collection it was, and stunning. Edsger Dijkstra's (with some help from C.A.R. Hoare) little black book Structured Programming and particlarly the essay titled "On Our Inability To Do Much".

0

My high school math teacher lent me a copy of http://www.amazon.com/Are-Your-Lights-Figure-Problem/dp/0932633161 that I have re-read many times. It has been invaluable, as a developer, and in life generally.

0

It is not a book, seriously it was a blog www.codinghorror.com that introduced me to the world of good book and ideas

0

One of Andre La Mothe's game programming books from the mid 90's got me hooked to programming. I don't remember the original English name of the book.

0

The C++ Series of programming books by Deitel and Deitel

0

"Thinking in C++" by Bruce Eckel

0

Managing Gigabytes is an instant classic for thinking about the heavy lifting of information.

0

C# for Experienced Programmers

or really anything from Dietel & Dietel. I have read several of their books, and everything has been awesome.

0

Years ago, Bruce Eckel's Thinking in C++ taught me a great deal about C++ but also the importance of isolating an issue to a small 'sandbox' for study/analysis. This technique has greatly impacted my career and routinely helps me troubleshoot problems both for myself and others.

These days, I refer to Thinking in Java, which is written in the same style. Somehow, the style is beyond mere, simple 'examples' and profoundly gets at the heart of the issue.

I am so grateful that I will buy virtually anything by Eckel, sight unseen.

0

Design Patterns: Elements of Reusable Object-Oriented Software AKA the Gang of Four book!

0

When I first started, there was "Mastering Turbo Pascal" by Tom Swan. There is nothing terribly profound about this book. It was clear and concise with usable examples. Based on this knowledge, I spawned a software development career now 15+ years in.

0

C++ BlackBook. KISS all the way through

0

So far it would be Joel on Software as it has guided me here (by finding his blog) and found many more good books to read.

0

Donald Norman, 'The Design of Everyday Things'

Not about programming, per se, but about how things in the world should work -- kind of the psychology of usability.

It's been invaluable for me in designing both end-user interfaces and APIs.

0

Mastering C++ from Tom Swan. It was the best kind of book, it had examples which were simple enough to teach concepts but useful enough to solve other problems. It was very readable, it was the first book I read when got to college, and it only needed to be read once.

0

code complete

0

Tenenbaum's first operating systems book. My first look at kernal level programming.

0

The pragmatic programmer and Code Complete had the most impacts on my career

0

"Algorithms in C" (1st edition) by Sedgewick taught me all about algorithms as well as teaching me all about the pitfalls of documentation and copy/pasting code as all the example code in this version was taken from the "Algorithms in Pascal" version and were simply passed through a simple code translator which did not adjust for the different indexing schemes.

0

Head First Design Patterns and Code Complete

0

My all-time favorite was the C# Back Book, by Matthew Telles.

0

Most of the books listed here are rather old, for example: The Mythical Man-Month (1995) Code Complete (1993) Effective C++ by Scott Meyers (1998)

Isn't there any recent classic out there, let's say from 2007-2008 ?

0

Dreaming in Code Has probably had the most profound impact in the last 6 months.

0

"The C++ Programming Language" by Bjarne Stroustrup

0

Head First Design Patterns here too

0

Head First Design Patterns +1

0

Actually, two books stand out. The first was Code Complete. Despite its age, this is still a very useful book, and the chapter on the dangers of premature optimisation is worth the price of the book on its own.

The second one was The Psychology of Everyday Things (now called The Design of Everyday Things, I think), which changed the way I think about user interfaces when designing applications. It made me more user-focused.

0

Amiga ROM Kernel Manuals :)

0

Code Complete 2

0

As a C++ programmer I liked Scott Meyer's but, despite of lesser production value of presented solutions, much bigger impact made "Modern C++ Design" by Andrei Alexandrescu. Very good book.

As a theoretical cs hobbyist the most important for me were Don Knuth's books, especially Concrete Mathematics, which showed me a wide range of interesting tricks.

Few days ago I finished reading Beautfiful Code (Andy Oram & Greg Wilson) and I found many interesting ideas there.

I looked in the bookstore at Head First series, metioned by posters before me and didn't like the series at all. I don't know why. The best book about patterns is, in my opinion, Design Patterns by the Gang of Four.

0

Code Complete. I realize I am the 900th person to say it, but it deserves the statement.

Additionally, The Art of Computer Programming might be a close second for me personally.

0

Inside the c++ object model by Stanley Lippman http://www.amazon.com/Inside-Object-Model-Stanley-Lippman/dp/0201834545

0

Read the faq: Avoid asking questions that are subjective

0

How to think like a computer scientist: learning with python

May not be the most advanced book on the world but it made me understand programming concepts that I couldn't, especially object oriented topics.

0

"Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs (Microsoft Programming Series)" by Steve MacGuire.

Interesting what a large proportion the books mentioned here are C/C++ books.

0

For me "Memory as a programming concept in C and C++" really opened my eyes to how memory management really works. If you're a C or C++ developer I consider it a must read. You will defiantly learn something or remember things you might have forgotten along the way.

http://www.amazon.com/Memory-Programming-Concept-C/dp/0521520436

0

Effective Java by Joshua Bloch

0

Fowlers Patterns of Enterprise Application Architecture. Code Complete was a good read but it simply confirmed my thought and practices rather than taught me a lot new material. It's a great book to give someone who needs a clue.

0

The Pragmatic programmer was pretty good. However one that really made an impact when I was starting out was :

Windows 95 System Programming Secrets"

I know - it sounds and looks a bit cheesy on the outside and has probably dated a bit - but this was an awesome explanation of the internals of Win95 based on the Authors (Matt Pietrek) investigations using his own own tools - the code for which came with the book. Bear in mind this was before the whole open source thing and Microsoft was still pretty cagey about releasing documentation of internals - let alone source. There was some quote in there like "If you are working through some problem and hit some sticking point then you need to stop and really look deeply into that piece and really understand how it works". I've found this to be pretty good advice - particularly these days when you often have the source for a library and can go take a look. Its also inspired me to enjoy diving into the internals of how systems work, something that has proven invaluable over the course of my career.

Oh and I'd also throw in effective .net - great internals explanation of .Net from Don Box.

0

SAP ABAP programming? "Teach Yourself ABAP in 21 Days" is the best book!

It contains no clever tricks or wizardry, but after 3 years, I never came upon a more comprehensive book

0

Schaum's Outline of Programming with C++ by John R Hubbard.

This was the first programming book I read, when I started out with C++. It was gifted to me by someone who saw my interest in programming. The book is very good for beginners - it started from the elementary concepts, went up to templates and vectors. The examples given were pretty relevant. The book made you ponder and ask more questions, and try out things for yourself.

0

Domain-Driven Design: Tackling Complexity in the Heart of Software by Eric Evans

0

Code Complete because it was about the things that are most relevant when writing good code. It got an extra bonus when I realized none of those things was ever mentioned by my CS professors

0

In recent years it has been 'The C++ Standard Library' by 'Nicolai M. Josuttis'. It's my bible.

alt text

0
1) Programming .Net Components by Juval- "i am able to build a software architecture that has been used by the company since 2004 until now."
2) Code Complete - "its like looking into mirror every time i read it." 
3) Coder to Developer by Mike Gunderloy 
4) Joel on Software 
0

The first book that made a real impact on me was Mastering Turbo Assembler by Tom Swan.

Other books that have had an impact was Just For Fun by Linus Torvalds and David Diamond and of course The Pragmatic Programmer by Andrew Hunt and David Thomas.

0

Without a doubt GoF's Design Patterns mainly due to the fact that I discovered that I had in fact chosen to solve particular problems using two of the patterns mentioned without knowing about the patterns before.

0

"Basic für Kleincomputer", Robotron Verlag

0

Tom Swan's books.

0

Advanced MS-DOS by Ray Duncan.

0

Probably "C for Dummies" vol 1, back in 1997 or so. Just an introduction really, but it was a good read after having picked up the taste for programming in GFA Basic on the Atari ST. The Coronado C tutorial around the same time helped too.

0

Michael Abrash The Zen of Assembly Language

0

Applying UML and Design Patterns.

It helped design patterns to click with me, and provided a justification for UML that made sense to me in the phrasing 'UML as Sketch'. Namely that UML should be used as a brief sketch of the system that has the additional benefit of you not having to explain the notation to others (they either already know UML or you give them a UML book to read)

0

+1 for Code Complete.

0

Keep in mind that I'm not a designer, but Tom Peter's "design" has really stuck with me. While it doesn't deal with coding, or development per se, the book is a fantastic read for anyone in the development field.

0

I am surprised there is no mention yet of this book: "Starting Forth", by Leo Brodie. After all Forth, being a stack-based language, should fit the audience on this site...

Admittedly, Forth is a weird language and not very popular these days. But this book is a joy to read. And it has cartoons! The book, as well as Brodie's other book, "Thinking Forth", are both available free on the web.

[http://home.iae.nl/users/mhx/sf.html][1] [http://thinking-forth.sourceforge.net/][2]

[1]: "Starting Forth" home page [2]: "Thinking Forth" home page

0

As a self taught programmer without any formal college classes, Code Complete (Vols. 1 and 2) and Rapid Development both made me think about the software development process in new ways. They solidified some ideas I had learned by trail and error, and provided new insights.

Steve MConnell's writing style is one of the most entertaining out there when it comes to programming books.

0

My job went to India

0

Object-Oriented Programming in Turbo C++. Not super popular, but it was the one that got me started, and was the first book that really helped me grok what an object was. Read this one waaaay back in high school. It sort of brings a tear to my eye...

0

Even though i've never programmed a game this book helped me understand a lot of things in a fun way.

0

An introduction to GW Basic. With out it I never would have learned how to program and any other books wouldn't have done me any good.

0

Beginning Visual C++

When I first started programming in a OOP languages, I found this book not only to be a comprehensive book about C++ and MFC, it was also has one of the best explanations of Object Oriented concepts I've seen.

When I talk to developers who are just starting out programming in an object oriented language, I tell them to read this book.

0

Domain Driven Design By Eric Evans is a wonderful book!

0

One I didn't already see on here was xUnit Test Patterns: Refactoring Test Code by Gerard Meszaros. This book really helped me see unit testing from a fresh perspective.

0

hackers, by Steven Levy.

The personality and way of life must come first. Everything else can be learned.

0

Clean Code - Robert C. Martin

0

Advanced Programming in the UNIX environment - W. Richard Stevens

0

The before mentioned "The C Programming Language, Second Edition" and "The Structure and Interpretation of Computer Programs" are excellent books I would just like to add C++ How to Program by Deitel and Deitel. This book helped me a lot in school and provides many well explained and easy to use examples.

0

The first programming book I read was C++ for dummies. Needless to say, I still detest C++.

The one that changed me the most as a developer was probably php|architect's Guide to PHP Design Patterns. Not so much that it is great at explaining stuff (which it is), but that it was the one book that took me up a level or two as a programmer, just by reading it (because I was shitty before). Before I used to write lines of code (as long as it works, etc). After reading the book, I started writing apps, considering the whole structure and the flow.

-2

Code Complete Second Edition

-2

Design Patterns

-2

Code Complete

-2

Design Patterns

-2

Code Complete

-4

None! Books are old school, most info on the web is more current and relevant.

-5

Another Code Complete fan here!