In recent times, most of the Tier 1 companies in the Indian IT industry have creating verticals (based on domain) and horizontals (based on technology). The whole idea of vertical is create enough domain expertise to service the clients and move up the value chain. The idea behind horizontals was to create specialized groups based on technology (J2EE, .Net, Security etc), function (e.g. Testing, Database etc) or even Software Provider (e.g. IBM, Oracle etc) and these professionals can be staffed to any domain project where the software, function or technology is being used.

Companies hire in big numbers from campus and then send this army of engineers to learn the techniques of warfare (namely – Java, .Net or even COBOL). Once the army is trained, the engineers are staffed to various technology horizontals.

Now, assume an engineer gets staffed to the Testing horizontal, S/He is put in as Test engineer in a project. They start working on test scripts or manual testing of the application. Question is, do these engineers mature enough to understand the importance of their role? Meaning, if I am testing web services, do I understand their usage, what role they play in overall application? What is the relationship between web services etc?

One view point can be, well they need to do one thing and they are supposed to be specialist in the same. Do they have the bigger picture in mind? Are they laying bricks or building a Cathedral?

My question, can a software professional be a complete professional if S/He has not gone the rigors or experiences of all the SDLC phases. Can you appreciate the value of testing, if you have not done coding yourself? Or can you appreciate the value of design, if you have not gone through the refactoring of an application? Will you not be a better developer if you have done testing yourself?

  • How can we build architects, if the person has not been exposed to the software lifecycle?
  • Can these individual architects perform, if they are pulled them out of the system and asked to architect an application with 4-5 freshers?
  • Can these Architect(s) guide the team for various roles (Build & Release, DBA, Requirement Gathering, Design, Testing, Deployment, Tuning, Environment Setup etc) if S/He himself has not gone through the rigors of the same?

I believe, for any software professional, it should be mandatory to work on all phases of SDLC and perform various roles before S/he should start looking at specialization. The person should perform the role every role twice. First time is to learn the requirements of role and second time to apply the learning’s.

The current trend of training people and putting them in a narrow role will leave the individual without adequate skills to perform the architect role. This cycle will soon skill the Software Profession.