'i have also read TAOCP thrice... i am well versed with algorithms and low level hardware and architecture... i am not a code monkey'<p>Keep telling yourself that, but if you are a developer, you will be a "code monkey" in one way or another until you've worked your way up a bit, no matter how good your background is.<p>I've worked with PhD's and Master's CS students from around the world that have written bad code. We all do, but the less supervision and review, and the less people care, the worse the code. At the same time, it took me several years to realize that what people build up to be the ideal can be just as much of a waste. (Your team spends all that time working with the perfect process, but you've added overhead that never needed to be there, because the customer doesn't care. Think about the early success of Windows. That was a product of the lower end of "good enough" coding/design.)<p>But despite aiming for "good enough", you need to go through the rest first. Good practices and techniques are learned from working with good people. You should be so blessed as to have a great mentor as a junior. And as a mid-senior-principal/architect, you should be so blessed as to have great people working alongside you at least at some point (not big names, but just people you respect quite a bit at least) and in good environments (places were you respect the process as one of the best in the industry as far as you are concerned doing something you love).<p>Anyway, again based on what you said, if you have the opportunity to go into firmware, device drivers, OS development, etc. you might look into that. You might need to go out of the country, though (take a chance!). <a href="http://www.indeed.com/" rel="nofollow">http://www.indeed.com/</a><p>You could also (assuming you have the money, which I'm pretty sure you do) continue education and go the engineering route if interested. Chip design, etc. can make a good amount of money, and your skills probably wouldn't go to waste necessarily.