This past summer, the Headspring staff took a trip to K1 Speed for a quarterly meeting. When we weren't "testing the safety equipment" around the track, we were talking about our performance for the quarter as well as plans for the future. We were asked to imagine a much larger Headspring 1-2 years out, and describe what it would take to get there.
I shared a hard truth, suggesting we start considering more recent grads in our hiring process. This may seem counter-intuitive. Hiring talented folks for software development is extremely tough, and real-world experience matters a lot when evaluating candidates, right? On the flip side, though, most experienced software developers have a long list of horror stories from past jobs: office politics, bureaucracy, teams spread too thin, death marches, and the like. Wouldn't it be great, for both you and the new hire, if they got to skip all that luck-of-the-draw stuff and instead got all of their real-world experience at a healthy company right from the start?
From a candidate's point of view, they could enter the workforce surrounded by experienced people who have already faced and rejected all those problems. They could learn from everyone's example far more quickly than they would otherwise on their own, and they wouldn't run the risk of being set back by the examples of struggling teams.
In reaction to my suggestion, I was asked to take on a mentorship role with a current student, with the goal of preparing him for an internship here at Headspring.
That's the way things work here: if you make a suggestion to improve things, don't be surprised if you get to make it a reality. In light of this policy, next time I think I should share another hard truth with the team: we need to be eating more cakes and delicious pies.
We've only been meeting for a few weeks, but it's already a rewarding experience for both of us. Once per week and for about an hour, Dan and I meet to bring him up the C# / MVC learning curve. When we first met at a Polyglot meeting, Dan had some experience with C++ and Lua, but hadn't worked with C# yet. Our initial meetings have focused on the nuts and bolts of C# itself, but even early on we got to cover other topics such as automated testing, readability concerns, the DRY principle, etc.
On the selfish side of the equation, this experience helps me to improve my own skills. Having to explain things that I take for granted forces me to challenge my own assumptions, and improves my ability to discuss complex technical subjects with clients. On more than one occasion, Dan's questions have left me initially thinking to myself, "Why exactly, do I feel so strongly about this opinion?"
I would have appreciated having a mentor at that age, but filling the opposite role is looking to be a pretty sweet deal. Not as sweet as my cake/pie suggestion, but sweet nonetheless.