Although I am not a firm believer of the hypothesis of Karma but it does seem we land up almost at the same place where we started from.
Indian software industry is pretty much a circle (I won't go up to the extent of calling it vicious) and it's hard to escape it.
Rajesh a software engineer for past 2 years got frustrated from his job, Since past 2 years he was working for the same company and working on the same client account, he was assigned to the maintenance of an application. In between for 3 months he was assigned to an internal application development project but that was it.
Rest of his software career has been stuck with the tasks of monitoring application performance, check that the application down time shouldn't exceed more than a couple of hours, fix any defects that come up and some production critical bugs needed to be fixed at any hour of the day. It so has been the case that he has been woken in the middle of the night and early morning (as early as 4 AM) to fix some production issues.
This wasn't the life he dreamt of when he passed out his software diploma (and with decent grades) course.
Like most other students of his class he has dreamt that he would be involved in writing Softwares that will have high business impact and if he gets a chance he will write his own browser or at least a compiler which would be widely accepted or may be a social media application which will be at least twice as good as Facebook.
But then after 2 months in which he couldn't get a job (primarily due to his grades and the aptitude questions he messed up), he was forced to take the first job that came his way.
At that time he was happy that he at least got a job as it was becoming difficult by the day for him to sustain in the big city and he was getting more inclined towards joining a call center job for the time being.
The first month in the new company went in the training and orientation and he was enjoying it. Once the training was complete he along with his 2 other batchmates were assigned to a project which was already developed and needed some bug fixes. There were already 3 people working on the same, he came to know they were part of the development team of that project.
He was happy that he would get to learn from this world class project and the experience of his seniors.
'Freshers' as they were called started with the ramp up of the application and slowly and gradually Rajesh started getting a hang of the application after spending many nights and early mornings in office.
In the mean time one of his batchmates left citing the reason that he has to go back to his hometown and find a job there as his parents don't want him staying away for long.
Things started happening fast, understanding the application, talking to the client, debugging the application, getting to know the architecture of the application and getting to know the usual defects that crop up every now and then and how best to address those defects or at least make the testers understand that it is not a defect.
After around 1 year suddenly one day he realized that the seniors have moved out of the project and he was left with his other batchmate all by himself to handle the project and continue fixing the issues.
By now he was aware of the term and heard it many times 'Application Maintenance' or 'Production Support', when he joined he was told that it was a project, now he was slowly grasping the concept that though everything is called a project but not everything that happens inside a software company is a project and specifically the one activity he was working on is called Maintenance and it has no end date.
He wasn't unhappy with the company he was working for nor was he too unhappy with the salary he was drawing and moreover it being his first company he got all too attached with it and made several friends, nevertheless he wasn't enjoying the work now. He knew all the things in that application that were to be known and the work became mundane, even if somebody told him about a defect in his sleep he can possibly suggest 2-3 options where in the code to look for to fix that defect.
He has discussed with his manager about moving to a live (development) project and his manager has assured him that he will look into it as soon as there is someone to replace him in the maintenance project but it never happened.
And after a lot of thought and discussing with his friends & mates he decided that it's time for him to move out of the organization and find a new company which will offer him better projects.
And so he switched jobs...
He mentioned clearly during his interviews and negotiation that he was looking for development projects and the reason for leaving his current company was not money but because he was assigned to a maintenance project for far too long and he didn't wanted to be stuck with it.
He was assure that he was being assigned to a large project which is already underway and that from day one he will be 'developing' something.
Rajesh was happy about it and thought his decision was worthwhile and although it took him some courage to leave his first company and all his friends behind but at least it will be good for his career.
As a ritual in every company he went through an orientation and ramp up of the project and technology the project was using and after a month he was assigned to work on the project.
As he understood that project was going on for past 6 months and he was assigned to work on a new module, the requirements for which has come in recently. He was part of a 10 member development team and he started the work with a new zeal.
As always the deadline were too strict and the team had to work a minimum of 12 hours a day and sometimes on weekends too. But he wasn't complaining as he was enjoying being a part of development team and had a sense of achievement ( I created that page, I worked on that module).
Hours flew, days flew, months flew and before he realized it, Rajesh has completed 4 months on the project and the project was coming to an end.
Slowly few members of the team were moved out as the work wasn't remaining much and now he was working with a 4 member team.
One Monday morning Rajesh's manager called him, he was skeptical as to what it was regarding as in the past 4 months of him being with the team, he has hardly interacted with the manager once or twice.
As he sat down in the manager's cabin, the manager began, Rajesh you have done a good job on this project till now, in the short time you have learnt a lot and the client has also appreciated your work. Rajesh was very happy listening to all that appreciation and wanted to shout at the top of his voice.
But the manager continued, as you know that the project is finished now, Rajesh nodded.
So from tomorrow we want you to work on the support team of this project along with Mandar and Reema.
All that could come out of Rajesh's mouth was "excuse me, but why?"
Without giving much attention to Rajesh's manner of asking or his expressions, the manager replied while picking up the stapler from the ground, simple Rajesh, because you have done a good job, you know the entire system, the client is happy with you and other members have been moved to other project. We need someone reliable for this project and who better than you? do you disagree?
Rajesh was flummoxed, he didn't understand what is he supposed to reply, he wasn't sure if the manager was appreciating his work or ridiculing him. Is he really assigning the maintenance work because his work was good or was this a punishment in a way.
While he was thinking all this, the manager stood up with a notebook in his hand and walked out blurting out "I have to run for his meeting, so you get started and let me know if there are any issues. Hopefully you will continue to work with the same commitment level".
Before Rajesh could open his mouth the manager has eloped in the elevator.
A colleague shouted "Rajesh, what happened?" while sharing a smoke. He asked again "What happened Rajesh? why are you smiling?"
Rajesh smiled again, nothing much I was just thinking if like life, does Software also come a full circle.