For many computer science/software engineering college students, the summer software internship represents a rite of passage. I interned the summer before my senior year of college. Many of my friends and fellow majors did as well. Estimates can be hard to find, but broadly put, the nationwide average of computer science students who attain internships is between 25-45%, with numbers generally being much higher as you move up the college rankings list.
Students undoubtedly view the experience as an emerging, unspoken requirement for good entry-level positions as companies continue to seek the hungriest and most talented graduates. As it became clear to me back in November that we’d be bringing on engineering interns of our own this summer, I took it as an opportunity to reflect upon my own past internship experience and imagine what a software engineering intern program could look like at DOCSI today and into the future.
Reflecting
I never excelled at job hunting. Drafting a resume always felt unnatural; like an oversimplification of myself. I wrote more cover letters during my senior year of college than essays during all four years put together. I don’t know the exact results but I think it’s fair to say that I flunked the vast majority of the coding interviews I attempted.
As you could probably guess from that, I never came close to interning with any of the big tech companies or even with some of the smaller, tech-forward companies here in Minnesota. My summer didn’t include fancy campuses, complex algorithmic problems, or even the chance to work with others my age (I was the only intern on a fairly isolated team). I recall working on two major projects that summer: a renaming of the core product my team worked on (tedious text search and replace) and a consolidation and upgrade of the many, many jQuery versions scattered throughout the application. While the latter task certainly hardened my testing and debugging skills and exposed me to a mature codebase for the first time in my life, neither project brought the level of fulfillment I desired. I probably learned more about Javascript quirks that summer than I have throughout the rest of my career but I couldn’t feel the impact I’d made. I couldn’t see my work reflected in the experience of our users or even in charts of performance or key metrics and I wonder if the company I worked for found it valuable or not.
I don’t say any of this to disparage the company or team I worked with that summer. I obviously benefited from a positive and educational few months that helped me to align myself with my goals for the next few years. I am reflecting on this time purely to give myself a reference point from which to imagine the type of experiences I can create for DOCSI’s engineering interns. It helps me identify opportunities to hopefully enhance and elevate the entire process for both students and companies.
Imagining
I should take a moment to note that this summer will not be the first time I’ve welcomed engineering interns at DOCSI. However, it feels different this time for a couple of reasons. Firstly, we’ve hired more than one intern for the first time. This might sound like a small difference but as any good developer knows, going from zero to two instead of zero to one can sometimes present a whole new host of challenges. Secondly, DOCSI is more mature now than when we previously hosted interns, both in terms of company and product. As we begin to move from building processes for the first time to solidifying processes across our organization, it feels like the right time to put more serious effort towards laying the foundation of our internship program for the future. With that in mind, here are some thoughts at the forefront of my mind as I’m planning for this summer:
First, I don’t believe in assigning interns “grunt work." I acknowledge that delegating some less-than-glamorous tasks (bug fixing, refactoring, data processing, etc.) to new members of the team is unavoidable. This type of work may serve an important role in evaluating ingenuity, attention to detail, tenacity, and similar skills. However, the majority of this evaluation should occur during the interview process and by the time new employees start, you should already feel confident they can hit the ground running. At the end of it all, delegating all of your “grunt work” to interns doesn’t lead to a valuable experience for either side. As I look to welcome our two software engineering interns in a few weeks, I do indeed have a backlog of smaller tasks queued up to help expose them to our system, but, importantly, I’m also preparing larger projects they can either take part in or even lead themselves.
The largest reason we even began our intern search back in November is rooted in my belief that an early stage software startup presents one of the best opportunities for a college student to gain experience. However, that belief only becomes reality when the experience is well-aligned and properly planned. Succeeding on this front requires continuous communication and a willingness to promptly re-assign intern responsibilities when necessary. It’s my hope that no DOCSI engineering intern goes more than a week working on a project incompatible with their goals without their mentor (in this case, me) knowing it. With the total length of a summer internship being so short, the decision about whether or not to pivot an intern’s work must happen quickly. But what type of organization is more experienced at pivoting priorities than an early stage startup?
Lastly, learning and growth must be at the core of any internship experience. In my role, I’m learning at a faster pace today than at any other point in my career. This learning is largely driven by the sheer amount of work I have to accomplish on any given day, but the most valuable lessons always arise from the moments of struggle and failure. Whether it’s an unexpected bug, a new feature that didn’t have the impact our team hoped, or even a lost customer, it’s in our nature as a startup to quickly identify the underlying problem, fix it, and continue charging forward. It’s this mentality I hope to instill into our engineering internship program. A small (perhaps unserious) part of me actually hopes that our interns this summer will, at some point, write and deploy code that breaks a part of our production system. I am hard-pressed to imagine a better learning experience than working alongside a lead engineer to fix something you’ve broken and identify the efforts required to keep it from happening again. It certainly beats toiling away for a summer on an experimental project that might never see the light of day. Put simply, I hope DOCSI’s interns fail often, learn much, and falter never.
Challenging
I acknowledge that I write this post from a unique position. It’s quite uncommon in our industry for someone to have the opportunity to create an internship program from the ground up, while not even being eight years removed from their own internship experience. Perhaps as a result of this, I feel compelled to challenge myself and the industry at large to create better internship experiences for aspiring software engineers, especially since so many of us look for students with internships when making our entry-level hires.
I don’t expect to get everything right this summer, but I’m a firm believer in setting lofty goals and continuously pushing to achieve them. We should require ourselves to cultivate supportive environments that empower the best students to push their creativity and ingenuity to the absolute limits. We should listen more and prescribe less. We should connect students with the best possible mentors and they should be enabled to incentivize exploration and discovery. If interns can learn to be better engineers from working with us, then we can learn how to create better teams, products, and organizations from them.
Connor is DOCSI's Director of Engineering and Co-Founder.