Thomas Andrew Hansen
Business
Self Develpoment
Tech
My personal pros and cons list of becoming a software developer

Introduction

Are you thinking about becoming software developer?

That's cool! It could be one of the best decisions you make in your life... maybe?!?

Being a software developer has its fair share of cliches and stigmas. When I first think of being a "software developer" for a profession. The first thing that stands out to me is being a so-called “nerd”. This may consist of traits like being lanky, having a neck that bends over like a crane along with shoulders that are about to landslide down the chest, and no social skills. Or... maybe a bald fat guy that can talk no stop s#!t, but isn't emotionally intelligent at all and unable to read someone's social cues.

Apologies if I come off rude making fun of the social stigma of what a software developer is. To become great at anything in life you need put in lots of hours and sadly those hours get taken away from parts of your life. Like looking after your self. See "Too much screen time"

The reason I'm am writing this blog post is that I wish what I knew I was getting into before I started software development and I hope I can portray some light on the changes that have happened to me throughout my career thus far and how it's affected me as a human being and show some insights that may be helpful to you.

Firstly, let's start out on some positives.

Reasons learning to be a software developer is good:

1. You think logically.

Every day you code, you are training your brain to think more logically and critically. You will find yourself asking why more frequently before you do something. Also, trying to find the source of the problem or underlying truth. Because you know if you don't find the issue from the source of the problem in your code you will just find more problems elsewhere later on.

This may somehow seep into your life as it did with mine. And I say this because I have noticed a trend when I talk with people recently. I will ask them the question 'why' more frequently and I will try to find the source of their issue/ or truth or what they are talking or maybe lying about.

It's interesting because lots of people seem to find this questioning unnerving/ uncomfortable as maybe they don't want to uncover the real reason something is wrong in their life, or why they choose not to do something. Of course, it could be the way that the question is being asked or portrayed. Maybe they don't care about self-development. Whatever the reason. Sometimes it's best to approach a social situation with a warm heart and let them have their secrets.

2. You take time into every consideration in your life.

This may not be true for a lot of developers. Especially one who just wants a job. But for others with a more entrepreneurial mind or ones on contract as opposed to full-time employees.

You may find yourself crunching down the hours you have in a day and trying to spend them as wisely as possible.

But what makes you more conscious of the time you ask?

I believe it's just due to the ridiculous amount of time it takes to do development work well and how much a team's meetings and misinformation can add to your time.

A typical example is. Sometimes you will have meetings with 5-20+ people, all of whom are on $100 an hour. If you have someone bring up a topic that is not relevant to everyone then you are genuinely wasting time. Let's say you have someone bring up a topic that's been talked about to 10mins.

A quick crunch: 20 x 100 / 6

That 10min chat about why that header was off by 1px because Shane couldn't wrap his head around it, just cost the company $333.

Another huge and probably more important factor is scalability. As the business scales, so does all of these issues:

  • Messy code,
  • Not taking the time to write tests.
  • Incorrect implementation.
  • Other tech debt.

When the company starts, you may think it’s ok to leave some messy code here and there and worry about writing the tests at a later point. However, unfortunately, that later point to work on it never comes around as there are always more things to work on.

The bad part about this is. As the business grows, and you hire more developers, these developers are looking through the messy code and unable to understand it as easily, so take longer to do their job, and because there's a time crunch, they will contribute more code at hasty paste leaving more room for error and messy code. As time continues to go on you eventually have a codebase so big that you just have a dumpster on fire and you can’t put it out.

As for writing tests, a similar scenario applies. Writing automated tests can take quite a bit of time at the start of a project. However, once your project starts rolling and getting bigger and more complete, having tests in place will start saving a whole lot of time and money. Just think, if you were to compare a computer doing all your testing throughout your entire system every time you deploy a change, it may only take minutes and the developers can pinpoint anything that is broken and exactly where it is. Or you get you could hire some manual testers that would take days/ weeks to go through the entire system to make sure nothing is broken before it’s deployed, then they would have to document it and explain it to the developers, for them to navigate through the system to then find it.

3. You improve your computer skills and overall awareness of the tech world and futurism outlook.

Being more familiar with software and how it’s built, you are way less likely to be scammed as you will be more informed and likely to pick suspicious behavior and the clues of what to look for in a scam more easily.

4. Good money

There are not enough developers right now. So since there is a high demand, it's easy to get a job with a decent salary.

5. You should be able to work from anywhere

I'm sure you are all aware Covid-19 has helped with making more positions become WFH. However, in most cases, it should be viable for developers to work 100% remotely. The tools that are out there to collaborate well if not better online than in person exist. Just unfortunately a lot of companies are not ready to take the full leap in making their remote working international, even if it is in the same time zone. It's a bit of a pity as there are lots of adventures to be had all over the world.

Reasons being and learning to be a software developer is bad:

1. Too much screen time

The human body is not designed to be in front of a computer screen.

Why does your body matter you ask?

Because you live every second of your life in it. Respect it.

Your body gets f&^%$ked.

1. Your eyes

Please make sure you are using dark mode as much as possible. A great chrome extension is dark reader.

2. Your neck and shoulders.

They are gonna get hunched unless you take much-needed proceedings. Standing desks a laptop stands are becoming more popular. Although in saying that. I remember rocking a laptop stand in the Melbourne, Australia library for a couple of weeks while I working there and had a huge amount of interest in it. don't think portable laptop stands are too common in Australia yet.

3. Your back

The amount of developers I have met now that have mentioned they have had back problems is considerably high. I'm not sure what they are doing wrong. Probably a lack of everyday exercise.

You need to add extra time into your day to account for exercise. Which again takes perseverance and consistency. Every day I try to do at least one exercise session, usually two though. Right now my favorite activities for exercise consist of:

Hopefully already have something in place. But if not I couldn't stress more about how important this is for your life. Try and find something that excites you or you could picture yourself doing.

2. You are likely to be overworked.

Well, at least the money is good but unfortunately because there is a lack of developers in the market in turn you are likely to be guilt-tripped into working way more hours than you are probably charging. Learning the skill of setting and managing expectations will go a long way here.

This leads into the next in the list:

3. Lack of mental space.

When you have worked your 40-50 hour weeks, you may find you use up all your mental capacity, and your ability to make decisions becomes very difficult. This is a strange topic because as Humans we evolved to experience pain and discomfort when we have pulled a physical muscle or overtrained/overdone ourselves physically. However mentally when we exhaust ourselves, nothing is telling us we need some recovery time.

One good way to increase your mental capacity is by trying to minimize distractions, blocking social media, and isolating yourself from your mobile phone. In 2022, we live in a world where 'SMS' seems to be the main mode of conversing with our friends and family, so when we ignore it may lead to the next on the list.

4. Loneliness: Your social skills will disintegrate.

Telling and ordering a computer what to do is not like telling a human what to do. You may get good at speaking the computer language, but unfortunately, your communication skills with other humans will fall.

Why do you want to talk to humans anyway? Being social with other humans could be the most fun you’ll ever have and is an essential part of our life that brings us happiness.

The human brain is wired to remove unnecessary or irrelevant information that isn't required for your survival, to leave room for more relative day-to-day information and activities. As your computer language skills increase, your verbal and body language skills are likely to decline. Being able to read facial expressions and emotions from peers, pick up on vocal tones and what they truly mean, and minuscule body language differences that may distinguish if someone is lying to you. This goes along with the emotion you put into what you are trying to portray.

When someone becomes lonely and overworked this can contribute to the next on the list:

5. Stress

All jobs tend to have a bit of stress, but stress as a developer somehow feels different.

When you are given a task or an assignment you are usually asked to give a scope of how long it is going to take you, however, It’s a common occurrence to be doing something for the first time, which kinda makes it tricky to scope out properly as there are usually unforeseen issues or work that's required to get your task over the line. This makes for very stressful work, as you seem to be always behind schedule. Sometimes you will be working on a bug or one particular thing, and it can take hours and even days to find what the source of the problem is. Leaving you banging your head against the wall and feeling hopeless and terrible at your job.

The truth is, all developers will have this feeling of uncertainty or not being good enough, and it's good to always remember this. Unfortunately, you will not be able to shake this feeling off.

Finishing up

I hope you found some of these insights I encountered useful or relatable. At the end of the day, you are coding for a brighter future and your work is contributing to the greater good. Remember to take care of your body, mind, and social life as no one else will.