(this is part 2, should have posted it first, D'oh!)

Large organizations can breed certain kinds of psychotic behaviour, such as out and out lying. Your boss (or someone else with power) may order you to do one thing, and then next week demand to know why you haven't done some other thing. You say "because you told me to do X" and they tell you they never said such a thing. Never ever ever trust that person again. Never leave yourself vulnerable. Never take anything they say at face value. But... here's the rub, they are in a position of power, so don't piss them off. I think there's an old saying - something about being wise as serpents yet gentle as doves, and that definitely applies here. As a non-pyschotic behaviour, this might arise because there are multiple people giving contradictory orders, I believe there are other old saying about the difficulty of pleasing all the people all of the time.

One of the reasons that banking projects frequently fail, and this boggles the mind, is that, no matter how important your project is to the organization, within the company there are people who are actively trying to kill your project. They will oppose you at every turn, they will fight you tooth and nail, they will (seemingly arbitrarily) deny you of perfectly reasonable requests for resources.

As an aside: working at large banks is the reason I bought my own white board marker, it lives in my bag, and I take it home with me every night.

So I considered this behaviour. Now I choose to believe that for most people they don't get up every morning, look themselves in the mirror and ask themselves how they can do the most damage to the company they work for, how they can be the most evil, how they can maximise suffering in the world. Most people aren't like that. So why then, are all these people trying to kill my projects? After a long period of contemplation I came to the understanding that the reason they act that way is usually because the company incentivises them to do so. Their role, for instance, may be to minimise costs. Projects are a cost. Therefore your project is directly in their gun-sights. This is just one example, large corporations are really good at creating and incentivising infighting. They might decide to engage in a silo based re-org. And then afterwards, none of the silos want to pay for essential projects, because they hope that someone else will be forced to stump up the bill. Now the organization didn't set out to create that outcome, but it is just basic game theory (prisoner's dilemma) that defecting is the best (short term) outcome for individuals (whereas co-operation is the best outcome for groups).

Make friends with the people who have good people skills, they will protect you in times of trouble. It doesn't matter how crap the business analysts are (and most are worse than useless) if you can be bothered to put in a minimal amount of effort to be nice to them, and they like you, you can often get enough warning to dodge a bullet or to get passed a teleport token at the last minute.

You'll run across some people who are genuinely bad at their jobs. (see also business analysts (caveat: a good business analyst is worth their weight in gold, treat them with the same care and respect you would a national treasure)) Try not to make them look bad. At one large bank I ran into a DBA and she was complaining that the queries were running too slowly. So I (tongue firmly in cheek) suggested that if all the data was bought into one really huge table the query would run really fast because there wouldn't be any joins... and she thought this was great advice. I freaked out. I ended up begging her not to do this. It turns out she'd never even heard of normalisation because it was her first job as a DBA and she'd never been given any training. //twitch// Don't make the little people look bad if you can avoid it. Don't stomp on the ants.

Things move at a certain pace, try not to get impatient. Try to find something to do that looks like work, that you can justify as work but that you enjoy doing. I always like doing design and testing, I give my code an absolute beating before I let anyone else near it, no abuse they throw at it will come close to the torture I put it through. Unfortunately, in the long run this means I end up finishing much faster than most of my co-workers (whoops). So I often end up helping out other programmers. That might be debugging or if they're stuck on some task that they hate (examples: UI or persistence) then I ask them what they like doing, and if I have something like that on my task list I can swap with them.

For the keeping yourself busy: develop an appreciation for doing the impossible, whether by sneaky solutions, your astounding application of some obscure API or comp-sci algorithm, or just outright cheating. Volunteer for stuff. Banks have lots of old code that needs the occassional fix. Put your hand up even if the code that needs fixing is in some obsolete dead language that nobody speaks anymore (exception: Cobol, just don't go there. Besides, the old timers need the work anyway). Document your achievements and then squirrel away the document. At your annual performance review print them all out and walk into your bosses office with a dead tree's worth of work you did over and above the call of duty.

If you're good at fixing bugs, keep track of how many you fixed compared to everyone else. Same goes for anything else you are really good at that can be tracked. If you think you're really good at something, and it turns out there is someone out there who is better than you, make friends with them and (subtly) get mentoring from them. Yes, they may be hyper-intelligent, but often it will turn out that they just know more tricks than you.

Programming is fundamentally both a social phenomenon and simultaneously a solo activity. Your non-programmer boss is never really going to appreciate your amazing algorithms, because he has no baseline to compare it to. Talking to other programmers and swapping war stories is really important to their and your motivation. Most programmers who don't get this are starved of attention and feel unloved. You need to realise that the attention you crave comes not from above, but from your peers, and the best praise is from programmers that are better than you.

Most importantly about making friends with programmers that are better than you, is that maybe at some point you'll get the opportunity to work on a startup as a low digit employee, because they know you, they know they can trust you, and they know you get things done.