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 2020?
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 from others, you’ll need the assistance of source control.
Learn Source Control
The standard source control tool is git. It’s often criticized for having a non-intuitive set of commands, but its definitely fast and is great at handling man tough scenarios. At least try the command line for a bit, but if you absolutely hate it, download a GUI for git. We suggest SourceTree on Windows.
While you’re learning, get acquainted with what version control is and why it’s important. Then move on to a video like Learn git in 20 minutes. When you’re ready to move on to a more official reference, look at the Pro Git book. It can be a little dry at times, but is hosted right alongside the actual git documentation.
And finally, check out our awesome guide to the essential Git use cases.
Learn Distributed Source Control
After you learn the basics of using git locally, you can start to use cloud hosted providers by opening your GitHub or BitBucket account (they’re free). Watch the video Git & GitHub Crash Course for Beginners. Commit your small projects to them to learn the git flow. Continuously commit your projects, hobbies, and code to your public profile. This builds up something you can reference during meetups, discussions, your own blogs, and even job interviews.
When we interview candidates, we are impressed by candidates with active and regular public profiles because it shows that they care enough to maintain their own projects. This gives you an advantage over candidates that don’t have anything to show.
Use StackOverflow Effectively
We want to give another call out to StackOverflow. While employers probably aren’t going to search through your Q&A, you can use it to practice and build some credibility. So go ahead, create an account (it’s free) and start asking some questions. When you get more knowledgeable, we suggest you start answering questions too. You’ll build a reputation profile (useful later) and give yourself some much needed practice.
Get Involved in Local Community Meetups
This step doesn’t need to wait. In fact, many local meetups are full of beginners starting out like you. If you want to get out there and start socializing immediately, then there’s no reason to wait.
We know socializing isn’t for everyone, but it can be good to get some conversation practice for when you enter the “real world.” Networking with potential employers can get you noticed better than cold calling and applying on random job hunting sites.
The best part about meeting up? You might find a local group that’s interested in creating a startup, swapping ideas for projects, or recruiting for a job. In all honesty, there’s no reason to skip these meetups because there’s very little downside.
Apply for Jobs & Work Experience
This is it. The moment for which you’ve worked all this time. You’re ready to start getting some work experience.
Maybe you just want to dip your toes by teaming up with a college work experience program. Or maybe you’re ready to jump head first into the job hunting scene. There are options either way.
If you have a relationship with a university or community college, there are typically work experience programs with partnered businesses. As a college student, this gives you the opportunity to start making money, get work experience, network with actual engineers, and figure out if you even like the profession.
Research Your Worth
Use sites like Salary.com and Glassdoor to research normal salaries and benefits for software developers based on years of experience, education, and location. Remember that these are just starting points and should be treated as small samples of data. Use these sites as backup in your salary negotiations, but don’t be upset if your ultimate offer doesn’t align with your expectations.
With Glassdoor, you can go further by looking up open job positions and reading reviews from employees about companies. Try to keep all the usual caveats of reviews in mind. Anger is a huge motivator, and many reviews are specific to a certain person’s experience. Try not to extrapolate too much based on a small sample size.
Try not to get discouraged during this phase. The job hunt can be brutal at times. Fortunately talented software developers are extremely in demand even during the harshest of economic times.
You’ll have better luck in areas with established industries, but that’s offset by a higher cost of living. It can be beneficial to find a good balance between a high salary and low cost of living area. Not all the jobs are in Silicon Valley.
How to Become a Software Developer FAQ
What’s the difference between a Programmer and a Software Developer?
Programming is a subset of software development.
A computer programmer, sometimes called more recently a coder (especially in more informal contexts), is a person who creates computer software. The term computer programmer can refer to a specialist in one area of computers, or to a generalist who writes code for many kinds of software.Wikipedia — Programmer
According to Wikipedia, software development involves much more than programming:
Software development is the process of conceiving, specifying, designing, programming, documenting, testing, and bug fixing involved in creating and maintaining applications, frameworks, or other software components. Software development is a process of writing and maintaining the source code, but in a broader sense, it includes all that is involved between the conception of the desired software through to the final manifestation of the software, sometimes in a planned and structured process.[Wikipedia — Software Devlopment
Aren’t software courses and tools expensive?
Yes and no. A formal education can be expensive depending on the school. On the other hand, a lot of online material is absolutely free via YouTube, KhanAcademy, and, to a lesser extent, Coursera. Beyond the official sites, there’s an endless number of blogs by superstars in the developer community. You’ll only need to spend money on structured courses at places like Pluralsight or universities.
On the other hand, there are a ton of open source tools to get you started. When you get more serious (and depending on what you’re doing), it might make sense to dip into paid options for tools like Visual Studio, GitKraken, and IntelliJ IDEA.
What’s the best programming language?
The one you and your team knows best. That isn’t a cop-out answer. The bottom line is that most programming languages are nearly identical when you compare the fundamentals. They differ in syntax, documentation, some esoteric functionality, and the community libraries built around them.
So don’t stress about this one too much. Follow along with your favorite tutorials and classes with whatever language they suggest. After you become more proficient, you’ll be able to pick up other languages easily.
How much money does a beginner developer make?
This can vary wildly between cities, states, industries, and companies. The Bureau of Labor Statistics states that the median pay in 2018 was $105,590 / year. Double check these numbers in your area using Salary.com and Glassdoor.
Keep in mind that your starting salary most likely will be below the median in your area. Until you get some real experience, companies likely won’t want to take a large chance on you. We still encourage you to try negotiation for practice.
It’s also important to consider the overall benefits packages instead of focusing entirely on salary. Sometimes you can get equity in a company, a lot of paid time off, and low insurance premiums/deductibles with good services. Salary is important, but it isn’t everything.