I found an interesting Quora question: "Why is a programmer's life boring?"
In the answers, people try to convince the author that programming is not dull. Imagine that you tell someone your head hurts, and they try to persuade you your head cannot hurt because their head doesn't.
Of course, someone says you should have a passion for this job. "You should have a passion for programming." "Passion" is what we tell people when we want them to do unpaid overtime.
The truth is: programming can be tedious. I was bored with my job a few times in my life. Here is what we can do about the boredom.
When is programming boring?
It doesn't happen overnight. It is pretty unlikely that you get a new job and everything is boring from day one.
In the beginning, we are excited. We see so many new things. We work with new people or on a new problem. Or at least, with new code.
A few months later, the excitement wears off. You have already seen everything. Surprises are few and far between. You come to the office/call into the virtual office every day to talk about the same things with the same people—every day.
Has anything changed? No. You are doing the same job as you were doing on day one. Nothing changed. And that is the problem. People like to complain about changes, but we suffer even more when nothing ever changes.
Your brain likes to be used. Boredom is how it tells you you are wasting processing power.
Not every job can be exciting forever
Even if you join a cool, hip startup, a day will come when you need to implement the 20th CRUD service.
When you do it so many times, you get to the point when you don't need to think about it anymore. You can type with one hand while playing foosball with the other hand and talking about your weekend plans.
What if we changed technology?
Once, I saw a statistic saying 98% of everything is CRUD. The number is probably fake, but I agree with it anyway because I have written way too many CRUD services.
It happens because almost everything can be implemented as CRUD. What's even worse, almost everything should be CRUD.
Unfortunately, we tend to overengineer when we are bored. A simple CRUD becomes an event-sourcing system with data stored in blockchain. What if we could do the same using three tables in a Postgres database?
I worked at a company where every backend microservice had to be implemented in Scala. Why? Pretty much because functional programming and microservices were fashionable at the time when someone was making the decision. We could do the same in Java. We could use Spring Framework and automatically generate 80% of the code. But, it would be boring.
It was cool to code in Scala. It was useful to learn functional programming. However, we were stuck maintaining a needlessly complicated system. If you overcomplicate a straightforward implementation, you will never move on to a new project. The old system stays your responsibility because onboarding a new person is not trivial.
Of course, you can always quit. But does it really solve the problem?
Are we doing something useful?
You won't find long-term satisfaction in the solution domain. Programming will be boring even if you keep overengineering. It is not sustainable. You would have to change the architecture or the programming language every quarter to keep the excitement.
We tend to choose workplaces looking at the technologies they use. That may be the source of the dissatisfaction. Do you even care about the users of your software? Or are those the people whose "silly requests" get in the way of your "improvement" ideas?
What about the problem domain? Are you solving an important problem with your software? Does your code really make a difference?
The effects of your work may be easier to spot at small companies. On the other hand, if you are one programmer among ten thousand others, your individual contribution won't matter much, but the overall collective impact will be tremendous.
Luckily, we can choose where we work.
Making programming interesting
How can you make your job more enjoyable? Work on something that matters to you personally.
Easier said than done.
First, you have to know what matters to you. Look around. Is there something you could be doing, even if it involved writing CRUDs for ten years in a programming language you hate?
Look at the people using the technology. Could you imagine yourself working on something that helps them?