You want to start a new career as a software developer, but you don’t know where to begin. You’ve heard about flexible work locations, high salaries, and good benefits. But you’ve also heard about elitism, school requirements, long hours, and burn out. We’re here to walk you through the good, the bad, and the ugly parts of the process to start a software developer career.
In this guide, we answer some of the most common questions and take you step-by-step through the process of starting a new career in software development. With the right mix of good information and solid determination, you can achieve a comfortable lifestyle with satisfying rewards.
Should I Be a Software Developer in 2022?
When engaging with our community, we often hear:
I’m not smart enough.
I don’t have the right college degree.
All the jobs are being outsourced.
Yes, software development can be challenging. Yes, it helps to have a STEM college degree. Yes, there is a lot of global competition in an industry that is global by definition. But at the end of the day, these remain convenient excuses.
Some school assignments often drill us into a mindset of never sharing answers and working without teams. That mindset is the opposite of what makes a software developer succeed. Software teams are only as good as their skills as collaborators. We carry each other over the finish lines.
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.
Let’s break down some numbers according to the Bureau of Labor Statistics:
- 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)
It is true that some areas of the software industry are being heavily outsourced (automation, low-risk projects, menial tasks). Trust us, you don’t want to be doing that work anyway. By knowing where to look and what skills and companies to pursue, you will be able to avoid the biggest global headaches.
In short, yes, you should be a software developer. You should start right now, right here, at this blog. Let’s go.
Start with the Basics
Let’s get a big question out of the way.
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.
We’ve personally interviewed hundreds of candidates for development, testing, and management roles. Many of the candidates went on to be successful developers in a position they loved.
Guess what? Many of them didn’t have a STEM degree. In fact, some didn’t have a college degree at all.
We won’t lie. Having a degree definitely gives you a head start in the job hunt, but there’s still ways forward without one.
In this guide, we offer suggestions and approaches in case you don’t have an opportunity to obtain a degree.
How to Find Your Focus
You’ve made it this far in the guide which means you’re itching to get started. But it’s time to focus. Having a goal in mind helps push you in your journey even if you’re not ready to start directly on that goal.
Start small. Keep it simple. Improve in increments.
Facebook didn’t start as a bazillion dollar company immediately. That’s your first lesson. That wasn’t so hard.
Next, identify what you enjoy about computers. It helps to have a genuine interest. Sure, you can treat software development as “just another job” and clock out after 5 PM, but you may find yourself dragging when it’s go time.
Ask yourself some questions and write down the answers:
- Do I like to play with hardware? (keyboards, mice, televisions, cars, robots, phones)
- Do I enjoy using software? (operating systems, word processors, video games, movie/music players, browsers)
- Do I have a hobby or other profession that uses computers? (business, finance, sports, video games, movies, health, fitness, science)
- Do I use any device of software that I hate or is frustrating to use?
- What would you improve about them?
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.
Where to Start Learning About Computers and Software Development
Now you’ve got a focus. Awesome. That’s what will guide you in your journey.
Let’s take a quick reality check. Your path won’t be easy. It won’t be quick, but it will definitely be fulfilling.
Before you dive in the Internet ocean searching for guides to achieve your focus immediately, we need to first explain where to find the fundamental knowledge and proper techniques.
You’re going to need a few things to get going: a computer, the Internet, a positive attitude, and determination.
If you don’t have a computer and don’t want to pay for Internet (it can be expensive depending on where you live), find your local library to borrow some time on the public computers. You’ll also get access to a huge variety of books and might find someone else on the same paths as you. Triple win.
Leaving the house allows you get into a study mode where your distractions are limited and your time is dedicated.
Many people procrastinate because they’re surrounded by more comfortable and passive forms of entertainment. Don’t be that person. Eliminate the distractions and focus on your focus.
Learn the Fundamentals of Computers
If you already know how computers work beyond “I turn it on and click things,” then you’re ahead of the game. Otherwise, we suggest you take some time to first focus on just how computers work.
Fair warning: “fundamentals” can lead you into a never ending rabbit hole of information. You want to learn just enough to make you dangerous but not enough to cause information overload.
We suggest studying in three broad categories: how computer hardware works, how computer software works, and the specifics of programming.
Again, don’t get bogged down in too many details. At this point, you’re not looking to build a computer from scratch or create the next operating system.
Consult a Variety of Resources
Now comes the fun part. You’re finally ready to start learning.
You’ve built up the willpower and motivation to get you this far. The car is packed and your destination is tapped into your GPS.
It’s easy to get overwhelmed by the amount of resources out there. You can waste your time aimlessly wandering through Google searches all day, or you can follow this section to find the best information.
The beauty of the learning phase is you win in multiple ways. Not only do you learn valuable skills, but — most importantly — you learn the best ways in which you learn.
Think about that for a second. Identifying your learning feedback loop will greatly increase your learning velocity.
You might be a self starter who prefers watching YouTube videos and reading Wikipedia articles. Maybe you prefer a more structured class setting in Pluralsight instead.
No matter what style of learning you prefer, there are options for you that are completely free.
Let’s narrow down our favorite resources as a starting point. When you get more comfortable, you can branch out to others organically.
Don’t worry if you have to watch multiple times. Pros didn’t get to be pros by doing something a single time and moving on.
Start with KhanAcademy
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
There’s definitely a lot more so make sure to check out the rest of the Computers 101 section.
Move Up to Structured Classes
Once you’ve knocked out those quick introduction videos, take some time to learn in a more structured setting. You might discover that you learn better than through self-directed learning.
Using a site like Coursera offers you a set of free online classes. If you want grades, certificates, and other premium features, classes start at $49 each.
If you want the feeling of a university course where you can work along with the class or move at your own pace, we suggest enrolling in the Computer Science 101 and Principles of Computing classes from Stanford Online. These classes last much longer, are sometimes self paced, and are completely free.
Focus on Specific Programming Skills
When you feel like you have a comfortable grasp on computer fundamentals, it’s time to dive into the specifics of development.
Start with the Programming 101 (free) series from KhanAcademy to learn about program structure, variables, flow control, functions, logic, and basic data structures.
When it’s time to write code as part of these courses, don’t get hung up on your starter programming language. Python is popular, easy to start with, requires minimal setup, and is a great introduction language.
The Programming for Everybody (free) class from Coursera and the five beginner classes in the Python Path from Pluralsight ($29 / mo for all classes) offer you a great chance to start the basics of programming with Python.
Reference Relevant Documentation and Blogs
Every programming language, framework, and development kit has a dedicated set of documentation maintained by the creators.
“Anyone can edit Wikipedia!” you say. Check the sources on the articles for the meat and potatoes. If there are no sources, then you can move on.
The bottom line is that it’s critical to find relevant documentation, bookmark it, and reference it regularly.
Get Some Physical Books
Don’t rule out good old fashioned paper books. Used as supplemental and reference material in addition to courses can go a long way to retention.
Start at your local library. This gives you the opportunity to leave the house, get into a study space, and focus on your mission. Plus, if you’re short on cash, you’ve got access to public computers and Internet.
Take a look through the Computer & Technology books section on Amazon. Don’t go on a scattershot buying spree though. Read through the reviews to find something that will interest you. Remember your focus.
A lesser known source of books is HumbleBundle. As of this writing, there are bundles on Machine Learning, Artificial Intelligence, Career Building, and Project Management. Bundles typically run for a set period of time (a few weeks) and are priced at whatever you want to pay (minimum of $1). Seriously, you can get a bundle of awesome books for $1. Why pass that up?
O’Reilly Media, you know, the one with unrelated animals on the covers? Shop contains a ton of great books on specific topics. Make sure to watch for sales (Black Friday and Cyber Monday for example) because you get some good discounts. Sometimes these books even end up in HumbleBundles.
Ask Questions on StackOverflow Regularly
Face it. You’re going to have a lot of questions. There’s nothing wrong with that! You’re learning new, complicated topics that you may have never seen before.
The beauty of the Internet is that it’s a huge web of information. Literally anything you want to know can be found by asking a search engine.
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.
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.
Experiment with Small Projects
Many of the resources listed above will have you write code and finish some projects. But those aren’t really your projects.
You have no special attachment to them. You need something that you can call your own.
A big part of the satisfaction behind software development is knowing that you created something. Not only do you get something that you can call your own, but you also gain critical skills related to problem solving and thought experiments.
Start by checking out our big list of the best programming tools that every developer should get to know. We don’t suggest you install every tool on that list, but it’s good to keep the list in your back pocket throughout your journey. Remember to customize your workspace and download productivity-boosting extensions for your development environment. It’s not cheating, it’s just smart!
Keep your first experiments small. You don’t have to be stuck with “Hello World,” but you also shouldn’t immediately try to create the next billion dollar application. Don’t abandon projects mid-stream unless absolutely necessary. You should see every project through to the finish.
Of course, you have to define what “finished” means to you and to that specific project. You’ll quickly learn that many applications are never truly finished. You make something “good enough”, ship it, and move on.
Try making a list of simple games to create. Keep it text-based. Don’t jump directly to graphical games.
Build a Public Portfolio
At some point, you’re going to have to push your creations public and share your knowledge with the Internet. There’s no sense in hiding what you know and what you’ve built just because you don’t think you’re “good enough.” Imposter syndrome can be a tough thing to break through.
Before you can do that, you need to learn the basics of source control. Up until now, you’ve been editing your files without any change history or backups. When you start building bigger projects that require help f