There is a price to pay being a software developer. We will never be able to enjoy software as much as the non developers. Software is magic to most people. Every time I see some little thing that impress the majority of my friends on the web, I am tempted to say, well "all they're doing is searching through a database". But I stop myself and keep quiet.
A friend once sent me lyrics of a song through email, I answered, "what about it?" He said, "I found it on the internet."
Think of being at a magic show and every time the magicians does a trick you stand up and yell "check his back pocket, it's in his back pocket!" Not only you ruined the magicians day, but you ruined the experience for the rest of the people as well.
There is software that goes way over my head. Photoshop, Blender 3D, Google maps, and so many more. I'm not saying that I am not easily impressed, but I do hate when people come to me with a revolutionary website that does x idea. When someone says website or app, I think of a database query. Database technology is impressive but it's popularity made it all too common. It's like the fifth hundred Tesla you see on the street, not as impressive as the first.
The more you program the more you learn to hate software. That's the reason why we have APIs, because we want to build things our own way.
A good indicator that the hate is growing in your heart is when you find yourself writing code at 2 am Building your own, let's say RSS reader, when there are 3 billion already available.
It starts as a noble act, an act of defiance. You hate every software because they are all flawed. The maker didn't think of that one scenario where a bug occurs or the UI is counter-intuitive. You are happy to
rant blog about it to let him know how awful he is. Every security breach I ever saw on the web was dealt with anger towards the maker.
How dare you make a bug in your software.
The person who finds the bug is most of the time a jerk about it. I'm always surprised when I see the nice people that do take the proper channels to let the maker of the software know. They have my admiration.
The process of hate grows steadily in your heart and it hits its peak when one important discovery is made. This discovery usually happen 5 to 10 years down the road from the day you wrote your first hello world app.
You read your old code, you revisit your own application, and you find that the very software you wrote is the most offending of them all. You hate your own software. You realize that all along you were a cheap magician that even parents would hesitate to hire for their 2 year old's birthday.
It's an important discovery because you realize that it's not just others that write shitty code with bugs. You write awful code too.
It is a humbling moment. You start to feel empathy towards your fellow programmers. It doesn't remove the hate, it just makes you understand that making software is hard. Even though the computer does exactly what you tell it to, it is still hard to get it right.
If you find yourself hating your code, don't feel bad. Some people never realize that their code sucks. It's like an adult that never realized that wrestling is fake. When you know it is fake, you tend to not take it seriously anymore. You can still enjoy it but you are no longer jerk about it.
I used to get angry when people fought mac, pc, linux. Today, I can laugh about it. It seems like no big deal but trust me it can be a serious matter. Relationships are ended, friendships are destroyed, business partnerships are dissolved because of it. I didn't even own an iPhone and I used to hate the guy that came to my desk to tell me how Android is better. But I digress.
Software is an attempt to create order in a chaotic world. However it is written by a chaotic creature that live in the delusion of perfection. When you read your code and you think it is bad, feel good about it. Because most people will never be able to see this. You won't be too amazed by other software anymore but at least you will have the choice to keep people in a state of amazement, or destroy their world view.
That is power.