Considering becoming a Software Engineer?

Tanner Cottle
5 min readMay 21, 2021

--

My names Tanner, developer by day, teacher by night. I love teaching, I always have. I love seeing people succeed and helping them achieve their goals. Often times if I have any free time I’ll hop into a live event on YouTube and just help answer all the questions popping up in the comments.

Every day after logging 8 hours for my job as a software engineer, I hop onto Zoom and teach Middle Schoolers and High Schoolers computer programming. With the Middle Schoolers it’s a slower route, starting with very basic python fundamentals, then HTML+CSS, then basic JavaScript and so on. The High Schoolers have a similar route, just a little more advance and a little more sped up, they start with python and by the second course they’re doing HTML, CSS and JavaScript, then we move onto UI and API design and so on.

When my students start getting into JavaScript is when I see them really start to light up and be amazed by what we can do as programmers, which is always the best thing to see. I, myself, am a JavaScript enthusiast and it’s great to see my students have similar reactions to the ones I have when I discover something new.

Where do I start? What language should I learn? What’s in demand?

These are the questions I hear and see the most in forums, articles, comments, etc, from beginners or people considering programming.

The first thing I always tell my students is to not get hung up on the language we’re learning at a given time, it just doesn’t matter. The most important thing to keep in mind when you start to learn to code is that the title isn’t ‘coder’ it’s programmer.

What exactly do I mean? Programmers, or Software Engineers (keyword: Engineer), need to be able to think a certain way. You need to be able to look at a task or problem at hand and break it down into the smallest and simplest steps. You should also be able to solve these problems in creative ways. If you can’t learn to problem solve and break down problems, programming might not be for you. I believe anyone can do it but only if you actually want to be a software engineer. I see too many people doing a career jump into this industry because they see it’s in high demand and makes good money and because they see all the jokes about the job just being copy-paste from stack overflow. Don’t, I repeat, do not go into it with that mindset. You need to be able to think for yourself and truly understand the language you’re working with. If you understand your language, you’ll know how to use it to solve the problems. Those same people saying “my job is to copy-paste 🤪” are the same people who get fired or quit after a few months and then you see them on YouTube ranting about why the industry sucks. It doesn’t suck, you just didn’t know anything. When people say “it works but I don’t know why” that’s a huge red flag. Why don’t you know? Why aren’t you seeking the knowledge to understand? This is an ever-growing industry, the languages and tools we use are being updated as we speak. You have to stay learning. This isn’t a 9–5 accounting gig, you need to be passionate about the field.

Alright, I’m off the soap box, rants over. If you weren’t scared off yet and you still want to be a Software Engineer, here’s where I think you should start:

First, understand the fundamentals. Not of a given language but of programming itself. Make a list of everything you’ll need to understand to get and maintain a good job without feeling like an imposter.

A good start to the list:

  • CMS
  • MVC
  • Testing
  • Algorithms
  • DS
  • Data Types
  • Function Types (mostly a JavaScript thing)
  • Git / VCS
  • Frameworks vs Libraries
  • Frontend vs Backend

You don’t need to understand everything in the beginning, but you should know what you’ll need to understand, if you don’t know what the acronyms are, find out. That’s part of being a programmer, you’ll never know everything and you need to be able to find the information you need.

After you’ve gathered a good understanding of everything you should learn, do some research to decide if you want to be a frontend or backend developer. If you’re planning on being self-taught, I recommend going the frontend route unless you have a lot of time, dedication and will put in hours upon hours to catch up to the people with degrees, because backend interviews alone will require a good understanding of algorithms and other advanced topics.

So, now you know what kind of developer you want to be, you have a list of things to learn, but what about the programming language? Yeah, this is probably one of the last things to decide on but people tend to jump straight to this decision first.

My opinion:

Frontend Route:

  • Good understanding of HTML+CSS (learn flex or grid)
  • Learn JavaScript thoroughly (Will Sentence, JS Hard Parts v2 is a great resource once you have the basics)
  • After learning JS, choose a framework (Angular, Vue, React) (React is a library but it’s always included in this trio, if you choose React, also learn Next.js) (I recommend React because of the amount of it’s popularity and it’s cross-platform capability w/ React Native)

Backend Route:

  • Learn JavaScript (obviously I’m partial to JS but for good reason, it can be used for literally anything and most companies these days build web and mobile apps, opposed to desktop software, which JS is perfect for because it basically has a monopoly on browsers)
  • After having a deep understanding of JS, learn algorithms and data structures. You need to understand Big O and calculate the time complexity of your functions
  • Learn Node.JS and how to build servers and API. Node is one of the most powerful things to come to programming.

These steps are my go-to suggestions for starting out as a developer. The most important things to keep in mind is that the languages you choose to work with are your tools for solving a given problem, therefore you should learn to problem solve and you should learn the ins and outs of your chosen languages, whatever they might be.

--

--