Blog post by ELP student Noah Finer (Computer Science| Class of 2022) Interning at Productiv

I’m writing this blog post as I’m adding the finishing touches to my project at Productiv, a SaaS management platform that left stealth in May. Some of these changes include removing redundant Vuex logic, utilizing nextTick to solve some issues with D3 rendering, and moving a few methods that updated component data to simply be computed methods for better scalability.

If you wonder what most of those words that I just typed meant, I wouldn’t be surprised; I wouldn’t have myself just three months ago. However, without a fundamental understanding of what they meant, I would not be able to develop my feature to its fullest.

And my feature is not something I can blow off. I’m working on a way to compare SaaS app usage through venn diagrams, a visualization that’s used as a selling point for clients and displayed on the front page of our public website. It’s something that’s both difficult to create in the first place and even harder to do well

How did I get to the place where I’m having extremely high impact on a startup, its customers, and its future? It’s honestly not through black magic or pure genius.

15% from school

Some people say that college is not necessary to be successful and find a job in the tech world, and there’s a decent debate around this. While for some situations this may be the case, it doesn’t mean that college offers nothing. In fact, college helped in both ways I expected and ways that surprised me.

Getting my internship in the first place was where Michigan was extremely helpful. In fact, I found out about Productiv when two employees set up a table in the Duderstadt! Additionally, during the technical interviews, EECS 281 provided invaluable help by preparing me to explain necessary algorithmic concepts and solve questions I got in the interview.

However, during the internship itself, many things I learned in college applied in surprising ways. When I had to write tests for my Vue components, I was brought back to the countless 2 a.m. nights I spent perfecting hundreds of lines of test cases in EECS 280. When one of my endpoints was slow, I remembered optimization strategies from EECS 281 and could actually apply them. When I was asked to debug using VSCode, I had no problem after going through just that in my classes.

And most surprisingly, I had to actually pull out my notes from discrete math (which is not even a programming class!) to remember inclusive and exclusive adding for venn diagram math.

35% from projects

Every part of my project was done through JavaScript. Michigan does not teach JavaScript (at least not until upper level CS courses). Instead, I taught myself everything I know about web development, design, and syntax.

How did I teach myself all of this stuff? In high school, I spent many late nights and weekends coding web games for fun, freelancing web design to both get extra money and try out new designs and working on websites for major student organizations.

In college, I built upon all this with even more side projects, like a peer-to-peer delivery phone app built in React Native, a social media analytics hackathon project, and even taking ENGR 100 classwork above and beyond what was required.

50% on the job

It took me a solid week to figure out what a “provisioned user” was, despite this being an essential concept for Productiv’s core. It took me an hour to create my first, extremely basic Vue component (something I can do in a minute now). One of my happiest moments was getting my first, extremely basic addition not breaking on my computer, something that took four frustrating days to accomplish. There is no way I could have learned any of this outside of an internship.

Now, I have no trouble when making major feature changes multiple times a week (and at some points daily!). I understand most of what other full-time employees talk about during standups and our weekly demos. And, I got most of the way here by learning on the job.

The reasons internships exist are for you to learn. When else will you have the time to practice programming consistently throughout the week? When else will you have people reading all of your code and providing tons of comments? Where else will you be sitting around co-workers who can answer any question you throw at them? And, when else will you be forced to learn as many new technologies as possible?

By stepping into Productiv, I signed up for an intense bootcamp. I learned many technologies I hadn’t worked with very much before, including NodeJS, Vue, and Jest. I mastered making cards in JIRA and began organizing my summer to-do in an agile way. And, while it was important to have JavaScript and web development experience beforehand, I’m walking out of this internship prepared to take on far more complicated projects after having worked so extensively with these current tools.

What can you do for an awesome internship?

If you’re intimidated by hearing about these crazy projects that interns are doing, I was in that boat as well. I was lucky to have had multiple years of past web development experience under my belt and while that definitely helped, most of what I learned was on the job itself.

Internships are meant for you to learn about how collaboration, coding, and product work inside of industry. They aren’t places for coding geniuses to show off how awesome they are, but instead where curious students go to learn valuable new skill sets, making something awesome in the meantime. When someone walks out of an internship seeming like a genius, a lot of that was probably due to how well they learned at their internship itself.

So, don’t stress. If you want to do something to be successful at an internship, practice mastering the skill of learning.