Resources & Tools - ImageConstrux - software development best practices
SeminarsConsultingResources & ToolsAbout Us
Resources & Tools .:. Professional Development .:. Organizational .:. Professional Development Ladder

Construx Professional Ladder (Version 1.0)

Ladder Home   Ladder Overview    Reading List    Pyramid


Level 9

black square  Required reading    square hollow  Recommended Reading    square diamond  Appropriate Optional Reading

The top list is a recommendation by category. Detailed book descriptions follow the summary table.


RL    Professional Ethics
Get the code A   black square  Software Engineering Code of Ethics and Professional Practice, ACM/IEEE-CS
 
Algorithms (one of the following)
Buy the book -   black square  Introduction to Algorithms, Thomas H. Cormen, et al
target=_blankBuy the book -   black square  Data Structures and Algorithms, Aho, Hopcraft, and Ullman
Buy the book -   black square  Algorithms in C++, Robert Sedgewick
Buy vol.1
Buy vol.2
Buy vol.3
-   square diamond  The Art of Computer Programming (vols. 1-3), Donald Knuth
 
Construction Practices
Buy the book A   black square  Code Complete, Steve McConnell
Buy the book A   black square  Programming Pearls, Jon Bentley
Buy the book -   square diamond  Practice of Programming, Brian Kernighan and Rob Pike
Buy the book -   square diamond  Writing Solid Code, Steve Maguire
Buy the Book -   square diamond  Programming on Purpose: Essays on Software Design, P. J. Plauger
-   square diamond  Programmers at Work, Susan Lammers
 
Software Development Overview
Buy the book. A   black square  201 Principles of Software Development, Alan M. Davis
A   black square  "The Humble Programmer," Edsger Dijkstra
A   black square  "Software Engineering Programmes are not Computer Science Programmes," David Parnas
 
Periodicals
Subscribe -   square hollow  Software Development
Subscribe -   square diamond  IEEE Software


Algorithms

Introduction to Algorithms, Thomas H. Cormen, et al. This comprehensive book contains an exhaustive discussion of specific algorithms, algorithm analysis, and algorithm design (though not as exhaustive as Knuth's seven volume series).

Data Structures and Algorithms, Aho, Hopcraft, and Ullman. This book is focused as a textbook introduction to data structures. It contains excellent discussions of arrays, records, pointers, lists, and trees. It also covers the fundamental algorithmic topics of searching and sorting.

Algorithms in C++, Robert Sedgewick. This  is a good choice if you want a book whose examples are in C++.

The Art of Computer Programming, Donald Knuth. These are the touch stone books in the field, though they certainly are not light reading. These are the first three volumes of a series that was originally intended to be seven volumes. They can be somewhat intimidating. Aside from the English description of the algorithms, they're described in mathematical notation or MIX, an assembly language for the imaginary MIX computer. Nevertheless, they contain exhaustive details on a huge number of topics, and if you have an intense interest in a particular algorithm, you won't find a better reference.

Construction Practices

Code Complete, Steve McConnell. McConnell's book is an exhaustive compendium of all the detailed software-construction level practices that make the difference between readable, maintainable, extendible programs and disorganized mish-mashes that become unworkable after initial construction.

Programming Pearls, Jon Bentley. This book provides terrific insight into the functioning of the expert programmer's mind. In each essay, Bentley walks the reader through the thought processes he uses to solve detailed programming problems. Along the way he introduces the concepts of Big-O notation, approaches to performance tuning, back-of-the-envelope calculations, and many other topics. Reading this book thoughtfully is like working through an apprenticeship with a master programmer.

Practice of Programming, Brian Kernighan and Rob Pike. This book is written by two C/Unix gurus and contains a good, solid discussion of key code-level and design level issues. Chapter 4, on interface design, covers a topic that doesn't get much coverage in other books.

Writing Solid Code, Steve Maguire. This book describes key software-construction practices used at Microsoft. It explains how to minimize defects by using compiler warnings, protecting your code with assertion statements, fortifying subsystems with integrity checks, designing unambiguous function interfaces, checking code in a debugger, and avoiding risky programming practices.

Programming on Purpose: Essays on Software Design, P. J. Plauger. This is a refreshing collection of essays that were originally published in Computer Language magazine. Plauger is a master designer and takes up a variety of topics having as much to do with being a designer as with design in the abstract. What makes the essays refreshing is that Plauger ranges freely over the entire landscape of design topics rather than restricting himself to a discussion of any one design style. The result is uniquely insightful and thought provoking.

Programmers at Work, Susan Lammers. This book contains interesting interviews with many of the pioneers of personal computing, including Bill Gates, Gary Kildall, Dan Bricklin, and others.

Software Development Overview

201 Principles of Software Development, Alan M. Davis. 201 Principles provides an easy-to-read introduction to the critical issues in software development. Davis’s book prepares you to recognize key issues when other books discuss them and when they crop up on your own projects.

"The Humble Programmer," Dijkstra, Edsger. This classic paper helped begin the inquiry into how much computer programming depends on programmers' mental abilities. Dijkstra has persistently trumpeted the message that the essential task of programming is mastering the enormous complexity of computer science. He argues that programming is the only activity in which humans have to master nine orders of magnitude difference between the lowest level of detail and the highest. This paper would be interesting reading solely for its historical value, but many of its themes sound fresh 20 years later. It also gives a good sense of what it was like to be a programmer in the early days of computer science.

"Software Engineering Programmes are not Computer Science Programmes," David Parnas. This exceptional article describes the contents of the Software Engineering program at McMaster University. The premise of the article is that it is easiest to understand a software engineering curriculum by comparing it to a computer science curriculum.

Periodicals

Software Development. This magazine focuses on programming issues, less on tips for specific environments than the general issues you face as a professional programmer. The quality of the articles is quite good. It also includes product reviews.

IEEE Software. This magazine focuses on software topics and is published bimonthly. It's a good source of information on software-development methods and other leading-edge software topics. It publishes many articles by researchers and makes an earnest attempt to print research on practical topics which are of use to professional programmers. It isn't always as practical as I (SteveMcC) would like it to be, but, in my opinion, it's still the most valuable magazine a programmer can subscribe to. [This review was written in 1992.]

login >