I'm always passionate about tech and enjoy programming. Unsurprisingly I'm also pretty good at my software engineering job. It doesn't take long until I'm realized I'm "better" than many of my peers that I'm working with.
With my talent I'm able to complete task a lot faster than my teammates. My managers recognized my talent and appreciated my works. I'm getting decent pay. I have pretty good job security because I know I'm won't be the first one getting fired even during layoff.
I always consider my talent is a blessing. Until it isn't.
I used to wonder why my peers take so long to complete a task. Even if they completed, it is full of issues, bugs and doesn't follow best practices. The code barely works. Workaround directly copied from StackOverflow without understanding what the code actually do. Inconsistent coding style. The list goes on.
They are bad. They are incompetence. I don't like working with them. After a few job switching between startup and MNC, I started to realized that they are the "average" developers. They are in the middle of the bell curve and they represent the majority of the people that I will work with.
So I tried to be empathetic. I try my best to guide them, mentoring them and hope one day they can write code with decent quality. But they continue to write code that is bad. I'm not looking for a "perfect" code, but just of decent quality - which is surprisingly hard. And this stresses me out.
Recently I took over a legacy project. The code was full of cryptic business logic and branch of duplicate codes. When troubleshooting an issue, it took me hours looking through 10-20 different files just to trace the source of a single value showing in the UI. It was really stressing me out and I keep thinking why the previous dev write in this way.
When I check my "average" peers who is doing the similar thing - sure they took longer to troubleshoot, but they never stress out. At least not as much as I am. They feel like this is just part of the job. They do not think the code can be write in a better way. If they failed to found the root cause of the issue, they just keep trying random instructions from the internet and hope it resolve the issue. This further stress me out when looking at how they try to resolve the issue in the most inefficient way possible. But they never as stress as I am, because they don't aware there are better way to do it.
Then I started to wonder: what if I'm an "average" developer? What if I don't have the talent? Is all the extra stress I'm facing worth the (slightly) higher pay than my peers and a few extra back pats from my manager? Is ignorance a bliss? Is it a curse to be a good developer?
I've worked in places where I've felt appreciated and also in places where I didn't. There are two situations: (1) a startup-type product which is bringing in $0 or close to $0 in revenue, you get to work with shiny new stuff and don't have a legacy, but it's precarious because of that $0, (2) an established system where the money story makes sense, it's easier to be appreciated because you work is worth something in a more than hypothetical sense.
Case (2) is how you become a senior developer, it's a real art to make changes to existing code, sometimes you will need to make surgical changes because if you tear everything apart you might break things you don't know about it. This prayer, popular in alcoholic's anonymous
https://en.wikipedia.org/wiki/Serenity_Prayer
is also a good prayer for a maintenance programmer.