As a computer programmer you complain about users and their stupidity not to be able to work with computers. As somebody else who needs to work with computers you complain about stupidity of computer programmers.
That's commonly known. What can we do about that?
Well, I will not tell you. It's very hard.
I fell in love with computers very long time ago and decided to be computer programmer. My parents wanted something different for me. Nobody in my neighborhood knew how important will computers be for us. Neither me. But I liked programming. I was kind of disappointed in high school because I couldn't get the education I wanted. That's why I decided to learn the theory on my own from the books and later also from the Internet. I turned all that theory into practice by writing a lot of code for a lot of my projects.
I didn't know anything else. My every day experience was only writing computer programs. I didn't care about school. I attended school only because I had to. I didn't prepare for tests when my average score was fine. I just wanted to graduate with any score. But I knew about programming a lot my peers didn't know. I even said at my high school graduation “you want to hear XY theory but it doesn't work in practice, in practice is better YZ because (…)”.
You can imagine that I was useless for anything else. Because of my epilepsy I didn't do any sport. My mom cared about everything, like clothes, food and so on. I like practice much more than theory but in my real life I was very unpractical. Such irony!
Anyway, because of all of that I could have been very good programmer. I had a big knowledge, lot of practice, I was able to write code very fast and with only few bugs. But I was miserable at solving user's problem.
You know, we (as computer programmers) are here mainly to solve people's needs. Computers should be helping people not the other way around. That's why Apple had first computer as we know them today. That's why Apple had first phone as we know today. I really recommend you to read book about Wozniak, iWoz. He's a very good engineer with human needs in mind. That's how it should be!
I realized that but I always needed to understand the problem very well so I could solve it in the best way I can. I have wanted to travel around the world since my childhood so naturally it was my first step to socialize with people. Soon after I started to explore a lot of activities. The most important of them is dancing. Dance changed my life and I will write another blog post about how it changed the way I see programming. For now you just need to know I had to leave my nights with computer in a dark room.
And not just the nights. I like traveling, dancing and since today I also manage a whisky club for friends! I even did lectures about technologies and programmers to non-programmers who need to work with them so they can understand them. Of course it means less time to learn computer stuffs. For now I still know a lot and I'm still fast. But computers evolve too fast and I'm afraid that in way I live now I won't be able to catch up with the new stuff as soon as ten years.
Why am I talking about all this? Well, because thanks to being in touch with a lot of different people I became a much better programmer. I better understand people's needs and how they see programmers and computers. How to made computer programs easily understandable for them. How to simply describe some technically complex stuff. And that's very important!
Question is: how to benefit from both sides?
Well, you can be exceptional and hard-core computer programmer and anyway do useful great stuff for people like Wozniak for example. Rest of us have to choose what they want to be. I started as computer programmer (no one would guess otherwise just by looking at me) and today nobody would say I am one. I like that change and I believe that diversity in team is best way to do awesome stuff.
You know, if you have team with all similar people, then that team can have big problems with some tasks and even with quality and everything. When team consists of people from different background and skills, that team can do anything very well. Everyone will use own expertise and together they will make great result.
To wrap it up: you can do great product with team which has a lot of diversity. Don't be afraid to hire someone who is not rock-star programmer but has some interesting background and skill. And more importantly, be at least little bit social.