I think Software Development is a great career. If you're someone who likes to solve problems, there's a good chance you'll enjoy it.
I've had a few folks ask me how they could get into Software Development. Some of them have gone on to become professional developers! The conversations ususally go the same way, so I thought I'd write it down in a place that's easy to share with others.
As a disclaimer, there are many paths to becoming a Software Developer. The path we'll go over here is just one of them. It's the one I took, and it's the one I've seen work for others.
Software Development is a broad field. There are many different types of jobs, roles, languages, technologies, etc. It can be overwhelming to even find a place to start. The important thing to do is to just start somewhere. After you are comfortable and have a good understanding of the basics of programming, you'll find that the skills you've learned will transfer to other areas easier than you might think.
Now, there are cool gigs out there where folks are building machine learning models, virtual reality experiences, drone tech, etc. I personally went down the path of web development - building applications that run in a web browser (on the internet). I picked that path because there were tons of resources available to learn from, most development job opportunities I saw were in that area, and I use the internet every day so I was interested in learning how it worked.
The rest of this article will focus on becoming a web developer. If you're interested in other areas of software development, I'd recommend checking out other resources like freeCodeCamp for the specific niche you're interested in. Don't forget though, the skills you learn in one area of software development will transfer to other areas. My co-worker is actively building a virtual reality IDE that allows him to code VR in VR. He's a web developer.
You'll hear of a few other roles thrown into the web development mix. Here's a few of the more common types of software development roles:
There are many other types of roles, but these are some of the more common ones.
I fundamentally believe that it's good for devs to have at least a basic understanding of all of these roles. If you're a Frontend Developer, understanding how the backend works will help you work with your backend teammates and build frontend applications that interact with the backend more efficiently. If you're a Backend Developer, understanding how the frontend works will help you build APIs that are easier for your frontend teammates to use.
With that said, the rest of this post will focus on becoming a "Fullstack Developer". The definition of "Fullstack" is a bit subjective and varies from company to company. Some companies will expect you to be proficient in one area (frontend or backend) and have a basic understanding of the other. Some companies will expect you to know a bit about devops. Some companies won't allow you to touch devops resources. It's all over the place.
I recommend getting started down the path of becoming a Fullstack Developer. You'll learn a bit about frontend, a bit about backend, a bit about devops, and you'll learn what you like and what you don't like. You'll also be able to apply for more jobs, which is always a good thing, especially when you're just starting out.
The first thing you're going to need is a computer. It doesn't have to be fancy. Just about anything that can run a web browser without melting or the fans spinning fast enough to take off will do.
On that computer, you'll need a few things common to development:
All of the tools I mentioned above are free. You'll find that most tools in the development world are free. It's pretty sick.
The tools above also assume you're going to go down the path of running everything on your local machine. These days, there are several web options that allow you to get up and running without having to install anything on your machine. One of my favorite options is Replit. It's a great way to get started without having to worry about installing anything on your machine.
Since we're focused on my recommended path for becoming a Fullstack Developer, we're going to need to pick a language to learn. There are many options out there.
There are many other languages out there, but these are the three you'll need to get started. You'll find that most web dev jobs will require you to know these three.
You can build a website with nothing but HTML. I'd suggest starting there. Get comfortable with HTML. Take a course. Build a couple of basic websites.
You'll quickly find that HTML alone isn't enough to bring all of those wonderful ideas in your head to life. You'll probably want a website that looks like it was built in the last 10 years. That's where CSS comes in. Introducing CSS to your HTML will allow you to style your website. Make that button blue. Make the text bigger and the font more stylish. Again, take a course or do some reading. Build a couple of websites with HTML and CSS.
I would recommend going a step further at this point and learning a frontend framework. A frontend framework is basically a set of tools that are a layer on top of all the stuff you just learned. You'll still be using the things you learned when working with a framework, but the framework will provide you with a lot of functionality out of the box. You won't find many jobs out there that don't require you to know at least one, and they make building websites faster and easier. There are many options out there, but I'd recommend React. It's the most popular frontend framework out there right now. And for the sake of getting a job, it's probably your best bet at the time of writing this. Again, take a course. Do some reading. Build a couple of websites with React. For React, I love recommending The Beginner's Guide to React.
At this point, you should be relatively comfortable building frontend applications. If you haven't already interacted with an API (Application Programming Interface), in any of your projects, I'd recommend doing so now. APIs are how frontend applications interact with backend services. You'll find that most frontend applications will need to interact with an API at some point. You can build your own API, but I'd recommend using an existing API to start with. There are many options out there. I'd recommend The Rick and Morty API. It's a free API that has a lot of data to play with. Learn how to make requests to it and display that data in your frontend application.
Once you've built a couple of API's, try incorparating one into your frontend application. You'll find that you can do some pretty cool things when you combine the two.
At this point, you're a freaking Fullstack Developer! You can build frontend applications and backend services. You can build a website from start to finish. There's no reason you shouldn't be applying to jobs at this point.
While you're applying, keep building. Keep learning. Keep growing. There's always more to learn.