When purchasing enterprise software, most project failures can be traced back to faulty requirements. As we often say, requirements are to software selection as foundations are to a building. Get them wrong and there always will be problems.\nWhy is it so difficult to gather requirements when selecting enterprise software, and what can be done to improve the situation? Why doesn\u2019t asking users provide all the requirements? This article attempts to answer those questions.\nWhy gathering requirements is so difficult\nAlthough software development includes requirements gathering, in this article we focus on gathering requirements for the purposes of selecting cloud or off-the-shelf enterprise software.\nWork underestimation\nSuppose an organization has decided to replace a major software system, for example, ERP. The first item on the plan often looks something like \u201cGather requirements.\u201d These two words can contain 50 percent to 75 percent of the work of selecting software. Identifying requirements for an ERP system can take anything from 6 to 24 months, and people simply underestimate the amount of work. They do not realize how important requirements are to selecting and implementing software, and why it is so important to front load requirements development.\nUnknown requirements\nIf requirements are missed during the analysis phase of the project, they get discovered during the implementation phase. Missed requirements have significant consequences:\n\nWhen they are discovered during implementation, they cause delays and cost increases.\nSoftware that is not best-fit may be selected, which means the expected ROI will not be realized.\nOccasionally, missed requirements will cause outright failure, leading to the project being abandoned.\n\nRelying on users\nSome consultants contend that users are the only legitimate source of requirements, but this is simply not true. Most users know only their pain points and not much else. When an organization relies mainly on users for requirements, they are guaranteed to miss many of them.\nAnalysis paralysis\nAnalysis paralysis usually happens when the decision makers don\u2019t have confidence in the process for identifying and selecting the software. They keep going back to the requirements, looking at the problem from different angles, and wondering what they have missed. They are afraid of making a mistake, which can damage their company and their careers. So rather than commit, they keep extending the requirements analysis.\nInadequate requirements\nSometimes in their rush to complete underestimated projects, organizations take shortcuts when developing requirements. To select best-fit software, requirements need to be specified in\u00a0enough\u00a0detail and to be\u00a0well written.\nGathering requirements\nThere are essentially four ways to gather requirements, each with its strengths and limitations. Of these, three apply when selecting software. Typically, requirements gathering tasks proceed in the order listed below.\n1 - Asking users\nBroadly speaking there are two types of enterprise software users, each with different perspectives on requirements. Both perspectives are necessary, and some employees are a blend of each.\n\nHands-on users. These are people who use the software on a daily basis, and it forms a critical part of their job. They will often have strong and detailed opinions, but a narrow focus. The best-fit software can make them much more efficient in their jobs.\nManagement users. These people tend to have a broader perspective of requirements, especially future requirements, and how the requirements relate to the organization.\n\nIf there are any employees who have used one or more of the potential software products while at previous jobs, they can provide valuable input, particularly if that experience is relatively recent.\nWhile asking users for their requirements is important, it is very slow and for most people limited to their pain points. A far\u00a0more efficient process is to present those users with a pre-developed list of requirements and ask the users to rate them for importance\u00a0to their jobs.\nThe primary benefit of asking users for their requirements is that it lets the organization know the software evaluation and selection project has started. If external consultants are used for gathering requirements, this is also an opportunity for them to build rapport with the users.\n2 - Business process analysis\nBusiness process analysis is a critical source of requirements when designing software, and usually it is followed by business process optimization. After all, this is the time to eliminate unnecessary steps in getting the work done. When developing software, only the most efficient business processes should be coded.\nHowever, when buying software, business process analysis and optimization are unnecessary. Gathering requirements is already painful enough without this added burden. The analysis and optimization should rather be done in the implementation phase of the project.\nAlso, the purchased software may have best practices that, if followed, would make the business process analysis and optimization unnecessary in many cases. Because best practices are often software specific, you won\u2019t know them until the software is selected. For the purposes of buying software, all you need to know is how well the potential software can perform those business processes (i.e. fully meets, mostly meets, partly meets, etc.) If you need to know how the processes should be performed, you have not specified your requirements in enough detail.\n3 - External sources\nExternal sources of requirements range from finding RFPs on the web, getting requirements from colleagues who have done similar projects or buying requirements libraries from vendors. Included in external sources are experienced consultants who already have lists of requirements that they have used for similar projects. In all cases, the quality of external requirements can vary tremendously, and it should be verified that they are well written. If you can buy requirements, do so, because that is the fastest and most economical way to develop a list of requirements.\n4 - Reverse engineering\nThis is the process of taking features from potential software products and reverse engineering them back into requirements. Essentially, you are running the software development process backward. It is a very robust process because it finds requirements the organization does not know they need. It also ensures the latest innovations on the market are considered. Typically, this information comes from software product user documentation and software demo videos.\nBusiness-critical enterprise software is usually used by multiple departments in an organization, and this means requirements can number in the thousands. Reverse engineering requirements is slow, for example, it can take between 150 to 250 hours of work per thousand requirements generated.\nConclusion\nOnce a comprehensive list of requirements has been gathered, they must be rated for importance to the organization. This essential step documents who wants each requirement, why they want it and how important it is to them. Asking users to rate requirements for importance and capturing their names on those requirements builds tremendous buy-in to the project. Rating them also allows requirements that are less than important to be eliminated, e.g. those that are \u201cnice to have,\u201d \u201cuseful\u201d or of \u201cno interest.\u201d\nAfter completing this step, you have a comprehensive requirements profile that describes the organization\u2019s particular needs in adequate detail. This is the organization\u2019s unique standard, and all potential software products are compared against it. This gap analysis is the key to identifying the best-fit software that will maximize ROI. When you think that the TCO of enterprise software often runs into the tens of millions or more, maximizing that ROI will make a significant difference to the bottom line.