Killing the Software Profession
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.
3 Comments To ' Killing the Software Profession '

ward said...

This argument and analogies are far fetching. Concept of practices and specialization is not new and not specific to Indian software vendors. This is like saying "How can you write software forv computer, if u have not built one yourself".

Niraj said...

Munish,
You have a point but it is not completely correct.

You would accept the fact that during SDLC there are many phases and there is a need for specialized skill for these phases. E.g. BA or designer, architect, developer, tester, etc. For the IT services industry, it is important to focus their energy/resources on one or more of these specialized area. Without the focused deployment of resources the organization may not be able operate in an efficient way. The organization categorizes and also profiles the employees to understand resources availability and org pyramid. The vertical, horizontal structure is helping the organization to balance the demand v/s supply. For large human intensive organizations like IT services, it is necessary to have some structure in place and this is one of structuring things.

I agree with your other point of having holistic view. To address it, the resources should be cross skilled to acquire newer skills. In a project, there are few resources start from the beginning of the project and see it till the end of it. They see all the phases of the SDLC and have Cathedral view. They are the ones who keeps the project charter on the course and passes its vision to the new comes. They also climb up the career ladder to take up larger responsibilities.

MKG said...

Niraj,

I am not against the of virtue having specialized skills for different phases of SDLC. We need specialization. All i am saying the practice of taking freshers from colleges, and tagging them to one stream leads to these new Software Engineers getting a skewed view of the software lifecyle. The fresher should not be tagged to any stream for the first 4-5 years and S/He should be allowed to work on all phases of SDLC and perform various roles before S/he should start looking at specialization. I am not condemning the SDLC cycle but the IT industry way of putting freshers into these horizontals where they do not get adequate exposure to other skills.

Post a Comment