How To Become A Software Engineer
So You Want To Become A Software Engineer, Huh?
Becoming a software engineer isn’t that hard. Don’t believe me? You could become a software engineer in just a few simple steps. Let me show you.
Okay… Step 1… go to https://www.online-java.com
Now, on to Step 2! In the IDE window where it says “Main.java” type in the following code:
Click the note below if the code fails to load.
The above code may not work on some browsers or you may need to refresh this page. As an alternative, here is the Java code to copy/paste if the code above is not loading for you:
public class Main {
public static void main(String[] args) {
String myString = "Hello World!";
System.out.println(myString);
}
}
Step 3, hit the run button. You should now see “Hello World!” output onto the lower console.
And that’s that. You just became a software engineer, congratulations!
So How Do I Really Become A Software Engineer?
Okay, okay, I get it. You’d like to really know how to become a software engineer.
Well, there are two main paths (options 1 & 2) to becoming a software engineer and third path (option 3) that’s a bit less traveled, but still a valid path.
They look something like this:
Options 2 and 3 are somewhat similar. During a coding bootcamp you usually build a portfolio during your time there. The portfolio is mainly to show that you actually learned something in the coding bootcamp.
Option 1 is the most expensive option but probably your best bet. Most employers still require a software engineering or computer science degree so unless you have some serious coding chops, you’re going to have difficulty competing with other people who have degrees.
There are a myriad of other options to becoming a software engineer and many of the common paths listed above may have other roads, stopping points and divergences along the way. In fact, the possibilities really only end at the limits of your imagination. But, the goal of this chart was just to outline some of the most common ways that people become software engineers. You are welcome to choose any path you like.
However, all that being said, no matter which option you choose you should follow the ABCs of coding: Always Be Coding. Although it’s become quite a cliché phrase, it’s nevertheless true that you should always be coding and improving your coding skills. The wonderful thing about coding is there is always something to learn. So keep on learning, keep on growing, and keep on improving your coding skills.
Steps After Learning How To Code
Whether you’ve chosen option 1, 2, or 3 you’re still not at the end of your journey exactly. In fact, in many ways your journey to becoming a software engineer has just begun. Almost all of these paths can include building a portfolio, for instance. Also, if you plan on landing a job at a formal institution you’ll be required to do a coding interview.
Building A Portfolio
Many companies are going to want to see that you are at least working on something coding related and see something tangible to boost your bona fides as a software engineer. There are many options to building a portfolio and there’s no way to give proper lip service to all of them. However, a few of the ways to build a portfolio are outlined below.
How to build a software engineering portfolio:
- Create a website from scratch
- Include examples of your code and work you have done as well
- Create a GitHub account and collaborate with others on open source projects
- Build a web application
- Build an iOS/Android application
- Code stuff you’d actually like to use yourself
- Ex. Task scheduler app, remote for your smart TV, database to organize something in your home, etc.
- Build or work on at least one object-oriented project to show you know object-oriented programming (OOP)
Here are some cool examples of portfolio sites:
- https://jacekjeznach.com (front end)
- https://bruno-simon.com/ (front end)
- https://ash.ms (mostly front end)
- https://nuuneoi.com/profile (front and back end)
- https://bellard.org (plain and simple site that gets the job done - front and back end)
Creating a portfolio website tends to be more common for front-end developers, but that doesn’t mean you should shun it completely as a back-end developer. Instead, you might be able to set yourself apart from other back-end developers that don’t have portfolio websites. That said, most back-end developers usually showcase their talents on their GitHub.
At the end of the day, a portfolio is just a way to show you have some software engineering experience and that you actually can code or know a coding language well enough to do something with that code. You don’t have to build a portfolio if you don’t want to. However, you need to be able to show that you do have some coding skills and be able to exemplify that tangibly in some way, shape or form.
The Coding Interview
Most jobs in programming will require some type of coding interview. Some of these will involve coding in an IDE while others watch you. Others will involve coding in a blank text document or doing some sort of white-boarding while others are watching. Either way, these interviews are fairly intense and pretty nerve-racking for most candidates.
There are many ways to prepare for the coding interview. One of the best ways, and most tried, are the many websites which feature coding problems. I’ve outline most of these websites here. Another way to prepare is to take part in hackthons. Hackthons are offered both online and in-person.
One of the best ways to prepare for coding interviews is going through coding interview prep books. While there are many books available, Cracking The Coding Interview, is the gold standard for interview prepping for software engineers. I have also found the book Guide to Competitive Programming to be particularly helpful as well, especially if your language of choice is C++. I have also heard good things about Data Structures and Algorithms with Python if you plan on focusing on Python, although I do not own this book myself so I cannot vouch for it.
Another way to prepare for interviews is by enrolling in an interview prep course. Many of these programs are paid courses or online courses with video instruction. A popular one, and one you’ll see lots of advertisements for on YouTube, is AlgoExpert. As much as people may knock AlgoExpert, it’s actually pretty well done. It has great video instruction and goes over the time complexities of the solutions as well, which is pretty helpful.
P.S. I am not an affiliate with AlgoExpert so I don’t have any bias here. That said, I would be happy to promote their products as I think they do a good job. So, if I ever get an offer to promote them as an affiliate I wouldn’t pass up the opportunity.
One of the best courses to prepare for software engineering interviews (because it is free and high quality, a rare combination) is through CodePath. This is their technical interview prep course and it ranges from beginning coders to advanced programmers.
I recently finished the Intermediate Technical Interview class through CodePath and thought that it was very good. My only critique is that some of the problems were maybe beginner level, but since everyone is on a different level it’s really hard to create one level that fits all people. That said, they have a very high caliber of people teaching these classes. Many of the people teaching at CodePath come from companies like Amazon, Google and Facebook, for instance.
There are several other ways to preparing for technical interviews and perhaps I’ll write an article later job on the preparation portion. However, as for now, a quick Google search should give you a myriad of ways of preparing. The key is to start somewhere and continue on that path relentlessly. It doesn’t do you any good to bounce around from one things to the next. Stay focused, stay busy, and keep at it.
Keep Your Coding Skills Sharp
You can keep your coding skills sharp by making accounts at the following sites:
- https://leetcode.com
- https://www.hackerrank.com
- https://codesignal.com
- https://www.codechef.com
- https://www.codeabbey.com
- https://app.codility.com/programmers/
- https://codeforces.com/problemset (more advanced)
- https://projecteuler.net/archives (more math focused)
Make sure to work your way through all of the problems sets and don’t just focus on the easy problems. If you focus on the easy problems you won’t ever grow in your ability to code. Instead, once you have completed a few easy problems in one type of coding problem (arrays, linked lists, BSTs, etc.) then focus on medium and hard problems only.
I’ve Done All That But I’m Still Not A Software Engineer
Software engineering is a competitive field. Job opportunities wax and wane with the market and landing your first job as a software engineer is difficult. The best advice is to just keep at it and not lose heart. Keep improving your skills and making yourself more marketable.
You can also find companies you’d like to work at, find out what their coding stack looks like and train yourself in their stack. If you can somehow relay to them that a) you know their stack and b) they won’t have to train you very much, you’ll be a hard candidate to pass up.
Also, if you honestly feel like you are ready to start working as a software engineer, start freelancing. You can easily create an account on sites like Upwork and Fiverr and get to work relatively quickly. If you’re truly as good as you think you are you’ll have no trouble landing gigs and getting positive reviews/word of mouth the more work you do.
The Finish Line: Finally Becoming A Software Engineer
At the end of the day, if you are truly committed to becoming a software engineer you’re going to make it. Those of us who love to code will code whether or not we are employed. That’s the beauty of coding, you can code anything you can dream up. You can even code apps and sell them. If you code enough useful stuff for enough people, people will begin to notice.
But rest assured, if you love coding enough you’re going to eventually land a job coding. Whether it’s for a company, as a freelancer, or for yourself developing apps; you will be putting your coding skills to work in some way that generate some form of revenue. It might only be just some money you make on the side of your regular nine-to-five, but it won’t ever be a waste of time if you stay focused and put your skills to good use.
Good luck and feel free to share your story with me!