Thursday, June 16, 2011

How to be an awesome intern

Don't you just love the stackoverflow network? I do :)
This post really caught my eye : http://programmers.stackexchange.com/q/84396/8867

Basically I have seen interns become a burden in programming teams more so than in other fields. This is because a deep knowledge of how to write functioning softwares is something not taught in schools. It is something that only comes with self effort and internet research / books. So the intern's / new hires have a tendency to ask the senior team members questions at every small step of the way. And I feel that joels post hits right on home on how a new team member should actually behave : http://programmers.stackexchange.com/questions/84396/how-many-questions-is-it-appropriate-to-ask-as-an-intern/84398#84398 Quote:

Be respectful of your mentor's time by keeping a list of questions and asking them in batches, to the extent possible. Don't actually interrupt your mentor until you literally cannot make any forward progress without help.

A lot of times you'll learn a lot by struggling to find the answer yourself, even in cases where your mentor can teach you something in 10 seconds. For example, if you want to know where something is in the code, you can ask them (10 seconds), or you can spend four hours studying the code and trying to figure it out yourself. The advantage of the "four hour" option is that you will actually be learning 200 new things about the code, all of which will help you later on. Struggling to find your own answers can be a waste of time, but it can also be a way to learn a big complicated code base.

Needless to say if it's a programming question that doesn't concern your company's own proprietary code, you should try to figure it out yourself using the internet.

The section in bold is what I think is really important. Feel free to use stackoverflow for this. No team has enough resources (and perhaps quality) as stackoverflow :).

Other than this teams should have regular meetings to discuss stuff so that knowledge can be shared. Beyond that the internet and books (lots and lots of books ... start with the programming language essentials e.g c# essential / C# in depth and build up to the technology e.g. wpf / silverlight / wcf) are your best friend.