Dark side of software development

I would say without a doubt that software developer is a great profession. As I wrote previously, it is a career that pays significantly more than average and has some other perks associated with it. I do enjoy it and can’t imagine myself doing anything else as a career. However, there are certain negative aspects of the job that make it an unsuitable career choice for many people.

Just as there are many young guys out there who think it would be cool to join armed special forced, but only very few would be willing to go through a tough physical and mental training to achieve this goal, so there are many people who chose a career of a software developer, only to abandon it shortly afterwards and tell everyone how much it sucks.

Because of this, I have outlined 10 of the most prominent negative aspects of a software development career that anyone who enters the profession is very likely to encounter. If you can cope with those, then a software development career is something you should probably consider.

1) You’ll often be working in total silence

Unless you are doing pair programming with a colleague, most of software development work is done in a total silence. This is because you need to concentrate and think hard to solve the problems that you are presented with.

This is why the career of a software development often attracts introverts. It is not necessary to be an introvert though. I have met some extroverted and outspoken people who also happen to be great programmers. But those people who cannot spend long periods of time without talking will find the job to be really hard to cope with.

2) You’ll be working in a loud and distracting environment

Although most of the tasks that you will do require you to be silent, the same would not necessarily be true for your working environment. People talk and they seem to talk the most precisely when you trying to solve a difficult problem.

Some years ago, most software developers worked in cubicles, which somewhat shielded them from the outside noise. However, someone eventually came up with a “brilliant” idea of turning offices into large open spaces, which most of them are these days.

Some small start-ups manage this kind of situation well. For example, I have worked for a company where sales people and developers were based in completely separate buildings. However, if you are working for a medium or a large organisation, this situation is unavoidable. The only solutions are either to get used to it or get yourself a set of good noise-cancelling headphones.

3) You need to have a good ability to concentrate

This follows from the previous two points. You will be solving some really complex problems. Therefore, you will need to be able to not get distracted for prolonged periods of time.

This is especially difficult for people who have an irresistible urge to browse the web and especially for people with even the mildest internet addiction. You will be working on a computer with internet access, so the temptation will be hard to resist.

There is nothing wrong with browsing the web once in a while and it helps to clear your head when you get stuck on a particularly difficult problem. However, being unable to control your browsing habits will get your career derailed.

4) A lot of work is repetitive and boring

Solving challenging problems is the most interesting aspect of a software development job and one of the key reasons why many chose this career. However, the job doesn’t solely consist of this.

Very often, you will be performing trivial tasks, such as writing HTML, applying website styling and performing code reviews. Even the process of typing the code itself is quite repetitive and time-consuming, regardless of how interesting is the problem that the code is intended to solve.

5) You will be working with annoyingly “religious” co-workers

Many programmers are geeks and, as such, they can be very particular about terminology, coding standards and the choice of technology, ever ready to start a “religious war” over any of these aspects.

Many of them sometimes forget that their primary role is to solve business problems. Instead, they can spend hours arguing about Java being better than C# or give you a long lecture if, God forbid, you have accidentally referred to jQuery as a “framework” (which is technically incorrect, but has a very little significance).

Likewise, there are those project managers who used to be developers a long time ago that would occasionally insist on doing code reviews. They will sometimes tell you to make changes that adhere to outdated best practices and would make absolutely no sense today.

For example, the use of Yoda conditions was a good practice in the 90th due to the inability of compilers to detect accidentally typed assignment (=) operator when the intention was to use equality (==). Such typo would lead to unexpected results and would be hard to diagnose. Any modern compiler, however, will either warn you or prevent the code from being compiled altogether, so this practice is no longer relevant at all.

Over time, you will find that a lot of things that you thought were widely agreed coding standards are nothing more than a set of strong personal preferences of a particular senior software developer. If you will change a job at any point in the future, you will find that a completely different set of coding standards is enforced in your new team, to which you will need to adapt.

6) You will need to be able to take criticism well

As any technically challenging profession where quality of the output is very important, software industry is where a lot of constructive criticism happens. This is especially true when you are just starting out and don’t yet know the best practices.

One thing that makes software industry somewhat unique is that there are plenty of people with good technical skills who lack people’s skills. Therefore, there is a chance that, at some point, some senior developer would unleash a heavy dose of criticism on you in a not so sensitive way, not because he or she wants to insult you, but purely because they are unaware of any other way of delivering constructive criticism.

For example, you may be loudly told off within an earshot of the entire office for not following a guidance that was never made explicit to you and which, as a junior developer, you probably wouldn’t have been expected to know. Therefore, if you are a person with a fragile ego, software development is probably not for you.

7) You will have to constantly keep updating your knowledge

A good rule of thumb for any technical industry is that a good proportion of current knowledge will be out of date after two years, so you better be prepared. This is certainly true for the software industry.

In its infancy, software industry was progressing slowly. This is not the case anymore, as, these days, everything software-related is being built in such a way that it gets easily replaced or updated. For example, the back-end of your Facebook is completely different from what it was only a couple of years ago.

Only two years ago, the standard way of writing JavaScript functions was by using “function” keyword. It is still possible today, but nobody does it. Lambda expression “() =>” is used instead. Just a couple of years ago, ASP.NET Core didn’t exist. Now, all Microsoft stack developers are rushing to implement it on their servers.

The industry is full of examples like that. Therefore, if you want to succeed, you better spend some of your free time studying.

8) You will need to have good negotiation skills to earn well

It goes without saying that software developers earn well. After all, the demand for programmers is high and there are nowhere near enough people who are capable of doing the job. Also, as you’ve read in the previous points, developers have to endure quite a lot for their pay.

However, it is not only their skills and knowledge that dictate their salaries. Negotiation skills are just as important.

The key reasons why the salaries in the industry are sometimes lower than they should be is because some organisations want to save the costs by taking advantage of software developers’ perceived introversion. It is based on the assumption that developers would not be confident enough to ask for a pay rise or to talk to recruiters.

Some organisations prefer to allow market-savvy developers to pursue opportunities elsewhere rather than give them a pay rise. This is done based on an assumption that an organisation can save some money by employing another developer, who is talented but shy. This often backfires thought and the position remain unfilled for several months afterwards.

There are sometimes valid reasons why you, as a developer, would accept somewhat lower salary. This, for example, would make sense if you have willingly joined a sector that participates in good causes, but doesn’t do very well financially.

However, if you are working for a commercial organisation where sales people and managers are paid well, it’s worth to be confident and assertive about your pay. In this kind of environment, you should absolutely not let people exploit you. If you earn below-market pay for too long, it will become increasingly difficult to justify a high jump in salary to the recruiters, even when you merely want to bring your salary back to the market rate.

9) You may be inconvenienced by toxic sales people

There was an occasion when I received a call from sales team who told me that they promised to give a demo to a major client. The problem was that they promised to demonstrate a major functionality the app didn’t actually have, so they asked me to add it.

The presentation was planned for Friday and the call was made on Wednesday, so I had just over a day to write the functionality from scratch. Needless to say, there was no time for sleep during this period.

Later, I found out from other developers that my situation wasn’t unique and these things were relatively common. Being thrown under the bus by sales people is something you may never experience, but it pays to be aware that such thing sometimes happens.

10) If you are after really big buck, forget about personal time

You have probably heard of six figure salaries in the software industry. This is something that is certainly achievable, but there is a catch. You will either have to spend years working your way up to the senior level or you will need to join one of the big players in the industry, such as Google, Oracle or Microsoft. If you do aim to join a well-known major software corporation, be prepared to sacrifice the whole of your personal time.

The process starts right from the onset even before you set your foot through the door. All of the big players in the industry have a vigorous multi-stage selection process with multiple interviews lasting several hours.

Because those companies look for people with excellent knowledge of computer science, they will ask you in-depth questions about any aspect of the subject. As there is no way to know in advance what exactly they will be asking about, you will need to spend as much time as humanly possible studying everything during the selection process.

If you have succeeded in getting selected, the amount of time and effort that you will be required to invest into your work increases even further. It is quite common within the above organisations to expect you to work for three days non-stop when major releases are due.

Some of them even go as far as contractually compelling you to work a given number of weekends each year. Those sleeping pods at Google headquarters are not just a random perk. They are there because the company doesn’t want its employees to ever go home.

The good news is, however, that it is possible to earn decent money that will allow you to live fairly comfortably while only working the standard 40 hours per week for a smaller software house. However, your paycheck will be nowhere near as big as what the major corporations pay.