Thursday, February 01, 2007

Advice to freshers

I have been interviewing a lot of freshers for internship at my company. The more I talked to these people the more I felt that the lads are being misled. So this is an effort of trying to put a list of things that freshers might want to keep in their mind. Actually this list will hold good for the inexperienced as well. Most of this is locale specific, Bangalore, India to be more specific.

1. If you are not in the field of computers already, then there are a certain set of basics that you might want to learn first. OK, we, comp.science graduates spend about four years learning it. So even though you think that you can become a developer by taking a course in Java at one of the centers in Amirpet or NIIT within couple of months, there are certain things you ought to know and understand. Basics are important, rather most important. Its not just enough knowing a language. I agree that you dont have to know how the engine of a car actually works in order to drive a car, but you should atleast know how and when to use the brake or the clutch.

2. Programming is like painting. This is not just my view. So what would you do if you want to learn painting? You paint. The first one might come out quite different from what you expected, but as you keep on practicising it, without worrying about throwing away your work (actually this is important), you will surely reach a point where you can create something that you had in your head. Now having something worthwhile or beautiful in your head is altogether different ball game.

3. On the same analogy, there are painters who just paint walls. And there is Da Vinci. And there is a whole range in between. At some point, there is genetics I guess which will give an unfair advantage to the very few. We had only one Da Vinci, but thats something you cannot help. What you can help to climb up the ladder is to associate yourself with the best and improve your skills by helping the master do his/her job better. OK I dont want to sound like a the head master in your school who is using a cane, but what we lack in our profession is the apprenticeship. Our trade needs it more than any other form of engineering discipline. So go find a good master or guru or mentor. These dont have to always be only people. They can be groups (esp. open source projects) too.

4. The mindset that most freshers have with respect to programming is that they can read the manual of a programming language say Java, know the syntax of the language and they are masters of Java all of a sudden. All they are is at the max half compilers who cannot convert the source into bytecode. I am not declining the importance of keeping the syntax in the head. All I am saying is that reading the manual of how to use a screw driver is not the same as knowing to use a screw driver. And programming is a hundred times more complex than this task. Like the great Morpheus says - "Walking the path is different from knowing the path"

5. Find the area that you might love to work in. Actually this is easier said than done. This is something that you want to explore while you are in school. For that matter, this should be the reason why people should go to school. Trying your hand in a masters course might also help. Its also not necessary to declare it to the world and stick with an area forever. You might simultaneously work in multiple areas like one in your office and one at home. Sounds like a dumb suggestion, but people ignore the most obvious things. Whatever happens dont let go until you find what you love. Now is the time when you have a lot of energy and enthusiasm to explore. So dont let it go waste.

6. Prestige kills creativity. It hampers learning. "It causes you to work not on what you like, but what you'd like to like." - Paul Graham.

7. This field is like research to a large extent. If you are not ready for lifelong learning better not get into this mess. Ofcourse five to ten years from now you will be a project manager or in some management position. For that you dont have to become a developer, you could always get in through an MBA or something of such sort. Dont become a developer half-heartedly and screw it up for the rest of us.

I hope this will give atleast some direction to you. If you have more thoughts or criticisms please feel free to express them.

No comments: