Abraham Maslow is a famous figure in the field of psychology. Interestingly he only studied the minds he considered the healthiest of the population. Perhaps this perspective is how he came up with Maslow’s hierarchy of needs. The concept describes the various levels of needs and wants that a human should fulfill before they will desire to fulfill a goal in the next level. It is my proposal that for most non-trivial real world software systems, a similar hierarchy of needs is required to help give you a sense of how to best direct your development efforts.
I learned about Maslow’s hierarchy of needs many years ago at university in an introductory Psychology course. I had long since forgotten about the idea until recently, when after working as a developer at an enterprise software company for many years, I drew the analogy between Professor Maslow’s hierarchy and my own thoughts about prioritisation in the development process.
Initially I had simply been thinking about balancing the interests of customers and the company. What this means in practice varies,** **but generally speaking the customer’s interests should come first, since they are the person paying the money. If the customer’s interests are not paramount, you could be working for a failing company (or a government organisation :)). It’s also clear that the company has to consider how to best allocate its resources, which inevitably involves some kind of prioritisation. From here I realised that Maslow’s hierarchy provided a useful structure for showing the relative importance of the customer’s various needs.
Looking at it from a customer’s perspective, I have defined these general needs that map closely to Maslow’s hierarchy:
- Innovation/Improvement (Self-actualisation)
- Performance (Esteem)
- Cost/Usability (Belonging)
- Security (Safety)
- Existence/Deployment (Physiological).
Once again from a customer’s perspective, these are my justifications:
- Software does not exist unless it can be deployed and used.
- Once it can be used, they want to rest assured that they can use the software without any risk to their security. Some examples of things that need protecting could be health, property, employment, safety, etc. Customers invest a lot of trust in companies and software at this level, and breaking this trust is probably a deal breaker.
- After customers can securely use your software they want to be able to easily use your software at a competitive price.
- Once software is easy to use the next expectation is that the software meets performance expectations.
- After software is performing well the next expectation is that the software is not stagnant and is improving and innovating over time.
Keeping the software hierarchy of needs in mind might help you rationalise what the next priority should be for your software system.