tags:

views:

699

answers:

16

Duplicate: of this and this question. Even if the question isn't worded exactly the same, you're getting the exact same answers.

I've read several programming books. I can program in about 8 languages. I've noticed a problem with just about every book out there is that they are either:

  1. a reference book on the language structures
  2. a book of programming tips and tricks

what I have yet to find is a good book on how to develop real software. Maybe it's just me with having problems making the leap from programming structures to large projects with libraries, modules, and lots of files.

Are there any recommendations about how to write software? not just how to program in (C/C++/C#/Java/PERL/Ruby/...) language?

+11  A: 

I highly recommend Code Complete

Shawn Miller
Get the second edition if you have your choice.
Chris Ballance
It covers a lot of ground, very well written with lots of interesting trivia. And most importantly with a lot of (reviewed) references for further study. Highly recommended
Emile Vrijdags
+3  A: 

You can always try out the great design patterns book by the "gang of four":

Design Patterns: Elements of Reusable Object-Oriented Software

notnot
+4  A: 

Here are Joel Spolsky's recommendations, including a discussion that might help you realise why you should (or shouldn't) read what's on the list: http://www.joelonsoftware.com/navLinks/fog0000000262.html

Jonas Kölker
+1  A: 

Probably anything by Martin Fowler but more specifically:

Patterns of Enterprise Application Architecture

Gavin Miller
A: 

I find reading various blogs to be more helpful than any one book, but Code Complete and Design Patterns are good choices. This list is pretty good.

Steve Johnson
+7  A: 

You might also consider trying to build something of moderate to large size - there's no substitute for actually getting tangled up in architectural issues, and it can put books like these, and other things people have posted here, in better context.

Something else I found when I started to get bored with the "Language X in 21 days" books was more CS theory - not sure if it helped with large scale design but it was a great place to expand from basic programming. Two good ones are:

(these were especially interesting to me because I never studied CS, YMMV)

Steve B.
I like ToC but have seen people go crazy studying automata, turing machines etc. +1
Perpetualcoder
+1  A: 

Scott Hanselman's Six Essential Language Agnostic Programming Books is good stuff.

Chris Ballance
+1  A: 

And loads more, no doubt! That's just off a quick trawl of my Amazon wishlist.

Robert Grant
+5  A: 

The Pragmatic Programmer: From Journeyman to Master

That is an excellent book. Entertaining to read too.
Bernard
+2  A: 

I am not sure I understand your question correctly, I assume you want to go beyond language and get into design and architecture of software.

I recommend you take a look at these - Gof, Patterns of Enterprise Architecture, Test Driven Development

These are the ones that come to my mind right now.

Happy Coding!

Perpetualcoder
Except for the last one I've read all of those.
Bernard
I believe if your code is testable in a mutually exclusive way without too much mocking, your design is pretty good.
Perpetualcoder
+2  A: 
mannicken
good book but some of the exercises are real tough.
Perpetualcoder
+3  A: 

Art of Computer Programming by Donald Knuth is considered a classic, though I'm not sure if it has enough Software Design information in it.

The Mythical Man Month is also a classic and has some excellent information(and still very relevant) on the software design process.

hernan43
A: 

must read: Code complete

jg
A: 

What I have yet to find is a good book on how to develop real software. Maybe it's just me with having problems making the leap from programming structures to large projects with libraries, modules, and lots of files.

Many good books have been recommended, in this question and earlier ones... But when looking at the question, I cannot help but think that no book will take you beyond the basics.

Practising the profession, i.e., working on real-world projects , is the only thing that will. (Be it an open-source pursuit in your free time or a day job building software at a company.) While you are doing that, books will be of great help, but alone, or as the primary means, they will not make the leap for you.

Jonik
+1  A: 
Ickster
+1. I've heard good things about this book, and the bit I've myself read (about modules aka packages) was somewhat eye-opening, and clearly written
Jonik
A: 

If you are a C++ programmer I recommend Scott Meyers wonderful Effective C++ book(s)

Bahaa Zaid