Monday, June 4, 2012

Welcome, Interns

In the annual technology calendar, summer heralds the arrival of a new and curious species: interns. The intern - latin name collegius eagerus - generally arrives in May or June and stays until August or September. A few particularly ambitious members of the species stay for an extra semester or even a year.

Distinguishing Intern Subspecies
There are a few distinct subspecies of interns:
- Internus Know-it-all-us: The internus know-it-all-us usually comes from a school known for a good computer science program. He has passed an algorithms class or two and probably knows his way around a compiler. This intern is here to apply his wisdom to the real world. This intern is best handled gently, since the ego is very large.
- Internus Know-nothingus: This subspecies is often the youngest of the bunch. He knows mostly that he doesn't know much at all. Half the difficulty interacting with this subspecies is getting them to stop wallowing in now knowing and just start doing. Extremely simple tasks are a good starter, and a lot of encouragement is needed.
- Internus Eagerus: This subspecies is hear to learn. He wants to know everything about everything. The trick to handling this intern is helping them accomplish something and not get lost simply gathering knowledge.

Managing Interns
On the face of it, an intern is a productivity killer. After all, this is a person who needs training in almost every aspect of the job. However, properly managed, an intern can bring a lot of value to a team, even in the few months they are there.

To properly manage an intern, recognize what they know and what they don't know. Most interns know something about coding and about things like algorithms and patterns. However, most interns have worked mostly alone or at most in teams of three or four people. That's the part they have to learn - how to write and maintain software as a team member.

Focus on working with the intern on software team dynamics:

Using source control, including branching, merging and conflict management.

Refactoring and creating reusable methods and classes

Recognizing and following style standards

Code structure and layout

Benefiting from Interns
Interns take a lot of time. They make mistakes. They write code that's sometimes utterly unusable.

They're also a huge benefit to a team.

You see, they don't know any of the history, so they don't know what can't be done. Explaining something to an intern helps you think through a problem or through a process - and that helps depend your understanding of it. Sometimes, they also show you what corners you have been cutting that you shouldn't, or what corners you can cut. Fresh eyes on your product will help you see it as your customers do - totally and completely without your assumptions.

If you get the chance to work with an intern, leap at it. They're frustrating and barely there long enough to be productive. They're also refreshing and exciting and a breath of life to a stable team.