Maslows Hierarchy Of Needs

Maslow's Hierarchy of Needs (with the Wiki-incompatible apostrophe)

  1. Biological Food and water, shelter. The obvious.
  2. Security We want to feel safe.
  3. Social We want to be loved and have friends.
  4. Self-esteem
  5. Self-Actualization

Some folks would say that you don't pay attention to higher needs when lower ones remain unfulfilled. Others aren't so sure.

As the Russian intelligentsia used to ask, "What is better, Pushkin or a pair of shoes?" (Puskin was a poet, considered the father of Russian literature. Yet the peasants were struggling to keep themselves fed and clothed.)

I am curious as to whether a similar hierarchy might be applied to programming, whether extreme, agile, or otherwise?


Here's an attempt at a software development team's hierarchy of needs in relationship to their system:

  1. Buildable -- the software is compilable, linkable, and installable on a target machine
  2. Correct -- the software does what it is supposed to do; passes all tests
  3. Efficient -- the software does not unduly burden the machine, or require users to wait for results/responses
  4. Simple -- the operation of the system is easy to comprehend
  5. Maintainable -- relatively easy to change the software to meet new needs
  6. Cool -- the team enjoys working on the software

Some people would put coolness ahead of the others.

-- KrisJohnson

That latter deserves a page of its own - if only I had an appropriate name for it.

Yes, I like this "software hierarchy of needs". I know many people feel that "portable" code is important; I'm not sure where that would fit. Some people would add another level "runs without crashing" between "buildable" and "Correct". But I am reluctant to add complexity. -- DavidCary

I like this hierarchy. Portable might be a part of "Maintainable" and "Runs without crashing a part of "Correct"? -- AurelianoCalvo

I agree that portable should be part of "Maintainable". Portable's primary benefit is that you only have to maintain one version when you have different target machines. I think "Buildable" and "Correct" should be merged into a "Usable" category. The primary goal of most software is to do something useful. The user is no better off with buildable software that does the wrong think than with unbuildable software. In some cases the user might be better off with the unbuildable software. "Usable" wouldn't need to be free of crashing, but it should crash rarely enough to get something done with it.

I also have some reservations about having different levels for "Efficient", "Simple", and "Maintainable". They all seem to be different forms of efficiency to me. -- MartinShobe?


See also AbrahamMaslow


EditText of this page (last edited October 14, 2006) or FindPage with title or text search