Being an engineer with a vision is a curse. You see the world as it should be, and you have just enough skill and ability to delude yourself into thinking you can fix things, make them better, and bring about a better order. Problem is, nobody cares about doing things right. You'll never have fast and reliable because people are cheap.
As a result I waste my spare time wrestling with problems that should not be hard. I spend an entire weekend trying to get code to work that's more important than anything I could ever achieve at my job during the week. I'm not an engineer because I enjoy or even find fulfillment in solving problems. I want to set things right, but my private struggle is that succeeding in solving a difficult problem is an embarrassment, a shame for all the time wasted fighting things not directly relevant to the task at hand. I'm an engineer because my mind commands me, drives me to fight against the subtle evil in the world, and I must either obey or give up my mind.
What is subtle evil? Things like the fact that one cannot simply develop once and have code that will run equally well on a desktop computer or a mobile platform. That mobile platforms are second class citizens in the computing world when in fact they are just as Turing Complete. Steve Jobs once said - to paraphrase - that it was more important to start with what makes life easier for the user and work backwards. I disagree. Start with what makes life easier for the developer by virtue of the fundamentals sitting right, and let everything flow from that. You can't build a skyscraper starting with the penthouse.