Internships - Straddling the Void Between Useless and Valuable
This summer's intern project was teaching AI to handle graphic design for company t-shirts |
I encountered an article in my news feed from Slate the other day titled Is It Just Me, or Are Interns Getting Stranger? It was a compilation of anecdotes about the understandably odd behavior in the office as exhibited by people who've likely had no experience in an office.
Reading the article spurred me to write about a topic that's been rattling around in my head for some time - how useful are Tech internships?
As a college student, I was informed that an internship was a necessity for landing a top job. I'll leave some of those details for another post, since the definition of a 'top job' is highly subjective, but there was definitely pressure from both professors and peers to land an internship. I did not land an internship.
As a hiring manager, I viewed internships differently. Absent any other feedback, an internship on a college student's resume is a differentiator since all college resumes look the same, but I didn't feel it was a necessity. There were certainly times when I would select candidates without internship experience over those in a resume pool with experience. I suspect that this somewhat lukewarm view of internships is due to my exposure to intern programs as a manager.
Let's start by looking look at what's beneficial about a Tech internship:
- The student has a chance to make a decent wage for the summer. The average hourly wage for someone in "Information" was $49.39 in May of this year according to the BLS (I was hoping for median wage, because it's a better indicator here, but couldn't find a reliable source). In Chicago, at smaller Tech companies, the intern wage is around $40. So, someone with no college degree is earning 80% of the average wage in their field while essentially participating in on-the-job training. That's not too shabby.
- The student has a chance to explore software engineering in practice rather than in theory. While I still value the theory behind a computer science or software engineering degree, the professional application of that degree is waaaaaay different. I'm often half-jokingly inclined to tell new hires to throw out everything they learned at school. The need to write the most efficient algorithm is certainly less of a concern in industry than in academia, and students can see firsthand why this is the case when they're interacting with seasoned professionals.
- They also have the opportunity to look at others' code in real-world scenarios. Most college projects start with a blank slate, so students don't have a chance to look at existing code for better or for worse. Given that developers are far more likely to read code than write it, this is extremely valuable experience.
- The student is exposed to a corporate atmosphere. My biggest surprise coming out of school was realizing companies - big and small - aren't anything like the representations I'd seen on TV, read about in the news, or heard from adults who'd been working for a significant period.
- They now have to deal with people across generations who are, roughly speaking, their peers. These people don't have the same general priority - i.e. getting the highest grade possible and graduating - so their motivations and, therefore, modes of interaction are completely different.
- Businesses solve open-ended problems intended to generate revenue. They're not always hard problems, but there isn't a known, right answer that leads to a better grade. This can be difficult to comprehend after a lifetime of academic exposure.
- Engineers at the company have the ability to sharpen their planning skills. In most cases, it's the engineers who recommend the projects for interns. Interns don't have enough context around current projects and often won't stick around long enough to gain that context, so they have to work on bounded projects that can be completed in 1-3 months. This often falls to the engineers to determine what small technical debt items they want to clear out of the way.
- Engineers at the company have the ability to work on their mentorship skills. Though the engineers can also do so with new college grads or junior hires, interns offer a more consistent influx of nascent talent. Mentoring a college grad is a longer-term project with someone who's expected to be a company peer for at least a couple of years. Mentoring interns is a process of always starting from scratch without the guarantee of building long-term relationships.
Interviewing is a notoriously difficult process. Ideally, companies and candidates would like to match up against each other for an extended period of time to determine if they're a good fit. This proves difficult because professional candidates have jobs and can't or (reasonably) don't want to burn vacation for a test run with a company that may or may not end up hiring them. Companies typically don't want to pay a prevailing wage for such a test run either, so there's even less incentive to participate in a trial run for the candidate.
As such, a lot of oddities develop that ostensibly work around the constraints of interviewing - like convening round after round of interview panels to determine how much tedium a candidate is willing to put up with and how much arcana they're willing to spew. Arguments abound as to whether this is more effective than 1 or 2 rounds, or if this is simply a test to gauge the candidate's level of masochism. I'm in the shorter is sweeter camp. Life abounds with risk. Quadrupling your effort to marginally improve that risk is not worth the cost for either party.
Internships do away with these divination attempts. They set up an 8-12 week trial period in which the company has a chance to evaluate the student's thinking processes, work ethic, and cultural fit. The student, in turn, has the opportunity to evaluate their potential peers, the work offered, and the general company culture.
Though there's a cost associated with the intern, it's still significantly cheaper than gambling on someone after an interview who is a bad hire. For the purpose of our analysis, let's assume that an SDE 1 is hired in at $100K (we're not accounting for benefits and other incidentals).
The theoretical salary for an intern at $40/hour would be $83,200 ($40 * 40 hours * 52 weeks). Assuming they're engaged for a 12-week internship, their total cost is $19,200. This means that you can take a gamble on 5 interns and generally come out ahead if only 1 of them works out.
I'm basing this on the assumption that it takes approximately a year to get rid of a bad hire at most companies that don't have a toxic culture. Even for a good fit at the company, it takes a junior engineer at least 6 months to become a consistent, contributing member of the team. If it doesn't work out, it requires at least another 6 months of coaching and performance documentation to assess whether the engineer is just struggling with the transition into the work world (something that's often quickly overlooked to the detriment of both the engineer and the company) or simply doesn't belong at the company.
Well, I've spent my entire post describing the value of an internship, but I hyperbolically mention in my title that it straddles the void between useless and valuable. So why could it be considered useless?
At least in the Tech world, the projects assigned to interns have a strong inclination to die on the vine and be unceremoniously dumped after the summer.
In other fields, it appears that interns are tasked with grunt work - the Slate article makes a reference to alphabetizing files - as a source of cheap (or unpaid) labor, but Tech is a bit different.
If there happen to be boring tasks for software engineering interns to address, I do think it's worthwhile to give them that work (this is in contrast to my advice for new college hires, who should be given interesting projects at the start). Most people at that stage are happy enough to have anything to do that's tangential to their future careers and, because their experience is timebound, they don't risk burnout.
However, if there are tasks related to something like, say, strict data entry, it's overkill to use someone with a computer science background to work on the task.
As a result, companies straddle the line between giving them a coding project that's useful and giving them something that matches their current abilities.
I wholeheartedly believe that most people can learn to code if given enough time and a method of instruction that complements their abilities. Training to be a professional software engineer, however, takes a lot more time and effort (and why I'll purse my lips and look away when someone who just took an intro Python course tells me 'coding is easy').
I don't want to oversell my profession, but the difference between learning to code and becoming a competent software engineer is like the difference between learning to read and becoming a professional writer. One is a basic prerequisite for the other.
Couple that with the fact (as with any industry) that school focuses on theory, while businesses employ tooling that often isn't included in that education and takes significant time to learn (Kubernetes being the first beast that comes to mind), and you can see that any stand-alone project faces massive hurdles.
This means at the end of the summer, the intern has a nice resume bullet point or two that differentiates them from everyone else who got a 4.0 in Algorithms, the engineers at the company can feel good about helping the intern craft those bullet points, and there's a lot of code that no one will ever use again.
I don't find this to be a problem - except in the rare cases where an interviewee makes a strenuous case about how their project to refactor the login functionality using design patterns saved the company $4 million. When I hear this, I employ my 'coding is easy' face and try to steer the interviewee to another topic to keep their ego from hitting me in the face.
But, on balance, I find internships to be valuable. Technical merits of the given projects aside, it's a great way to evaluate potential hires in a long-term, low-pressure environment that gives both the company and the intern good experience to utilize in future efforts.
Until next time, my human and robot friends.
Comments
Post a Comment