- Software engineering is essential for the functioning of our daily lives, as everything we interact with relies on software.
- Learning the fundamentals of computer science, including algorithms and data structures, is crucial to becoming a software engineer.
- Building a portfolio of projects, contributing to open-source projects, and networking with other software engineers are important steps in establishing a career as a software engineer.
You could say that software engineering makes the world go round. Basically, everything we interact with on a daily basis relies on software in one way or another. And not just our phones, video games, and computers.
Our whole world runs on finely tuned algorithms and programs, from our cars to our kitchens. Unless you stick to strictly vintage technology, you’re actively interacting with software applications dozens of times a day.
For those wondering how to become a software engineer, there is good news and bad news. The bad news is that you have a long road ahead of you, filled with challenges to overcome. The good news is that you have a wealth of resources available to help you on your journey.
If this article is your first step on that path, you’re in good hands. Today, we’ll give you a high-level overview of what it takes to become a software engineer and a step-by-step plan to get you there with minimal fuss.
With so much content out there, it can be difficult to pick a starting point and get moving, but we’re going to break it down for you so you can hit the ground running.
Step 1: Learn the Fundamentals of Computer Science
Understanding the fundamentals of computer science is of the utmost importance, especially if you want to learn how to become a software engineer. Understanding the basics is important before moving on to more advanced topics. The reason is simple: You’ll be able to troubleshoot and recognize patterns easier if you know how things work under the hood.
Algorithms are basically step-by-step instructions for solving a problem. When we say that you should learn algorithms, that doesn’t mean you need to memorize every algorithm out there. While it is important to know how the most common algorithms work, you want to cultivate “algorithmic thinking” instead.
In the real world, problems are rarely straightforward and often require creative thinking to solve. Developing algorithmic thinking skills can help you approach complex problems in a more structured and systematic way, and come up with innovative solutions.
- Learn how to apply common algorithms to practical, everyday problems
- Over 400 pictures with detailed walkthroughs
- Python-based code samples
- The author has a dual background in Computer Science and Fine Arts
A good resource for learning algorithms and how to think your way through a problem is Grokking Algorithms by Aditya Y. Bhargava. Where most books on this topic can be rather bland and boring, this one is different. It uses illustrations and easy-to-understand language to help you grasp concepts.
If you want to dive into algorithms a little more, this GitHub repository consolidates tons of information from across the web.
Data structures are foundational to software engineering. They dictate how to organize and store information efficiently. Important ones include arrays, linked lists, stacks, queues, trees, and hash tables.
Just like algorithms, memorization shouldn’t be your focus here. Instead, work on practicing coding problems and determining the best data structures to use for the job.
You’ll also find plenty of resources on GitHub and YouTube, and if you get stuck, you can always turn to the pros at Stack Overflow for help.
Step 2: Choose a Programming Language
While selecting a specific programming language is not the most important task, you’ll need to pick one to stick with while you practice. Learning the fundamentals is much easier if you are not bouncing around from language to language. Instead, decide on one language to carry you through the basics. Once you get the groundwork down, picking up additional languages will be a piece of cake.
If you’re in a college course, your instructors probably have something like C++ or Java in mind for you. While these might not be the most fun or hip languages, they do a great job of teaching you the basics.
Step 3: Get Hands-on Experience with Coding
You can only get so much out of reading a book or watching a YouTube video. At some point, you’re going to have to roll up your sleeves and get some hands-on experience with coding. And I don’t just mean following along to a tutorial (although that is great in the beginning).
Practical experience will help you figure out problems from the ground up. The struggle is one of the most valuable teaching components. Getting frustrated with a problem and having to think about it will hammer the knowledge into your head much more effectively than passively watching a video tutorial.
This is where a lot of beginners get hung up. There is so much material out there, that it can be easy to get caught in what experienced devs call “tutorial hell.” That is, following along to tutorials but never getting anywhere. The answer to that is to branch out and do your own project.
Once you know how to lay out the basic components of a program, whether in Python, Java, or even just an HTML and CSS website, you can start building something that is all you. It doesn’t need to be complex. Think of a simple application like a calculator or a to-do list.
These are some of the most popular projects for beginners because they teach you how to perform the most fundamental tasks in a particular language. You’ll get a solid understanding of programming fundamentals along the way.
Check out these sites to get some hands-on coding experience:
Step 4: Build a Portfolio of Projects
Now that you’ve got some hands-on experience, it’s time to build something you are proud to show off. Unless you’re coding just for fun, you’ll need to make something with your time. If you want to be a professional software engineer, having a strong portfolio is one of the most vital building blocks of your career. In fact, for developers with no experience, a strong portfolio is often your foot in the door for your first job. So, make it count.
You want to show potential employers that you know your stuff. Talking about your skills is great, but showing them is much more important. As you might imagine, with the increasing popularity of the software engineering field, you’ll be competing with many other candidates. So, don’t fill your portfolio with average, cookie-cutter projects.
The calculators and to-do list apps might have been fine for teaching you the basics. But they won’t get you the job. Ideally, you should build something that makes use of multiple languages and communicates with other software. Integrating an API in your application will go a long way to show that you know how to build something more complex.
If you’re feeling really ambitious, aim to build something that can sustain an actual user base. You don’t need to build the next Facebook, but creating a simple social network that can handle a few users will show off your skills. Creating something that shows your coding acumen might take some time. But your dedication will show through in the final product, and potential employers will be able to tell.
Step 5: Participate in Open-Source Projects
Building something on your own can only take you so far. You want to show that you’re a team player. This is where a lot of budding developers skip over. I’m, of course, talking about contributing to open-source projects. GitHub is your friend here.
The problem is that many developers don’t feel comfortable making a pull request on more advanced projects and repositories. So, they often skip over the whole process. The good news is that you don’t need to make a major contribution to an open-source project—you can make minor updates and still make a difference.
Some GitHub repositories are designed specifically for entry-level developers to get their feet wet with open source. This repository, for example, doesn’t ask you to create any serious code. Instead, just make a submission by following the directions and making a few edits to a file, and voila! You just contributed to open-source!
Other outlets for contributing to open-source projects include browsing GitHub for repositories that are open to beginners. Since there is so much code out there, knowing how to search GitHub to find specifically what you’re looking for is a valuable skill in itself.
Many developers are happy to accept your pull requests, even if you are fixing a typo in the documentation or making a suggestion. Either way, get started with open-source projects and get your name out there.
Step 6: Network with Other Software Engineers
If you are contributing to open-source projects, this next step should come easy. Networking with your fellow developers goes a long way in moving up in the industry. It is often said that “it’s not what you know, but who you know.” This holds true in the software industry, too.
HackerNews is a goldmine for interacting with other developers. Contributing here and there will build your trust and credibility. Additionally, being active on sites like Stack Overflow will go a long way to showcase your expertise and skills.
Meeting up with engineers in person isn’t out of the question either, although they can be reclusive. Check out websites like MeetUp to find pair coding sessions near you, either online or in person. Visit seminars and webinars to see who the big names in the industry are, and you might even run into some recruiters, too.
Step 7: Prepare for Job Interviews
Once you have a solid understanding of the industry, a strong portfolio of programming projects that showcase your skills, and maybe even a network of fellow developers and recruiters, you can start interviewing.
But before you do that, you’ll need to prepare for the interview. Knowing what to expect is of the utmost importance, and going in blind will only hinder your chances.
Craft a Resumé
Your resumé is the first impression you make on a potential employer. Oftentimes, a human doesn’t even look at your resumé once you’ve submitted it — instead, it is screened by an automated application for keywords. So, crafting a resumé to please both human viewers and robots is essential.
To please the automated programs that skim through hundreds of resumés per day, you’ll need to keep it short and pack it with keywords. When applying for jobs, look at the skills mentioned in the job description. Make sure your resumé ticks as many of the mentioned skills as possible so that you don’t get screened out early.
If your resumé makes it through the automated filters, you’re doing better than most candidates. Now, you have to impress the human reader, which is often the hiring manager for the role.
The sad news is that most HR professionals who read your resumé aren’t diving too deep. Instead, they’re skimming your submission quickly, hoping to learn what you’ve accomplished and what you can bring to the table.
What you don’t want to do is simply list your skills and your past jobs. Everybody does that. Instead, talk about how you solved a problem, the difficulties you faced, and how you achieved your goal.
For instance, saying something like “created a dating app for cat lovers and experienced a 5% growth year over year by improving automation and testing” is more impressive than saying, “built a Python dating app.”
Practice Technical Questions
If you make it to the interview, you’re going to be subjected to both technical and soft skills tests. We’ll discuss the soft skills tests in a minute, but for now, proving your technical prowess is of the utmost importance. You won’t get far if you can’t show an employer that you can think under pressure and work with others to solve problems.
Whiteboard sessions are often one of the most common forms of interviewing. You’ll sit down with your technical interviewer and work through a coding problem, usually on a whiteboard, and most typically with a tried and tested problem that you’ve seen before.
This is where websites like LeetCode and CodeWars come in. Practice enough on these sites, and you’ll be ready to handle whatever problem your interviewer throws at you. But equally important is being able to express your thoughts clearly and verbally.
Your interviewer wants to know your thought process and how you think through a problem. If you’re one of those people who thinks quietly to themselves and doesn’t know how to articulate — you’re going to have to work on that.
Check out these sites to practice those tough interview problems:
Do a Mock Interview
To make sure you ace the interview, both the technical and non-technical aspects of it — you should hold a mock interview or two. Find someone to quiz you and run through practice problems. Even better, find a fellow developer and interview each other. If you don’t have anyone to do this with, you can often find a coding buddy on Reddit or Discord to help.
Building up your soft skills is essential. This is generally just being able to get along with other people and articulate your thoughts and feelings. Many developers cringe at this concept, but working well with a team is a necessity in software engineering. You’ll need to be able to give feedback and accept criticism equally. So, start practicing sooner rather than later.
Step 8: Apply for Software Engineering Jobs
One of the most annoying things about becoming a software engineer is imposter syndrome. In other words, feeling like you are not good enough. As a student developer, it’s easy to tell yourself that you’re not ready yet and that you need more practice before applying for jobs. But the truth is that you often need that push to get out of your comfort zone and know what you’re capable of.
That being said, you should start applying for jobs as soon as you have a few projects under your belt. You don’t need to shoot for the stars right away. Oftentimes, engineers start out at internships, some of which might even be unpaid.
Either way, you have to start somewhere. The beauty of software engineering is that you can job-hop to bump up your salary. You don’t need to stick with one company your whole career. So, don’t be afraid to go for something that doesn’t seem like the best fit at first — the experience will open doors to higher-paying positions down the road.
But where do you even begin to look for a software engineering job? Let’s look at a few potential resources.
LinkedIn is the secret weapon for job seekers who know how to use it. Unlike other job boards, LinkedIn is a social network in addition to being a place to find work. Make sure to fill out your profile entirely, list all your relevant skills and certifications, and upload your resumé, and a professional photo of yourself.
For absolute beginners, LinkedIn doesn’t have a huge advantage over other sites. But once you get some experience under your belt, you’ll often find that recruiters reach out to you first.
In fact, some more senior professionals often boast about getting dozens of recruiter messages a day (although that might get annoying at that point). It just goes to show that having a presence on the site is essential to your long-term career growth.
One powerful advantage of LinkedIn is that you can reach out to current employees at companies you’re hoping to work at. For instance, say you wanted a job at Netflix. You can reach out to someone who is employed there and ask for a referral.
If you both went to the same college or coding boot camp, even better! A referral from a current employee can go a long way in securing a job faster than run-of-the-mill candidates.
Indeed is probably one of the most famous job boards, and for good reason. As of this writing, a quick search for software engineer jobs on Indeed yields over 75,000 results. Granted, many of those are for mid or senior-level positions. But you’re bound to find a few worthwhile results with that many postings.
Many smaller businesses tend to use ZipRecruiter because it’s cheap. Companies don’t have to pay as much as some of the bigger sites to post a job. So, if you’re hoping to work with a smaller, more tight-knit company, ZipRecruiter is a great place to look.
|Step 1||Learn the Fundamentals of Computer Science|
|Step 2||Choose a Programming Language|
|Step 3||Get Hands-on Experience with Coding|
|Step 4||Build a Portfolio of Projects|
|Step 5||Participate in Open-Source Projects|
|Step 6||Network with Other Software Engineers|
|Step 7||Prepare for Job Interviews|
|Step 8||Apply for Software Engineering Jobs|
The image featured at the top of this post is ©ViDI Studio/Shutterstock.com.