3 answers

Which software team should I pick for my summer internship?

Updated Providence, Rhode Island

I've been using CareerVillage ever since high school to get help, and I feel like I'm finally close to the finish line.. I'm a junior in college majoring in Computer Science at a well-known school. I accepted a backend software engineering internship for this summer, and I was recently sent a list of teams that I could join. I don't have any strong career goals in mind for what I want to get out of this internship beyond being as prepared as possible for a career in software development, so I'm not sure what to pick or how to weigh my options. However, I know that this internship is a big deal because it's my last one before I graduate and get a job. For context, I am currently comfortable with Python, Java, Javascript, Node, git, and Tensorflow, but I'm definitely open to learning a lot more! #software #software-engineer #software-development #technology

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.

Option #3: IoT. Tech Stack comprises of- Python, Scala, Golang, Java, Javascript, Reactjs, Nodejs, Linux, Windows, Docker, Kubernetes, AWS, Jenkins, Git.
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
● Full stack application development using JavaScript, HTML, CSS, ReactJS and REST APIs
● 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!

3 answers

Conor’s Answer

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:

  • Try to talk to the managers for each and ideally meet them to avoid picking a team based on the technologies they're using.
  • Pick your internship area based on the experience of the manager, your perception of how good they are at it and how well you'd get along with them, and then meeting the rest of the team if possible.
  • If you can't talk on the phone / visit in person, then try to get their names plus other teammates and find out what you can.
  • It might sound unusual to do and there may not be much flexibility depending on how big of a company but I think they'll appreciate thoughtfulness in you picking your area based on your manager and the rest of the team rather than the tech. Since again all have good prospects for careers afterward plus with that several months you could always do something different after your first year on the job so it'd be an easy 'mistake' to fix if you found it boring.
Updated
+1 on Conor's comment about reaching out to the teams if possible. At the end of the internship, you'll be looking for either an offer or glowing letters of recommendation. Who you get along with best could be a big factor in that. Is it possible to connect with a couple of folks on those teams before having to make a decision?

Jared’s Answer

Updated Palo Alto, California

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 recommends the following next steps:

  • Search your school's alumni directory to find someone who works at your summer internship's company, to ask them about what the reputations are of each team.
  • Ask the recruiter to tell you about the reputations of each team.
  • Reach out to anyone you interviewed with to ask about the reputations of each team.
  • Complete a free Kubernetes tutorial over the next month, to be better prepared for your summer internship (it's one of the technologies listed in all three teams which you didn't list in your personal skills inventory)
  • Complete a free Docker tutorial (it's the other technology listed in all three that you don't currently know)

Jeffrey’s Answer

Updated El Segundo, California

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:

  • You may want to investigate an internship at AT&T.