Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: How to train fresh developers
12 points by simenfur on March 14, 2013 | hide | past | favorite | 11 comments
When you hire fresh college graduates as developers, they might have a good academic background, but still have a lot to learn.

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?




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.


I agree there is much more stuff than writing code.

> Teaching them the value of well organized source control and good commit notes goes a long way.

This is way too low level compared to what we are looking for. We want to find out how to help people learn quickly the basic values and principles that will enable then to proceed on the path towards learning how to build the right thing and how to build it right.

The question is not so much what to teach (there are great resources on that - Clean Code, Pragmatic Programmer, Effective Java, XP explained, ...) but how. And by how I mean little more concrete than "give them a mentor to help them" (we have tried that - but neither the mentor nor the mentee really know what to do).


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.


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.)


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.


> - 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 :-(


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. :)


> 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.


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.


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.


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




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: