Your coder career has reached a turning point? Are you wondering if you should continue coding or not? In this article we put together the many elements that may influence your decisions, to help in choosing the best future working environment for you.
Linus Torvalds? Not a programmer!
“I’m not a programmer anymore”, rather than the more familiar “I don’t want to be a programmer anymore”, is a sentence we often hear without paying much attention. But if these words are spoken by Linus Torvalds, the statement immediately becomes more interesting. Linus Torvalds is the person who most embodies the spirit of modern programming. Born in Finland, he changed the reality of system programming, writing a clone of the Unix V operating system from scratch as early as 1991. Of even greater importance is his support of the open-source approach at a time when it was weighed down by its poorest outcomes.
A reflection on the current condition of software developers is very interesting when spoken by the man who changed the game. It’s true that many people, for different reasons, say that they don’t want to be a programmer anymore. Who, or what, do they want to be?
Torvalds defines himself today as a code manager and maintainer, rather than a developer, as Steven Vaughan-Nichols reported in an interview published on ZDNet. Many programmers, after years of experience in their projects, become maintainers of the code they, and other programmers, developed.
Software development is certainly one of the most significant paths to a good living for many people, and it will continue to be so for many years to come. There will always be work to be done and paid for until machines are controlled electronically, and electronics can be programmed to perform tasks. But things are changing: software accumulates, with new editions to cater to a variety of operating systems, languages, and databases, in order to stay alive and viable indefinitely.
The next waves: AI and quantum
The biggest wave of change, running at full speed towards the beaches of our comfort zone, is Artificial Intelligence. This is an exploding market, in which a few star developers design the bricks, and an enormous number of other developers use these to build structures. It is highly probable that the promise of AI – work for many developers, maintaining AI-based structures – will become reality in a short time.
If we go one step further, we can try to look beyond this to something that leaves space for many developers with a limited percentage of maintainers. An example of the consequent computing wave, yet to materialise, is quantum computing – a new paradigm where normal programming (with different skills and mindsets) would require a number of coders to work on new code from scratch. A larger percentage of true coders, and many fewer code maintainers, will be needed for quantum computing for a significant period of time should this paradigm eventuate, especially in comparison with the AI paradigm.
Many changes are reshaping the programming world, and more will follow. Which changes best match our skills? To answer this question, we need to take a step back.
What is coding?
Software writing requires passion, creativity, and problem-solving capabilities. A developer is a person who starts programming because they are curious about the possibilities available if they instruct execution units to do what the developer wants: a sense of wonder imbues the developer, pushing them to stay at the console for as long as it takes to reach the final goal.
Thinking that you can follow your own impulses and ideas in relation to projects, skills, and social behavior is the mark of a hobbyist or amateur coder. Professional coding, on the other hand, requires adherence to social, business, and society-related rules. The only choice is between working for somebody else’s company, or starting your own. Beyond this choice, all other rules remain the same.
Many programmers start with passion and never apply structure to their overall ability: entering the real world pushes them into tasks that differ from their interests, prompting a choice: whether to continue, or to quit programming.
It is true that working in the traditional software arena generally requires most programmers to either maintain or write micro-segments of code, without ever imagining the big picture these mosaic tiles create. These tasks are not very rewarding, so the impulse to quit may very often come to mind.
Why do many people fail to find enjoyment in coding? To answer this, each of us needs to understand what kind of developer he or she is.
The necessary competencies
Before listing the types of developers, one should consider the competencies needed to run business software.
There is a short list of basics to master in all possible configurations (data and databases, algorithms, operating systems, languages, text editors, and notebooks). There are also second-level competencies in programming, covering at least four main subjects: source control, IDEs and testing, networking, and software development life cycle.
A professional coder must master all of these competencies. Previous knowledge must constantly be updated, and compared with best practice ( as demonstrated by the community, and at industry events). Professionals must also upskill in as many new trends as the market creates. It is a huge task, and not all programmers can stand the pace.
Which developer are you?
Defining the characteristics of different kinds of coders can help when making the choice to give up or stay in the business. The developer population can be divided into three parts: the Justs, the Fringes, and the Limited coders. What kind of developer are you? Knowing this may help to decide your next move.
J for Just
The Just-get-it-done coder is a persistent problem solver who wants to achieve a goal and pushes through to the end. This attitude may not be enough to survive in the long run.
F for Fringe
The Fringe developer adores new approaches in science, technology, and programming. Everything is done in great detail but the Fringe developer also understands the value of social communication.
L for Limited
This kind of developer has limited interest in the job. Interested in tech, but doesn’t enjoy programming, often because they are not a natural problem solver. Coding was easy at the beginning and well paid, so an appealing job, but not a passion.
What are your reasons?
We have discussed the basic knowledge needed to be a coder, and outlined some common coder types. Let’s now focus on what is driving your desire for change. Some of the most frequent causes are boredom, tiredness, negativity, and career stagnation.
B for Boredom
When your surroundings hold no interest for a prolonged period, you are in the unpleasant psychological state of boredom. This lack of stimulation can have a strong effect on the way you perceive your quality of life. If a developer exists in a state of boredom, there is clearly a need for change. Should you feel bored with programming, the best advice is to do exactly what you would for any other source of boredom: drop it completely, and switch to something else until you feel the need to code again.
T for Tired
Being tired results in reduced attention to the code written, less critical thinking, and an overall desire to stop. Tiredness can also lead to burnout if you are also deeply stressed. The best thing you can do in this situation is to research the theory of burnout and act to prevent it. A true burnout can lead to poor career decisions in an attempt to get rid of what you perceive as the outside cause, but is actually an internal issue.
Burnout usually occurs after many tight deadlines imposed by managers with poor project management skills. This article published in our magazine tells a vivid story about burnout, and provides relevant statistics and suggested remedies.
N for Negative
A negative work environment distances you from your professional and personal goals. You change your priority list to avoid conflict with negative people or situations. Your anxiety grows and forces you always to be on the defensive. A negative environment lowers your productivity and morale, making you think your work is pointless. A good way to work on this problem is to increase the quality and quantity of communication inside the office. More detailed communication will lower existing barriers among coworkers, and simultaneously improve work quality.
C for Career
Skills, experience, and personal networks are needed to make a career. These are necessary conditions, but are not always sufficient by themselves. Further advice is offered in the ‘What is your next direction?’ section of this article. Codemotion has hosted several events focused on this subject. In her report on one of these events, Cate Lawrence helps us to understand that age and experience are not the same, and that skills can help to fight ageism. A good thing to consider, sooner or later, is what is needed to start your own company: you will gain a better understanding of what a larger company expects from you if you know how the person sitting on the other side of the desk thinks.
How bad is your boss?
A bad boss can push you into a burnout situation. Burnout is a real problem and is normally a result of mismanagement. You may also be a part of this mismanagement, but a bad manager is often a bully who will take every opportunity available to torment you. To avoid being bullied, you have to become a psychologist: you will not fear the bully if you understand him. You may also be able to shut a bully down if you analyse him or her correctly.
It’s important to manage this situation with a smile. That’s why we’ll look at bad bosses through the lens of comedy writers: their subtle minds often hit the target, reminding us to laugh from time to time.
P for Peter
“Everybody gets promoted until they are proved incompetent in their role” is the so-called ‘Peter Principle’, also known as the ‘Principle of maximum incompetence’. ‘The Peter Principle’ was published in 1969 by the Canadian psychologist Laurence Peter with the help of TV screenwriter Raymond Hull. Your boss is, by definition, incompetent.
D for Dilbert
‘The Dilbert Principle’ is a collection of strips drawn by Scott Adams. The writer was a cubicle worker himself for 17 years – an experience that suggested the subjects and characters of his strip, and its star, Dilbert. ‘The Dilbert Principle’ states that companies tend to systematically promote incompetent employees to management roles to get them out of the workflow. Beginning life as a 1995 article in The Wall Street Journal, ‘The Dilbert Principle’ was expanded into a book in 1996. In truth, this principle is slightly older than Adams’ hilarious article: “promoveatur ut amoveatur” has been observed for many centuries (although not necessarily in Ancient Rome).
G for Gervais
The Gervais Principle’s foundations are found deep within ‘Company Hierarchy’, a cartoon by Hugh MacLeod. MacLeod’s school of management starts with the idea that corporations are pathological constructs. His organizational pyramid has three layers: losers, clueless, and sociopaths.
The Gervais Principle splits the losers into two sub-categories, essentially equivalent to our ‘Just’ and ‘Limited’ coder types. In Gervais’ idea, managers (company sociopaths) promote ‘Fringes’ into middle management, turn stressed ‘Justs’ into sociopaths, and leave the ‘Limiteds’ to fend for themselves on unsupervised projects.
Ricky Gervais started as a musician, but later became an actor and a TV writer. He wrote ‘The Office’ (2001–2003); the UK version went on to become a US sitcom that ran for nine years.
What is your next direction?
Shifts in your work-life balance can occur at any time, requiring a change in direction. The problem can be lack of growth, burnout, or changing priorities. If the issue is changing priorities there will be no problems in the medium term, and new adrenaline will flow.
Employee turnover is costly but often mismanaged. Company cultures often hide problems, thinking that this will keep you in your role. Good communication between employees keeps morale and productivity high: one way to achieve this is to avoid negative discussion within the workplace.
If you want to quit your current role as a software developer, you will need a different strategy. In this case, there are three main options for change: move vertically, move horizontally, or quit the business.
H for Horizontal
Horizontal move: you are still a programmer, but make every attempt to be selective about the projects you work on. You can specialise in a specific field or branch out as a contractor.
V for Vertical
Vertical move: your target is first to become the Technical Lead, then to be promoted to CTO/CIO. The first step could require the development of broader skills, including managing projects and people, with less hands-on programming. Being a CTO also involves managerial skills, and the ability to be the glue keeping the company aligned with its planned goals.
Q for Quit
Quit coding if you are too stressed, too much of a hobbyist, or don’t really love coding. This will involve the greatest changes, so be sure to confront this at a time when you are mentally and economically sound. Start saving today if you want to quit tomorrow. Don’t do this just after a burnout.
The dream of creating solutions
Developing software puts great power in the coder’s hands – he dreams of creating solutions. Unfortunately, there’s always the possibility of an unsatisfactory job, which makes you want to quit rather than adapt. Very often we find ourselves having to work in disorganised situations, with old fashioned technology and perhaps an unpleasant working environment.
If this is your reality, try to think of your next move with a smile on your lips.