The Pyramid of Software Principles – Part One

by Royd Brayshay on January 20, 2010

Picture of principles arranged as a pyramid.I’ve read a lot of software development books over the years, many of them dealing specifically with software design. As part of writing something else, I recently had cause to compile a list of some of the design principles published within them. In doing so I realised just how many principles and guidelines are out there competing for the attention of developers.

Here’s my list:

General Guidance

  1. GRASP
  2. SOLID
  3. Law of Demeter
  4. Pragmatic Programmers Tips
  5. Design Patterns
  6. Anti-patterns
  7. Unix Programming Notes
  8. Algorithms in General
  9. Coding Standards in General
  10. Domain-driven design
  11. Architectural patterns
  12. Principles of User Interface Design
  13. Bruce Tognazzini’s First Principles of Interaction Design
  14. The Agile Manifesto
  15. Lean Software Principles
  16. Peter Principle
  17. Principle of Least Astonishment
  18. Richard Gabriel’s Worse is Better

Vendor Specific Guidance

  1. Windows User Experience Design Principles
  2. Design Principles for Windows 7
  3. IBM Design principles
  4. Google’s Ten Design Principles

This is NOT a definitive list  I very quickly gave up any aspiration to that effect. By all means post any further suggestions.

The observation I made however, when compiling the list, was how the majority of the principles and guidelines are either mostly or completely focused on engineering. They seem to vaguely form a topless pyramid with the base providing the most directly prescriptive help and those above more general guidelines of a more theoretical nature.

The topless nature of the pyramid indicating that the software industry seems devoid of apparitional guidelines of highest order. Principles more concerned with the product nature of software applications and how we connect to them. In part two of this post I’ll make my suggestion.

Leave a Comment

Previous post:

Next post: