As the demand for software engineers continues to outpace the supply of Computer Science graduates from four-year universities, opportunities have opened for people from non-traditional software backgrounds to enter into the industry.
Coding bootcamp programs have opened across the country to help train people interested in entering the software industry. These programs range from 3 months to 1 year and focus on teaching software essentials to help their students become software apprentices at tech companies, with the ultimate goal being to convert into a full-time software engineer.
I’ve volunteered at several bootcamps in a variety of roles, including helping with curriculum development, giving technical talks, and mentoring students. At Pinterest I’ve also been on the industry-side of apprentice programs, managing and mentoring apprentices who we have hired from bootcamps.
In the course of mentoring and managing apprentices, I’ve found some themes around the challenges that apprentices face entering the industry, and I’m offering this advice with the hope that it will be helpful to apprentices who I won’t have the opportunity to work with directly…
Getting a Job
Getting your first job will be the hardest given the lack of experience. Once you have some experience getting a subsequent job in software is a lot easier. Additionally, while there’s a lot of demand for software engineers, there’s much less demand for software apprentices due to the amount of hands-on training and mentorship required for you to become a productive, full-time software engineer.
Given there are fewer apprentice opportunities, it’s really important for you to differentiate yourself during the application process.
Having looked at many apprentice resumes, the main thing I’ve noticed is how similar they seem to be. Many of the resumes list the same types of projects, typically a webapp that is a clone of some popular web service (e.g. Airbnb, Yelp), and it’s very difficult to differentiate them.
Additionally, a lot of apprentices are listing themselves as full-stack engineers. I think this may be the result of coding bootcamps that promise full-stack engineering training, but very few (if any) apprentices qualify as full-stack engineers.
Doing something as simple as choosing a focus area and listing it on your resume can help differentiate you from other software apprentices. It also helps me as a hiring manager to understand what area you want to develop in, which team to place you on, and who should be your mentor.
If you’re unsure, ask yourself if you would prefer building user interfaces (frontend) or moving data through an API into a database (backend).
If you list a GitHub on your resume, I will have a look at it. You can increase your chances of standing out by having a GitHub with some open source projects, especially if they have a decent README and a link to the service, website, or API where I can use the project live.
Your GitHub projects do not need to be super impressive or complicated. Some utility scripts, a Slack bot, or a personal website would all be great projects to have on your GitHub, and will help recruiters or hiring managers understand your skills and interests. Feel free to use some of my open source repositories as inspiration.
Generally speaking I’m not a fan of the way our industry does software engineering interviews. I find that the interview questions often aren’t representative of the type of work or problems you will encounter in your day-to-day. My best advice for you here is to read Cracking the Coding Interview, practice white boarding solutions, and conduct some mock interviews.
Converting to Full-Time
Once you land your apprenticeship (congrats!) you need to really focus on demonstrating you can perform the responsibilities as an entry-level software engineer. Your ability to convert to a full-time engineer will ultimately be based on how quickly you can learn and become productive, and I have a few tips that should be helpful.
Work with your manager to make sure you understand their expectations of you. This will be helpful for you, but it will also force your manager to define expectations in the event that they haven’t already done this. It will also help you to create a mutual understanding up front, and save you from learning that there was a misunderstanding from the beginning after several months.
Regularly communicating your status will help your team proactively identify when you get stuck on a problem and need some additional help. I’ve had apprentices stuck on a problem for a week that I could’ve easily helped them with, but I didn’t know to help because it was not communicated. I realize this may be difficult for you in the beginning, but it’s a necessary and instrumental part of working on a team of software engineers.
Ask for Help
I’ve had several apprentices tell me that they’re unsure about when to ask for help. When I asked why they’re unsure about when to ask the reasons have ranged from their mentor being too busy to imposter syndrome, but I think the real reason is they’re not sure about how to ask for help. Any mentor should be willing to help you with any problem as long as you…
- Clearly defined the problem.
- Tried a variety of solutions.
- Have run out of ideas for other solutions or aren’t sure which path forward is ideal.
You might phrase this like…
“I’m having trouble with X. I’ve tried A, B, and C, but none of those approaches are working. I was thinking I could try D, E, and F, but before I move forward I wanted to see if you had any thoughts.”
If you’ve put in the time and effort to understand the problem, can articulate the solutions you’ve tried and why they aren’t working, you should always feel comfortable with reaching out to your mentor for help on next steps.
Get in Touch
Hopefully you found this helpful, but if it doesn’t cover your situation and you want some advice please feel free to get in touch.