Philippe Luchansky, Author at General Assembly Blog

5 Steps to Getting Your First Job in Software Engineering


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:

  1. Figure out what kind of software engineering interests you.
  2. Learn the basics.
  3. Build projects.
  4. Begin applying for software engineering positions.
  5. 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:

  1. 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.
  2. 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:

  1. Practicing and honing transferable skills.
  2. 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:

  1. Initial interview with a recruiter or hiring manager that’s usually less technical
  2. A more technical second interview with an engineer on the team, where they’ll get to know your current skill set
  3. Meeting with more members of the team which will usually include a code challenge of some sort
  4. 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!

Learn Software Engineering Online

4 Tips for Preparing for a Coding Interview


If you’re applying for a software engineering position of some kind, chances are you’ll encounter some sort of technical interview or coding challenge. For newer engineers applying for software programming roles, the coding interview is oftentimes the most terrifying part. However, with a few interview preparation tips and things to consider, the technical interview will seem a lot less scary, and will hopefully be a valuable learning opportunity during your job search. Let’s break down a few helpful tips:

1. Build the hard skills.

Get in the habit of regularly doing code challenges. It’s a much more effective way to prepare for the coding interview than trying to cram a bunch of studying in before the big day. It’s important to schedule time each day to attempt at least one code challenge. You’ll get better at solving them, and you’ll also get better at outlining your process and speaking to it. A few great websites to help you practice code challenges in varying degrees of difficulty include: LeetCode, Codewars, and AlgoExpert.

These code challenges help build the essential hard skills you need to technically perform well in a coding interview. If you’re applying for a mid-level position as a software engineer, you’ll want to feel pretty solid with these types of challenges in your interview preparation. If you’re gearing up for your first technical interview as a junior engineer, you’ll want at least some exposure and practice with these. 

2. Don’t forget the soft skills.

Mastery of coding challenges is only half the battle, so don’t forget the soft skills. Throughout the entire interview process, including the technical coding interview, there are a lot of things that interviewers are looking for besides your ability to code. These other skills have to do with how well you communicate, collaborate, talk about the problem at hand, your leadership skills, your drive to learn, and generally speaking, how nice you are. Soft skills are often overlooked by candidates and can be deal breakers for a lot of coding interviews.

A company that’s worth applying to will want candidates that have strong soft skills, sometimes moreso than hard skills, because they show how well a person can grow within the company and develop those hard skills over time. This is especially the case for junior software engineers.

When you practice your code challenges, see if you can buddy up with someone and take turns doing mock interviews. Practice talking through the problems as you work, asking questions, giving each other hints here and there, and revealing your ability to lead, collaborate, and persevere.

3. Acknowledge multiple solutions.

This is the “cherry on top” for an interviewer: a candidate that’s not only skilled enough to work through the problem and has a personality that fits the company culture, but can also defend their solution and mention alternative approaches. This shows that you’re not just going with what you were taught or what you read online, but that you also acknowledge that there are multiple solutions to the same problem and have considered which is most appropriate for a given context.

As an interviewer administering a coding problem, I would prefer to see the simpler solution over the best solution, as it will give me more time to talk with the candidate. Now, if that candidate can also suggest alternative approaches and defend why they selected theirs, that’s an instant win. Bravo!

An example of this might be a challenge where you’re asked to design a search function for a video streaming app. You might use an inefficient algorithm for the sake of quick implementation during the job interview, but then mention a more appropriate algorithm that would otherwise be used in real life. Speaking of algorithms…

4. Study your algorithms and data structures.

This goes hand-in-hand with the hard skills, but deserves its own section. You don’t need to be a master of computer science to ace a coding interview, but there are some standard algorithms and data structures that you should feel good about referencing, or at least mentioning and talking about. For instance:

  • How does a bubble sort work vs. a merge sort?
  • What’s the difference between a stack and a queue?
  • What’s a linked list? What about a hash table?

It’s likely that you’ll be asked any of these interview questions, so becoming familiar with and being able to speak about them to a degree is a good thing. Cracking The Code Interview by Gayle Laakmann McDowell is a great book that covers all of the essential algorithms, data structures, and how to implement and use them in sample code challenges.

The coding interview is an opportunity for you to not only show off your skills as an engineer, but also to demonstrate how well you work with others. It’s designed to simulate what it’s like to work with you on a team. So be yourself, study and practice, take a deep breath, and go crush that coding interview!

Learn Software Engineering Online