As a programmer I have an inherent nagging annoyance at my tools, other peoples code, my code, the world in general. I always want to improve it. So I refactor, I stay on top of the latest techniques. I try and learn patterns, I try to use frameworks so as not to reinvent the wheel. I can write a tech spec that will blow your socks off with the amount of patterns I can squeeze in.
However, lately I feel I actually know more about the tools I use than how to actually implement successful software.
I feel like I'm lacking in the human factors skill set and I believe that to be a successful software engineer takes more than knowing the coolest framework. I think it needs some of the following skillsets too.
- Interaction design
- User experience
I've got a bit of this that I've learned from people I've worked with and great projects I've worked on but I don't feel like I "own" these skills.
Am I right? Should I be trying to develop these skills further, or should these be left to the people who do these for a career?
How do you make sure you don't get too tied up in how you're doing something and make sure you "make your users awesome"?
Does anyone know of good resources for learning these skills from a programming point of view?