Software Engineering Stories
2004-07-08
Software Engineering Reading List
Tom Van Vleck
Compare what you've read to this list. Suggest your favorites.
Software Engineering Web Sites
- Tom De Marco
-
If you ever have a chance to hear Tom speak, take it.
He has a deep understanding of the problems of quality and software engineering, and presents his thoughts with clarity and humor.
- Jerry Weinberg
-
Jerry recognizes that people are the source of our problems and our hopes for solutions.
- Roger Pressman
-
Quality resources and interesting articles.
- John Pustaver
-
A comprehensive page of links to quality resources.
Programming
- A rational design process: how and why to fake it, David L Parnas and Paul Clements (IEEE TOSE, Feb 1986)
-
We can't develop our programs perfectly, but we should know what perfection is, and come as close as possible.
- Design Patterns, Gamma, Helm, Johnson, Vlissides (Addison Wesley, 0-201-63361-2)
-
An extremely useful book on a way to discuss the cliches and strategies we use to make our programs work.
I worked with Erich Gamma at Taligent.
When I was workint at Sun JavaSoft, an informal group of people used to meet at lunchtime once a week,
and one person would present a pattern from the Patterns Book, and we would discuss
where we'd seen it, and whether the pattern could apply to our project, and other patterns that might apply.
- 97 Things Every Programmer Should Know, Kevlin Henney (O'Reilly Commons) new
-
A useful and though provoking compendium of programming lore. At least 68 more "things" have been added: you can contribute too.
- Writing Solid Code, Steve Maguire (Microsoft, 1-56615-551-4)
-
Fine, practical techniques for the C programmer. A good code review checklist. He understands the Three Questions.
- Effective C++, Scott Myers
-
Many of the lessons in this book are about object-oriented programming, not specifically tied to C++.
- Programming Pearls, Jon Bentley (Addison Wesley)
-
Two volumes. Lots of useful lessons in the craft.
Java
- Java in a Nutshell, Flanagan (O'Reilly, 0-596-00283-1)
-
This is the book I learned Java from.
Like all O'Reilly volumes, it is comprehensive and a good value.
Includes a language overview, class library definitions, and examples.
- The Java Programming Langauge, Arnold & Gosling (Addison Wesley, 0-201-70433-1)
-
A good introduction and a clear explanation of the important features of the language.
You needed another thick book from the Sun Java series for the class library reference,
another for concurrent programming,
and another for tutorial.
The whole series was well done, but you spent a lot to buy the whole shelf.
- Concurrent programming in Java, Lea (Addison Wesley, 0-201-31009-0)
-
How to design objects for a multi-threaded environment.
Very good book on concurrent programming in general, and how to use the features of Java to do it.
Software Engineering and QA theory
- Software State of the Art, DeMarco & Lister (Dorset House, 0-932633-14-5)
-
This collection of classic papers on software development lives up to its name.
- The Mythical Man-Month, Brooks
-
A great book on software engineering, recently reissued. Fun too.
- Handbook of Walkthroughs, Inspections, and Technical Reviews, Weinberg & Freedman
-
This should set your mind going on ways to improve your code.
- Software System Testing & Quality Assurance, Beizer (Van Nostrand-Reinhold, 1-850-32821-8)
-
There are two books by Beizer, both useful. This one is higher-level.
- Software Inspection, an Industry Best Practice, Walker et al
-
IEEE Press tutorial volume, with all the good inspection papers.
Management
- Peopleware, DeMarco & Lister
-
Make your manager read this! This book describes how to make teams productive.
- The Psychology of Computer Programming, Weinberg
-
Beautiful book, full of useful insights.
- Controlling Software Projects, De Marco & Boehm(Yourdon, 0-13-171711-1)
-
A useful short book, aimed at measurement and management of the process, full of insight and useful anecdotes.
- Debugging the development process, Steve Maguire (Microsoft, 1-55615-650-2)
-
A book for team leaders, full of Microsoft war stories. Thought provoking and fun.
Periodicals to be aware of
You have to read some of these regularly, to keep up on the profession.
- Communications of the ACM
- ACM Software Engineering Notes
- IEEE Computer
- IEEE Transactions on Software Engineering
- ACM Transactions on Database Systems
- ACM Transactions on Computer Systems
- PC WEEK
- Harvard Business Review
Classics
-
"Crash Recovery in a Distributed Data Storage System", Lampson & Sturgis,
Technical report, Computer Science Laboratory, Xerox, Palo Alto Research Center, 1976.
-
A beautiful piece of writing and logic. Stable storage, layered abstractions.
- The UNIX Time-Sharing System, Ritchie & Thompson
-
One of the best-written papers ever. The elegance of thought and economy of description set a standard we should all aspire to.
- Transaction Processing, Gray & Reuter
-
The classic reference in the field.
- Introduction to Database Systems, Date
-
A classic.
- The Art of Computer Programming, Knuth
-
All volumes. Often, you beat your brains out on a problem and then somebody says, "The answer's in Knuth."
Specific to Your Situation
I am always surprised to meet people who don't even study their own local tools.
- Your Tools: manuals & documentation
- Your Organization's Procedures: internal memos
- Your Product: requirements, specifications, plans
- Your Product's Technology: papers, technical reports
24 May 1997, Updated 12 Jan 1998, 08 Jul 2004