One

way

to

become

a

software

developer

01 Dec 2021 ~ 5 min read

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.

Agenda

  1. Understanding the Job
  2. The Path
  3. Getting a Job
  4. Conclusion

Understanding the Job

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:

  • Frontend Developer: works on the parts of the application that the user sees and interacts with. That button you click on? A Frontend Developer probably wrote the code for it.
  • Backend Developer: works on the parts of the application that the user doesn't see. They might be responsible for storing data, processing data, or for connecting to other systems.
  • Fullstack Developer: works on both the frontend and the backend. They might be responsible for the entire application, or they might work on a specific part of it.
  • DevOps Engineer: These folks work on the systems that run the applications. They might be responsible for deploying the application, monitoring it, or for making sure it's secure.

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 Path

Your Tools

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:

  • A text editor: this is where you'll write your code. There are many options out there. I personally use VS Code.
  • A terminal: this is where you'll run commands to do things like install dependencies, run your code, etc. Which terminals are available to you will depend on your operating system. I've personally use iTerm2 on Mac and Windows Terminal on Windows. They're both great options. Right now, I'm using warp on my Mac.
  • A git client: this isn't 100% necessary to get started, but it's a good idea to get familiar with git early on. Git is a tool used for version control. It keeps up with the history of your code changes and is essential when working on a team. I use Github.

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.

Your Language

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.

You'll want to start with the building blocks of the web. HTML, CSS, and JavaScript.

  • HTML: this is a markup language used to build the structure of a web page. It's what you use to define the content of a page. Buttons, links, images.. all of those are defined with HTML.
  • CSS: this is a language used to style a web page. It's what you use to define the colors, fonts, and layout of a page.
  • JavaScript: this is a programming language used to make a web page interactive. It's what you use to make buttons actually do something when you click on them. It's probably the more difficult of the three to learn, but it's the only one that's actually a programming language.

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.

Your Learning Plan

Here's the inital game plan: learn HTML, learn CSS, learn JavaScript. In that order.

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.

Now your site will look better, but it still won't be capable of doing much. Guess what you need now? JavaScript. Introducing JavaScript to your HTML and CSS will make your site interactive. You can sooooo much with Javascript. You can make that button actually do something when you click on it. You can make that image change when you hover over it. That's just the tip of the iceberg. Take a course. Do some reading. Build a couple of websites with HTML, CSS, and JavaScript. For JavaScript, I love recommending 30 Days of JavaScript. It's a free course that has 30 awesome projects to build and demonstrate some of the cool things you can do with JavaScript. For reading, I really liked the book Learn JavasScript the Hard Way.

Once you've got a good grasp on HTML, CSS, and JavaScript...congratulations! You're a Frontend Developer! You can build websites!

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.

After you get some experience interacting with API's, it's time to start learning how to build one. This is where you'll start to learn backend development. Again, there are many options out there for building API's. Since you're already familiar with JavaScript, I'd recommend Node.js. It's a JavaScript runtime that allows you to run JavaScript outside of the browser. It's very popular and has a lot of support. Take a course. Do some reading. Build a couple of API's with Node.js. For Node.js, I love recommending The Complete Node.js Developer Course.

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.

Getting a Job