What is it like being a programmer? The good, the bad, and the ugly

Before taking the plunge and learning how to code, you want to get an idea of what it is like to be a programmer.

You don’t want to jump in at the deep end only to realize you can’t swim. So understanding what you’re in for with a development job is crucial.

Pop culture is in love with programming at the moment and It may skew the perception of what it is really like being a programmer.

We will take a look at the various aspects of being a programmer, how hard programming is, the rewards, and the downsides to being a developer.

To properly answer what is it like being a programmer? We also need to look at short and long-term prospects of the role, as well as the day-to-day of the job.

Is being a programmer a good job?

The definition of a good job can vary widely from person to person.

For most people, a good job includes a steady income with good opportunities. It’s also great to be challenged and have the potential to keep learning throughout your career.

Let’s take a closer look at a few elements of a web development career:

  • Salary & Benefits
  • Career Development
  • Career Progression
  • Workload
  • Work Environment

Salary & Rewards

At the time of writing, the average software developer salary is $87,373 in the U.S. and £37,810 in the U.K.

Programmers are rewarded handsomely for their work. There is a lot of regional variations in salaries but you can always expect to earn over the national average, even in entry-level roles.

In the U.S. many tech companies also offer signing bonuses, equity, and other performance-related bonuses. This is less true in the U.K but does still happen if you work for one of the big players in the industry.

Despite questions over the future of the industry, web development is thriving.

One of the great things about being a programmer is that it is easy to track the contributions you have made, as well as the things you have learned. So when it is time for salary renegotiations you have a lot of hard data to bring to the table.

With a few years of experience and a bit of interview practice your earning can skyrocket.

Career development

In nearly every development role there is ample opportunity for career development.

What do I mean by career development? It’s having the opportunity to set goals, learn new things, and take control of the direction of your career.

One of the great things about becoming a developer is the opportunity to steer your career development.

There are so many niche parts to programming to explore and navigate down. The right company will help you find what you are passionate about and help lead you down that pathway.

In the short term, your carer development can be learning X or Y language but in the long term, it can be managing certain teams or specific products.

Career progression of a programmer

Career progression is different from career development. You can keep developing in the same position without ever progressing onto a new role.

Thankfully the path is well-trodden in development so you already have a lot of people in the industry to learn from and get an idea of where you want to go.

Some people spend a few years in the trenches producing a lot of code and then want to transition to less technical roles. Others love the specific nature of writing code and opt to go the specialist route and become subject matter experts.

Whatever you choose to do there are a tonne of different roles for you to progress into. Typically most programmers go on to do at least one of the roles below:

  • Senior Developer
  • Business Analyst
  • Tech Lead / Technical Architect
  • Software Development Manager
  • Product Manager
  • Project Manager
  • CTO / Senior Leadership

Roles like a technical architect are specialized and typically won’t require managing people. While the other roles involve managing small and large teams as you head high up the chain.

lines of code

Workload

Being a programmer involves an interesting and varied workload.

At the heart of the job is problem-solving. At the smaller end you have bug fixes and improvements, at the other end you have building new functionality and introducing new features. All of it requires you to solve problems.

If that is your thing, then I’d say being a developer is definitely for you.

The size of your workload is always going to vary so you have to be prepared for peaks and troughs. Sometimes your team will focus on fixing a lot of bugs, other times you will be building out exciting new features.

The type of company you work for will also have a massive impact on workload. If you are in a client-focused agency then things can get tense around deadline day. For companies with internal products, the focus can be more around quality than quantity so the workload is spread.

I used to work for an agency and now work for a company that has client-facing internal products that we work on. I much prefer the latter. But every programmer is different and you will figure out what you like along the way.

Work Environment

There is a media perception that developers are all antisocial introverts but the reality is far different.

Being a developer involves a lot of collaboration. You work closely with your team all week long so good communication and the ability to work well with others is essential.

Typically developers aren’t client-facing so you work closely with product owners/managers. They distill business requirements down then work with your Tech Lead to create actionable tasks.

As a junior, you are likely to lean on the more experienced members of your team, and in good companies, they will have time set aside to pair up with you on particular problems.

When starting I’d resist offers from companies where you are likely to be the sole developer. It can seem tempting to work in an environment where you will call the shots but early on it is all about learning best practices from the people around you.

What is a typical day for a programmer?

The cool thing about being a developer is the variety in the work you do. New problems require unique solutions to pop up all the time.

It is important to understand what you will do in a typical day as a programmer.

  • Standup – Each day starts with standup where you let your team know what you worked on yesterday, your plan for today, any blockers you may have, and any other issues.
  • Review pull requests – Look through the work your colleagues have submitted, make comments, and recommendations.
  • Work on tickets – Take a look through the backlog or to-do list, see what has been prioritized, and work through some tickets. These pieces can be single-line fixes enormous pieces of work, it depends on what the business has planned.
  • Paired coding – As a junior, you are likely to pair up with senior developers on certain problems to upskill. These are fantastic sessions and will help you learn a lot.
  • Workshops and training – Your tech lead or senior members of the team will sometimes put on dedicated training sessions if they feel there is something the team can benefit from.
  • Meetings – These form part of any job and being a developer is no different. From kick-off meetings, and admin catch-ups, to retrospectives once a sprint finishes, there are always plenty of meetings.
  • Self-learning – Most good companies will have a budget for you to spend some time upskilling on your own. This normally includes a membership to a premium learning service like Pluralsight.

Depending on the industry your in and the position you hold the list above could look very different. I know developers that put on UX workshops for users, conduct user research, and even work closely with sales and marketing.

For me the diversity in the job is what makes it great.

Is being a programmer stressful?

You will hear a lot of people ask if being a programmer is easy or whether the job is stressful.

A quick trip over to Reddit and you’ll hear horror stories of 80 hour work weeks with no breaks and programmers constantly burning out.

Is that the reality of working as a programmer?

It depends on the type of company you work for and what their culture is like. Start-ups have a completely different way of working than big businesses. Some may require insane working hours while others are happy for you to clock off on time.

Will you be working on customer-facing systems or on internal products? Depending on the answer the stress levels can vary.

If being stressed due to a heavy workload is something you are worried about you must ask for clarity on this during the interview. Ask how they support their developers and what systems are in place during busy periods.

There are always deadlines that you have to stick to and when these come around it can be stressful. But make sure to manage your time and be open with the rest of your team about the progress of your tasks.

The other type of stress is not being able to solve a problem. You’ll find yourself banging your head against the wall but that’s the fun part of the job and the bit that makes you a better programmer.

What are the disadvantages of being a programmer?

No job is perfect and there are definitely some disadvantages to working as a developer. How much these things matter to you will depend on the type of person you are.

Its hard work

Being a developer is not that easy. You have to do a lot of thinking and really engage your brain for a large part of the day. It can leave you feeling exhausted by the time you’re ready to clock off.

If you have really struggled with a problem all day it can also be hard to disengage your brain once it is time to go home. You will end up thinking about how to solve problems at home.

Again, this is something I enjoy but for some people thinking about work at home is their idea of hell.

It requires perseverance

Sometimes solutions don’t come easy and require a lot of perseverance to get right.

If you are the type of person who gives up easily or wants the answer spoon-fed to you then this could be a major drawback.

In actuality its a part of the job I actually love.

Long hours

Even if you at a company with great work culture and opt for a good work-life balance, you’ll find yourself working long hours. If you are really on a roll and the end of the day is in sight it’s hard to close your computer down.

By default, you will want to get the problem you are working on fixed without having to refamiliarise yourself in the morning.

If deadlines are looming and you aren’t finished there is also additional pressure to get it done on time which can lead to longer hours.

Specific skillset

You definitely learn a lot of transferable skills as a developer but you also have a very specific skillset.

Learning React, Java, or Go may be super beneficial in the short term but isn’t likely to transfer over to a more product or customer-focused role in the future.

The specific nature of programming means you learn a lot of stuff which you use less and less as you climb the corporate ladder.

Lack of big picture

You will usually get your requirements from the product owner or a business analyst. These will likely be prioritized by your tech lead who runs you through what needs to be done.

Sometimes it can feel like a game of Chinese whispers when you are trying to figure out the reason behind why the work needs doing. You often won’t understand where a piece of work sits in a wider business context or get feedback from end-users.

If you enjoy understanding the big picture being a programmer can sometimes feel closed off.

Sitting down

The life of a programmer is a sedentary one. You will be sitting down all day so if your someone who likes to be out and about this isn’t the job for you.

You’ll have to keep on top of your health and make sure your workstation is set up to minimize long-term injuries. Things like posture and positioning become vital when sitting at a desk all day.

Resources

Developer Pay

Work-life Balance