Before I joined Seilevel and became a Requirements/Software Development Consultant, I worked as an Engineering Consultant for an oil field services company that specialized in heavy lift systems. Of course there are a lot of similar functions as expected, but I have noticed some differences. The main difference that I want to talk about now is in the solution design process. The engineering design of a heavy lift system is not without its complexities, but for the most part it is easy to agree on a best solution or a right answer. In my experience so far as a Requirements Consultant, I have noticed that there are many right answers and finding agreement on what is best can be challenging.
So how can two things that start so similarly be so different? The differences are fundamental, physical vs conceptual and numeric vs alpha. Let’s start with physical vs conceptual. In the engineering case, the requirements are physical. The engineered solution needs to be able to withstand a known load. The strengths of the available materials are known and your calculations determine which combination of equipment will withstand the load most efficiently. In the software development case, there are many more unknowns. You know how the software is or will be used and what you would like it to be able to do. The main constraints are how much time you have to develop your solution and how the software needs to interact with other software. This can be solutioned in many ways depending on how success is defined and that can mean something different for each stakeholder.
In the case where the stakeholders have different opinions, they use numbers to decide. Each stakeholder presents the business case for their definition of success and the best case wins. Once the priorities are agreed upon, the constraints kick in and the trade offs can begin.