How to Know if Programming is the Right Career for You?
Tags: beginners, programming, career
Published: 2022-10-06 09:12:57

Software developers, especially working in major cities, can easily earn 6-figure salaries. For those working in the Bay Area with stock options, this can even hit 7 figures.

Programming, however, is not the only career where you can earn this much money. With the average working life ranging from 30 to 40 years, you need to be sure that you are going to enjoy what you are doing every day.

Life is too short to spend 8 hours a day, 5 days a week doing something you don’t enjoy, and programming isn’t the easiest of job that you can pick.

So, it is worth taking some time and working out if you will enjoy doing it.

{% embed https://youtu.be/bGQPZo0D7aA %}

## Do you enjoy the basics?
If you are brand new to programming, it is worth working out whether you enjoy the core aspects of programming, which is solving problems with code.

There are many ways to get started with programming, but one of the easiest ways is to play a game that uses code to work your way through the levels.

At the end of the day if you can’t enjoy programming when you are playing a game then there isn’t much chance you will enjoy it when it is your full-time job.

The one I have played the most in my spare time is called [“7 Billion Humans”](https://tomorrowcorporation.com/7billionhumans) by the Tomorrow Corporation. 

In this game, you are tackled with controlling the companies workers, where they are tasked with moving, sorting and destroying data cubes. 

The game will teach you some basics around variables, IF statements, loops and if you find those fun, then there is at least some chance you will enjoy solving problems with code in real life.

Here are some other games worth trying:
- [Human Resource Machine](https://tomorrowcorporation.com/humanresourcemachine)
- [while True: learn()](https://store.steampowered.com/app/619150/while_True_learn/)
- [SHENZEN I/O](https://store.steampowered.com/app/504210/SHENZHEN_IO/)

## Do you enjoy spending time on computers?
It should go without saying, but software developers spend most of their day in front of a computer.

![Woman sitting at a computer](https://cdn.hashnode.com/res/hashnode/image/upload/v1664198299736/AgOiWHdBv.png)

Before I became a software developer I was a geek anyway, so spending time in front of various screens wasn’t new to me. 

If you spend a lot of time in front of a computer anyway, then it won’t be much of a shock to you when you become a software developer and are then spending 8 hours staring at a computer screen.

One of the benefits of working in an office (not including the free drinks and snacks) is you will likely spend less time staring at a screen. Your day will likely be broken up with in-person meetings, casual chit-chats and trips to the coffee machine. 

For those of you working remotely, you have to remember to take the necessary breaks to give your eyes a rest.

The stereotypical image of a developer is overweight from lack of movement, pale from never seeing the sun, and isn't concerned about their appearance. 

From my experience, you do get the odd developer who fits this description, but it is less than 1%. 

The majority of software developers lead an active and healthy lifestyle outside of work. Many commuting into the office take the opportunity to cycle or walk, so they get in some exercise before the day starts.

Being agoraphobic is not a prerequisite to being a software developer, but if the thought of spending so much time on a computer doesn’t appeal to you, then programming probably isn’t the career for you.

## Can you think logically and break down problems into steps?

Believe it or not, the best programmers don’t spend all their time writing code. The majority of the time is spent on breaking down problems and working out solutions.

Writing code is time-consuming, and the last thing you want to do is waste lots of time coding the wrong solution.

The hardest part, and also the most rewarding, is being able to break down a problem into individual steps and working out all the different scenarios you need to cater for.

For example, imagine you are taking money out of an ATM. 

![ATM](https://cdn.hashnode.com/res/hashnode/image/upload/v1664198452818/8uDbzO1FB.png)

The public would probably break this down into about 5 steps:
1. You put your card in
2. You enter in your PIN
3. You select how much money you want to take out
4. You take your card back
5. You take your money

However, there are many more steps that need to be considered if you are trying to write code for an ATM.

First, the ATM has to know if it has any money left. If not, then a message will be displayed on the screen to say there is no cash available.

You then put your card in; however, the ATM actually sucks your card into the machine, so there are sensors there to detect when a card is present then that triggers the motors to draw in your card.

The ATM then needs to check that it can read the card correctly and if it can’t return it to you.

You then enter your PIN. The ATM must validate that you have entered all 4 digits and that the PIN matches the one on the card.

If you get the PIN wrong, it will ask you again. If you get it wrong too many times, the ATM may even keep your card and contact the issuing bank.

When you get your PIN correct, the ATM then needs to display what options are available to you. Maybe you want to see your balance or get a receipt after you have taken money out. Does the ATM even have enough paper to be able to print your receipt?

If you choose to take money out, the ATM has to know what notes are available to see what options you are allowed. If the ATM only has 20s available, then your options will all be in multiples of 20.

And the list goes on and on. 

Most processes go through quite a complicated flow chart which includes both the happy path and the unhappy path.

Being able to think things through logically doesn’t come naturally to most people, but you do get better at it over time.

It is however a necessary skill you need to have and develop to be good at programming.

## Do you enjoy learning new things?

![Person holding react sticker](https://cdn.hashnode.com/res/hashnode/image/upload/v1664198771235/0Qfq8hVII.png)

The last important thing to consider is whether you enjoy learning new things. 

Some people can’t wait to leave school or university, so they can stop learning all the time. 

For the most successful people, however, learning doesn’t ever stop. You just learn different things. 

In fact, learning can be more enjoyable after formal education, as you learn things you are interested in and not what someone is telling you to learn. 

Having a love for learning is critical if you are considering a career as a software developer.

Even if you are only planning on focussing on one area of software development, there is a huge amount to learn. 

New technologies are coming out all the time, which means you constantly need to keep up to date and learn new things.

If you look at what has come out for frontend development in the last 15 years, you can see how developers have had to learn new frameworks every few years.

- 2006 - JQuery
- 2010 - Backbone JS, Knockout JS, Angular JS
- 2013 - React.js
- 2014 - Vue.js
- 2016 - Svelte

Frontend development is particularly fast-paced, but even backend developers need to constantly strengthen their skills to not get left behind.

Backend developers have had to learn how to use No-SQL databases in their tech stacks, as well as finding new ways to scale applications.

Learning how to get applications to scale can be one of the hardest things to do as a backend developer. An application that serves 100 people a day is designed very differently to one that serves 1 million people an hour.

A love for learning is crucial if you want to stay ahead as a software developer.