

Ask HN: How to train fresh developers - simenfur

When you hire fresh college graduates as developers, they might have a good academic background, but still have a lot to learn.<p>What kinds of structured programs for teaching the essential skills have you seen out there? What are the essential skills needed, that one does not learn in school?
======
tom_b
Fred Brooks, No Silver Bullet:

How to grow great designers? Space does not permit a lengthy discussion, but
some steps are obvious:

• Systematically identify top designers as early as possible. The best are
often not the most experienced.

• Assign a career mentor to be responsible for the development of the
prospect, and keep a careful career file.

• Devise and maintain a career development plan for each prospect, including
carefully selected apprenticeships with top designers, episodes of advanced
formal education, and short courses, all interspersed with solo design and
technical leadership assignments.

• Provide opportunities for growing designers to interact with and stimulate
each other.

~~~
jakubholynet
> \- Assign a career mentor > \- Devise and maintain a career development plan
> for each prospect

These are great advices. The question is how to turn them into practice.
People do not become great mentors by just becoming appointed :-(

------
kls
Almost all of the processes around creating code in a team environment are
almost as important as the actual code, assuming they are competent at coding.
Teaching them the value of well organized source control and good commit notes
goes a long way. Having them understand the importance of documentation is
also a good value to instill and finally the importance of keeping a ticket
system up to date. These are the things that become more important in a
business environment that are usually glossed over in an education
environment. The process of creating software is almost as important as the
actual creation of the software. Developing these skills early will stem a lot
of bad habit from developing.

~~~
caw
I agree. Version control (let alone DVCS), bug trackers, and other sort of
organizational skills aren't taught at school. You might know if them if you
did something in your personal time, or you had some friends that introduced
it to you during a project. However, that's more of the exception than the
rule.

~~~
iends
If you've not stumbled on version control by the time you graduate college,
you're probably not the type of person (self motivated, interested in becoming
a better developer, etc.) that I want to hire.

(Also, at my average state school, version control was taught.)

------
MojoJolo
Give them real life projects that you will use. If it's about programming, in
my experience, I learn different programming languages by feeling it and
coding using that language. Let him appreciate the real use of the project he
will do. A good dev can learn on his own, but make sure you are there beside
him. Always be open if he has questions, or clarifications.

For essential skills, I can say programming language literacy, version
controls, SQLs, basic algorithms and data structure, and software dev life
cycle.

The best thing you can give to a fresh dev is experience. :)

~~~
jakubholynet
> Give them real life projects that you will use.

We do that. But we feel it is not enough to help people grow quickly. We are
looking for ways to make the learning process as effective as possible.

------
duiker101
Put them in front of a PC with internet connection tell them to create
something, see how do they do, try to direct them but not to help them step by
step.

I never did it, but this is how I would do it and how I would like people
would do with me. If I need help I ask, but otherway I think trying is the
best way to learn.

~~~
tsm
I interned at an IBM acquiree this summer and that's how they taught me Rails.

"tsm, you need to make a webapp that does X, Y, and Z in Rails."

"Um...I've never written a webapp before, nor do I know anything about Rails."

"We know. So. tsm. You need to write a webapp that does X, Y, and Z in Rails."

It worked.

------
papablogger1992
Give them work in which he/she interested it will increase its work efficiency
and you will get more out put with less input.

