We live in a world defined by software. From the navigation app on your phone to the social media you constantly check to the web browser you’re using to read this article, software is all around us.
Because our world is so reliant on software, the demand for software developers has exploded. The U.S. Bureau of Labor Statistics, for instance, projects employment of software developers to grow by 22% between 2019 and 2029 (compared to an average growth rate of 4% for all occupations).
And these aren’t menial, low-wage jobs, either. The same BLS report puts the median software developer pay at $107,510 per year ($51.69 per hour). Not to mention, the immense competition for software developers means many companies are willing to offer fantastic benefits, flexible work schedules, and reimbursement for continuing education.
Given all of this, software development is a great field to explore if you’re not sure what you want to do for a career. But what does it actually take to become a software developer? Do you need to major in computer science? Are boot camps worth your money?
To find out, I interviewed two professional software developers: Chana Reynolds and Sergio Mendoza. Both have held different roles at a variety of companies and progressed rapidly in their careers. Most excitingly, both of them also came from other fields before breaking into the tech world.
Below, I share Chana and Sergio’s advice for aspiring software developers. Whether you’re a current college student considering software development or a professional looking to change careers, you’ll find this article full of valuable information.
Is Software Development Right for You?
Before you start learning software development, you should know what you’re getting yourself into. While we certainly encourage you to pursue this path if it interests you, you need to be aware of the skills and personality it takes.
Contrary to popular perception, learning to code isn’t a superhuman ability. Sure, some people have more natural talent for it than others, but talent can only take you so far. Far more important than talent is a willingness to put in the hard work of learning.
Chana, for instance, came from a psychology background with zero coding experience. However, due to her commitment to learning she was able to progress quite rapidly. She didn’t get to where she is now because she was smarter or better than the other people in her program; she just worked harder and didn’t give up.
It’s also important to have the right expectations for the day to day work of software development. A lot of people imagine that learning to code is a ticket to an easier job that pays more money.
While the more money part can be true (see the above salary statistics), software development is hard work! You have to be comfortable with a constant feeling of ignorance and inadequacy, solving problems without obvious solutions. If you’re looking for a job where you always feel competent and on top of things, software development probably isn’t for you.
If the above doesn’t scare you, then keep reading to find out how to start learning software development.
How to Learn Software Development
Learning to code is an intimidating task. And if you’re a beginner, it’s easy to waste lots of time trying to find the right learning resources.
To simplify the process a bit, here’s an overview of the three main ways you can learn to code (and thoughts on each).
Development Boot Camps
If you have even a passing interest in learning to code, you’ve probably seen ads for software development boot camps.
While they can differ in their details, all of them offer more or less the same thing. You spend anywhere from a couple of months to a year on intensive learning, with the hope that you’ll be able to find a job afterward.
Boot camps can certainly be an effective way to learn to code; both Chana and Sergio got their start that way. However, they each stressed that not all coding boot camps are created equal, and some will be better for certain learning styles than others.
Sergio, for instance, learned the bulk of his coding fundamentals from a self-paced, online boot camp through the Flatiron School. Since he was also working full-time as a bartender, this format worked well for his schedule. But he noted that doing an online boot camp requires a lot of discipline, so it won’t be the best fit for everyone’s learning style.
Chana, on the other hand, learned to code through an in-person, full-time program offered by Galvanize (where she was working at the time). Since she learned best in a highly structured environment, this style of boot camp suited her. But again, that doesn’t mean it’s best for everyone.
Regardless of the type of boot camp you choose, be sure to do your research. Here are a few key things to consider:
- Does the program offer job placement or career coaching in addition to coding training?
- Are this program’s graduates going on to be successful? Search the boot camp’s name on LinkedIn to see where their graduates end up working.
- How will you pay for the boot camp? Can you pay as you go? Can you defer payment until you’ve gotten a job? Is financial aid available?
- Will you have a portfolio of projects to show potential employers once the boot camp is over?
Self-Taught
While both Sergio and Chana got into software development through boot camps, that isn’t the only path. You certainly can teach yourself the coding skills you need to get a job. However, you need to have the right expectations and approach.
Obviously, teaching yourself to code requires a great deal of self-discipline and organization. There isn’t an instructor or regular deadlines to keep you accountable. And the lack of a clear curriculum can make it difficult to know where to focus your learning.
However, don’t let that discourage you! Tania Rascia, the author of one of my favorite development blogs, is a self-taught software developer who transitioned from a career as a chef. You can read her inspiring career story here.
If you go the self-taught route, it’s very useful to have some quality resources and curricula to guide you. Here are some to get you started:
- freeCodeCamp – A completely free library of interactive, text-based tutorials to take you from absolute beginner to competent coder.
- Treehouse – If you prefer video tutorials, Treehouse remains one of the best resources we’ve found for learning to code.
- Learn to code in 2020, get hired, and have fun along the way – A self-taught coding curriculum composed of free resources across the web. Especially useful if you want to learn web development and JavaScript.
Finally, note that you can always do a boot camp later if you decide the self-taught route isn’t for you. Going through some of the above resources is a great way to dip your toes into the field and see if you want to pursue software development further.
On the Job Learning
Boot camps and online resources are a great way to learn the basics of how to code, of how technology works. However, both Sergio and Chana said they learned far more from their first internships and jobs than they ever did during their formal coding education.
First, working in an actual development job teaches you how to work with a team. While some boot camps teach you the basics of this through group projects, there’s no substitute for working on a real production app. And if you’re a self-taught developer, this experience will be even more valuable since you likely haven’t worked in a team setting before.
Beyond that, being a professional software developer is a lot more than writing code. You have to learn how to communicate with designers, product managers, and other stakeholders. You learn the nitty-gritty of debugging a production app (something that’s hard to study in school). And you realize that you spend as much time talking about how to build something as you do building it.
Because of this reality, don’t worry about your first software job paying a lot of money or being at a prestigious company. It’s far more valuable to find an internship or job where you have the chance to learn. From there, you can focus on advancing to jobs that pay the big bucks.
How to Network as a Software Developer
If you think that learning to code is all you need to get a job as a software developer, you’re mistaken. While the talent pool has yet to fully catch up with the demand for developers, you’re still going to be competing with a lot of people who have the same resumes.
To get ahead in the field, then, networking is essential. I was pleased to learn from Chana and Sergio that most of the standard networking advice applies. Because we have a whole article on how to network, I won’t rehash those details here. However, I do want to discuss some networking tips that apply specifically to software engineering.
First, one of the main advantages of doing a boot camp is that it comes with a built-in network. Most obviously, you can network with other students in your cohort.
But don’t be afraid to go beyond that and reach out to alumni from your program. They were in your shoes not too long ago, meaning they’d probably love to help you. Of course, don’t be needy or obnoxious. Approach networking with curiosity, not an expectation that you’ll get a job.
Chana also noted that while software developer meetups can be a good place to start, don’t confine yourself to the software industry. Pretty much every company these days needs someone to build software, so see if you can leverage connections in your current industry and network. Even asking, “What do you do?” when you meet a new person can open doors you might not imagine.
Not sure what to say when reaching out to software pros? Here’s how to write a networking email that gets a response.
Software Developer Interview Tips
So you’ve learned the basics of coding, made some connections, and now you have some interviews lined up. What can you do to set yourself up for success and stand out from the competition?
Conquering the Technical Interview
One of the most intimidating parts of interviewing for developer positions is that they often require you to do some sort of technical interview. The classic form of this is the “whiteboard interview,” in which you solve a programming problem on a whiteboard in front of an interviewer.
While this can be scary and weird, it’s possible to prepare. Sergio recommends a book called Cracking the Coding Interview, which gives an overview of how interviews work at big companies like Amazon, Facebook, and Google. He also suggests using LeetCode, HackerRank, and Codewars to practice the type of problems that are likely to come up in a coding interview.
However, both Chana and Sergio noted that whiteboard interviews are less about if you can solve a specific problem and more about demonstrating your problem-solving process. The interviewer wants an insight into how you think.
And whatever you do, don’t stop talking or working through the problem. Standing silently in front of the whiteboard for minutes at a time is just as awkward for the interviewer as it is for you.
Have a Strong Portfolio
Besides preparing for the technical interview, make sure you have a portfolio that you can include as part of your application and discuss in your interview. Any good coding boot camp will require you to create one of these, but be sure to make one if you’re going the self-taught route.
To see examples of great portfolios, check out this roundup.
Be a Real Person
Beyond wowing with your technical knowledge, don’t forget that people hire people they like.
When hiring for a startup, in particular, cultural fit is just as important as technical skills since everyone spends a lot of time together. So don’t be afraid to make small talk, crack jokes, and approach the interviewer as a real person.
Ask Questions
Interviews aren’t just about whether or not the interviewer thinks you’re a good fit; you need to decide if you’d like to work with them. So be sure to interview the interviewer.
Ask questions about the company’s culture, values, and day-to-day. If you aren’t asking, Chana noted, that’s a big red flag for her as an interviewer.
Don’t Fake It
Finally, don’t try to fake it. If you don’t know the answer to a question, just say so. Companies are far more interested in hiring humble people who are willing to learn than cocky know-it-alls. As Chana put it, “Acting curious is a great way to compensate for not knowing.”
Software Developer Career FAQ
To conclude this guide to becoming a software developer, here are answers to a few common questions about the field.
What language(s) should I learn?
Ultimately, it doesn’t matter. Both Chana and Sergio stressed that true programming skill is language-agnostic. A skilled developer should be able to jump into any codebase, even in an unfamiliar language, and figure out what’s going on.
Having said that, it’s best to focus on one language when you start. Jumping between languages will just distract you from learning core programming concepts. Since it’s used so widely and is (relatively) easy to learn, we recommend starting with JavaScript. This is also the language most boot camps focus on.
How long does it take to become a software developer?
The answer to this depends on what you mean.
If you’re asking how long it takes to get a job, that comes down to your work ethic and available time. A highly-motivated student with few external commitments could finish a self-paced boot camp in a few months. On the other hand, someone with a full-time job or family might need a year or more to learn the necessary skills.
And beyond learning the skills, how long it takes you to get a job depends on your interviewing ability and diligence in networking.
How do you progress in your career as a software engineer?
Once you’ve had a couple of jobs and learned the ropes, what does a typical career progression look like for a software developer?
At the most basic, you move from being a junior to mid-level to senior developer. Beyond that, there are a few different paths. You could take the typical corporate route of moving into management, eventually aiming to become a CTO (Chief Technical Officer).
However, moving into management is far from the only option. Chana, for instance, is currently interested in moving to a dev-ops role. In these sorts of roles, you do less in the weeds programming and more thinking about larger aspects of application architecture. Ultimately, someone on this path could become a software architect, advising companies on how to build the tools they want.
Finally, you could move from the day to day of production programming into product development. Instead of building an app, you work with designers to prototype new products that the engineering team can then execute.
And because software development is still such a young field, it’s possible to progress in your career quite quickly if you have the drive and work ethic. Both Chana and Sergio, for instance, have managed to move from beginner to senior roles in just a few years.
Do you need a degree to be a software developer?
You may be surprised that I haven’t mentioned a bachelor’s or any other type of degree thus far.
Unlike in many industries, having a degree is very rarely necessary for being a software developer. As long as you can demonstrate your skills through a portfolio and interview, where (or if) you went to college doesn’t matter.
Do you need to major in computer science?
While a background in computer science can certainly help as an aspiring software developer, it’s far from required. Much of computer science education deals more with the theory of computers than the practice.
If you’re interested in computer science as a major, go for it! But don’t think you need to change your major or go back to school for computer science. Indeed, having a background in a different field can make you a better job candidate since you can draw on other ways of thinking.
Do you need advanced math skills?
Before I learned anything about programming, I assumed it involved a lot of advanced math. While there are certain realms of software development that require heavy math, this isn’t true overall.
Most of the math you use is arithmetic or basic algebra. Learning to code is much more about thinking logically and solving problems methodically. This is a challenging skill in its own right, but it doesn’t require you to know differential calculus.
Where to Go from Here
Whew! I know that was a lot of information, and I appreciate you sticking through until the end.
Because we covered so much ground, here’s a quick summary of how to become a software developer:
- Learn to code, either through a boot camp or an online resource like freeCodeCamp or Treehouse.
- As you’re learning to code, build a portfolio that you can show to potential employers.
- Network as much as possible. Go to developer meetups (even virtual ones), reach out to your existing network, and interview other developers.
- Start applying to jobs and preparing for interviews. Don’t let technical interviews intimidate you.
- Once you have your first job, it gets much easier to find subsequent ones. Start thinking about where you want to focus and progress in your career.
Finally, remember that while this path can be tremendously rewarding, it won’t be easy. Be tenacious, and don’t give up. We believe in you!
Many, many thanks to Chana Reynolds and Sergio Mendoza for contributing their time and expertise to this article. You can learn more about each of them below:
Image Credits: software developer at desk