Software development thoughts, ideas, practices and other technology tidbits

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.