MY SUMMER AT ETSY

What is software engineering?

Describing my job as “software engineering” is like describing a song as “rock.” It could mean a million different things to a million different people. Plus, I hate lots of rock songs (think anything metal) while I love some others (The Rolling Stones).


The same goes for software engineering - it means a million different things to a million different people. There is frontend web development, backend web development, data engineering, systems engineering, infrastructure engineering, devops...the list is infinite and infinitely confusing. Coding is the only thing that ties everything together. But even the nature of how/what people code varies greatly from one software engineering discipline to another.


The most twisted part of the vague nature of “software engineering” is that most junior level job postings leave it at that - Junior Software Engineer. Under required skills, HR departments usually scribble every single technology that can be used to write code. Very rarely is there any indication on what the work actually entails until you get to senior level postings. And the bigger the company, the less likely you’ll know what you’re doing. Most don’t even match you to a team until after you go through the (rather treacherous) interview process and get an offer.


Team placement


Back in May, I nervously joined my first Google Meet call for my internship. I had no idea what team I was put on for the summer. When I signed the offer, I explicitly said I wanted to work on backend systems. Yet many young engineers post horror stories to online forums about getting on teams they absolutely hate, that don’t match their skill set at all.


I sat there thinking to myself, “If I get put on a web development team, I might actually lose my mind permanently.” And the vast majority of interns do get put onto web teams, which made it even more nerve-wracking. That’s not the software engineering I want to do, and that’s not the software engineer I want to become. I’m sorry, but customizing a checkout button’s styling that drives up GMS by 0.005 percent for online sales is not interesting to me.


I ended up getting placed on a team that gives consumers better product recommendations and experiences by serving up machine learning models. My initial feeling was excitement. Something interesting! No customizing buttons - in fact, nothing web related at all. 


But when I got access to the codebase and started to take on tasks, there was a definite learning curve. The application I worked on is written in Scala - a functional programming language oftentimes used in big data stacks. Scala is beautiful yet also can be very abstract and scary. Luckily my team was full of Scala aficionados - and the inner nerd in me quickly learned to appreciate that.


Knocking out tasks


Week after week I took on as much as I possibly could. My lack of domain and Scala knowledge dissipated quickly. The best way to learn something new as a software engineer is by jumping in headfirst. With my team’s patience, I learned a lot about designing scalable systems and infrastructure to support our services. Plus, I started writing cleaner and more modular code. There is something so satisfying about making things work, especially when it comes to software.


One of the first things I worked on was creating a way for our main application to read different types of file formats containing pre-compiled machine learning data. At startup time, the application loads many gigabytes of raw files into memory to be decompressed and processed. I gave this system flexibility by allowing for different file header configurations, expanding the type of data we could get from machine learning engineers.


I wrote a lot of software designed specifically for Google Cloud. For example, I wrote a script that creates lots of Google Compute Engine instances (not-so glorified virtual machines) to run a bunch of tests concurrently. This allowed our team to run load tests on our applications. Imagine what happens to your computer when too many things are open at once. The same thing happens to servers running in the cloud, and we had to make sure they wouldn’t freeze up under pressure.


One of the coolest parts of working as an engineer is that the feedback you get directly translates into action. Engineers review each others’ code constantly and give tips that directly translate into better software. When somebody wants to merge code into an existing codebase, they usually open a “pull request.” Pull requests were a super effective medium for our team to not only exchange helpful feedback, but also to collaborate and learn in a shared space. And as a newcomer, they made it much easier to see exactly what other people are working on.


In conclusion


Thankfully I really enjoy what I do. Writing code is fun to me. I guess that makes me a giant nerd. And if you take nothing else away from this, please just remember that not all software engineers are the same. There are so many unique skill sets that ultimately end up coming together to do some really cool stuff. Oh, and software engineers/CS majors can’t help you fix your printer. So please don’t ask.


Flesch Reading Ease: 57.9

Flesch-Kincaid Grade Level: 9

Passive Sentences (10.9%, although I couldn't find where they were...)

Comments

  1. Brighton, I love how you started your post through the rock song metaphor. This helps convey your point that there isn’t a “standard” definition for software engineering without making it sounds overly boring and dry. Your humor that persisted throughout the post also separates this blog from a Linkedin job description.

    However, since I have a limited knowledge about CS and data science, I believe it would be even easier for someone like me to understand if you could explain about the significance of creating a way to infer attributes of e-commerce listing and what it actually means. But overall, I really enjoy reading your blog post.

    ReplyDelete
  2. The rock song comparison was a really good one. I like that you made it clear that you were only interested in working on backend systems. It's nice that you were able to get a position that you enjoyed as well. I don't have much knowledge on software engineering so it would be great if you could elaborate a bit on what frontend means and why you despise it and define some of the more uncommon words. I enjoyed the sassiness at the end.

    ReplyDelete
  3. Hello Brighton, I enjoyed reading your memo. I think the tone you use is very interactive and fun! From the way you explained software engineering, I can tell there is a lot of opportunities in that industry. A little recommendation I have for you is that I think it would be helpful to divide some of your sections by bullets. Also, I believe one of the special requirements by professor Hansen is to make sure your passive sentence percentage is at 0%. Therefore, I would recommend rewording some of the passive sentences in your memo. Great Job!

    ReplyDelete
  4. I really enjoyed your conversational approach, and the humor throughout made it a pleasant read. It might be helpful for some of the jargon to be further explained to make the reading more approachable for a broader audience. Great job overall!

    ReplyDelete
  5. Brighton, I really liked how you started off with the comparison of software engineering to rock music. I think your conversational tone made it very easy to read. I enjoyed how you focused on your experience and perspective so it felt more like a story. The last line was really funny, great post!

    ReplyDelete
  6. I liked how this description of your internship read like a story because you described your experience linearly and also talked about how you improved over time. I also liked how you broke it down and made your job easy to understand as well as how funny this post was. I could tell how much you enjoy software engineering and that was the best part of this post!

    ReplyDelete
  7. Hi Brighton, I really thought this was a great post. My favorite part was when you explained that getting placed on the web development team would be a terrible time. I can definitely relate to the anxiety-provoking experience of being forced to do something you have no interest in (namely all my basic chemistry classes). Although, it would be helpful if you could spell out the abbreviations of unfamiliar words next time (such as GMS). Great job!

    ReplyDelete

Post a Comment

Popular posts from this blog

Post 1: Who you are matters