I recently read a post on the fake steve blog that caught my imagination. It explains how things work at Apple. The engineering is in the reverse direction. First the product looks are conceived and then technology is driven to achieve that. I think it is a lot different from how other companies work. Yes, the product to be created is decided at first but along the way, it undergoes changes say because there is no easier way to do it. Eventually the product is compromised and what you get is not what you wanted at the first place. Most people seem to happy at the end that at least they are able to turn around the product.
I have seen this myself in my day to day work. Technology tends to drive my decisions rather than the other way around. For once, I decided to change it, be it for a small application. My first challenge was to come up with an interface that was very intuitive. Once I came up with it, I put that on a piece of paper and would look at it each time I faced a road block in implementing it. It wasn't easy. My mind was ready for a compromise every other day but I just stuck with it. Eventually, I was able to implement it without any compromise whatsoever and I am very proud of it. Not sure if this would still get an approval from my product team but hey I have learnt a very valuable lesson.