Three Things I Learned In My Engineering Internship

I knew I had a lot to learn about how a Web app works, but I never imagined that it involved as much as it does.

betterment mobile illustration with floating parts

This post is part of series of articles written by Betterment’s 2013 summer interns. This summer, I had the privilege of participating in a software engineering internship with Betterment. My assignment was to give everyone in the office a visual snapshot of how the company is doing. This would be accomplished through the use of dashboards displayed on TV screens inside the office. We wanted to highlight metrics such as net deposits, assets under management, and conversions from visitors to the site into Betterment customers.

Coming in with experience in only Java, this was definitely a challenging project to tackle. Now that the summer has ended, I have accomplished my goal — I created five dashboards displaying charts, numbers and maps with valuable data that everyone can see.

From this experience, there are three very important things that I’ve learned.

1. School has taught me nothing.

Maybe this is a bit of an exaggeration. As a computer science major, school has taught me how to code in Java, and maybe some of the theoretical stuff that I’ve had drilled into my head will come in handy at some point in my life. However, writing mathematical proofs and small Java codes that complete standalone tasks seems pretty pointless now that I’ve experienced the real world of software development.

There are so many links in the development chain, and what I have learned in school barely covers half of a link. Not to mention almost everything else I needed I was able to learn through Google, which makes me wonder if I could have learned Java through the Internet in a few weeks rather than spending the past two years in school? Needless to say I definitely wish I could stay and work with Betterment rather than going back to school next week, but today’s society is under the strange impression that a college degree is important, so I guess I’ll finish it out.

2. The structure of a Web app is a lot more complex than what the user sees on the page.

Before I began my internship, I had never worked on a Web app before. I knew I had a lot to learn about how it all works, but I never imagined that it involved as much as it does. There’s a database on the bottom, then the backend code is layered on top of that — and then that is broken up into multiple levels in order to keep different kinds of logic separate. And on top of all that, is the front end code.

All of it is kept together with frameworks that allow the different pieces to communicate with each other, and there are servers that the app needs to run on.This was extremely eye-opening for me, and I’m so glad that the engineers at Betterment spent time during my first week getting me up to speed on all of it. I was able to build my dashboards as a Web app, so I not only needed to understand this structure, but I needed to implement it as well.

3. A software engineer needs to be multilingual.

I’m not talking about spoken languages. The different pieces in the structure of a web app are usually written in different computer languages. Being that Java only covered a small piece of this structure, I had a lot of languages to learn. Accessing the database requires knowledge of SQL, a lot of scripts are written in Python, front end structure and design is written in HTML and CSS, and front end animation is written in javascript. In order to effectively work on multiple pieces of an app, an engineer needs to be fluent in multiple different languages. Thankfully, the Internet makes learning languages quick and easy, and I was able to pick up on so many new languages throughout the summer.

My experience this summer has been invaluable, and I will be returning to school with a brand new view on software development and what a career in this awesome field will be like.