I’ve had a few friends recently ask me about breaking into the software industry. Most have been looking for advice on getting a developer job at a consumer-facing web/internet company-- though places like Tesla and WeWork are also very popular.
These friends have probably heard about the amazing slew of benefits; like interesting work, smart and passionate colleagues, and free food/snacks/alcohol galore. It doesn’t hurt that compensation is usually above market at these companies, and career prospects are second-to-none for talented technologists.
There’s already an abundance of information out there on obtaining software engineering jobs, but much of the advice is geared towards people who have experience already. Technical interview prep is important only if you can even get the interview.
If you've never worked in software, breaking in can be challenging unless approached the right way. Here’s a few tips that are less common that have helped me and others in the past.
Just getting this out of the way: many people forget that you don't need to code to break into the software industry. It’s pretty amazing that there's still the notion that software businesses are just engineers cranking away in text editors. The most successful tech companies usually have talented engineers, but also wonderful managers, sales reps, customer success advocates, product managers, marketing wizards, designers, and writers.
You may need to cater your craft and experience a bit towards software : for example, focusing a bit more on SEO and digital advertising if you are a person who loves to write. However, know there’s always a place for existing talents.
But if you're sure you want to pursue software engineering...
The most frustrating part for new entrants into tech is the dichotomy in the job search for newcomers versus experienced candidates.
I said earlier that most articles and blog posts about getting a software engineering job is geared towards those with experience. With the tech job market being so hot, senior candidates usually have several options (or even offers in hand) for where they want to go and what they want to do.
This obviously isn’t true for one’s first tech job search. There will certainly be some initial pain, and it could take a while. It might be beneficial to note that an amazing aspect of the industry is how fast one can “level up”. It’s defeating to initially be rejected from dozens of entry-level positions, for sure. But once you’re in, a bit of hustle and hard work to cultivate experience will lead to a much easier path down the road.
Now how to get this experience if you don't have any? Here are some ways.
If you're in university, the traditional route is to get an internship via your school's recruiting office. The process is almost identical to getting a full time position -- an application, and a few rounds of behavioral and technical interviews. These internships often convert to full-time positions through a return offer.
However, you probably wouldn't be reading this article if you're in this boat, so how else might you build your resume?
One thing a lot of people miss out on is how impressive it is to build a full-fledged application by yourself. If you're able to make a frontend talk to a backend, back it up with a database, and maybe even optimize performance a bit-- you're doing the software engineering work of an entire team!
The other benefit people don't realize about personal or side projects is this: despite not having your code reviewed by others, you do end up learning a lot of maintainable patterns and good habits.
This is because it's ultimately you that will need to do the maintenance of the code-- so you quickly learn not to write spaghetti code or do a quick and dirty job. In a sense, you learn the why behind good naming, shorter methods, clean separation of classes, etc.-- because you end up feeling the pain when you don't stick to good coding standards.
These projects are great things you can add under your resume as experience-- especially if you are able to generate revenue from it. And if you can grow it to something like IndieHackers.com -- jobs might just come to you.
Another way is to start consulting and do some contract work. Visit temp agencies and freelance websites. Many of the clientele care less about your resume and more about your portfolio.
Additionally, it's a great source of income until you land a full-time job-- though you may have to charge less at first. It's also not rare to hear of the client hiring the consultant or contractor via a temp-to-perm role, especially if you demonstrate that you're providing a return on their investment.
If you've been building stuff for yourself, it may be enough to snag a contracting gig that you can then put on your resume. Many people are drawn to the variety that full-time consulting or contracting offers, and make an entire career out of this.
Another underrated way of getting experience is through contributions to open source software. Not only does it integrate you into a software engineering team (allowing you to build collaboration skills) and get generally valuable experience to trade up, but you also get to work on something that you or others use!
Again, it's also not unheard of-- but certainly not common-- for strong OSS contributors to get hired by a firm after they've worked on the company's software for free. The author of Redux, Dan Abramov, is a good example.
I used to be of the opinion that heads-down good work would always speak for itself. However, much like a good SaaS product needs to focus just as much on marketing/sales as on the product itself, a new technologist needs to make sure that their work is getting recognized and heard about.
On the job-front side, this means asking people for informational coffees and referrals (most people will say yes!), building a portfolio and asking for feedback, and tracking down every lead and opportunity to show off your talents.
Conferences and meetups are great for meeting others who are interested in the same thing you are. They often also lead to opportunities if you are a presenter, or even if you simply strike up the right conversation.
Something to note-- an AdTech (advertising-technology) firm will have different values, cultures, goals, and people than a FinTech (financial-technology). The engineering groups will be especially different in terms of pace of work, culture, and dress code.
Working at Bloomberg is a completely different experience than working at Etsy. Be careful when generalizing the software industry, and look for opportunities aligned to your personality and interests. You can also use this to your advantage. If you are coming to software from a different industry, your past relevant experience is extremely valuable.
Think about it-- a large part of the job of a developer is to translate business requirements into logic. If you already know the requirements; whether it be finance, the law, compliance, medicine, biology, mathematics, or even music; your vantage point will be strongly appreciated as a software engineer.
If you're coming from finance, look at fintech startups or software engineering roles at banks. Or if you used to make music, Spotify or Pandora might be more willing to give you a interview when you talk about how you built a music collection app in your spare time. At the very least, you'll be able to connect to the product more.
Friends who are eager to get into a tech company for the first time as developers often overlook how long it takes to succeed. I've worked with brilliant engineers who took a while to get their first job-- unfortunately, with all things, there is an element of luck involved.
In today's job climate, provided you keep improving your resume, it could take anywhere from one to six months to land something after graduating from school or a bootcamp. If you've been building up your resume with personal projects, contract/consulting work, and OSS projects-- and it takes longer than six months-- you should try to identify what the biggest blocker might be.
Past that, it takes about a year to get really comfortable with basic syntax and getting things up and running, and three to five years to deeply understand how software systems/architectures work and make important technical decisions. Though these numbers drastically vary, this is what I've seen anecdotally.
One last thing once you get the first software job-- the change of pace in the industry takes a while to adapt to .
If you’re a developer, the core data structures (lists, stacks, graphs, etc.), the most common algorithms/patterns, and good OOP design patterns have been around forever, and most new ideas are just re-implementations with slight tweaks.
Similarly, if you’re in engineering management-- building relationships, understanding the competitive landscape, and talking to your reports are things that will always be useful and never really go away.
I make this point because landing your second software job will be less about "does this person have experience" and more about "what does this person bring to the table with their experience".
With all that said, though software technology is getting a lot of buzz at the moment, there are numerous industries and professions that are just as enjoyable and meaningful to be in.
Hope this helps someone break in this year. Being a developer is an awesome blessing, and I encourage everyone to try it out and see if they like it.