Sure, we all wish for all-knowing, all understanding, no-training-required new employees / co-workers. However, sometimes you just have to make due with green recruits (budget, availability...).

How would you train new employees in your language of choice (the one he's going to work in)? What obstacles would you tackle first, what later?

Also, what about people who already know the basics - how would you teach tool kits (e.g. Swing or WPF)?

+3  A: 

If you're willing to hire people that have 0 experience in a key skill, then you need to be willing to train them appropriately - a boot camp class of some sort, followed by in-office training on the domain-specific aspects, and then perhaps pair-programming with another team developer on bug fixing, or other low-impact area.

After that, it would depend on the progress of the individual.

Greg Hurlman
+13  A: 

I have found that best way to teach myself or anyone else a new language or tool is to continually assign tasks that are just barely out of reach of what they already know how to do. If you face a challenge that is just hard enough to be interesting, you will be motivated to learn and you will gain confidence when you figure things out. If it's too hard, you will get frustrated and you might give up.

I don't think formal education programs work so well, because good programmers tend to move faster than those kinds of programs can accomodate.

Eric Z Beard
+4  A: 

Sit them down with a Senior Dev on their first day to help set them up with the dev environment and explain the ins and outs of a product. Then, LEARN BY DOING. Bug fixes and feature requests, with the understanding that it would take the new dev longer to fix. Then, do a code review. Rinse and repeat for the first several tasks and track progress.


If we're talking C++ and they sort of have the basics, I like to hand them Scott Meyer's Effective C++ 3rd edition and C++ Coding Standards by Sutter and Alexandrescu. I would have to imagine other languages have a good book or two on how to think in the language and it's idioms (the Ruby Way comes to mind).

I agree with the others... the best way to learn is by doing!

Matt Price
+1  A: 

The way we do it at our organization is this. We first get our more experienced people to create a customized training pathway. This can be a combination of books, online trainings, articles, etc.

Throughout the training (we usually divide our trainings in chapters) there are small programming assignments that the trainees have to complete.

Finally, at the end of the training, there is a mini application that has to be built. This application is then evaluated by an experienced programmer.

Throughout the training, each trainee is assigned a mentor who helps understand concepts and troubleshoots problems.

It works most of the time.


I'd say one of the key things to being successful as a programmer as the ability to learn on your own.

I'd give them some books of the subject and good websites to get documentation. Also, access to a someone who knows what they are doing just in case the get legitimately stuck.

Mark Lubin