At the beginning of June on a summer morning that wasn’t that summery, I hopped on BART and headed to my first day as an intern at Apteligent. I spent the first week touring the office with my mentor and being introduced to everyone, setting up my workspace, and learning about the technologies being used on both the new and old front-end.

When I heard “front-end”, I very naively thought, “oh, so some HTML/CSS and a bit of Javascript here and there to get some animations working, maybe a little bit of AJAX work to talk to server-side?” Wrong. Very wrong.

Modern front-end development is 80% Javascript, 20% HTML/CSS (or SASS, or LESS, or other CSS extension of your choice). Javascript has an extensive number of frameworks and libraries that exist or are being developed, not to mention different versions of JS itself: Are you using ES5, ES6, or ES2017? (if you’re reading this and you say ES2017, you’re either in the future or lying.), So saying that one knows Javascript really does not mean diddly-squat. Once I started digging through our front-end code and seeing stuff like this:

Angle-brackets in Javascript? A function returning pure HTML as not a string? What has the world come to?!

I realized two things: one, that I knew nothing, and two, I was in for a ride.

While I’ve certainly learned a lot at school, there was a lot that I needed to learn on the job. Though I’ve worked with Javascript in the past, most classes I’ve taken were taught in Python, so I needed a week or so to refresh my Javascript knowledge. At university, you become well-versed in the broad topics: what are the best coding practices, how to write efficient algorithms, or what makes good software systems. That’s very useful for general software, and turned out to be useful to understand the overall structure of Apteligent (the SDK, data analysis and collection, and all the other pieces that keep the tool itself running smoothly). However, front-end development, particularly for web development, has some challenges that aren’t covered in general CS courses: working with the DOM, ensuring cross-browser consistency in function and appearance, and testing Javascript code that uses some of the newest frameworks available, which don’t have any precedents or documentation on how to test.

Beyond that though, the most important skill I learned was how to work on a team. At Apteligent, I wasn’t treated like an intern. I was a member of the team, working on the same code and projects as my manager, my mentor and other front-end engineers, submitting pull requests and reviewing others’ code on Github, and getting my work deployed to production. I met with the team and reported my progress daily at stand-up meetings; I took on tasks at bi-weekly sprint planning meetings–I played board games with my coworkers Fridays after work; I went out for drinks with my team (excited to finally be 21!). I learned that industry is significantly messier than academia: there’s often more than one correct answer, if there’s an answer at all; there are rough deadlines, but ultimately you have to decide how much time you’re going to put into a task, weighing its (unexpected) difficulty against its benefits to the team and the customers; your manager is not a judge on your performance, she is there to help and answer questions no matter how silly they might seem to you (chances are, they’re not that silly).

This summer has gone faster than any in my recent memory, which is both positive and negative. Positively, it feels so fast because it’s been very enjoyable: I’ve had the pleasure of working on some awesome projects and technologies with an amazing team and learning so much along the way. Negatively though, I feel like there’s so much more I could contribute and want to contribute to Apteligent. I’ll miss the tasty free lunches and nearly-endless snack bar, I’ll miss the challenge of working with the latest Javascript libraries, and I’ll miss all the awesome people I’ve gotten to work with over these last 11 weeks.