The one rule I've never broken is this - don't work on bad code.
There's tons of really shitty code in "enterprise software" type places - IBs, banks & such. Its not too hard to get a 6-figure job at these places, but then the real fun begins. If you get assigned to work on a trading system that nobody wants to touch because its super-brittle, you should run for your life; unless
a. you have an immigrant visa issue, or
b. you badly need the money.
Some of my colleagues in IBs fell into both those buckets :(
So they simply stayed put.
Other than IBs, I've also worked at 2 startups - very clean code, and very fun code as well - like a homegrown 3D API in Java to draw & rotate the globe & locate your city on it - way back in 1996, when Java was 1 year old & had no 2D API even! The best even Sun could do at that time was this tumbling duke animation on netscape ( http://bit.ly/jnZFwz), and this startup headed by 2 smart computer graphics experts from MIT rewrote their graphics engine in Java to rotate a whole geographically-accurate globe in netscape!
Nowadays you see a protovis demo ( http://bit.ly/imMuSE ) & think, Hey, I can think of a dozen places where the data could be modelled that way. Why don't they ? Cause they're "Big Companies". So they'll stick to tables with links to more tables that link to even more tables! If you think about it, a portfolio of derivatives who underlying maps to a cross-correlated matrix is essentially a force-directed graph whose vertices are growing & shrinking as they trade throughout the day. If you think the vertex is about to pop, sell it! Instead, "Big Companies" will hire tons of analysts who will simply stare at tabular Excel screens of rows & columns & red/green alert button like you're back in the 1970s. There are startups doing really cool stuff with trading & visualization, but they don't take off - simply because of inertia & retraining of existing traders to stare at graphs instead of tabular rows & columns :)
Maybe 10 years from now...
Other than IBs, I've also worked at 2 startups - very clean code, and very fun code as well - like a homegrown 3D API in Java to draw & rotate the globe & locate your city on it - way back in 1996, when Java was 1 year old & had no 2D API even! The best even Sun could do at that time was this tumbling duke animation on netscape ( http://bit.ly/jnZFwz), and this startup headed by 2 smart computer graphics experts from MIT rewrote their graphics engine in Java to rotate a whole geographically-accurate globe in netscape!
Nowadays you see a protovis demo ( http://bit.ly/imMuSE ) & think, Hey, I can think of a dozen places where the data could be modelled that way. Why don't they ? Cause they're "Big Companies". So they'll stick to tables with links to more tables that link to even more tables! If you think about it, a portfolio of derivatives who underlying maps to a cross-correlated matrix is essentially a force-directed graph whose vertices are growing & shrinking as they trade throughout the day. If you think the vertex is about to pop, sell it! Instead, "Big Companies" will hire tons of analysts who will simply stare at tabular Excel screens of rows & columns & red/green alert button like you're back in the 1970s. There are startups doing really cool stuff with trading & visualization, but they don't take off - simply because of inertia & retraining of existing traders to stare at graphs instead of tabular rows & columns :) Maybe 10 years from now...