Post-Bootcamp Software Engineering Job Types and How to Hopefully Get One.
But Seriously, Is This All a Pipe Dream?
I’m currently in the post-bootcamp interview phase, the 3–6-month time period of “job prep” that most bootcamps build into their timelines.
After completing Holberton Year 1 and going through two months of job prep, I’ve realized a few things that seem worth sharing with other job searchers.
This post is about how to maximize your time and output post-bootcamp to get one of two types of jobs in the San Francisco Bay Area as a software engineer: backend engineer, or full-stack engineer.
Before starting, I’d like to clarify one thing. Holberton is much more than a typical bootcamp. From a technical perspective, Holberton is a 2 year non-traditional software engineering school that not only focuses on web application development, but also provides students with opportunities to build projects in various technologies such as C and Python.
Other computer science topics include debugging servers in Linux, deploying to Cloud Services such as AWS, rewriting the shell program in C, creating backend APIs in Django, and many more projects.
First, some big assumptions that drive this post: you want to stay in the Bay Area, you do not have a CS degree, but attended a bootcamp, and you want to get the best-paying job in the shortest amount of time with the least amount of banging your head against the wall.
There are two types of jobs for first-time, non-traditional (non-computer science degree-holding) job candidates who want an entry job as a software engineer, full-stack engineer or backend engineer:
- Domain-Specific Companies — Full-Stack web application jobs for candidates who graduate bootcamps or have 0–3 years’ experience. Typically, these give preference for candidates with tech-specific domain knowledge. Example: a startup building XYZ product that prefers an engineer with Ruby and Rails, React, Postgres and AWS EC2 knowledge. Think of a startup that’s less than 3 years old.
- Big software engineering companies — Heavy focus on algorithms, operating systems, system design, and discrete math concepts. Think of Facebook, Amazon, Netflix, Google, Microsoft, Airbnb, Twitter, Apple, Reddit.
Yes, there are absolutely more categories of engineering jobs for software companies such as site reliability engineers, firmware engineers, operating system engineers, XYZ engineers,
but this is about my post graduating experience from one of these non-traditional full-stack software engineering schools as someone who is maximizing their time/output on specific subjects to get a software engineering job as a backend, full-stack or general software engineer at a startup or a big company in the San Francisco Bay Area.
My Personal Situation
I’m 30-years-old, married a native Californian who wants to stay here, I have previous experience in tech sales and owning a business I exited from, with a degree from an average out-of-state school (UCF. Go Knights!),
and privileged enough to attend a 1 year, full-time software engineering bootcamp for the past year and job prep for the next 3–6 months, have a full-time working wife who kicks ass and gets shit done, while I change careers. I’m never changing careers again. She might kill me. Yay!
For people who are job prepping part-time because they are currently working, have kids or any other responsibility that is preventing them from a full-time study plan, plan on doubling the time for job prep, 3–12 months or more.
In order to make this career transition worth it for my family and enable us to stay in the ever more expensive Bay Area, my goal is to get a software engineering job at one of the big companies or a full-stack or backend engineering role at a startup in the San Francisco Bay Area with compensation packages similar to levels from Linkedin Salary Tool or Levels.fyi for the top 1% of tech companies. One can dream, right?
Average Base-line salary expectations for Software Engineers in the San Francisco Bay Area
Top 1% Total Compensation Packages for Software Engineers in the San Francisco Bay Area.
But Seriously, Is This All a Pipe Dream?
If you don’t have a huge network of friends to refer you to their companies (the quickest way to get a job… Think of Fastrack at Disney World for this Orlando kid; definite tap whatever network you do have first) or you are terribly unlucky and get a verbal job offer one day,
then three hours later get a call back from the hiring manager about a company-wide hiring freeze and get the offer postposed (me at the end of 2018), you are left deciding how you should spend your time job prepping for this entry-level job you are so eager to obtain.
Based on my understanding of job types above, you really only have two options, domain-specific knowledge companies, think knowledge about a particular stack; i.e., MEAN stack (MongoDB, Angular, Express and Nodejs.
But who really codes frontend applications in Angular these days? Jk Jk) and computer science fundamental companies, companies that heavily value Algorithms and Data Structures, fundamental OS concepts and typically favor specific computer languages like C/C++, Java, Go, basically the opposite of what bootcamps teach you.
I got lucky though. Holberton has 3–5 months of C programming projects in their curriculum.
Based on my experience of applying to over 142 companies in a two-month period, domain-specific knowledge companies can have an interview process like this:
- Initial phone screen (Usually with a recruiter, possible team lead, or co-founder depending on the company. They want to make sure you are who you say you are, have some communication skills, but mostly verify that your abilities match up with the needs of the job)
- OR as a first step, they give you a coding challenge. I’ve probably done a dozen or more coding challenges.
- OR as a first step, they give you a homework assignment. The best part about this initial interview step is that once you’ve finished the challenge, you can use it as a project on the resume. Two birds, one stone. Here are some of the challenges I’ve received: analyze this dataset, write this python script, debug this docker container/server, build a simple backend service, build a react front end that pings this API.
- Next steps could vary depending on the company. I’ve had a phone call with the hiring manager, a phone call with the co-founder, or an on-site interview process where you interview with up to six different people with a follow-up call with the CEO of the company.
- They all vary but a few things are constant. They want to observe your thought process when you solve problems, see if you are a good fit for the team, and verify that you can actually program in that specific tech stack by doing algorithm and data structure problems.
- Offer or Rejection Letter — So far I’ve gotten over a dozen coding challenges, seven coding homework assignments, six follow-ups either onsite or webinars/google hangouts and 3 offers. Percentage of final rounds were 6/142 = 4.22% and offer letters are 3/142 = 2.11%. Out of the final rounds I average half either offer or rejection. Decided to decline the three other offers.
Computer Science Fundamentals Companies
I have yet to get an interview at one of the big companies, so I can’t speak from experience, but after reviewing company websites, blog posts, or simply google searching “Software Engineering Interview Prep large companies,” a typical breakdown is:
- Initial phone screen
- Initial coding interview with an engineer. Something like: solve XYZ algorithm problem in any type of coding environment. Could be an editor, google docs, whatever.
- On-site interview, typically three to five 20–45min white-boarding interviews that focus on Algorithm and Data Structure, OS or Math questions. Specific questions depend on the type of company.
- Some type of hiring committee review about your application that is outside your control
- Offer or Rejection Letter
Check out chapters I to VIII in Gayle Laakmann McDowell book, Cracking the Coding Interview for the specific interview process used by certain companies.
Typical time frames between steps vary by company. I’ve experienced interview cycles that last one week, four weeks and sometimes up to 2–3 months. It all really depends on the company and their timeframe.
How to Prep for these interviews?
What people don’t tell you is how to optimize your time to hedge for those two types of companies. How do you optimize your time to gain the most amount of knowledge within the least amount of time to get a job in the Bay Area?
Even within the domain-specific knowledge companies, you want to increase your chances of getting hired by knowing the tech stack or at least showing aptitude to learn quickly, so you’ll have to make a decision as to what other languages and web app frameworks you want to learn, other than the one you learned at your bootcamp.
Okay, so you’ve built that cool app with XYZ framework, now what? Should I build this other app in XYZ framework? I’ve observed the rise of Ruby on Rails, Nodejs and React for front-end and web application frameworks specifically for startup companies. I don’t have data to support this other than my observations of being in the Bay Area for now 6 years, reading yearly trends on tech stacks and doing job searching on Angel.co and looking at the totals return based on search criteria. Ruby and Nodejs typically dominate the small to medium size start-up domain, specifically the Ruby on Rails and Express frameworks. In my opinion, if you have any higher level computer programming language experience, it’s easier to learn another higher level language.
Yes, there are caveats. This is a snapshot of Angel.co in January 2019, only one month out of the year, which doesn’t account for all hiring trends across the year.
If someone out there wants to provide hiring data for multiple based on specific web application frameworks, please add it to the comments. My intention here is to show quickly show you that there are far more Ruby (Ruby on Rails) and Nodejs (Express) jobs for startups then Python (Django, Flask) jobs.
The reason I didn’t include Python as a filter is because it would pick up lots of other data analysis type of roles which isn’t part of the scope of this blog post.
Okay, so what about front-end frameworks? Angular, Vue, React have been at it for years. I think if you only want to learn one framework for front-end technologies for full-stack software engineering roles, learn React. I did the same Angel.co snapshot of filtering jobs by descriptions for roles in the Bay Area.
For domain-specific companies, you should have at least built one web application with:
- Ruby on Rails or Express framework
- Hosted on GCP or AWS (yes, Heroku is still cool but have one at least on AWS or GCP)
- With a Postgres or MongoDB database
- Is live on the internet, meaning has some way to access the web application via an IP address or a valid URL.
- Bonus points for HTTPS protocol enabled wep apps or has a load balancer with a primary/replica DB setup and has test cases for the application.
- Even more bonus points if you can demonstrate that your product has gone through a product iteration from customer feedback. Think of an MVP of a product for solving a specific problem that people would pay for, which are the beginnings of a startup.
- Super Bonus points if you create a CD/CI pipeline integration.
Domain-specific companies judge candidates based on technical potential, willingness to learn their tech stack quickly to start adding value to XYZ product and how well you’ll fit within the team.
Building a web application in that specific tech stack in a limited amount of time demonstrates two out of the three things they look for in a qualified candidate.
- Figure it out. Hopefully, your bootcamp taught you how to do that. (Just trying to mimic how it would work at these types of companies)
Computer Science Fundamental Companies
I think one of the most overlooked areas of studying for these types of companies is the way you prepare for them. 70–80% of the questions are going to be data structures and algorithms.
Those questions are designed to show how you think about solving the problem than actually solving the problem. Yes, solving the problem is the end goal, but you won’t get hired if you don’t talk out loud about your thought process.
The trick is to practice solving problems from HackerRank, LeetCode, Interview Cake, XYZ interview prep company as if you were interviewing live, with real people! When you work through the problems in the Cracking the Coding Interview book, solve them on the whiteboard and talk out loud, even if you feel like it’s talking to yourself.
Even better, go to meet-ups that focus on interview prep and mimic what a real job interview is going to feel like or grab a few of your friends from your bootcamp and take turns asking questions and solving problems.
Below are my favorite resources that I’m currently working through. Props to the team at Teachyourselfcs.com.
- Pramp (Great practice for what it’s like to be in a real interview.)
- TripleBtye (Go through their process every 4 months to get accepted into their program. These are typically harder questions. Check out this read about CS vs Bootcamp grads on job prospects.)
Algorithm Problem Solving
- Skiena Algorithm Design Manual, Book and corresponding video lectures.
- Cracking the Code Interview, Book (If there was one interview prep book to go through, do this one)
- HackerRank, Website
- LeetCode, Website
So, what now?
“Okay, thanks, Nick. Now I have all these resources. What order should I review them in? Should I apply for jobs while studying? I feel so stressed, what should I do?” Great questions. Just breathe.
I would also suggest daily meditation (I like the mobile app headspace), weekly exercise and good sleep habits during this time period to manage the stress you may be feeling about this whole process.
If you were to think about what is the order of operations during this time period, think of this 3–6 month period as a computer program.
I would go a step further and say that this program was writing in Nodejs, taking advantage of the asynchronous paradigm, meaning studying for algorithms and building another web app at the same time.
Let’s assume you have one or two web applications on your resume. Great job graduating from your bootcamp! You’ve only learned one web application framework, but you want to increase your chances of landing another job with another framework/tech stack.
You also want to up your data structures and algorithm prep game for any company you’re applying for.
What I plan on doing is splitting my time 60/30/10 between:
- 60% algorithm prep — Working through all the Cracking the Code interview questions in one language, my language of choice for an interview is Python. Watch lectures from Skiena’s class, also finish reading assignments and h/w problems. Contribute to the Techqueria.org Data Structures and Algorithm repo as an open source contribution.
- 30% building a web application that provides users with some type of value (think MVP) in one of the two web framework applications with React as my front-end and deploying it live. I’ve built one in Python (Flask and Django), but I’m decided to choose Ruby on Rails as my next app.
- 10% on System Design and Operating System resources.
Once again, this is my plan for getting a job in the San Francisco Bay Area as s software engineer, full-stack engineer, or backend engineer. Feel free to modify it to your job prep plan/timeline. A weekly snapshot of activities, if you were “Job Prepping” full-time, would look like this:
What my week typically looks like.
Data Structures and Algorithms are in red, Web Development in gray, System Design/Operating Systems in purple, Networking events in light blue, applying for jobs in dark blue. Yellow and light green are downtime/exercise/meditation/commute/cooking/daily chores.
Yes, my schedule is going to obviously be different than your schedule, but I wanted to show you how to methodically plan time for each specific criteria of the Interview prep phase.
Oh yeah, and there’s this whole thing about networking, attending meet-up groups and contributing to open source projects that I didn’t talk about. That’s part II and is extremely, important as well. It’s all important.
That’s it, folks! Best of luck with your interview prep journey. If you are in the San Francisco Bay Area and interested in getting together to interview prep, hit me up on twitter.