Which software team should I pick for my summer internship?
Option #1: Performance Engineering. Tech Stack comprises of- Python, Ansible, golang, Java, reactjs, nodejs, redis, Linux, Docker, Kubernetes, Docker Swarm, AWS, Tensorflow, Jenkins 2.0, git.
What You'll Get To Do:
● Implement complicated performance benchmarks based on customer usage pattern as well as internal requirement
● Learn, use and improve scalable automation framework on Cloud (AWS)
● Contributing to and maintaining our internal tools in the Open Source Community .
● Work on complex CI/CD pipelines.
● Work on Docker, Docker containers, container orchestration, microservices.
● Applying Machine Learning to scale and monitor our Infrastructure.
● Developing tools to help increase productivity and efficiency of engineers.
Option #2: Cloud/Data. Tech Stack comprises of- Golang, Shell, Python, C. The technologies we work with on a daily basis are Kubernetes, Golang, Docker & AWS.
What You'll Get To Do:
● Implement Back-end API's and microservices for data processing and real-time analytics.
● Build scalable systems on AWS
● Apply Machine Learning Algorithms to solve complex problems related to Predictive Maintenance of IoT devices.
● Work on complex CI/CD pipelines.
● Write automated tests for the software you build.
● Collaborate with cross functional engineering teams to make delightful experiences for the user.
Those are my options. Thank you so much in advance for your advice!
Jared ChungCareerVillage.org Team
Jared’s Answer, CareerVillage.org Team
You can't go wrong here. Congratulations on being in the fantastic situation of having to decide between three great options. If you can get information about what projects you'd be working on, how well you get along with the people you would be working with, or what the reputation is for each group, make your decision based on those factors. If you cannot get any information about those, then you are left with deciding based on the descriptions alone. And given what I've heard from you about your interests primarily lying in backend development, I think that points very slightly in the direction of Option #1 first, followed by #3, followed by #2. Here's why...
- Option #1: This one the most narrowly defined ✅, is clearly backend focused ✅, and provides commonly generalizable skills ✅. Because it's (relatively) narrowly defined, it's slightly less likely that you'll end up with non-core busy work (always a concern with internships). The only downside I see to this one is if thinking about servers and networks isn't something you are interested in. If your concept of "backend" stops once you start talking about servers, then this might be too fundamental for you.
- Option #3: This one covers a lot of backend functionality ✅, and also has some overlap with programming skills you already have ✅. It's a quite good option. The only concern on this one I have is that the description is so broad that it does make it hard to predict what kind of project you might be working on ⚠️. They list HTML/CSS as technologies they work with, and you really wouldn't want to get pigeon-holed into a front-end project when you're really hoping to focus on the backend. But that's something you can partially control by being very clear from the onset that you're interested in backend work, not front-end work.
- Option #2: While this is still a very good option, it wasn't clear to me if this was a proprietary technology they were focused on, and if so, it's not 100% clear how generalizable the skills might be outside of the company ⚠️. So, if you were to then go out to get a new job after the internship (post-graduation) you might end up in a place where you are selling your fundamental skills, rather than selling your skills + knowledge. To be clear: I'm not saying the skills here are not generalizable -- I'm just saying I can't tell if they are or not.
To reiterate, I only recommend this prioritization ^ if you are unable to gather the information I listed in my first paragraph.
Source: I lead our product and tech team, and hire our programmers and contractors at CareerVillage.org, so I'm speaking to some extent from my experience as a manager. But I cannot speak directly to having a backend programming internship, because I've never had one of those.
Jared, CareerVillage.org Team recommends the following next steps:
I would answer this question in a different way. I think all three are fine options and you will gain a good skillset with the several months. However, the difference between one versus the other (a few months worth of work) will not be super important in the grand scheme of things.
Rather, if you are considering joining that company afterward, pick the team you get along with the most and the person who you think is the best manager.
If you're unsure whether you'll join the company, but want to work in an area, then I might pick based on technology choices. This will be a much more important decision (your first job) than an internship area at a company (let alone an internship company) then.
Source: I've worked at Uber for 4.5+ yrs now. I'm technically a TPM manager in engineering, so not an active engineer. But I signed when our eng org was ~150 (it's over 3k now) and started off in data science, where at the time there was no hiring distinction between the two roles. So I've seen a lot of progressions (or lateral moves) of many dozens of software engineer friends over the years as well as working directly with them. Which includes people who went from new grads to senior engineers and even into management in one case, over 4 yrs.
Conor recommends the following next steps:
Our team of developers and architects recommend pursuing option #3. It includes all the skills needed for automation and machine learning. Our team are using all the technologies described in Option #1 and Option #2.
Jeffrey recommends the following next steps: