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 10

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 Construction Practices
Buy the book - square diamond Software Implementation, Michael Marcotty

User Interface Design
Buy the book A black square The Design of Everyday Things, Donald A. Norman
Buy the book A black square Designing the User Interface: Strategies for Effective Human-Computer Interaction, Ben Shneiderman
Buy the book A black square Usability Engineering, Jakob Nielsen
- square diamond The Elements of Friendly Software Design, Paul Heckel
Buy the book - square diamond About Face: The Essentials of User Interface Design, Alan Cooper
- square diamond The Art of Human-Computer Interface Design, Brenda Laurel, ed

Database Design
A black square Specific Papers, TBD.
A black square Specific Papers, TBD.
A black square Specific Papers, TBD.
Buy the book - square diamond Fundamentals of Database Systems, Ramez Elmasri and Shamkant B. Navathe

Software Functional Design
Buy the book I black square Object Oriented Analysis and Design, Grady Booch
Buy the book I black square Design Patterns, Erich Gamma, et al.
Buy the book I black square Structured Design, Edward Yourdon and Larry Constantine (or see Meilir Page-Jones's book instead)
Buy the book A black square Practical Guide to Structured Systems Design, Meilir Page-Jones, (or see Yourdon and Constantine's book instead)
A black square Software Creativity, Robert L. Glass
A black square "A Rational Design Process: How and Why to Fake It," David Parnas and Paul Clements
A black square"On the Criteria to Be Used in Decomposing Systems into Modules," David L. Parnas
A black square "Designing Software for Ease of Extension and Contraction," David L. Parnas
A black square "The Modular Structure of Complex Systems," David Lorge Parnas, Paul C. Clements, and David M. Weiss
Buy the book - square hollow Pattern Oriented Software Architecture : A System of Patterns, Frank Buschmann, et al.
Buy the Book - square hollow Programming on Purpose: Essays on Software Design, P. J. Plauger
Buy the book - square diamond Software Architecture : Perspectives on an Emerging Discipline
by Mary Shaw and David Garlan
- square diamond "Structured Design," W. Stevens, G. Myers, and L. Constantine
Buy the book - square diamond Object-Oriented Software Construction, Bertrand Meyer

Design in General
Buy the book A black square Conceptual Blockbusting, James L. Adams
Buy the book - square diamond How to Solve It, G. Polya

Software Industry Overview
A black square "Software’s Chronic Crisis," W. Wayt Gibbs
A black square "Programmer Performance and the Effects of the Workplace," Tom DeMarco and Tim Lister
Buy the book - square diamond Software Runaways, Robert L. Glass
Buy the book - square diamond Peopleware, Tom DeMarco and Timothy Lister
Buy the book - square diamond Constantine on Peopleware, Larry Constantine

Software Development Overview
Buy the book A black square Software Project Survival Guide, Steve McConnell
Buy the book A black square Mythical Man-Month, Fred Brooks
A black square "No Silver Bullets--Essence and Accidents of Software Engineering," Fred Brooks
A black square "Understanding and Controlling Software Costs," Barry Boehm and Phillip Papaccio
Buy the book - square diamond Wicked Problems, Righteous Solutions, Peter DeGrace and Leslie Hulet Stahl
Buy the book - square diamond The Deadline, Tom DeMarco
Buy the book - square diamond Debugging the Development Process, Steve Maguire
Buy the book - square diamond Software Engineering, Ian Sommerville
Buy the book - square diamond Software Engineering: A Practitioner's Approach, Roger Pressman
Buy the book - square diamond Dynamics of Software Development, Jim McCarthy.

Periodicals
Subscribe - black square Software Development
Subscribe - square hollow IEEE Software
Subscribe - square diamond IEEE Computer
Subscribe - square diamond Communciations of the ACM

Construction Practices
Software Implementation, Michael Marcotty. Marcotty discusses the general issues involved in constructing software by focusing on abstraction, complexity, readability, and correctness. The first part of the book discusses the history of programming, programming subculture, programming teams, and how typical programmers spend their time. The book is written with wit and style, and the first 100 pages on the "business of programming" are especially well done.

User Interface Design
Designing the User Interface: Strategies for Effective Human-Computer Interaction, Ben Shneiderman. See comments on next book, below.

The Elements of Friendly Software Design, Paul Heckel.  These two books cover similar territory in different ways. Shneiderman proposes specific, detailed engineering guidelines for use of color, response time, command structures, menu layouts, and many other aspects of user-interface design. He suggests specific procedures for improving designs including prototyping and iterative testing. Most of his recommendations have been verified by scientific tests. His approach is careful, methodical, and scientific.
    Heckel's approach is more free wheeling. Rather than providing detailed procedures, he provides a set of 30 inspirational design heuristics. He argues that interface design is essentially a communication exercise like writing, speaking, or filmmaking and draws an elaborate, thought-provoking analogy between designing a user interface and making a movie. In contrast to Shneiderman's summary of current laboratory results, Heckel provides an adventurous look into the possibilities of the art.
    Both books are valuable in their own terms. Heckel's is more fun. Shneiderman's is on more solid ground. They make a good, complementary pair.

Usability Engineering, Jakob Nielsen. [From the Author]: The basic philosophy of the book is YOU CAN DO IT! It is about cheap and fast methods that anybody can use in any interface design project (whether Web design, software design, or gadget design) to drastically improve usability. It is quite common to be able to cut users' learning time in half (thus cutting your training budget or support center costs by a similar amount).

The Design of Everyday Things, Donald A. Norman. Norman's book isn't explicitly about software design. It's about user-interface design of everyday things: doors, pitchers, radios, stoves, and so on. Regardless of that fact, it's hard to find any part of the book that doesn't apply directly to designing software user interfaces. Because Norman isn't obligated to focus on software examples, he ranges over a broader field than most software-user-interface books do, and that range of topics is inspirational. I'd read it again just for the description of opening doors the wrong way. If you've ever felt foolish for pulling a door that says "push," read this book; it's not your fault!

About Face: The Essentials of User Interface Design, Alan Cooper. [Publisher's Description]: The "father" of Visual Basic, Alan Cooper, presents a methodology of user interface design that he has distilled from many years of creating award-winning personal computer software. This book does not focus on code; instead it discusses highly technical topics in clear English. Readers may not agree with everything Cooper has to say about software design, but they will find his ideas pertinent, thought-provoking, and perceptive.

The Art of Human-Computer Interface Design, Brenda Laurel, ed. This is a collection of articles written by people prominent in interface design. Like any collection of articles, some people's ideas are better than others, but this collection contains some gems. My favorite is the article by Alan Kay, the researcher who pioneered Smalltalk, icons, graphical windows, other interface technologies that comprise the heart of modern computing. His article vibrates with the force of his creative energy and glimpses into what he's planning for computing's future.

Database Design
Fundamentals of Database Systems, Ramez Elmasri and Shamkant B. Navathe. You can find a lot of good books on database design and construction, and this is one of them. Even if you don't use a "database," you'll still benefit from knowing database concepts. For example, every programmer should be familiar with the key concept of "normal form." If you use files in your programs, you're using a database, and you can benefit from many database concepts regardless of how small or informal your program is.

Software Design
Object Oriented Analysis and Design, Grady Booch. Booch’s book discusses the theoretical and practical foundations of object-oriented design for about 300 pages then has 175 more pages of object-oriented application development in C++. No one has been a more active advocate of object-oriented design than Grady Booch, and this is the definitive volume on the topic.

Design Patterns, Erich Gamma, et al. [From the Preface]: "It's a book of design patterns that describe simple and elegant solutions to specific problems in object-oriented software design....Once you understand the design patterns and have had an "Aha!" (and not just a "Huh?" experience with them, you won't ever think about object-oriented design in the same way. You'll have insights that can make your own designs more flexible, modular, reusable, and understandable--which is why you're interested in object-oriented technology in the first place, right?"

Structured Design: Fundamentals of a Discipline of Computer Program and Systems Design, Ed Yourdon and Larry Constantine. This is the classic text on structured design by one of the co-authors (Constantine) of the original paper on structured design. The book is written with obvious care. It contains full discussions of coupling, cohesion, graphical notations, and other relevant concepts. Some people have characterized the book as "technically difficult," but it’s hard to beat learning about a practice from its original inventor.

Practical Guide to Structured Systems Design, Meilir Page-Jones. This is a popular textbook presentation of the same basic structured-design content as Yourdon and Constantine’s book and is written with energy and humor. Some people have found Page-Jones’s book to be more accessible than Yourdon and Constantine’s.

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.

"A Rational Design Process: How and Why to Fake It," David Parnas and Paul Clements.  This is a classic article that describes the gap between how programs are really designed and how you sometimes wish they were designed. The main point is that no one ever really has a rational, orderly design process, but that aiming for it makes for better designs in the end.

Pattern Oriented Software Architecture: A System of Patterns, Frank Buschmann, et al. This book takes design patterns to the architectural level, discussing architectural patterns of layers, blackboard, pipes, brokers, model-view-controller, and others.

Software Architecture: Perspectives on an Emerging Discipline by Mary Shaw and David Garlan. This was the first book published on software architecture. It covers some of the same concepts as Buschmann's Pattern Oriented Software Architecture, but comes across as much more academic.

"On the Criteria to Be Used in Decomposing Systems into Modules," David L. Parnas (also in Yourdon 1979, Freeman and Wasserman 1983). The classic paper that introduced the concept of "information hiding."

"Designing Software for Ease of Extension and Contraction," David L. Parnas (also in Freeman and Wasserman 1983).

"The Modular Structure of Complex Systems," David Lorge Parnas, Paul C. Clements, and David M. Weiss.

"Structured Design," W. Stevens, G. Myers, and L. Constantine. This is the original paper on structured design. The books make better presentations of the concepts, but once you've read the books the paper is interesting mainly for its historical value.

Software Creativity, Robert L. Glass. This 1995 book should have been the breakthrough book that explored a little discussed and less understood aspect of software development: the role of creativity. Glass discusses creativity versus discipline, theory versus practice, heuristics versus methodology, process versus product, and many of the other dichotomies that define the software field. This book should have been the breakthrough book for creativity that Peopleware was for human factors. This book is out of print.

Object-Oriented Software Construction, Bertrand Meyer. Meyer is one of the hardest of the hard-core object-oriented programming advocates, and this book contains a forceful defense of pure object-oriented programming--including inheritance, multiple inheritance, and polymorphism. It contains a lively criticism of traditional, structured techniques, as well as hybrid approaches, such as the one suggested in Code Complete.

Design in General
Conceptual Blockbusting, James L. Adams. This book will teach you more about software design than many books that focus specifically on software design. Software design books seem to focus exclusively on the activity of partitioning a system up into pieces, giving guidelines for how to evaluate a particular partitioning. They generally ignore aspects of design such as algorithm development and the process of coming up with the partitioning in the first place. These are the areas in which Conceptual Blockbusting excels. Adams is an engineering professor at Stanford and teaches an engineering design course, so this book's content is on target for software developers.

How to Solve It, G. Polya. This book is essentially 1945's version of David Parnas and Paul Clement's paper, "A Rational Design Process: How and Why to Fake It" (IEEE Transactions on Software Engineering, February 1986, pp. 251-257). Polya's book is about mathematical theorems, but if you replace "mathematical theorem" with "software design," the book is an outstanding software design book. Polya points out that the process used to create a design is different than the process used to explain it. The explanation should be neat and orderly, progressing in an orderly way from premises to conclusions. The creation of the design is hardly so tidy. The designer creates designs that don't work, explores dead ends, and throws away more work than he keeps. This book sheds more light on the activity of software design (as opposed to the result) than any software design book I've seen. It makes it clear that problem solving isn't a deterministic activity, and that adherence to any single methodology is like walking with your feet in chains.

Software Industry Overview
"Software’s Chronic Crisis," W. Wayt Gibbs. This article describes some recent software projects that have been plagued by changing requirements including the Denver airport’s baggage-handling software and the FAA’s air-traffic-control workstation software.

Software Runaways, Robert L. Glass. Glass highlights research findings about runaway software projects and then spends most of the book exploring case studies of high profile runaways. He includes the Denver airport baggage handling system, the FAA's AAS system, Westpac Bank's $150M CASE disaster, and the IRS's $50 billion debacle. He wraps up the book by drawing lessons from the runaways.

"Programmer Performance and the Effects of the Workplace," Tom DeMarco and Tim Lister. This precursor to Peopleware contains a meatier, more condensed explication of the office environment analysis presented in Peopleware.

Peopleware, Tom DeMarco and Timothy Lister. The genesis of Peopleware was an obscure 1985 paper called "Programmer Performance and the Effects of the Workplace" (Proceedings of the 8th International Conference on Software Engineering, August 1985, pp. 268-272). The 1985 paper contains a higher information-to-explanation ratio than the book, and I think in some ways the paper is more interesting. The book is also mis-subtitled. The subtitle says it's about "productive projects and teams," but the discussion of teams is only 35 pages long, and the book is probably better known for its coverage of the effects of work environment on productivity. Do these points detract from the book? Not at all. The main message of this book is that software is something that is constructed by people, and if you want good software, you'd better look out for the welfare of the people creating it. Peopleware said that first and still says it best.

Constantine on Peopleware, Larry Constantine. This book contains a collection of essays loosely focused on the role that people play in software development.

Software Development Overview
Software Project Survival Guide, Steve McConnell. SPSG is responsive to the problem that many people in the software industry are thrust into positions in which they are given responsibility for the outcome of a software project but are not given any formal or informal training in how to make that happen. SPSG provides an introduction to the steps that successful software projects follow that can be read by both technical and nontechnical readers.

Mythical Man-Month, Fred Brooks. Brooks was the manager of IBM's OS/360 development, a mammoth project that took 5000 work years. He discusses management issues pertaining to small and large teams and presents a particularly engaging account of chief-programmer teams in this charming collection of essays.

The Deadline, Tom DeMarco. This amusing fictional account of several software projects run concurrently explores the causes of software project success and failure.

"No Silver Bullets—Essence and Accidents of Software Engineering," Brooks, Frederick P., Jr., Computer, April 1987, pp. 10-19. In this famous article, Brooks argues that the essential conceptual difficulty of software development precludes any more order-of-magnitude gains in productivity, reliability, or simplicity.

"Understanding and Controlling Software Costs," Barry Boehm and Phillip Papaccio. This paper introduces many of the basic economic relationships of software engineering, e.g., the way that defect costs increase over the course of a project, etc.

Debugging the Development Process, Steve Maguire. This book presents a homespun approach to software process improvement with an emphasis on minimum bureacracy.

Wicked Problems, Righteous Solutions, Peter DeGrace and Leslie Hulet Stahl. I liked this book from the start, and the longer I've considered its ideas the more important the book seems. The book describes life cycle models such as waterfall, evolutionary prototyping, scrum development, and so on. Projects that choose the wrong lifecycle model for their specific needs will face an uphill battle and risk not finishing at all. For gaining a big-picture understanding of how software projects, work, this book is hard to beat.
        The subtitle of this book is "A Catalog of Modern Software Engineering Paradigms," and it is by far the most complete description of software lifecycle models available. The book was produced though an unusual collaboration in which Peter DeGrace provided the useful technical content and Leslie Hulet Stahl provided the unusually readable and entertaining writing style.

Software Engineering, Ian Sommerville. The fourth edition of this book is a balanced treatment of requirements, design, quality validation, and management. It contains helpful diagrams and each subject has an annotated further-reading section. At about 650 pages, it's not necessarily a book you'll read cover to cover, but if you want a thumbnail description of a topic, it's probably in here. It has a good index.

Software Engineering: A Practitioner's Approach, Roger Pressman. This is an excellent alternative to Sommerville’s book and is similar in scope and size. Don’t be mislead by the "Practitioner's Approach" in the title; excellent as it is, this book is better suited to provide an overview of important issues than to serve as a practitioner’s handbook.

Dynamics of Software Development, Jim McCarthy. McCarthy describes the insider’s view of the Microsoft milestone process. He describes an essentially grim vision of software development in which Microsoft projects spend most of their time in what we would call recovery mode. 

Periodicals
IEEE Computer. IEEE Computer Society Publications Office, 10662 Los Vaqueros Cir., PO Box 3014, Los Alamitos, CA 90720-1264; 714-821-8380, www.computer.org/computer/. This is the flagship publication of the IEEE Computer society. It publishes articles monthly on a wide spectrum of computer topics and has scrupulous review standards to ensure the quality of the articles it publishes. Because of its breadth, you'll probably find fewer articles that interest you than you will in IEEE Software.

Communications of the ACM, ACM, PO Box 12114, Church Street Station, New York, NY 10257. www.acm.org.  This magazine is one of the oldest and most respected computer publications. It has the broad charter of publishing about the length and breadth of computerology, a subject that's much vaster than it was even a few years ago. Like IEEE Computer, because of its breadth, you'll probably find that many of the articles are outside your area of interest.
        The magazine tends to have an academic flavor, which has both a bad side and a good side. The bad side is that some of the authors write in an intentionally confusing style that's designed more to impress readers with their vocabulary and esoteric grammer rules than to explain their points clearly. The good side is that it contains leading-edge information that won't filter into the low-brow magazines for years.

 

login >