What to expect from your first job in programming
Tags: beginners
Published: 2023-07-05 14:04:47

Up until recently, work in  tech had a glamorous image online. It was, and is, partially true: there are great companies out there, where employees are well compensated, are not stressed out, and have all the resources they need. It’s likely that your first job will not be at one of those places. At good companies, people stay there for longer, so the companies don’t need to hire so often. And when they do, often employees will try to bring in someone from their network. As a person starting your career, you are most likely to be hired by an organization that:
* has conditions that cause a high turnover of employees, and 
* developers don’t recommend as a workplace to their friends.

In short—companies that people leave as soon as they can. Let’s take a look at what you can expect at some of the jobs that are always hiring.

## Waterfall

Often, you can find yourself working on projects that are of a fixed scope and fixed price. There is a list of features that the company promises to deliver and the price the customer is paying. Basically, a waterfall project. As soon as there is some unexpected issue, both partners find themselves in a conflict: either price goes up, or scope goes down, or the IT company gives up part of its profit. Such a low-trust environment makes it difficult to build anything besides a small, simple project—no more than a few months of work for a team of just a few people.

On the bright side, you can quickly try and test many different approaches to projects. Languages, technologies, processes, you name it. If you pay attention to what works and what doesn’t, you can get a lot of experience in a short time.

Besides that, there are plenty of downsides. It can be very chaotic, with many projects underway at the same time, distracting you and your colleagues. It can be stressful because spending a bit more time (or being paid for overtime) can mean that the company delivers the project at a loss.

## Everything is cheap

A cheap customer, with their cheap project, will look for some cheap IT service provider. Then the provider will look for some cheap developer to fit into the budget, deliver something that the client accepts and still makes a profit. As a newcomer to the industry, you are likely to accept below-average rates, so that you and a company like this are a “good” match. 

To add to this sad image, often because of razor-thin margins, even your workstation can be cheap as well. You will still be expected to stay productive and deliver stuff, so you better learn how to optimize your workflow on a slow, old computer.

## Low quality

So, we have rushed projects, done by inexperienced developers on slow computers. You can expect the output’s quality to match that of the input. With projects that are defined for a limited time, it’s very tempting to trade long-term health to speed things up. The things that are likely to suffer first:

* documentation
* testing
* code architecture
* maintainability

It can be especially frustrating if you care about your craft and want to learn how to build good, quality projects that will be able to have a long and healthy life. 

## A lot of pressure and little support

Another common issue: limited resources, and built-in conflict with the customer, makes it very likely to put pressure on a dev team. Unfortunately, more stress at work is likely to only make things worse: you will make more mistakes as well as waste time and effort. At the same time, an environment like this does not invite code reviews, pair programming, or even helping out your colleagues when they need it. So, you are probably going to get little to no support.

## Light at the end of the tunnel

It sounds pretty grim, doesn’t it? Luckily, every month you spend at a company like this, you gain experience, and you get closer to being able to get another, better job. When I was starting my career, I thought there was a trade-off where you get better money, but with worse conditions—longer hours, more stress, etc. Fortunately, for me, the opposite was true: every time I changed work, it was better for both money and general work conditions. It makes sense: if a company has money, it’s better to keep employees productive by not stressing them out, and hiring enough people to keep the workload doable. So, even if your first job in programming isn’t great, you are likely on the way to finding something better. Good luck!

## Still interested in IT?

If you are still interested in starting your programming career, you may find these articles interesting:

* [How to do web programming on an old computer](https://how-to.dev/how-to-do-web-programming-on-an-old-computer),
* [How to get a pay raise in IT](https://how-to.dev/how-to-get-a-pay-raise-in-it)