This chapter is part of The Honest Guide for Coding Bootcamps, a collection of thoughts after a full-time software engineer bootcamp.
Congrats! You finished your four-month training. Celebrate today, tomorrow you’ll be unemployed, and your job search will start. If you are considering taking a short break after the bootcamp, remember that you haven’t cemented most of the newly acquired knowledge. In my case, I took a week to recharge the batteries, but I didn’t consider a longer period to keep the momentum and rhythm.
Out of the entire career shift, the real transition happens at this moment. The training months are just a safe space for you to follow the syllabus, explore, and devote yourself to learn. On day one after the bootcamp, you must become an avid, disciplined, and organized multitasker. These are some of the tasks you’ll have to do:
- study, study, study;
- code, code, code;
- work on your resume and online presence;
- train yourself for interviews;
- apply for jobs; and
It might seem light work; however, it was the hardest time throughout the entire transition for me. On top of keeping your programming learning progress and looking for jobs, you also have to:
- use your best criteria to prioritize what to learn next,
- decide what kind of jobs you want to apply to,
- optimize how to distribute your time among the different tasks, and
- be optimistic among the uncertainty and loneliness — you might have to stay home every day without much social interaction.
Job Offer Formula
There isn’t a magic formula to get your first job in tech. However, some fundamentals factors have a crucial role: connections, time, and luck. These are some of my thoughts after nine months of pursuing an entry-level position as a software engineer.
Online Applications. The internet is overflowing with new open positions. However, the chances of getting a job if you limit your search to just online applications are very low. Leverage other strategies such as reaching out to friends working in tech to get referrals to increase your conversion rate from applications to interviews.
Connect smartly. One of my biggest mistakes while looking for a job was to let the impostor syndrome disempower me. However, this disempowerment came as a result of putting too much effort and energy in the wrong places.
First, I’m not a fan of networking events, so I will never recommend going to Meetups, conferences, or similar events expecting to give away resumes and business cards to land a job.
At this point in your new career, the value you can take from these events is pretty low, and the likelihood of these events increasing the impostor syndrome feeling is pretty high. Interactions on these events are very transactional, and your leverage to get any benefit from them is very low. On the other hand, they can be very formative. Why not dropping by and learn something new? A way of strategically take advantage of them is to target specific people you know might be attending and prepare the conversations in advance. Overall, networking events are a resource but don’t prioritize them. (Note: many of them give free food and drinks, sometimes they might come handy!)
At an even lower level of priority, we have job fairs. I’d strongly discourage you from going to them — and never pay! During my job search, I registered for a couple of job fairs: one of them had a $20 fee. In my experience, they were the most ineffective way of spending your time, money, and energy.
Job fairs are just marketing events for companies, they want to bring their presence to sector events, but there’s no recruiting strategy behind them. Companies spend more time thinking about the swag they’ll give away than actively recruiting and processing resumes or follow up emails from job fairs.
Think about it. How many actively-working senior software engineers attend job fairs? Let me tell you. ZERO. On the other hand, how many bootcampers go to job fairs looking for entry-level jobs? HUNDREDS. And, finally, how many open entry-level developer roles do you think you’ll find in a job fair? NEXT TO ZERO. Again, unless you are strategic on targeting a company in particular, avoid job fairs.
What do we have left? Is there an effective way of networking?
If you read The Defining Decade, you already discovered the concept of “weak ties.” When I started my job, I realized I got access to hundreds of professionals with lots of experience. As an insider, those resources became easily accessible; however, during my job search, I perceived companies as opaque, abstract entities. However, companies are humans, and those humans are more accessible than it seems.
Thanks to the Internet, access to professionals has become easier than ever. Platforms like LinkedIn and online tools to find work emails like Snovio are great resources for networking.
But don’t combine ease with laziness. Many people reach out on LinkedIn thinking that clicking the “Connect” button is enough. In my experience, I don’t respond to empty requests: why should I put any effort into replying to someone who didn’t care beforehand? On the other hand, I’m always happy to respond to any connection request that targets me with a purpose. I don’t expect much: a short intro and quick, actionable questions or requests. From there, I’ll probably end up putting more time and effort into replying and thinking about how to help in one way or another.
If you don’t get an immediate reply, don’t give up. Not everyone checks LinkedIn regularly, and many people are busy and could have easily forgotten to reply despite wanting to. Therefore, don’t be afraid of insisting a couple of times. If you don’t get a response within a few days, followup and thank them in advance for their time.
Don’t forget to take advantage of your bootcamp’s alumni network. Moreover, the experience of shifting into tech careers is common to everyone going to any tech bootcamp, so you should feel comfortable reaching out to anyone that shares this same background.
Compared to networking events, connecting one-on-one with company employees provides a more symmetrical interaction and a higher sense of empowerment. First, you can introduce yourself, which allows the other side to accept and understand where you come from. Second, if both parts agreed on scheduling a conversation, you can also frame it and prepare for it. This preparedness allows you to research in advance, ask better questions, and even be able to give something in return. The quality of the connection from one-on-ones will be much higher; these professionals will become weak ties, and you’ll increase the chances of them helping you.
Listen to the podcast The Influence You Have: Why We Fail To See Our Power Over Others and learn a few tips on how to get people to help you.
Another worth-reading article about the importance of connecting to people to get a job is After Seeing Over 10,000 Job Interviews, Here’s What I’ve Learned About Getting In The Door.
Time doesn’t necessarily play against you.
Right after finishing the bootcamp, you’ll start studying and interviewing. If you’re lucky, you might get a job offer within a few months. Many of your peers will also land jobs. If time goes by without getting your first offer, you might start thinking “am I ever going to make it?” which can lead to a lot of pressure and stress.
Each month that passes without a job means no income and fewer savings. If you only think of time from a financial perspective, things start looking bad pretty fast. Instead, frame it this way: the probabilities of getting a job increase with time because, with time, you get more prepared for the interviews and have more practice.
But the chances of getting a job are not dependent on time. The real factor is preparedness. And to be prepared, you have to commit to study and keep learning day after day.
After each interview, you must go back to the interview problems and redo them. If there is a question that you didn’t know, google and learn about it. Many of the algorithm questions are pretty similar to each other and it’s just a matter of practice.
During my job search, I used to write down or save all the questions or problems from the interview process: home-take questions, timed online tests, and on-site interviews. Afterward, I would solve them again and refactor them.
In particular, I recommend using platforms like Repl to code the solutions to the problems you work on and keep them organized so you can go back and revisit them.
Yes, luck plays a big role.
Right after getting my first offer, I started thinking that luck played a big role. I was undervaluing my preparedness for the interview. After all, so many small companies had rejected me that why would a big high-tech company hire me now? Luck was the simple answer.
I was discussing this idea with a friend of mine, and he reminded me that preparedness had helped me succeed throw all the interview stages. And he mentioned that luck is nothing else than the result of being prepared when the right opportunity comes. “Luck is what happens when preparation meets opportunity.” That made a lot of sense to me. However, I still kept wondering to what extent luck played a role in me getting a job.
After quite a few conversations with other friends, I concluded that luck plays a significant role in getting a job but, to understand how we have to analyze it as external or out-of-control factors.
All the factors that we can take action and improve during the job search such as technical preparedness, having a positive mindset and a proactive search of opportunities, or activating our professional network are internal to us and, therefore, we control them.
On the other hand, many factors are external and out-of-our control. These factors are multiple, but a few examples are:
- The company’s pursuit of diversity and, therefore, a diverse panel of interviewers. Tech is becoming more diverse, but you might still find very homogenous interview panels. As an example, linguistic issues can also affect your evaluation. Isn’t English your first language? That might be an initial barrier when communicating during the interview.
- The interviewers. Interviewers are more likely to approve candidates that have similar backgrounds. The bias might come in very subtle ways, for instance, in the act of selecting questions. Candidates that value highly academic questions, because they might have a Ph.D. or come from companies where academic talent is valued, might unconsciously be introducing this bias into their interviews. Interviewing is a complex skill and, therefore, it requires developing interpersonal skills and lots of practice in order to calibrate questions. Despite the efforts of companies for building unbiased and diverse interview processes, at the end of the day, you will be interacting with people whose daily jobs are not interviewing people. They might have preconceptions, unconscious biases, different or incorrect expectations, or even conflict of interests (they might have referred someone else to the position!) They could also have a bad day and be in a bad mood!
- The questions the interviewers choose. Some questions don’t allow you to show your potential as a developer and your team player skills. Most of the times questions need to be studied and, indeed, many actual developers could not even respond to them!
- Timing. First, some job opportunities might not come at the right timing due to a lack of preparation or any other circumstance. Furthermore, timing can also affect you if you are part of the last candidates to be interviewed and the hiring team already has a previous candidate in mind.
- And many more.
I’m going to tell you a short story from work. I was getting lunch one day with coworkers. They started talking about interviewing. One of them explained that once he was shadowing another engineer during an interview. He rejected the candidate while the actual interviewer passed him. This person was hired and they had the opportunity to work together. My coworker acknowledged that he was wrong and that the candidate ended up being a good software engineer. The bottom line is that the same interview performance was seen with different eyes depending on the interviewer and, therefore, had two completely different outcomes.
Another story from Facebook: many Facebook employees interview multiple times before they get an offer. This is not a secret: Facebook recruiters will tell you the same.
Another story from Google that I found reading this piece.
A VP of human resources at Google covered the difficulty in validating the quality of their interview process in a New York Times interview excerpted below
“Years ago, we did a study to determine whether anyone at Google is particularly good at hiring. We looked at tens of thousands of interviews, and everyone who had done the interviews and what they scored the candidate, and how that person ultimately performed in their job. We found zero relationship. It’s a complete random mess, except for one guy who was highly predictive because he only interviewed people for a very specialized area, where he happened to be the world’s leading expert”
In conclusion, I’d say that companies don’t really know how to measure if a candidate is a good fit or not. Due to the randomness of the process, companies don’t measure the fitness/knowledge of a candidate; instead, they grab a sample of candidates and wait until one of the random combinations of candidates and interviewers results in a strike of yeses. If the company rejects you — unless you bombed the interview! — doesn't necessarily mean they hired a better engineer: you were simply not part of a successful combination.
The “human component” in interviews is always out of our control.
Are Apprenticeships Real Opportunities?
Finding entry-level software engineer roles can be challenging because most of them are not posted online as such. Most of the time you’ll be applying for regular positions hoping the company is open to candidates without a Computer Science background and no prior experience. Moreover, entry-level roles with mentorship opportunities are rare as well. How many jobs have you already applied that request 3–5 years of experience?
On the other side, paid apprentice positions are fantastic opportunities to continue your growth as a software engineer and put your first step in tech.
The pros are multiple. First, during the interview process, the company already knows the level of experience that the candidates have, which is likely to be below their lower junior level. Therefore, the apprenticeship goal is to train the apprentice so they can be hired as junior software engineers afterward.
Second, even though your title is “apprentice”, the company is strongly betting on your success. The financial and human resources to hire and train apprentices are significant: you are an investment. Therefore, the goal isn’t to let you go after all the resources they’ve allocated to you. They want to hire you.
You are hired as an apprentice on the premise that you can quickly learn and prove your potential as a software engineer, rather than on the expectation that you will immediately start delivering. Proving your value and potential by doing real work has a much higher percentage of conversion from apprentice into entry-level employees compared to interviewing for entry-level positions, which means that if you get a chance to be an apprentice, it’s almost guaranteed you’ll get hired.
Third, most of these apprenticeships are designed to support the apprentices throughout the program. Nowadays many big companies are launching their own apprenticeships programs. For instance, Wayfair created the Wayfair Labs:
It’s a twelve week onboarding program where new hires get hands-on experience tackling Wayfair Engineering challenges, while building and showcasing their skills through projects of their own design. From learning new technologies to practicing real-world software architecture, Labsters, as we like to call them, get a chance to hone their programming skills and work toward mastery of the Wayfair tech stack.
Pinterest has another great year-long apprenticeship program.
To ensure a positive experience and a sustainable program, we spent a lot of time up front considering how to set the apprentices up for success, with the following three strategies as our guide.
1) Choosing the right team, mentor, and manager
2) Providing proper training & onboarding for everyone
3) Regular check-ins to track progress and ensure steady growth
My first job was an apprenticeship. In my experience, it was the best way of stepping into tech and I wrote a post about it: Launching your career as an apprentice engineer at Pinterest. I had a mentor for the first year and a highly structured path to conversion. The apprentice label gave me the space to ask lots of questions and invest time in learning the ins-and-outs of the company codebase. Overall, it made my transition to software engineer a joyful experience.
Beware Of Scams
You just spent thousands of dollars in a bootcamp and need a job as soon as possible to go in the black. You are not the only one, and some companies know that.
During my job search, I encountered the following dubious opportunities:
- Unpaid internships. They tend to be small startups at coworking spaces. They have an online presence, but it’s hard to find senior software engineers on LinkedIn currently working there. All employees are recent bootcampers, and they are all interns. The only employees are the CEOs. Of course, they are unpaid internships. At this point, you might be considering taking this opportunity to get some experience and add it to your resume. In my experience, these opportunities take advantage of you and don’t offer any mentorship. On top, you have to figure out all devops issues.
- Voluntarily paid gigs. They tend to be confusing companies in weird offices. The interview process is in batches. Everyone gets hired, but the terms and conditions are still very confusing. The job seems very easy, and money seems excellent. It’s all and all confusing. I know this sounds confusing, but I experienced it. It was an NYC company developing Alexa skills.
- Paid training. There are many of these opportunities. These companies offer a few months of training on specific technologies. Afterward, they pay you a fixed salary below market for one or two years while you work for services to third companies. You signed a contract with them, and if you find a new job, you are penalized and have to return them the cost of their training. It seems an ok opportunity when you are desperate for a job, but the terms are incredibly aggressive, and they are taking advantage of people in those circumstances.
I run away from all these companies, and many of the fellows I meet there too. But many others took them. I don’t know their stories. Maybe those were great opportunities for them.
After the efforts and investment I made, I prioritized legit jobs. But beware, those dubious opportunities will be out there.
Understanding Recruiting in Tech
Looking for your first job in tech is a painful process with a pretty low conversion rate from applications to interviews. Crafting your resume and cover letter for an open position is just the first step of an extremely time-consuming process towards a job offer: the hiring pipelines for engineering jobs take several assessment rounds and the final onsite interviews are much longer than in most other sectors. On top, interviewing is a very different skill from working as a software engineer but, in order to land an offer, you must master the art of interviewing.
Each company has its own hiring processes but, overall, they consist of two main stages — pre-screenings and onsite interviews — which, at the same time, are a sequence of different methodologies. Do you remember those months of finals in college? Nostalgia is over: interviewing will feel like a sweet student-life comeback.
These are the most common methodologies for prescreening and interviewing in tech. Despite all hiring processes follow similar question patterns, you will always confront the uncertainty of what type of problems you will be asked. Studying will help you get ready for them.
- Phone screenings. Phone screenings are usually one of the first filters in the hiring process. They usually are 30-minute conversations with recruiters. Most of the questions are cultural, but some can be related to your experience and technical projects. Nonetheless, you must be ready for the TOP of all questions: “why do you want to work at blank?”. This is one of the trickiest questions. After years of experience, software engineers might be able to choose where do they want to work. However, bootcampers don’t have that luxury, choosing is not always an option. During my job search, I first applied to open roles at companies related to my previous career or companies with products that I liked. I applied to them with no success which made me apply to any company with entry-level or junior roles. I remember my first job fair with Flatiron. One of the companies — a two-sided market company for house cleaning and handyman services — asked me why I chose them. The truth was that Flatiron assigned me the companies; therefore, I didn’t choose them. I was honest and added that I was interested in their products and solving the technical problems we had discussed. It was probably a poor answer. Most companies have very uninspiring products but you MUST show them your excitement for the company. Research about the company, its products, latest releases, tech stack, and company values to create a narrative to sell them.
- Online timed exercises. Another of the common filtering methods are online timed exercises — most likely algorithms — via third-party sites or email with questions that you must answer within an amount of time. The good part is that nobody is looking at you when you are coding!
- At-home coding exercises. Another common methodology is to send you at-home exercises such as building simple apps or solving problems that require more complex algorithms or data structures. You have to code the solutions and return the code within a few days. The positive side is that you can code at your own pace and google anything that you don’t know. On the other hand, they are very time-consuming.
- Online pair programming. This format consists of a videoconference where you pair-program in real-time with your interviewer.
- On-site interview. Congrats, you made it to the final round! Most job interviews outside of tech take about an hour; in contrast, tech onsites can go from three to four hours. The interview agenda include cultural and/or technical interviews. Technical interviews can have three different focus: domain-specific, computer science fundamentals, or conceptual.
Resources To Prepare For Interviews
Out there you will find thousands of resources: books, sites, and tutorials. These are some resources to study and prepare for interviews.
Practice on CS fundamentals
- Cracking the coding interview. One of the best books to study algorithms.
- Codewars.com. Sign up and start solving problems!
- HackerRank.com. Sign up and practice!
- YouTube: MyCodeSchool — Data Structures
- Big O. This is a cheatsheet, do further research to understand the concept
- Toptal: Resources
Don’t forget to reread the documentation:
- React. I highly recommend rereading the basic concepts and also studying the latest features of the framework such as context API and hooks. Also, read the React Blog.
- Don’t forget to keep practicing FlexBox!
Web application concepts
- A complete guide to modern web applications — new! Highly recommended!
Practice technical live interviews:
- Pramp, practice makes perfect. [Free] Online peer-2-peer platform for practicing technical interviews. It is a community of software engineers who come together to prepare for their upcoming coding interviews
- interviewing.io [Free] Practice interviewing with engineers from high tech companies anonymously.
- Skilled. [One free interview, pay after] Hour-long practice interviews.
Mocking Cultural Interviews
Practicing for technical interviews is key in your success to land a job. However, don’t forget to practice cultural interviews. Find a friend or a recruiter in your network to mock a cultural interview.
Choose a company or position that you’d like to use for a mock interview. Do your research in advance and have several questions prepared.
First, prepare a 30-sec elevator speech for yourself.
- Why do you want to be a developer?
- What are you looking for in your next job?
- Walk me through your career history/background.
- What have you built?
- Why are you interested in this role or company?
- What are your salary expectations?
- What questions do you have for me?
For tell me about a time when you… or behavioral type questions, practice the S.A.R. (Situation, Action, Response) approach and/or the Situation — Behavior — Impact approach for feedback. Prepare good answers beforehand for a few of those common questions — come up with good fictional cases, most of the time it’s easier than finding good real examples from your past job experiences.
Let’s Dive Into Your Resume
A resume won’t give you a job, but it will bring opportunities. Having a well-crafted resume can help you catch a recruiter’s or hiring manager’s attention. It will also provide clues about your work style.
The first thing you need to know is that you cannot be emotional about your resume. It’s not about impressing other people with your 15 years of hard work; it’s about convincing a company that you have:
- the minimum skills required for their entry-level positions,
- the potential to keep learning,
- a professional background that might add value to their mission,
- work ethic and commitment.
It’s tough to build the perfect resume, and it’s even harder to do it by yourself. Ask a friend to review it and give you feedback. If you are lost, go to a job fair — this might be the only case I will suggest this! — and ask the recruiters to take a peek into your resume and give you some feedback on how to improve it. They are probably really bored and might say be happy to help you. Don’t forget to embrace all feedback with gratitude and constructivism, and never pushback. There’s always room for improvement in your resume; therefore, take any opportunity that comes along.
On your new resume, the most important part is the Projects section. Again, read the section Portfolio to learn how to make your projects more relevant. After a year of working as an engineer and having reviewed many Bootcamp resumes, most resumes look exactly the same. This is my piece of advice if you want to differentiate yourself, build a stronger resume, and keep learning.
- List 1 to 3 projects, but always the most relevant on top.
- Be very short and concise with your technical projects. The fewer words, the better.
- Don’t overexplain broadly known technologies. Keep a single line to list the common technologies: p.e. React, Redux, Thunx, OAuth, etc. Then, use more space to detail the more interesting, project-specific technologies implemented in your app.
- Make sure they have links to the code or demos and make sure the repositories have fantastic READMEs.
- Show variety: if all projects use the same technologies, decide which one is the strongest.
- If you are focusing on front-end, I’d strongly suggest re-visiting React’s Advanced Guides. Choose your top project and refactor it so it uses React’s newest features: strict mode, context, refs, hooks, etc. Implement Flow. Make your app 100% accessible. List them on your project description! That’s real developer work!
In addition, a software engineer resume shouldn’t look like any other resume. These are the most frequent pieces of feedback I’ve given and received:
- Don’t say you’re a full-stack engineer. Read the section Portfolio to learn why. If you see yourself saying something like “Passionate about designing and developing intuitive interfaces” then say you’re a front-end engineer. On the other hand, if you say something like “Passionate about moving data through an API into a database” then you’re choosing back-end as your focus area.
- Add technical projects and skills. Place your technical projects on top, unless you’re already a senior engineer. At this time in your career, your previous jobs are secondary. What matters is your newly acquired skills.
- List your technical skills (languages, frameworks, tools) but avoid mentioning Microsoft Suite, Google Sheets, Gmail, or alike. Avoid listing soft or vague skills such as public speaking or project management unless they are very strong ones. Instead, show them through your past role descriptions. Nobody cares if you like cooking, dancing, or Cosplay. A big NO for those.
- If you have a ton of previous experience in non-engineering roles, therefore, irrelevant to engineer positions, list your last jobs and keep the responsibility descriptions very short. Cut irrelevant jobs. If you don’t have much experience, don’t overexplain them: nobody hiring for engineers care if you were the top salesperson at a gift shop in NYC (unless the developer roles is a solutions engineer where client-facing experience could matter). Your previous jobs are irrelevant for the jobs you are applying now, but relevant background adds to your personal capital. Some interviewers might be interested in hearing about some of your previous projects or roles. However, don’t forget you’re in tech now, don’t spend much interview time explaining your past roles working on environmental projects. Keep it sweet and short. Unfortunately, barista roles at Starbucks might not bring a lot of conversation to the table.
- List your previous experiences by role. I like seeing something like Manager @ Company. City, Year-Year. I dislike seeing things like Company, Month-Year — Month-Year
Keep the information in one line and list them in descending chronological order.
- Review grammar. Review punctuation.
- Add the city where you live, but not the full address.
- Add contact information: phone and email. (Try to use Gmail, I’ve heard Hotmail or very old email domains don’t look good!)
- Link your website, LinkedIn, or Medium profiles. If your Medium or blog site is very outdated and not well maintained, don’t share them. Consider deleting them.
- Don’t add your social media.
- Don’t add a photo.
- All in all, keep it to one page. If you have years and years of experience, keep it to one page.
If you found this article useful, share it with anyone considering a bootcamp or already in the process of becoming a software engineer.
Thank you for reading this article and good luck with your future endeavors!