Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I am a freshman hired in an IT company in India. A lot of my friends have also been placed with different companies. Some of them have been trained online, Some in Classroom, and still some others (me included) are being trained 'on-the-job', This leaves me pretty confused as to what method should the companies follow so that the fresher is 'up-to-the-mark'? WHat advantages does all these methods have over one another? I would be delighted to hear from Industry people.

P.S. Please(if you want) write if you are working in an IT company, and the post if possible. It will help me formulate my opinion. Nothing sinister in this request, I promise!

share|improve this question
    
Get him a mentor. –  user1249 Aug 8 '11 at 13:33
14  
Step 1: Don't call them a "fresher" –  DKnight Aug 8 '11 at 14:17
1  
You should already be "up-to-the-mark" when you are hired. The only thing that company should have to do is introduce you to their code. –  Ramhound Aug 8 '11 at 15:14
2  
@DKnight: I believe that is common in India to denote a "first year on the job" person. –  Paul Nathan Aug 8 '11 at 16:09
    
@CyprUS: Could you define how you are using the terms "fresher" and "freshman"? In the US, "freshman" is used strictly for first year students in a college or secondary school. Are you still in college and employed through an internship are have you completed your degree/certification and now recently employed full-time? –  oosterwal Aug 8 '11 at 18:25
show 1 more comment

4 Answers

up vote 5 down vote accepted

here is my experience and my ex-company training method. I am a M.Eng. in Computer Science. During university education, I had worked on several small projects, not for the money, but for the sake of gaining experience and knowledge. As a graduate, therefore, I wasn't a total newbie, but wasn't an experienced programmer either. In the company I used to work for, the training process was as follows: each newbie was assigned a mentor (some senior developer). Note that one senior developer was assigned more than one newbie, as 1-1 relationship wasn't something a company could afford. Newbies are then given some books/tutorials to read, together with some simple tasks to implement, just to give them some basic overview on the subject. This phase lasts for about two weeks. Afterwards, they are given a test project designed by their mentor. Each one of them has their own little application to implement, although they are allowed to help each other and are encouraged to ask as many questions as possible. This phase then lasts for about two or three weeks, depending on the progress and scope of the application. Their work is then evaluated by the senior developer, and the evaluation is reported to the managers. If everyone is satisfied with the progress, newbies officially become "junior programmers" are allowed to work on some "real", non-time-critical project. Official supervision phase lasts for about three months. It is expected that after three months, junior developers are able to write some code on their own, without having to ask around much. Note that this was a big company, which could afford this type of training. Many companies don't have this type of training.
So, to sum it up, IMHO:
formal education / student projects + formal training + work on a real, non-time-critical project
makes a good starting point for a fresh programmer.

share|improve this answer
add comment

What method should the companies follow so that the fresher is 'up-to-the-mark'?

Lets start with classroom training. This method generally help you know the subject, theory or some examples.It gives you the basic idea of what is what, what you need to know. For example Algorithms, SDLC, methodologies which you cannot learn on the job that well. If the group you sit with ask a lot of questions, you will be learning their point of aspect on the topic and learn different perspective of the topics.

I am not that interested into the online training for a new graduate, as you might not have the face to face conversations or the group training in the classrooms. However this will help, for a little advanced people with less or no time because you just have to learn them to do stuff which you already have an expertise on. However, you have to understand this is just my opinion and I could be totally wrong.

Coming the on-the-job training, this method has few great things and few bad things. You can learn some things only on the job because you will have real circumstances and real issues to face. For example, if you are a DBA(Database Administrator) you will not know if you give permission to do something on a particular Database, will affect some application in a big way unless you practically see and know it. When you are coding some piece in the current application you will be able to focus how it fits into an application and what issues might come like memory issues, session issues, security issues and other stuff like this in the actual environment. However the bad thing, you cannot learn everything on the job. You should have the theoritical knowledge to back it up to seamless fill in the gaps what happens why?

Classroom training teaches you what happens when you do something. And on-the job training teaches how you can resolve, get rid of or the get the best of the current situation. Both are needed in their own ways.

share|improve this answer
add comment

Online or classroom training can help if no one at the company has the time or expertise to work with you. It puts the burden of learning on you. The negative part is if the class does not have enough focus on your job or you have a bad instructor. If everyone else went through similar training, it puts you on the same page.

Learning on the job is beneficial if someone has the time and expertise to instruct you and there are no political agendas to withhold information or they take the philosophy, "We're going to throw you off a cliff and see if you can fly." Not everyone is a good teacher or mentor. You may need to fuel your efforts with curiosity and be more inquisitive.

Regardless, make sure you know what is expected of you. You may not get everything laid out for you.

share|improve this answer
add comment

They all have their advantages and disadvantages and should be used in conjunction.

On-the-job training (or Experiential learning) makes you fit for the task the company expects you to do, but your trainers need to have time allocated to training which means progress on their other tasks will slow down. The quality of the training also depends on the trainer.

Class room training (or academic learning) allows the trainer to train several employees at the same time and makes sure everyone gets the same information. The class room environment also lets students learn from each other.

Online training and courses can be useful as references and as complements that let the employee decide when to take the online course - for example in between tasks.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.