The past several decades have seen an overhaul of the world economy and a shift into a more connected and globalized workforce. We have seen entire industries disappear in a matter of years only to be replaced by offshore companies reliant on large, cheap labor pools and costs of living. Global pandemics have compressed five years of career and work culture changes to as little as three months. As with any change, these shifts have forced millions of people out of industries on which they and their families relied.
Many were left out of the benefits that came from market globalization, but many with backgrounds in science, technology, engineering, and math (STEM) survived and even prospered. It’s no wonder that so many people are actively seeking to learn new job skills, get involved in technology, and are clamoring to self-teach their way into software development jobs.
Being a displaced worker comes with the benefit of having forced motivation. That’s good because it’s just one of the skills you’re going to need to succeed in a drastic shift to a career that can offer security, challenge, money, flexibility, and (usually) a calm working environment. Whether the reasons for wanting to switch careers to software engineer is in your control or caused by external factors, we’ve got you covered in this article with plenty of details to further convince you into moving.
If you’re looking for more guides related to this subject, check out some others that we’ve written. We’ve written guides about how to become a software developer, what to do if you have an information technology degree, how to succeed even if you have no college degree, and how to get start the career hunt as soon as possible as a student.
Evaluating the Benefits of a Software Career
Every job, career, and business has its ups and downs, pros and cons, benefits and detriments. There’s no single path that we can write about which will provide someone with a lifetime of success and happiness because that prescription is different for each individual. It is ultimately up to what you know, how you behave, and your interests that will drive you toward success.
In this section, we present just some of the most common benefits that you might obtain should you seek a software career. From job security, to more stimulating challenges, to work flexibility, and beyond, there’s a lot to be had in a new career.
There’s no doubt about it. The world is full of technology. Entire industries are built around the assumption that the Internet and millions of connected devices are online. In some cases, people have become entirely dependent on the conveniences and connectivity afforded by technology. Mobile phones, dishwashers, tablets, movie streaming, and navigational GPS maps are just a few examples. Can you imagine life without some of these comforts? Many can’t.
How do you think all of that technology functions? Here’s a hint: not by magic.
Hordes of talented people spanning decades have collectively and progressively constructed entire infrastructures that support the modern economy. Not only are these technologies constantly being maintained, but customers demand new features constantly. Competition across software industries is fierce, customer expectations are sky-high, and the ease at which a customer can simply drop a product and pick up another one reinforces the importance of maintaining customers at all costs.
Someone has to meet these fierce demands, and that someone is usually armies of product owners, project managers, and software developers employed by big players like Apple, Amazon, Google, and Microsoft, but also small local industries that you can find easily on sites like Glassdoor and StackExchange Jobs. These companies are always on the lookout for talented engineers that are willing to help them take their products and services to the next level.
We’ve got some more good news. Software developers are constantly ranked in some of the highest paid and most flexible positions. They’re able to work remotely from anywhere on the planet, relocate their lives with minimal disruption, collaborate with communities across the globe, and get started in the profession with relatively tiny barriers to entry. And that’s just the beginning.
According to the Bureau of Labor Statistics, software developers and related fields are ranked with a “much faster than average” job growth prediction between 2018 and 2028. This means that on top of the already millions of jobs available in these industries, there will be upwards of 20% more by 2028 in some categories.
Have you ever heard that cliché phrase, “Choose a job you love, and you will never have to work a day in your life.”? It appears in various infographics and images plastered across every major social media network at least one hundred times per week. While it is certainly overused like many social media memes, it does have a bit of truth to it.
A simple fact of life is that in order to have the means to live, we have to work for what we have. It doesn’t matter if that work is self-sustaining hunting and gathering in the middle of the wilderness or clocking 40 hours per week at a nine to five job in the city. You’re still required to work.
You don’t have to be doomed to a life of mundane, endless, and boring tasks. If you’re the type of person that enjoys feeling satisfied after the completion of interesting, creative work, then software development is probably for you. Don’t get discouraged by the myths you’ve heard about software development.
Here are just a few of the challenging benefits to software development:
Requires deep thought. With all the distractions pulling for our attention these days, it’s a miracle if we ever have time to just sit and think to ourselves. Solving the potentially complex problems of the world definitely requires avoiding these distractions. That’s especially true when developing software to solve said problems. Getting in to a deep thought routine at least a few times a day can be relaxing and rewarding when you see how productive they can be.
Building things you see in science fiction. Have you ever watched an older show and noticed that some gadgets are now widely available? Star Trek is the obvious example in that the crew of the Enterprise often used mobile phone devices, tablets, location positioning devices, and teleportation. Yes, we know that not all of the things seen on TV have become reality, but it’s amazing to see that even a smaller portion of what we only thought was possible is now being used in our daily lives because of dedicated engineers.
Improvements in healthcare. One of the greatest things about modern civilization is the constant improvements being made to healthcare and general personal health. The average lifespan of humans has been increasing for centuries due to the scientific method enabling massive advances to our understanding of germs, viruses, bacteria, and our bodies. Advanced hardware and software has the ability to collect massive amounts of data, analyze it, and visualize it in a way that helps us make predictions for even better future health initiatives.
Remember, at the end of the day, software development is still a job. As such, there will be ups and downs that will have a variety of impacts on you, your family, and your life. It’s not a magic, cure-all to life’s afflictions, but it can be rewarding to know that you helped create something that provided, at the very least, a small amount of value to a corner of society.
This is most likely why you’re here. We know that a huge motivational factor of going into any given career is the amount of money that can be made from it. After all, most people work so that they can afford to support and live a certain lifestyle.
A recent analysis by CareerBuilder indicates that software developers are among groups that command the highest salaries and are experiencing the fastest growth in every U.S. state.
Here’s a break down some compensation numbers according to the BLS:
- Median salary of $105,590 (varies wildly between cities and states)
- Median hourly rate of $50.77 (varies wildly between cities and states)
- Higher than average growth outlook (up 24% from 2016 to 2026)
Take a look at this list of STEM jobs that are similar to software developers according to the BLS. Notice that they’re all highly compensated positions? Drilling deeper into Computer and Information Systems Managers reveals that the future prospects of these positions is up and up for the foreseeable future. Potential job counts are above average, job growth is above average, and job security is a sure lock.
Note that salaries and hourly rates can fluctuate wildly between locations, industries, and individual businesses. Your experience and performance will ultimately determine how much you end up making. For new hires that have little to no experience, businesses sometimes associate the applicant’s college degree with the eventual pay rate.
Use Glassdoor and Salary.com regularly to research your worth to make sure you are fairly compensated based on your education, experience, and skills. Build up your portfolio using GitHub for that extra edge in the interview.
Software development isn’t just good for your pocket book, though. When hired by big firms, there’s often a bundle of benefits to entice.
Good insurance benefits. This isn’t unique to software companies, but sometimes the big industry players will offer 100% covered insurance. This will probably change to be less generous over time as insurance rates continue to climb, but it’s at least something to look for in your job hunt.
Flexible hours. Because software development can be done remotely and in any time zone, it’s possible to negotiate a non-standard set of hours with your managers. For example, if your time zone is shifted by enough hours to make it inconvenient for you to attend meetings or discussions at a certain time, you could request to have specific times where you overlap for meetings. One of our authors worked at a business that was split between the United States and Germany. Critical meetings between the two were always scheduled in the German afternoon so that it overlapped with the US morning.
Paid time off. Be careful with this one. Some companies will offer what they call “unlimited vacation.” It’s obviously not literally unlimited. If it was, no one would be at work. Instead, it’s a use but don’t abuse type of policy. Basically, “don’t be that person.” In most cases, businesses will offer generous amounts between three and five weeks of paid time off for new hires with increasing weeks as you rise in seniority.
Think about the logistics of most jobs in the world. Here are some to get your thinking flowing: construction workers, physicians, athletes, landscaping, truck drivers, delivery. What do all of these have in common? You have to be physically present when performing your duties. Obviously it wouldn’t work if all construction workers just stayed at home. They have to be on the site with their hands on their tools.
The increasingly portable nature of your workplace and tools is what makes software development so special. Where others need to travel potentially long distances each day, you’ll be in the comfort of your home or proxy office with the ability to instantly connect to your coworkers and audience. You’ll be able to command a salary that is local to the business headquarters while living an area with a low cost of living. Think: working in Kansas for a company in Washington. High salary + low cost of living = financially happy.
Let’s talk details of the biggest flexibility perks.
Remote work. This is the one that grabs people the most. Having the ability to move where you want at any given moment is a huge benefit. You’re not tied to any specific place because you don’t have to physically commute anywhere other than your place of residence. Depending on your time zone, you’ll have to adjust to the business hours, but you likely won’t be alone so there should be a company policy dictating how to do it successfully.
Work from home. This is a more specific form of remote work. Imagine if you or your family is sick with a job that doesn’t allow work from home because you have to be physically present. Using up sick days or vacation time is definitely a pain. And not every job offers those benefits, so you might be unlucky enough to still have to go to your place of work. As a software developer, your job is perfectly doable from home due to the nature of the work and the tools that we have built to make remote work easier.
Travel. Like to move around a bit? Look into becoming an evangelist for your company or its tooling. Your job usually consists of traveling around to various businesses that use your products to get them hooked on even more products. You’ll be responsible for giving speeches and seminars to tout the greatness of your company and its values. It’s possible to be a software developer and an evangelist simultaneously, so don’t think you’d need to make multiple career changes.
Understanding College Degree Requirements
While it is true that having a STEM college degree is sometimes a requirement for job placement, on the other hand, it’s rare for software firms to turn down talented and dedicated individuals without one.
Many large and popular knowledge-based jobs require evidence of higher education beyond high school (also known as a college degree). Companies hiring for these positions often have the luxury of having hundreds or thousands of applicants each month and can wait for candidates that check off every box on the list.
But guess what? Those aren’t the only types of companies hiring!
Google, Amazon, Apple, Facebook, and the other big players certainly command a lot of attention for job applicants, but there are an untold number of other sized businesses out there that need good, self-starting programmers and software developers to help them achieve success. Those are the types of companies that are itching for good talent and usually can’t afford to wait for the mythical perfect candidate. Even better, some smaller companies might be closer to where you currently live, which can significantly reduce relocation expenses.
It is true that formal education, strict training, and directed learning can provide you with a smoother path to success. We say “smooth” because guided learning encourages you into certain habits, patterns, and studies that tend to lead you in a certain direction. Such training usually takes choices away from you in exchange for a “tried and true” path.
That style might not be for you, though. And that’s OK!
Our authors have personally been involved with interviewing hundreds of candidates across several companies. Many of these candidates have been stacked with degrees and certificates, but many of the most talented have come from the pool of individuals without any formal training. Where they lacked in formal academics, they excelled with confidence and speaking abilities backed by their experiences gained through building their personal projects on their GitHub portfolio.
And let’s be honest: on the job training shouldn’t be a thing of the past. There are many tools and frameworks that software engineers use and follow that can be picked up in the course of their first 30-60 days on the job. We aren’t suggesting companies should hire someone that doesn’t fit any desired skills, but waiting until someone checks every single box on day one is a recipe for never finding a candidate.
Setting a Personal and Professional Goal
If you’re still interested in being a programmer after reading all the above, you should really take some time to understand where you hope to go in the future. Ask yourself direct questions and give honest answers.
- What’s driving you to be a programmer? Money, fame, knowledge, friends, community, problem-solving?
- Do you want more money? Depending on where you live and work, this can be big.
- Do you want to be challenged? There’s an endless amount of complexity.
- Do you want to be involved in global communities? GitHub and Bitbucket connect you with plenty of other developers.
- Or do you just want a change in life?
These are questions that only you can answer for yourself. But make no mistake, they will help guide you in the direction that you want to go.
After narrowing down why you want to be a software engineer, we suggest to identify specifically what you like about using computers. Sure, you can be a programmer without actually liking the main tool (computer) just like a construction worker can build things while hating a hammer. But when it’s go time, you’ll probably find yourself frustrated, uninspired, and demotivated.
More question time!
- Do you like hardware or software? (input/output devices versus operating systems and video games)
- Do you want it to be a hobby or a profession?
- Are there any hobbies that you want to involve in your programming? (business, finance, sports, games, movies, health, fitness, science, math)
- Do you own any devices that are frustrating to use?
- What would you improve about them?
Again, these are personal questions that only you can answer. You’ll quickly realize how prevalent computers are in your life and reinforce your passion for starting a new career. In the process you’ll realize where you want to start a focus.
Sometimes you won’t be able to answer these questions without at least minimal exposure and experience. After all, how do you know if you want programming to be a hobby if you’ve never even tried it? Maybe you’ll be so interested and good at it that you want to try it full time. Or maybe you think building a website would be fun but absolutely hate it after trying to build a few.
That’s why we suggest blasting through some self starting resources online to get your feet wet and then following up with your own personal experiments. Not only does this give you a feel for where you think you will eventually fit, but you’ll eventually build up a respectable set of experiences with a personal portfolio to show for it.
Continue reading below and enter the endless world of online resources.
Before you dive into the Internet ocean searching for guides on how to be the next big thing, you would benefit from starting with the fundamentals of how computers work.
To get started, you obviously need a computer, the Internet, an abundance of positivity, and determination.
If you don’t have a computer or don’t have the means to pay for an Internet connection (maybe you don’t have any good options or the pricing is beyond your budget), you can find a local library or computer share business to borrow some computer time. At a library, you’ll also get access to a variety of programming techniques and career books. Also, you might just find someone else that’s on the same path as you. That’s a triple win.
There’s another benefit to learning outside your residence: you can get into a study mode where your distractions are limited and your time is dedicated to the cause. This should help you eliminate (or at least minimize) procrastination caused by easily accessible passive forms of entertainment that surround our daily lives.
We highly suggest that you read through our expansive guide to becoming a software developer. Many of the links in this section were lifted directly from that guide, but some are unique to this post. Make sure to go through all of them.
As you work through the materials, reference our big list of the best programming tools to install on your developer machine. Don’t install all of them. You would just be overwhelming yourself unnecessarily and crowding your toolbox. Pick ones that help you get started and give you the most value.
The list below isn’t in any particular order and isn’t an exhaustive list of everything we recommend. There are far too many guides, tips, and tricks out there to collect into a single list.
This is intended to be a starting point to get your mindset in the right learning place.
If you’re seriously interested in programming, then you are ahead of most people in this category. You’re also in better shape if you know more about computers than, “I turn it on and click things.” But fear not! Even if you are completely in the dark, there’s plenty of learning resources to make these opportunities open to you.
Just a little warning: the word “fundamentals” is extremely vague. Following guides regarding the fundamentals can lead you into an endless rabbit hole of information. You want to focus on just enough that makes you dangerous behind the keyboard but not enough to overload your information processors.
That’s why we suggest three broad categories of study: how computer hardware works, how computer software works, and some specific practices of programming.
Always remember that you’re just starting out. You shouldn’t expect yourself to be an expert with the ability to immediately create the next amazing operating system.
KhanAcademy provides a ton of short videos that will work as good introductions to various topics. This will help you get started and maybe even narrow your focus. We suggest the following starter sections.
- What is a computer?
- What are the parts of a computer?
- What makes a computer, a computer?
- How do computers represent data?
- Binary & data
- Circuits & Logic
- CPU, memory, input & output
- Hardware and Software
- What is the Internet?
- Wires, cables, and Wi-Fi
Go explore some courses on the site to see what you’re interested in. We suggest brushing up on your math skills if you are feeling rusty. If you’re feeling brave, try to tackle the Calculus and later math courses, but don’t feel obligated because they’re marginally useful in most software engineering jobs.
Don’t be put off by the sometimes childish look of the KhanAcademy courses. Many of the videos are primarily focused at younger students, but that shouldn’t stop you from watching them if you want to learn the topics. The material is just as useful to adults as it is to kids. Plus, the videos are extremely short (less than 5 minutes in some cases), so you have a vanishing number of excuses to skip them.
This is the first step of the process that may require payment. Pluralsight does offer free trials, but ultimately requires a monthly payment of at least $29 / month to start.
As seen in the image below, Pluralsight courses are highly focused on specific language, framework, and software tracks that help people that are looking for a more narrow understanding. “Narrow” here doesn’t mean shortsighted. Instead, let’s say you wanted to learn about concurrent collections in C#. Well, there’s a course specifically focused on that topic.
Drill into the language that you want to learn and investigate the paths and courses offered within that language grouping.
If you’re here purely out of your own self-interest and want to learn a programming language “just because”, then don’t worry about trending paths. Pick one that seems interesting to you.
- Monthly payments of $29 is required after a trial is completed (keep an eye on discounts)
- Be mindful that coursework on Pluralsight is much longer than Khan Academy but shorter than Coursera
- Make sure the skill level required for the selected courses aligns with your expectations
- Once you commit to a section, see it to the finish (don’t skip!)
One of the largest communities of questions and answers is StackExchange (and specifically StackOverflow for software). By turning the Q&A process into a game where participants are given points, StackOverflow has built a massive collection of what amounts to distributed documentation.
A simple fact of a programmer’s life is that they are not going to know how to solve problems. You may not even know where to find learn the basics of whatever it is you’re building, so how can you be expected to solve complexities within? This says less about your intelligence as a human and more about the inherent complexity of software.
Don’t be embarrassed if and when you have questions. Instead of treating questions like a failure on your part, think of it as an opportunity to learn something new from a potential expert. There’s absolutely no shame in have to ask what you may consider a dumb question. If you have a question, most likely many others have already asked it before.
StackOverflow is less of a place to learn specific topics and more of a general resource for when you’re stuck.
Start an account (it’s free) and start asking some questions. When you get more knowledgeable, start answering questions too. You’ll build a reputation profile and give yourself some much-needed practice. Both are extremely useful for you later.