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.

Saturday, July 05, 2008

Aditi

By the time I would finish writing this piece, I am sure everyone in India would be aware about Aditi and Jai. And most probably every guy would be thinking about their Aditi and the gals about their Jai...


It's an age old confusion that is depicted in another way (good) in 'Jaane tu...' and anyone coming out of the theatre would be forced to think about the Aditi or Jai in their lives...


Can we live our lives alone? Can we fight with the odds in our lives alone? Can we achieve all we want, all alone? In most of the cases the answer is 'No'.

Every guy needs an Aditi in their lives. The lucky ones already have an Aditi in their lives...

Aditi is one who would brings smile to your face, she is the one whom you want to be with.


Aditi is one who, when infront of you, will make you forget every bad thing thats happened to you, every problem in your life. She is the one for whom you would leave anything. She is the one for whom you want to do something and everything, whom you want to keep happy whatever it takes.

But is there an Aditi for everyone? Is everyone of us lucky enough to have Aditi?

Not everyone has an Aditi in his life and may be some of us will never have an Aditi.

But the unlucky are the ones who have and Aditi for them but they just don't realise it...