When talking to normal people, I feel like some crazy scientist no one understands.
Q: If you knew everything then that you know now, what different choices might you have made in your career?
A: (...)I didn't realize how important it was, (...), to work on things that people are actually going to use.(...) if you want to see your ideas used in the real world, you have to think about more than just the engineering.
Talking about IoC, Ejb etc... is good but the main goal in this job is to deliver something usefull and works (even if it's badly coded, but unit tests help getting that right later)
An other problem (I see this as a really big issue), is engineers knowing best what is good for users more than users themselves...
I mean the only way to tell if a software is really good is to make usability tests whith users and make everyone (developpers included) see the tests ans tests results.
For exemples of technics to achieve usability tests you can refer to Jakob Nielsen's web site.