Monday, February 13, 2012

Why work (hard) on a BE Project?

(Note: Although I mention BE Project below, this applies to any project that you are working on during your student days. )

Answer some questions for me:
1. What programming language are you strongest in?
C, C++, Java?

2. How complex a program have you written in this language? Any programming beyond the assignments?

Programming is what you are going to be doing for a long time in your career. How have you really prepared yourself for this? Scoring well in theory exams is in no way an indicator of how well you can program.
Lets take cricket to emphasize the point further:
a. People who score excellent in cricket theory exams cannot become cricketers. They will tremble and sweat standing on a pitch when facing a fast bowler. A situation not unlike many I have seen in IT companies.
b. Excellent cricketers have spent a long time practicing on the pitch. You are automatically comfortable, you know you are on your home pitch. You may be nervous, but clueless you are not.

Of course, I don't mean theory is not important. It is crucial. But so is programming, and unfortunately our examination systems, do not quite test you well on that. Thankfully, within the first 10 minutes, a good interviewer can identify a kaun-kitne-paani-main-hain... (This gets quite close to the point I am trying to make).

3. Do you think after 4 years of your BE, you are a mature technical professional who is hireable?
Towards the end of my third year, I always thought we have hardly done anything significant during Engineering. I mean anyone reading a few books can get here. What makes me different?

Here are some of the important benefits of a great Project:


1. Choose your co-workers, choose your work

This is something which is closer to the hearts of the students and so lets look at that first.
Rarely in life do you get a chance to choose your co-workers. This is a golden opportunity to work alongside your friends on something constructive. Many of my students often remember and miss their days of the project when they were designing for their project, brainstorming an idea or hunting for a bug for days at end.

The culmination of all these gives you a high, a sense of achievement, like nothing else. Its that feeling of accomplishment that stays with you.

Not only your co-workers, but this is also your opportunity to choose your domain of work, or pick an idea that you are passionate about. Many people that I know end up working in more or less the same domain that they did their BE project in, , even after years of passing out of BE.

2. Preparing for the future
Here are a few things that you'll be doing once you join any organisation
a. get familiar with the tools
  - revision control system
  - bug tracking system
  - development environment
  - netiquette
b. get familiar with the code
  - understand the existing architecture, code base
  - debug and fix bugs
  - design, implement and test a component


And this is going to be your profession. Surprisingly, as a student you have never had to do any of the above during your engineering. The academic assignments are too small to count towards this.

Your project acts as the sufficiently complex entity where you can get to experience all of the above first-hand. You yourself have to consider the breaking of problem into sub-problems, scheduling, risk mitigation and other strategies. These no longer stay concepts from Pressman, but you get to put them in practice. As you experience these concepts, you start developing ways and procedures of dealing with problems yourselves. This is the important learning curve. This is what contributes to the "experience".

There are many things that you can learn and absorb during the various phases of your project. We'll cover that probably in another article.

3. Foot in the door
The resumes of most BE passouts are just about the same. As I mentioned above, good marks aren't necessarily an indicator of mature developers. So how are you different from the thousands of engineers passing out with you?

Your BE project acts as your foot-in-the-door. That is what separates you from the rest. Working on your BE project also counts towards your experience in that particular domain. You now have something more concrete to talk about in the interview, and having spent time on that you are an expert in that field.



Acknowledgements: Thanks to Amey Inamdar and Amod Jaltade for their suggestions.

3 comments:

  1. This is what the doctor ordered (or should I say the engineer ordered?)
    Students do get ample time to work on their last year projects. They must utilize this time to learn the tools of their trade, to make their hands dirty by dabbling into a real world programming problem.

    Kedar has done a nice job not only of just pointing the drawbacks but also of giving an outline as to how a willing student can set himself/herself for the task of overcoming these drawbacks.

    Thanks and regards,
    -Damodar Kulkarni
    PUCSD (http://cs.unipune.ac.in/)

    ReplyDelete
  2. Kedar, I couldn't agree more with you. This is exactly what I have been feeling. Another thing I strongly feel is - placement being done by the industry after the third year is the main reason why most of the students have lost motivation in doing their project seriously. For example, a large company comes and says that only those having more than 60% marks can appear for placement and gives placement to a few. These people now know that all they need is 60 marks in their project - and a job is waiting. Instead, if the companies were to choose based on the final year projects (and not marks - which don't reflect how good or bad a developer is - as you have rightly said), the students would remain motivated. Unfortunately, the HR guys in the large companies have a very short term vision of meeting their own targets - and in the bargain, they are destroying a few generations. Hiring after third year is also detrimental to the industry. Consider a case where a company hires a person based on only marks - without knowing what technology is known to a guy as against a company who requires, let us say, a .Net developer hiring a person who has done a project in .Net. Who would be benefited more? Who would require lesser training to be imparted? Which person would be more happy - the one who is directly put on a client project or who is put on training even after doing B.E.?

    I think the industry also needs to reflect on this!

    However, I hope at least some people who read your blog would realize the benefits of doing their B.E. project seriously. Well written.

    Arun Kadekodi
    CEO, Soft Corner
    www.soft-corner.com

    ReplyDelete
    Replies
    1. Arun, Indeed! A lot of good companies do things this way: hire after the project is completed. It is actually a very good way to determine the good ones from the bad ones. That way the chances of a bad hire are much lesser and the company has a better control over their hiring decisions because they aren't hiring an year in advance.

      The other trend is mass-hiring. If a company is determined to hire 50 students from a batch of 120, even the tests and interviews are a farce.

      Delete