Sunday, August 16, 2009

Software Hierarchy of Needs

In my advanced placement high school history class, one of the first things we covered was Maslow's Hierarchy of Needs. I no longer remember the reason, or how we used it over the course of the year, but the idea that there is a pyramid of needs where lower levels must be fulfilled before moving to a higher level of existence stuck with me. For instance, it is impossible to make law and order a basic part of you living unless the basic needs of food, drink and shelter have been satisfied first. Recently I've been thinking about Maslow's Hierarchy of Needs Software Organizations - the building blocks that a software organization must fulfill before considering the next tier of professionalism and success.

Here are the five levels of needs that I think a software organization needs to be successful.

Level One - Basic Needs

  • Market Need
  • Requirements
  • Idea
  • Computer
  • Editor
  • Tools
  • Manual Testing

Level Two - Starting a Team

  • Build Process
  • Unit Tests
  • Souce Control
  • IDE
  • High Level Language
  • Team work

Level Three - Automation and Management

  • Bug Tracking
  • Project Management
  • Dedicated QA Team
  • Automated Build
  • Automated Testing
  • Design
  • Collaborative Environment
  • Product Management

Level Four - Professional Testing

  • Historical Test Results
  • Continuous Integration and Testing
  • Usability Testing
  • Performance Testing
  • Integration Testing

Level Five - Icing on the cake

  • Documentation

In my opinion, these are the building blocks of success for a software organizations.

Level One can be a guy with an idea working at nights to hack something together, but it isn't built by a software professional. At Level Two we start to see some of the key pieces of a team coming together: source control for sharing code, an automated build process, basic automated desk checking to make sure you haven't broken something and so forth. Level Three brings more professional practices including a QA team to automate builds and tests and product and project management to make sure you are building the right product on time. Level Four ensures quality and adds to the testing foundations from level three and makes sure if something breaks, it is known right away and trackable. Level Five is the nice to haves.



  1. I'm still refining what items should be on the list and what should be at each level. I'd like to hear your opinion - what has it taken for your software organization to mature and be successful?

    Also, am I being short-sited? Is there a Level Six? A Level Seven?

  2. Have you compared this to CMMI? [1] Is this not akin to the different levels that CMMI defines? Not that CMMI does this "correctly", but the comparison might be interesting.