Have you been considering a career in Software Engineering?
Software Engineer is currently one of the fastest growing careers. “Employment of software developers is projected to grow 21 percent from 2018 to 2028, much faster than the average for all occupations.” - Source
Software Engineer is also coming in at #6 on Forbes list of Happiest Jobs
A few years ago, I realized it was time for a career change. I was ready for the next challenge, to have creative freedom and impact, and break free from the soul-sucking cubicle life. After speaking with some friends who were Software Engineers, along with countless YouTube videos and some in-depth research on the field — I decided to take the plunge. I quit my job at a bank, began teaching myself to program and got into a coding bootcamp in my city. Today, I am a full-time Software Engineer at a major financial company.
The Code Community Welcomes You
This career is ideal for those who: enjoy problem-solving, want to be challenged at work, are creative, are good communicators, want to pursue continuous learning, want to make a sustainable income, and want to work in flexible environments (such as working remotely, or in a start-up environment). I truly believe anyone can learn to program if they take the time and dedicated effort it requires to develop the necessary skills. The path to becoming a Software Engineer is unique for everyone, and it can be full of ups and downs. The trick is finding out what works best for you individually. There are times when you may question your path and you must push through these phases. Practice makes perfect. Progress IS success. You absolutely can learn to program!
The Path To Software Engineer
I am going to go over the steps I took in my process and things I learned along the way. I went from learning basic HTML to becoming a full-time Front End Software Engineer at a large company less than 2 years later. You will find out what is and isn’t working for you along your path, but we all have to start somewhere.
1. Try it out
2. Dive Into Learning
To boot camp or to not boot camp, that is the question.
If you feel you can’t hold yourself accountable to teach yourself, feel overloaded with information, want a community to network with, and overall would like more learning support — boot camps are the answer. I attended Academy Pittsburgh which is a coding boot camp based out of Pittsburgh, PA. The great part about this boot camp is the diversity of the students and the knowledge and support of the instructors. Benefits also included: many group projects, an overview of multiple coding languages, improved soft skills, and access to a network of experienced engineers. Many boot camps will offer scholarships, or will only require you to pay tuition upon receiving a job afterward.
Do not feel like you need to attend a boot camp, especially if funds do not allow. I know plenty of brilliant and successful self-taught developers. If you have the dedication and time you can absolutely teach yourself. I felt a boot camp was the right choice for me to take in as many resources as I could expose myself to. I would study during the day and attend the boot camp classes in the evenings and weekends.
3. Build Your Road Map
Planning out an outline of your path to learning to program will help refine your process and sharpen your focus. This is a key element in success if you are going the self-taught route. Think about how courses at university have a specific outline to progressively learn a subject. Breaking it down into sections can avoid overwhelming you. Setting and achieving goals is also a wonderful boost in momentum for your productivity. Beginning Your Road Map
4. Join a Community and Gain Experience
This is sometimes overlooked but very helpful. Networking and connecting with other developers will take you far in your career and expose you to things that are a bit trickier to encounter on your own such as code reviews, discussions, and transfers of knowledge.
I bought a course through Udemy by Andrei Neagoie that gave me access to the Zero To Mastery community on Discord. This group is MASSIVE, with people from all over the world involved. In ZTM, there are community approved projects to work on, job listings, channels for advice and more. It is a beneficial resource that allows you to network and gain experience. Companies are often looking for ANY kind of experience as long as you can speak about it in detail. Experience from open source, student projects, freelancing, and volunteer work all add up! This will set you up to have successful job interviews.
5. Find Your Focus
Avoid becoming a “Master of None.” When you are first learning to program it can seem overwhelming not knowing which language to learn, which stack you prefer, what language to focus on specifically, and so on. Information overload can seem intimidating at first, we all go through this stage. Focus on learning as much as you can when you’re first dipping your toes into programming. Over time, you will discover what you prefer. Try things out through free resources and online courses. Once you’ve found something you like, go all in! It’s important to note later down the line these skills are generally transferrable. You can always apply your experience to learning something new. Honestly, most of us will have to learn new languages, libraries, and techniques as new developments in arise. The industry is often changing which can level the playing field to a certain degree. React is currently very popular to learn and it was not commonly used prior to 2013. Start with the fundamentals of a language and build toward intermediate and advanced topics and finally related libraries will lead you down a path of success. If you gloss over important fundamentals you will have gaps in knowledge that can come back to haunt you later. Take the time to own your craft. Don’t rush learning. If something is not clear to you, revisit it, research it, and practice it, with enough repetition it will sink in. Get to a place where you no longer need to work off of tutorials, practice actually writing out code vs. reading about it and watching others code. This is something many of us had to learn the hard way and thus has been deemed “tutorial hell.”
6. Get That Foot in the Door
Look for an internship, junior engineering role, or freelancing gig (Fiverr and UpWork are good resources to find your first clients). I had often heard, “the hardest part is getting your foot in the door.” In my opinion, even if you don’t feel like you’re ready for a job, you should still give it a go. You’ll learn how to interview at the very least and may discover some gaps in your knowledge along the way. You will learn the most on the job, there’s nothing quite as valuable as real-world experience. There are plenty of companies that will pay you to learn or allow you to work under a gracious Senior who will take you under their wing and bestow their years of knowledge on to you.
Important: The success of your first role as a Junior will largely rely on how the company treats and supports Interns / Junior Engineers. Do your research and heavily consider the amount of support they are offering before accepting a position. Your first job will likely teach you a lot, feel really difficult and have you feeling impostor syndrome. Even if you fail, never give up! There is always something to take away from perceived failures and setbacks. Whether you fail a job interview or lose your job. Always pick yourself up and keep learning. Learning to program is not usually a linear path. This isn’t going to be smooth sailing, but it’s going to be so rewarding, fascinating, and entirely worthwhile. I am currently working at a company that I love working for, with a great manager and coworkers. It is also worth noting, you have to learn balance, understanding when you need to give yourself breaks from constant learning — this is tough stuff and burnout is common. Remember to be gentle with yourself during this whole process.
You Got This
I will leave you with some genuine motivation. You absolutely can become a Software Engineer. Throw out your ideas of what a textbook Software Engineer might look like. You don’t need to be “good at math” or “super computer savvy” or “a computer science graduate” to learn to program and become a successful engineer. You can succeed and become a part of a community of awesome people who actually enjoy their profession. I hope this article was the sign or push in the right direction you needed to get started. If you are ever looking for guidance, please feel free to reach out to someone in the industry, including myself! Thank you for reading this article and best of luck starting your journey.