Last week my company held its operations summit to review how we deliver solutions to our customers. We presented best practices and discuss tools, models, and approaches to understanding, designing and implementing software solutions.
This discussion made me think back on how the ideals of methodology differ from the reality on the ground. Everyone can agree on the value of having complete, ironclad requirements before development begins, but we all know that this is unrealistic. Among the many ways that requirements fall short is that they are incomplete and inaccurate. Some requirements ultimately are thrown overboard because the cost of implementing them is higher than the business value, and others because they lead to a business process that is too complicated or otherwise unworkable.
More recent methodologies such as Agile and SCRUM are more explicit about dealing with uncertainty. Perhaps we need to be more direct in dealing with inadequate requirements, setting a lower threshold of completeness and accuracy before development begins.
Even if we could make the requirements one hundred percent complete and one hundred percent accurate, change always rears its ugly head. Seldom does the consensus of management remain solid forever, and business rules may change from exogenous factors such as changes in laws and regulations.
On the other hand, perhaps we need to cling to the abstract ideals, even knowing that in our human world we will fall short.