Every profession has its drawbacks, and the profession of a programmer is not an exception. We asked the experts what disadvantages of the profession a future programmer should be prepared for and gave you the tips of how to be prepared.
Senior .NET Developer
Constant work at the computer
At first, you really like it. You study, relax, communicate – everything is at the computer and in one place. But then, after a few years, the eyes begin to get tired, the legs begin to numb, the back begins to hurt. And if you work remotely, you generally begin to forget the language, because there is very little live communication.
Tip: Take breaks from work. Go for tea, go to the next department with some question, go to a more distant cafe during lunch.
Here we must accept the fact that technologies, language, and framework can become outdated in a couple of years. After spending several years in deep learning, you may find after a while that all this knowledge has become worthless. A good example would be Flash which used to be popular but then HTML5 came along, and the Flash platform left the market.
Tip: follow the trends in technology development. At least once a year go to specialized conferences, meetups or watch them in the recording.
Routine is everywhere
At first glance, programming may seem like what makes dreams come true because you can make your own game or write a bot that will play it. The problem is that most of the time will have to be devoted to routine: reading someone else’s code, updating library versions, writing tests, searching for the causes of bugs, etc. All this takes the lion’s share of time.
Tip: try to automate routine tasks. Believe me: the 2 hours spent now will pay off later.
Now the staff shortage in the IT industry still persists, i.e. companies need more specialists than they currently have on the market, but it’s hard to say what will happen next because every year a large number of new specialists enter the market, while previous specialists have not yet retired because the industry is quite young.
Tip: learn and use different technologies at the start of your career, as a specialist with a wide range of knowledge and skills who knows how to choose the right tool for the current task is well appreciated.
I like being a programmer, there are a lot of advantages in our profession. There are also disadvantages, but not too many. The most significant is a sedentary lifestyle which can lead to posture problems. But it’s not inevitable – exercise and take breaks from work to go for a walk. It is also useful for your vision – get distracted from the monitor and do gymnastics for the eyes: focus your eyesight on objects located at different distances from you.
There is one more thing: your friends often think that if you are a programmer, you can fix anything, for example, a kettle. But these are fun little things.
Head of Online and Business Application Development
High entry threshold and the complexity of the profession itself
At first glance, it seems that everything is simple – learn a programming language and you will shovel in money. Novice developers at least often think so. However, as you dive in, it turns out that this is not the case at all. The more complex and confusing the code, the more unpredictable it behaves, compilers give errors, exceptions fly out of the blue, you need to keep in mind a huge number of small details in order not to miss anything. At some point, it begins to seem that the compiler / interpreter lives in some kind of its own mind and desperately resists. And from the point of view of information theory, there are no at least somewhat complex programs completely with no errors. It’s hard to come to terms with this.
On the other hand, the feeling of satisfaction is incomparable to anything when the problem is finally defeated, and the code begins to work out as it was intended to. It turns out that the compiler / interpreter still simply executed the instructions given by the programmer, in a cold and thoughtless way.
To make it easier to enter the profession, you need to read a lot about best practices, try to work in a team with professionals and constantly study, study and study – both in theory and in practice.
Cost of error
Few people realize that the cost of a developer’s mistake can be huge. Imagine the loss of an online store where you can’t order anything, or the loss of broken stock exchange software.
The sense of responsibility puts pressure on the developers, although they do not usually bear a direct risk of punishment. Here we can recommend using the best practices of CI / CD (continuous integration / continuous deployment) with automated testing, practices of pair programming and code review, that will minimize such risks and gain a sense of confidence and peace over time.
Lack of feedback or excessively active feedback
It turns out that usually pronounced introverts go into the profession of a programmer, i.e. people with a maximum level of self-immersion and high abilities for analysis. And at first, life in this respect seems wonderful – you have to interact only with the team leader or, in extreme cases, the manager, and the programmer does not see or hear the rest. But then the shortcomings of this situation begin to appear. You receive weird tasks, they have to be redone several times; and the programmer begins to dream of getting more detailed tasks, hearing direct feedback from clients and users. But life is not that simple.
As you grow into a team leader or manager, overly active communications begin to fall on the shoulders of the programmer, and the former developer gradually begins to understand the reasons for the confusion that he had suffered from before, but now he dreams of being left alone.
These drawbacks can be accepted and understood, and you can make your choice at what level to work with customers / clients and choose to work in such companies where developers support exactly the level you require.
There are two problems here
Each code sooner or later requires refactoring – rewriting in such a way that the code is beautiful and harmonious, with a minimum of errors; and it is rewritten as easy as possible to be able to maintain such code. But there is a problem – the more code, the longer the refactoring takes. It gets to the point that neglected code is faster and cheaper to completely rewrite rather than make a shot to optimize.
And here all this comes into conflict with the realities of the business where refactoring is just an additional cost which does not bring any value. Business in every possible way delays or directly prohibits doing this; at the same time, not agreeing that errors will occur more often, the consequences will be more serious.
This requires good teamwork where developers honestly highlight truly necessary code optimizations, and the manager somehow sells them to the business.
The second problem is that the market often does not tolerate laggards. And this results in a constant race into which developers are unwittingly drawn. It seems like a good practice not to post the code on Friday night, but what if the task itself was set on Thursday, and everything should already work on weekend? At the same time, the task came out described only superficially, because the business is also in a constant race and there is not always time and / or specialists in the staff to think through all the screens and their interaction in detail.
This problem can be solved only by choosing a job in an industry where the business is not changing too dynamically, and there is an opportunity to do everything slowly and in the right way.
Sooner or later, many developers are faced with a choice: to be highly specialized in a particular technology or to know many different technologies but more superficially.
Different people make different choices: someone tries to cover the maximum of everything, gradually becoming a “full stack” developer, someone refuses to learn additional technologies from the very beginning and grows only in their stack. Both approaches have their pros and cons.
“One-man bands” can help colleagues with many tasks, a feature that highlights them in the eyes of managers. It is theoretically easier for them to find a job by selling only those skills that the employer needs; they grow into managers more easily and quickly. On the other hand, it is harder for them to make really high-quality code in a separate stack and it is more difficult for them to speak the same language with professional developers while growing into managers.
Highly specialized specialists perform their immediate duties better and more professionally, can get jobs in cool companies and earn more in their stack, as professionals are highly valued. On the other hand, there is a much higher risk of being marginalized if the technology becomes obsolete, which brings us to the next disadvantage of the profession.
Industry Development Speed
This, in my opinion, is a key drawback that people begin to truly realize and accept only with age, although at first the race is exciting and breathtaking – new interesting technologies are constantly thundering, they are expanding and improving, simultaneously simplifying and becoming more complicated.
At first, keeping up is not so difficult: you can read numerous articles, choose employers that either use advanced technologies or do not limit their choice, write articles yourself and participate in advanced community developments.
Over the years, more and more I want to use the accumulated extensive knowledge, and not keep on studying non-stop, however this is almost impossible to afford. Sooner or later, any developer faces a choice: either grow horizontally, “stiff” in a particular set of technologies and bear the risk of their gradual obsolescence and disappearance, or grow vertically – retrain to some extent and go into management, where skills are much more become obsolete more slowly over the years, and some do not become obsolete at all, such as people management, negotiations, and many others.