The inspiration for this blog post came from the experience of two interns at Slack, which they named How to Have an Impactful Internship... Virtually.

My initial reaction was to think how I never had any impacful internship before, back in 2011-2012 when I attempted Computer Science for the first time. At that time, I got an "internship" (more like cheap intern labor) in a web shop that dealt with PHP and Wordpress (back in the day, yes...). I never got too far away with PHP, as I was basically working with institutional websites using "Awfulpress" as the "backend". I was also the only "dev" in that place, something I posted about before as a big, huge no-no option. In the end I dropped out of Computer Science and started hating on PHP (which still lasts, but for good reasons).

Today I was just looking at some blogs to follow and I stumbled upon the internship experience of Jake and Nikita at Slack. What follows is a summary of what a true internship looks like.

It's pandemic time and their experience was totally virtual: no moving to another city; no commuting; no walking to the office (amen? keep reading). First week consisted of setting computers, learning the new language (Hack), learning about their project and getting to know people. They also had Zoom calls with their mentors and with the senior manager of the Product Security Foundations (PSF) team, who put up together documents containing relevant information about Slack, PSF, their roles as interns, what to expect for the summer and what was expected from them.

Pause for this true wisdom: a document stating their roles as interns, what to expect for the summer and what was expected from them. That is what should be expected from any decent internship that is not hiding as cheap labor exploitation. The document guided their entire summer.

Their project was to develop a new library to deal with XSS attacks. The Slack team already had a solution for that, but the interns job was to come up with a better solution. Half their summer was to learn how to sanitize HTML and the other half to how it should be implemented. Communication was key: they had to know (or learn) how to ask for help, how to communicate clearly, effectively and concisely. According to them,

When messaging back and forth over Slack, we had to learn how to be direct with what we were saying without skimping out on important details.

Some tips for clear and effective communication include removing fluff, using the proper jargon, asking specific questions, and linking important information (such as other Slack posts, repos, or websites).

They had to come up with a plan to organize their work, since they were both on different parts of their country. Their plan consisted on

  • what they needed to do;

  • how to go about implementing classes or functions;

  • and what was going wrong while debugging.

Despite working in a virtual environment, they had a significant impact at Slack, because their work was used in the code base. It was not a "throw away project once the interns leave" type of a project. It was a real project, real requirements, constraints and a deadline. That might have given the interns a pretty good idea on what it means to work in a professional environment, specially one with a fully distributed team.

A good lesson to take from their experience, in their own words:

Improving the effectiveness of your communication is not only important in a virtual world, but it’s also important in face-to-face communication.