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:
Once again from a customer’s perspective, these are my justifications:
Keeping the software hierarchy of needs in mind might help you rationalise what the next priority should be for your software system.