Internships are new to us. In fact, hiring people straight out of college is new to us. Historically, we have built our teams by hiring experienced (or relatively experienced) people often via word of mouth recommendations. We have always been quite protective of our culture and the impact of bringing new people into our organizations. As a result, we have been pretty successful with our hiring with little, to no turnover and very few disappointments.
When we started Nebraska Global, we knew there would be many challenges and one of them was that we were going to be working with less seasoned developers as a result of our strategy of developing young talent. This last year has been a great (and at times a challenging) experience as we have learned to work with, evaluate and mentor young talent.
In this post I would like to share some of my observations from this last year and share how we are working with interns and recent graduates. Some of this is probably not new to those who have worked with interns or new graduates before, but my hope is that this will provide some food for thought. This is still a work in progress for us so we’re still evolving in this area.
Our Goals for Internships
I believe that internships are a great way for us to evaluate talent and build confidence in our recruiting of new graduates. While it does give you more insight into the technical aptitude of the students, I believe it is most valuable in determining whether there is a cultural fit.
However, internships are not a one-way transaction. The students have much to gain from their experience at an internship and, for the best and brightest, it also becomes an opportunity for them to “interview” you and your company. We often hear about the quality of internships these students have with other employers and it varies widely.
One thing we try to remember is that the value of the internship experience is the sum of the work they are actually doing, plus the quality of the interactions they have with you and your staff. The latter is something I think many, if not most, companies tend to overlook. What we get out of these engagements and what the students get out of it is heavily dependent upon what our team is able to put into it.
Developing realistic expectations is crucial when trying to avoid frustrations for everyone involved. For us, this is where we saw the steepest learning curve over the last year. Below are a few observations from reflecting on the last year and some things we should keep in mind when working with less experienced team members.
- Bright, but Green — The interns and graduates we are interacting with are quality, high potential individuals. You can have conversations with them on very complex technical problems and they will impress you with their knowledge and aptitude. The hardest realization we had to come to was that, though these young folks are (very) bright, they are also very, very “green”. We have a saying around here of “they don’t know what they don’t know.” By this, we mean that they often do not even recognize a “gap” in their knowledge and they will proceed down a path of development without consulting with a more experienced developer whereas someone with a little more experience will recognize this gap and consult with others to fill it.
- Reluctant to Seek Help — I have written about this before, but I will repeat it here for completeness of this list. It seems like there is a strong correlation between inexperience and unwillingness to reach out for help.
- Design (In)Experience — For most interns and graduates, working on a project represents their first, or second opportunity to do actual design of anything with any complexity. Lack of emphasis on design in the traditional Computer Science curriculum is the number one problem I have with the way we are training software professionals.
- New to the “School of Life” — To no one’s surprise, interns and new graduates have very little experience, perspective, or context for making decisions or assumptions. The quality of any design tends to be highly correlated to the ability to minimize errors in judgment. This is a problem for people with very little experience to rely on when making these judgments.
Avoiding Problems and Frustrations
I don’t want to sound like I’m dogging on interns or recent graduates; they really are great to work with and play a critical role in our strategy. But we must be prepared to guide them through their “newness” and help them realize their full potential. Here are some things I think can help everyone involved:
- Constrain the Problems — We often expect these young, energetic engineers to be bubbling with creativity that we wish to leverage and allow them to explore. The problem is that their lack of experience makes it difficult for them to “self-constrain” the problem space in which they are working in order to identify requirements and develop a solution. The result is they end up floundering and this can lead to frustration. It is very important to constrain both the scope of the requirements and the list of possible technologies. This liberates them from making these large decisions and allows them to focus their creativity in the comfort of a framework which focuses their attention on the smaller-scale details of the design.
- Be Responsive — Given that they are reluctant to reach out for help, on those occasions when you are asked a question, you need to assume they are blocked until they get an answer. Being as responsive as possible will help keep them moving forward.
- Give Them Context — Take any opportunity to provide them some examples of context and perspective when they are wrestling with decisions and assumptions. We are often told that these young folks thirst for the “war stories” from our past experiences. Don’t be shy about sharing these. Along with this, force yourself to be inquisitive during planning and design meetings to challenge their assumptions and gain an understanding of their thought processes. This will often uncover problems associated with their lack of experience and perspective.
- Get into the Details — Commit to having someone periodically review their code and technical design. Give them feedback so they can make the necessary course corrections. There is almost certain to be some technical debt in their work unless someone takes the time to guide them and identify necessary changes early on.
- Integration with Your Teams — This probably applies more to internships than new hires but the more you can treat interns as regular members of your team, the more they will get out of their experience and the better off you will be in evaluating their potential. Treat them as you would a new hire instead of some short-term temporary worker. And don’t simply give them the tasks and projects that no one else wanted.
Working with less experienced individuals is inevitable, so it’s best for companies to get familiar with how they will deal with the challenges inherent in bringing these folks on board. The amount of difficulty incurred is based on company culture and the attitude of the employees involved. However, it’s worth it in the end. These less experienced team members may one day be the leaders in your company. Train them right, and your company’s future will remain bright.