Maslow's Hierarchy of Needs (with the Wiki-incompatible apostrophe)
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:
-- 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