Thursday, December 13, 2007

About Gathering & Understanding Requirements, and AGILE Development Model

All Software Engineering text books talk about how important it is for a Software Team to understand the requirements that their software will fulfill. So a person who is gathering requirements from the stakeholders needs to really understand what is desired. Requirements gathering is THE most important stage in the SDLC. Yeah, even I was aware that!

But again textual knowledge and practical knowledge are 2 different cups of tea(or coffee if you're an American reader :P ) I never really understood its importance until I myself was developing software. (okay I was customizing something already built, but then again I was developing features to meet the requirements from a certain POV..) My development was basically to do what I was told to do. Never really thought about the requirements!! But when whatever I was told to do wasn't impressing the stakeholders, I was puzzled. My senior used to tell me the requirement and then tell me what should I do to achieve it. But since this wasn't resulting in something which was desired, I was intrigued. The problem wasn't that I was being communicated incorrect information. Rather I would say it was incomplete information. From the point of view of the functionality required I was told only a part. But later as i discovered, what I was being asked to develop was something that would integrate 2 business process to make one complete process. Also whatever solutions were being suggested by my senior would provide the User with functionality that the Business Process demanded but unfortunately, not what the User demanded. Whatever was being developed initially would never be accepted!

The problem here is that nowadays people define the process flow and the requirements based on that(at least whatever I have come across...I am sure things are not so bad in other companies..) But a very important factor is to understand who are the people who will use the software and what could be the features that they want. Unfortunately even in the age of Orkut, companies are failing to recognize the fact that a person who is exposed to easy to use web applications like Orkut will hardly like to use a web-app with a boring interface like Service Desk. They will use it not because they like it but because they have to. And this in my view is a factor that decreases productivity and which will drive Enterprise Applications in the coming years.

Another important aspect is if the Users are aware of whether the requirements they want is something which they will use. Most of the times that may not be the case and the person gathering requirements should question the user at each and every stage of the requirement gathering. A very good example is what I encountered today. The Web App I will be developing in the coming days has a forum feature where anybody can post questions. However only people who are considered SME's in that particular area will be allowed to answer the question!! First of all, why shouldn't I, not being an SME, be allowed to answer. I may know things that the SME might not or I may be able to provide an answer quickly as the SME(s) might be busy with some issues in the production systems. Secondly if the SME is my dear colleague who sits right next to me would I post on a forum or ask directly to him. The forum thing will work if your organization has a large volume of employees. But in this case, I have a hunch that we are building software which will never be used.

Anyway, whatever the case maybe, what I am learning is programming in C# and ASP.NET and hence I am satisfied! Also the AGILE model of development is followed so should be interesting!

More about agile development some other time!! Till then.... Happy Programming!!

No comments:

Post a Comment