Specialized Requirements Analyst

by Krishna on August 25, 2007

Kalpesh left a very valid comment on my last post on overcoming the inertia against writing requirements, where he said that this task can be better performed by someone “who understands domain of the customers & enough of technology”.

I fully agree with this comment as, from experience, I have seen dramatically improved results when a person is fully dedicated to the task of writing requirements and who is both knowledgeable in the technology used as well as the business domain. The reasons behind this are:

  1. A person fully allocated to collecting and managing requirements has a much better feel for the integrity and completeness of the requirements. Since they are always thinking about the requirements, they can easily find and plug gaps in the analysis. When the person does this along with other tasks, they only do analysis when they are writing or gathering requirements, not at other times.
  2. A requirements analyst fully focused on requirements can continue to develop skills and techniques that help in improving the quality of the documentation. There are many areas of improvement possible: The methods of gathering requirements, the writing and presentation skills, the ease of translation into code, etc.
  3. A person knowledgeable in technology can help non-technical customers understand what is possible and what not. For example, I have seen many customers use their client/server environment experience to suggest certain web user interfaces. While new technologies like Ajax does allow you to create highly interactive interfaces, there are limits and costs to such user interface demands.
  4. A person knowledgeable in the business domain is much better placed to understand user needs. However, I have found that most people are capable enough to gain a working understanding of the domain in a few weeks and it is also impossible to know everything because of changing regulations and business environments. But in short-term or critical projects, it is too risky to assign an analyst who is new to the business domain.

Unfortunately, for many organizations, departments and teams, it is not possible (for various reasons like cost, resource availability, etc.) to allocate such a suitably qualified person for requirements alone. Even in many successful software companies (product and service), I have found that the analyst usually doubles up doing a lot of other work such as design and acceptance testing, and sometimes even coding.

One reason for this is that requirements is usually an activity that has a distinct peak of activity (user interviews, documentation, etc.) followed by relatively low effort in maintaining the requirements artifacts. Even a highly detailed requirement needs several times the effort to convert into design, coding and testing. In the meantime, the requirements analyst will be relatively idle. And although they may be called in for clarifications, this would not be a frequent activity if they have done their job right.

In any case, if a team cannot afford a full-time requirements analyst, the developers in the team must take up the task of requirements collection and analysis. And that was my point in my previous article — many developers do not like doing that leading to innumerable problems in project schedules and project quality.

So if you are a project manager in this situation who finds that requirements management gets put on the back burner when compared to coding, you need to understand what exactly is going on. Unless you spend time to train people, remove their fear, allocate dedicated time for analysis and show them meaningful examples, the problem is not going away.

{ 3 comments }

Bruce August 26, 2007 at 8:43 pm

Hi Krishna,

Of course this assumes that all the requirements are elaborated up-front before the commencement of development. In the case of agile develop there is definitely a full-time job to manage the set of requirements, back-logs and elaboration on demand.

Kalpesh August 27, 2007 at 5:49 am

Krishna,

Thanks for your your appreciation.

I think, all of us can do good as long as we are taught that we are here to build software for businesses & not for technology.

What if our universities involve students on a project (live), which involves all the dynamics of a day to day software development?

i.e. Customer Interaction, Requirement Gathering, Analysis, Test-Plan, UI design, Teamwork.

All that one can happen in a regular software project - if it can be taught, it will be well worth it.

People are bombarded so much with languges & tools - that they dont get to look at important aspect of their work.

i.e. Working software for end client.

Krish August 29, 2007 at 6:51 pm

@bruce

You are right. Things are a bit different in Agile development. I do have a different opinion on some of the Agile practices - I will be posting on that soon.

@kalpesh

You are right. Many of the universities and colleges do not really teach how to do software development in a practical manner. Either they teach theory or some languages/tools.

Comments on this entry are closed.

Previous post:

Next post: