Unsure how to get a software engineering job or where to start? Landing your first job as a software engineer can seem like an intimidating milestone to reach. It feels even harder when you don’t have a computer science background and you’re transitioning from another field, especially one that you’ve worked years to develop a career in. Feelings of uncertainty come in many forms. Your inner dialog may sound like this:
“My resumé isn’t compelling enough to get a job in this new field.”
“I’m a beginner all over again, and I don’t know enough to do this well.”
“If I start over, I’m afraid I’ll fail.”
“I feel like an imposter trying to get a job in something I know so little about.”
If these are some of the thoughts you’ve had when considering a career change, you’re not alone. These are fears that most of my students have expressed in my 5 years teaching at General Assembly, and they are totally logical fears to have. Fortunately, there are clear steps you can take and definitive questions you can answer for yourself which will keep you on a path to landing a great first job in software engineering. They are:
- Figure out what kind of software engineering interests you.
- Learn the basics.
- Build projects.
- Begin applying for software engineering positions.
- Learn from your interviews.
1. Decide what kind of programmer you want to start out as.
You’ve decided to take the plunge into software engineering, but did you know there are many different kinds of software developers? Jobs in programming run everywhere from front-end engineering (on the design side), back-end engineering (on the server side), to security engineering, DevOps, and testing automation!
Those are some of the more common types that most companies will need to hire for, so the question isn’t, “What kind of engineer do you want to be?”, it’s “what kind of engineer do you want to start out as?” This distinction is important because you should try to work for a company that gets you going with a clear set of roles and responsibilities, but also fosters an environment that will allow you to try out other types of work too. Some of the best software developers I’ve worked with were at one point doing a completely different set of tasks at the start of their career.
So, what interests you the most?
2. Learn the basics of software development.
It goes without saying that you’ll want to acquire some knowledge in computer programming before sending out a bunch of job applications. But where to start? There are a ton of great resources out there, but I’ll outline what I think is a great approach for most people to get a good start in programming knowledge:
- Take some classes. Whether it’s through one of General Assembly’s coding courses, a highly rated video course on Udemy, or a coding bootcamp, it’s important to get some experience learning from an industry professional. It’s also good to be able to collaborate with other students doing a similar career change.
- Read a lot. The learning doesn’t stop after taking some short-form classes. After you’ve mastered the basics of programming, you’ll be able to effectively self-teach too. Get some good programming literature! Here’s a list of some great books for beginners.
You’ll want to focus your learning on the basics of programming and computer science. Key areas to educate yourself on should include:
- Programming fundamentals: Variables, conditionals, loops, functions, etc.
- Design patterns: How programs are structured to be maintainable and easy to reason about.
- Popular frameworks (such as React, Angular, Express, Rails etc.) are a plus because they provide transferable skills while giving you a competitive edge by staying current. However, it’s still super important to base your education on the fundamentals of programming. A good drummer won’t learn how to play fancy fills without first learning the rudiments, and software development is no different!
3. Build, build, build!
Always have a project to work on. Apply the skills you’re learning by practicing on real-world projects. For example, if you’re reading a tutorial on how to build a user interface with React, try building your own portfolio website using React. You’ll be doing two great things for your career at the same time:
- Practicing and honing transferable skills.
- Building your software engineering portfolio with actual case studies and proofs of concept.
4. Start applying for jobs.
Software developer job openings are constantly being posted as new companies are founded, existing companies expand, and established companies evolve. When it comes to startups vs. established companies, there are some significant differences you’ll likely come across. For instance, a new startup might have more employee perks, such as flexible time off, but might also demand more weekend hours put in. On the other hand, an older established company might provide a more clearly defined set of roles and responsibilities and a better structure for employee growth.
It’s ultimately different from company to company, but the pattern I’ve seen lately is that startups provide more incentives to apply, with more initial flexibility for the employee. Keep in mind though that startups are by nature less likely to succeed long-term.
5. Use every interview as a learning experience.
You’ll start to land interviews comprised of multiple stages that will vary slightly by company but typically look something like this:
- Initial interview with a recruiter or hiring manager that’s usually less technical
- A more technical second interview with an engineer on the team, where they’ll get to know your current skill set
- Meeting with more members of the team which will usually include a code challenge of some sort
- Final interview with a company leader which hopefully includes an offer!
It’s important to remember a few things during the interview process. First of all, most modern tech companies want to hire you, not just your skills. They don’t want to just hear you rattle off a bunch of technical terms that make it sounds like you’re more experienced than you are. They want to know about you, your passions, your curiosity, your drive to learn, and your drive to grow with the company. None of those things are strictly reliant on 10+ years of experience like the job postings might say. While there is a base level of skill that is required, you’ll want the company to know that you are a good long-term fit; that you can become the software engineer that you want to be with them.
Every interview you take will be a culture fit test. Be a nice person, be curious, ask questions.
The technical part of the interview is often the scariest. During the technical interview or code challenge, sometimes you’ll have to write code by hand on a white board with people watching. It can be terrifying unless you really think about the actual purpose of the technical interview. What’s important to remember when prepping for the code challenge is that it’s designed to be hard. A well-crafted code challenge is not meant to be completed in short order. Rather, it’s meant to give the interviewer deeper insight on your current skill set as well as your ability to speak about how you navigate through a problem you’ve been tasked with solving. If you were able to finish the code challenge too easily, the company would have no idea where your skills max out at.
When engaging in a code challenge, the interviewer wants to understand your thought process for problem solving; how you might approach going from the prompt to the solution and the reasoning behind it. For a good code challenge, they want to see your journey through the problem. Of course, you do need to learn the basic fundamentals of programming to even begin a code challenge, but you’ll get to a point where you can at least show the interviewer how you’re framing the problem and coming up with a potential solution. Every interview is a learning experience. Keep these tips in mind. You’ll get better at the process, and you’ll eventually land that software engineering job where your new career will really begin!