The imaginative software

The very nature of software is imaginative.

The customer has an idea of what they want as feature in their solutions, this picture gets into the mind of the analyst who understands the requirements, then comes the Designer who has another version of what is needed, then the programmer, the tester, the doc writer comes. Each of them has its own imagination of what is needed. These gaps in understanding have been a subject of discussion for long and have even resulted in some very famous cartoons.


Understanding what is going in the client’s mind for the upcoming project is quite tricky unless you hire psychiatrists who can do some therapy sessions with them. And may be you’ll need to extend our contract with the same consultant to help Programmers and Testers stayed on that vision.

On the other side, this might be good that each one perceives things in their own way. This adds more perspectives to the project.

So how we can bridge this gap? One way is to go for extended documentation as suggested by organizations like IEEE. The problem with that approach is that they assume that requirements once finalized will stay the same and have a thought like:

“Walking on water and developing software from a specification are easy if
both are frozen.”

— Edward V Berard

But those days are gone and we live in a very changing world where even customer changes mind in a few months. Here comes the Agile to our rescue by suggesting to solve it through more communication between these key figures and thus calling in the ‘Three Amigos’ mantra. The more you spend time with each other, the more you start understanding each other. And note that this understanding improves as you discuss more. So if we can have these discussions going among the Client (or business domain people), the Programmer and the Tester such that they become friends, we have a much better chance of coming up with what is actually needed.

Have you observed any gaps in the projects you have worked? Do you have other ideas to improve this gap?


7 responses to “The imaginative software”

  1. Raza Ul Haq Akif says :

    In my opinion, the only way to minimize this gap is by working as a single team. Each party, either analyst, programmer or tester should consider themselves as a part of a single team who is going to develop a software together. The only factor which matters here is the realization. Once you have a group of knowledgeable people in your team, you are in a much better position to minimize this gap. In short, more they are socially tied with each other, better will be the productivity and hence mature will be the software.

    After that, for a team, it is very important to consider the software as their baby. The way parents care for their babies and always think for their betterment is the right behavior for team to improve the quality of software. When team members will have the same affectionate feelings for their software, the better and mature software will be formed.

    There are other factors as well but in my point of view the above mentioned factors are more important to minimize the gap between stakeholders and team.


    • majd says :

      Thanks Akif and these are excellent thoughts. I liked your idea of treating software as baby, as would every creative person would consider it’s creation.
      So if we want to bring in the notion of a socially tight knitted team, we’d like them to talk more and not write/read documents written by each other. 🙂


  2. Ather Imran says :

    The key is leadership and their key role for vision and big-picture management. Requirements will be changing and everyone in the team is focusing on them from different functional perspectives. Add to it the variance in experience and skills of people on the team and its a complex problem to keep everyone focused on the same end-game. Over the years, I have come to this conclusion that its not possible to have everyone in the team (or organization) at exactly the same wavelength and intellectual understanding. Its always a hierarchy – organizational as well as intellectual. Leader’s role is to look at the team but manage the individuals and keep everyone ‘understand’ the vision relative to their intellect, experience and capacity.


    • majd says :

      Thanks Ather and you brought a very good point about the leader’s role in facilitating every one understand their role in the project. So in the three amigos diagram of Client, Programmers and Tester, we may need a fourth player the Project Owner (or leader) to help happen these overlaps and fine tune it. Thanks again.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.