Showing posts with label software developer. Show all posts
Showing posts with label software developer. Show all posts

Monday, November 21, 2011

(Vicious) Software Circle?

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.

Thursday, August 04, 2011

Are the software companies making young graduates unemployable?

The software industry in India has grown by leaps and bounds in last 10 years. IT/ITES sector has become the major job creator sector.
A few years back (even today in some parts) a Software job used to be a dream job of any fresh engineering graduate coming out of college.
Today software companies employs hundreds of thousands of young men and women.
But are the people working in these organizations really growing intellectually? Are they getting any sharper compared to when they passed out of college.
Are these engineers providing any solutions? Or are they simply getting turned to another coder, developer, tester or whatever they call it in the IT companies.
A fresh young graduate who has dreams of changing this world lands in a software company and 9 out of 10 times that's the end of his dreams.
He gets moulded and typecast into a code churning machine, where most of the time he is copying and pasting and hardly 2% of the times he is using his brains to find a 'real' solution.
The software innovations and solutions are being given by 1% of the whole software population in the world and out of that 1% too 99% sits in the US.
So at the end of the day there is no intellectual growth, there is no sharpening of skills (except for copy and paste) and there is no innovation at all.
In addition, companies come up with their own frameworks, their own tools which the employees have to get used to and after working for an year the employee becomes one of the robot in the army of robots.
If he switches job, that tool's knowledge is not worth anything in the market and with that knowledge and skill set he becomes unemployable in the market, he will need to again go back to the books to prepare for an interview and once again when he is recruited to another company a new tool, a new framework is there to learn. All the theoretical knowledge is for nothing.

The problem becomes acute when you consider that how many bright minds who could have innovated so much, could have been a solution provider, gets stuck in this system which renders them useless for any other task.
Just because of a good job in software company, thousands of people even change their stream to computers from civil, mechanical, electronics, etc.
If these people would have remained in their original streams they could have benefited that stream so much with their knowledge and expertise.
Also if there is proper platform provided in the software companies for these young employees to showcase their talent, encouraging and giving support for their innovation and work could be assigned as per their skill sets then we can have many good engineers and solution providers, who will change the entire game and will lead our country to the next millennium where we would be the solution providers and rest of the world would just copy and paste.

Wednesday, September 16, 2009

My Company's VP Code, should I be proud?




There was a time in India when software job was the coolest job (believe me now its not despite whatever your aunty describes your job as to your prospective father in law).

If you are in software you were considered the best brain around. People used to code in html and earn millions. And anybody and everybody was thought to be making a software or was considered a programmer.

The thing was computers were not that prevalent at that time (not that it is to be found everywhere right now, but still it has invaded in our lives a lot). So if you did a small time course or a degree course and you get lucky then you used to come in contact with computer and for that duration of your working.

Hardly anyone other than you (and may be the person assigning you the job) knew what you were doing. So when you walked out of that office you could just pretend to have changed the world for better in there and people would believe.

Then came a revolution in software which brought the computers to a lot many hands. You have computers in banks, offices, homes, reservations, even in grocery stores.
The narrow mindedness about computers got a severe jolt.
I still remember the day when like 7-8 years back someone asked me, you are in computers, right? I replied a confident "Yes". And that guy said can you look into the computer in our shop, it is not working since many days?
That was a googly for me, after asking some normal questions about what went wrong and what you did and trying some hands on that desktop, I told him this is out of my knowledge, you would need to call a hardware engineer.
And that person looked at me like I just murdered someone. He ranted about what have I been doing in computers for so many years and after spending so much money on computer courses that i can't fix a small problem in his computer. I was sure he had the impression before i walked out of his place that i didn't want to help him.
You still might find a few people like that around but by and large people now appreciate the difference between software and hardware and have started to understand that there can be multiple careers in computers (at least people who want to make career are getting aware).

So carrying this impression i was living my life happily and one fine day i got dragged in a conversation between few software professionals. And my interest hasn't aroused until that guy mentioned these words "VP of my company codes man". And said it in such a manner like Dan Brown about to reveal in his novel what the holy grail really is.
And then the discussion went that way, oh really? Regularly or sometimes? How does he gets time to code? What all he can code? etc. etc.




This was not the first time i have heard such a statement, there are people who boasts that they are still coding while managing. Software companies would recruit 10+ years managers who can 'code'. Vice Presidents and Presidents of the companies would sometimes boast within the company about their coding skills. And how they still can find defects in a developers code.
Project Managers who would do the code review and would do testing.

Someone recently mentioned this to me which is very correct with respect to the situation of the software industry today in India. He said, "Indian software industry today is nothing more than a code churning factory".
So very true. I don't remember seeing advertisements for project managers but for PMs with experience in Java or dotnet or python, etc.

Do people seriously still consider that coding or being a programmer is still such a cool job? Whereas in India most of the software fraternity belongs to Microsoft, which with every passing year is introducing new coding framework and languages and technologies which has reduced real coding to literally nothing more than 'googling-copying-pasting' or at best referring to MSDN.

And in a country like India where today every other person who graduates is a computer science engineer and there are thousands and thousands of computer institutes in every nook and corner, do we really think that we would ever stop at producing such people who can do just that (googling-copying-pasting) at least.

I am in no way saying that every person who is coding is doing just that or that coding is not a good job. But for sure programmers today (at least the Microsoft genre) who are doing just the regular business application development (and no product development or work with open source) should not consider themselves out of the universe.

And if the VP or President or the PM of my company codes and is displaying those skills in the company or trying to get on the developers nerves by showing those skills then its time the company hire a different VP or PM. Because the developers would any time cost a fraction of the big man. If the person is so hell bent on coding then make him a coder, his dream would be realized as well as your company can in turn hire a better manager.

What we lack today in our software industry is good managers, good visionaries, good product developers. Till when we will continue to work on the products developed outside the country despite having the biggest software workforce in the world.

Why in the last 35-40 years of software in India we have failed to produce a Microsoft or a Google or a Yahoo? These are the questions that we have to ask ourselves,these are the questions organizations like NASSCOM will have to think about if we want to be a product developer any time soon.
Software Projects doesn't only mean 'Coding' and there could be Project Managers who can manage the project without knowing the technology. We should come to terms with these universal truths for our own benefit.

So if the VP of my company codes, should I be proud of it?
Then I should rather start managing the company affairs, I am sure I can teach him a lesson or two about management.

Tuesday, July 08, 2008

Life Cycle of an Indian Software Developer

An Indian software developer life cycle is an array of processes that a candidate* goes through to become a software developer. It has its roots in the software development life cycle. There exists no correct model for the same but the steps can be divided as follows:

1. Pre Concept Phase
Case# 1: My dad asked me to do B.E. so I did and only god can explain as to how I cleared my engineering with just 15% of attendance. Interest? Are you kidding? Who can be interested in the circuit diagrams? I am sure I am not meant for this or the other way round.

Case# 2: It's already been 2 years trying to find a job but this world is not meant for civil engineers. Did everything possible, worked for free for 6 months. Helped out my uncle's friend in his contract but still not getting a decent job. I already knew there is no life for a civil engineer, need to find out something else.

Case# 3: Hmmm.....now that I have completed my graduation, Dad is after me to do something. Do what? Do I really need to do something? Isn't there an easy job for me in this world? MBA, MBA, MBA....I heard it so many times but don't the people who suggest me this understand that to get an admission into a good MBA institute you have to clear that entrance and if I would have been so brilliant to clear that entrance then why the bloody hell would I be sitting in this tea shop every day thinking what to do. But I am sure there is something in this world that I can do or I would be good at.

2. Concept Phase
Case# 1: This is a serious problem, I need to do something. After all some of my batch mates are already in job. Some are pursuing MBA/MCA or some higher studies. This computer business sounds interesting, my pals told me it’s a high earning job. Rahul from previous batch is already earning 20K in 2 years time. I guess I should also join this stream.

Case# 2: It's already been 2 years searching for job and I don't know how much more time will it take to get a decent job and I don't even know after that how many years will it take in that job to buy a car I always wanted. I need to do something else, I need to get out of this civil engineering, it wouldn't be of any good. These computer people seem to have all the good bikes and cars and enjoying in good restaurants, this must be the way to go. I know the solution, I have to get into computers field.

Case# 3: For sure I don't want to do MBA, who will clear that tough entrance and moreover after that 2 years of grueling studies and even after that you are not guaranteed a job. I need to do something quick, some job oriented course so that my dependency on my parents ends and that’s when they will stop preaching me. And those relatives suggesting 'you should do this?', 'Mr. Sharma's son did that course, why don't you that?', ' Why don't you try to get a job first?' will stop blabbering. This advertisement of a computer course is coming out every other day in the newspapers and it says 'Job guaranteed after course or 100% money back'. Sounds like something I would be interested in. I think I would do this. I would go into this 'Computers' thing.

3. Analysis
Case# 1: My friends are doing MCA and they tell it’s the best computer course, I will also do the same course.

Case# 2: I can't do 3 years MCA after wasting 2 years in search of the job, moreover where will the MCA fees come from? Dad doesn't have a penny to spend on me after paying for my engineering. And if I take another 3 years for studies, I guess by then all of my hairs would turn grey and wouldn't even get a decent girl to marry. But then which of these computer institutes is good? Why are they making it so difficult to choose? How do I know if I want to a do a 'QA course' or want to get a 'PNIIT' certificate or I want to be an 'Oracle developer’? And what's the deal with this 'hardware course'? Wouldn't every course teach you at least to repair the computer? My uncle's cousin is doing this 1 year course from 'Sintech technologies' and they are also giving Diwali enrollment offer, 15% discount. And yes he was telling me they are not too many people in one batch so a computer is to be shared only between 2. I think it’s worth the money, I would join it.

Case# 3: Job guarantee or money back and in addition to it this institute is on the posh J.B. Road always surrounded by pretty girls. I would definitely ask for an evening batch. Did you just say analysis? Didn't you notice I just did that?

4. Design
What all will I be covering during the course? Are the course contents good enough to make me ready for this field or I need something additional to fair well in this field? What will I be learning at the end of this course? Is there a process that would be followed during this course?

Case# 1, 2, 3: What are you talking about? Are you talking in Greek? If I am doing all, what am I paying the computer institute for. Let's go to implementation, I don't have enough time for your questions.

5. Construction

Stage 1:
Case# 1:
This subject is aptly named 'SAD', it really makes me sad. And who in the world is coding in assembly language? Why are they teaching me all this?

Case# 2: I don't get enough lab time, that idiot lab partner of mine screws up every program. How am I supposed to learn? I can't buy a computer at home, Dad would never agree after paying the fees for the institute. But I don't want to finish last in every lab test.

Case# 3: I have missed many classes already, I need to attend rest of them and most importantly I need to copy the notes from Nilesh before that next week's test. Thank god I have him as lab partner otherwise it would have taken me an year to write that linked list program in C. If C is so tough I don't think I would even get a hang of C++ in next semester.

Stage 2:
Case# 1:
Probability, Networking, Graphics, PoM, godddd... what I have got myself into. Why did I choose this field? If I would have studied so hard earlier I would have cracked IIT or something like that. Moreover are these things going to do any good in the market outside? People are learning C# asp.net, Java, CGI/Perl and we don't have a clue about it. Outdated course, and that Data Structure professor seems like she will never let any one go out of this college. On top of that only 50% of the last batch was recruited last year, don't know what will happen this year. I need to complete the semester project, clear all the papers for this year and a couple of back logs, god help me. Why am I in this field? After spending so much I can't even quit.

Case# 2: Year is coming to an end and I can't even understand why we create our own multiple constructors when by default there is one and what benefit is going to be if I create objects? I missed that Mobile computing class that day and now I have to prepare for it myself, no body seems to understand that subject. There are so many programs to write and now on top of that this library management project. Should I make it in asp.net or Java? I wanted to make chat server in Java but I don't want to take chances with my results (after all I want job also). I wish I had a computer at my home.

Case# 3: I should have understood earlier that this institute is bad. Half of the times there is no professor and the ones that are there, most of them are previous batch students who haven't got a job. And on top of that they are now telling me that if I score more than 80% of marks then only the job is guaranteed. That bi*** Raima screwed my career, for first 6 months when she needed free lunches, gifts and bike rides she was with me and when that NRI marriage proposal came, she jumped onto it. I am screwed, I am screwed, I am screwed...

6. Testing
Case# 1: Thank god at least the papers are over. And thanks to Sameer's uncle he gave me that live project certificate from his company for the last semester. The PoM went well, it would take effort for the professor to understand that Gantt chart I drew (because even I didn't understood what I drew) and it would be virtually impossible for the professor to pass me in the Probability paper, I would be happy with the minimum too. God just pass me in all the papers, I need a job. I will go mad if I have to give any of these papers again.

Case# 2: I managed to get an 'A' in the library management project, I figure in the top 5 students of the batch and the final papers were decent except for the radix sort algorithm. If I remain in the top 5 then there is chance of getting any job interview otherwise don't know what I will do. I need a job....

Case# 3: The 2 papers pretty much similar to what was told to me by a batch mate (who maintained a good relationship with the instructor) so they went fine but apart from that other 3 papers I don't even think I will pass. But if they don't pass me I will not leave them, Job they can't give me at least after taking 40K tuition fees they can give me a certificate. They have to pass me.

7. Deployment
Case# 1: After 2 months of struggle, 5 interviews and countless written tests I have managed to secure a job in a decent company, the company is multinational (as is every other company coming to the campus in last 2 months). They have hired me as a software developer for Microsoft technologies. Salary offered is decent. Is this what I was expecting in the beginning? I am not sure but I am happy at this moment and after 3 years and four months of struggle I am not complaining, at least I have a job.

Case# 2: You don't have a degree in computer science Diploma from a private institute is not enough; you don't have any experience in this industry. Why do you want to switch from civil engineering to computers? I was listening to all this crap when I started looking out for job by myself after 1 month sitting in institute, waiting for some companies to come for recruitment. After listening to 2 months to all those statements/questions at last I got an offer from a company, they offered me to keep as a Trainee with minimum pay and if I performed well in 3 months they would keep me as a developer. They liked my work in 2 months and after 2 months I was on their payrolls as a software developer. I have a developer job at last.

Case# 3: The institute passed me and gave me a certificate without hassles though I scored 50% in all. As soon as the course finished the parents were again after me to get a job. "We invested so much money, get a job". Now you know as well as I do how good a programmer I am. I can create a web page with some difficulty but don't ask me as to why there is a '# include' or what does 'inherits' mean. I have learnt it that way and that’s about it, I will code like that (I think all of those things are required, without which page wouldn't work). And don't even ask me linked list, though I have also written a linked list program (I learnt it by heart as someone told me that was coming in test) like others in my batch but I have never seen a list figure (as depicted in books) on anyone's machine. Nevertheless to end the every day arguments with my parents I took a lab attendant job in one of the computer institute's in the city, thanks again to my lab partner (who was by now a good friend) Nilesh. Computers were really tough and may be not the stream I wanted to be in. But now that I am in it (and can't get out of it) I am trying to learn all the nuisances of programming properly to get a developer's job.

8. Lessons Learnt
Case# 1: There is a difference between doing B.E. and doing M.C.A. it isn’t that easy as it sounds. I didn't knew at the beginning what I was getting into but in the end I managed to get through.
Do I like being called a software developer? In the outside world when people look impressed about the profession then I do like it but while learning it or working in software it is no different than any other stream, involves as much blood and sweat as any other and some cases more.

Case# 2: I know the difference between being a Developer, Tester, DBA, HTML Designer, etc. etc. I jumped into this field not knowing what I wanted to be in this field but then by the end of the course I knew I had to code, I wanted to be a programmer. I think this is the right field for me. And no they don't teach to repair computer in software courses. No not even with 3 year course.

Case# 3: Someone who is not fit to be in any other field can become a developer is not really true. May be anyone can come into the computer industry and find a job but not everyone can be a software developer. After all not everyone in the world understands 10 as binary.

*Candidate is defined as any engineer, doctor, musician, graduate, artist, lawyer, factory worker, etc. who turns towards software industry thinking it as a 'Who wants to be a millionaire show' and thinking it to be the ultimate solution to his financial problems.