I bet like myself, you got into IT due to the love of programming. Your first hack game, be it on ZX Spectrum or Commodore 64, gave birth to an ambition to code bigger and better. Eventually, you finished uni, got an IT job, started living the dream. Right about then, you had the first introduction to finance...
Sitting in the pub with your media colleagues, the suits arrived. Their aristocratic demeaner and fat wallets captured the attention of other punters, especially the barmaids'. Once within an earshot, you overheard “millions of transactions per second, gigabytes of data, 6 figure bonuses”. A thought appeared in your head – why not me?
Fast track, you finally made it into finance. Recall the eerie feeling walking into an Investment Bank for the very first time. More unsettling than the need for the ironed shirt, shave, punctuality. The vast scale of the office, smart appearance of its inhabitants, you never swam in waters so deep. Till now, the pecking order was defined by programming prowess only, yet your new colleagues seem to match you in geek and raise you in financial enlightenment. Faith in their über brain powers is only strengthen by the complexity of everything around you. “It will all make sense as soon as you've played with it...”
You reach out for documentation – there is none. You ask for chief in command – we’re an egalitarian society. Can someone provide some background – all busy with a production issue. Business requirements – they’ll be passed to you with a spoken word/messenger chat/2 liner emails. You dive in, with the conviction that such established and profitable institution must have eventually understandable codebase. But no matter how hard you try, all you witness is blatant anti-decomplexifications, lack of architecture, unmaintainability, slavish following of the outdated – all begging for a rewrite that unfortunately "will bring no value". The code comprises endless, loosely cobbled if-else conditions, filled with enough acronyms to exhaust ASCII set permutations. Within such spaghetti mess, new features are added with a stab in the dark and regression tested by peanuts earning offshore.
Your colleagues concede that fresh approach is needed, but are unwilling to back this up with action. Whilst aware of better approaches, they seem detached, passionless, almost bored, though still consenting to outside of working hours effort to fire-fight the dying system. Second class citizens among their business colleagues, who actually drive the IT processes. When business screams “jump”, IT obediently responds "how high". On the odd chance of asking “why”, unpleasant answer might come to light: so that business can sweep shit under the carpet, be careful it doesn't splash out once you land.
Such state of affairs is no coincidence, let’s look at the facts. Banks are the most desired places to work for in London. They attract talent with reputation of high standards, seemingly interesting problems (volume/scalability/performance/complexity) and fat paychecks. The belief of greatness is brainwashed into every new joiner (preferably graduate), and non-conformist are happily let go. Being top of the food chain, banks have no natural HR predators beside themselves.
Yet a team of the greatest developers still plays second fiddle to the worst performing trader, hence acquiescence is more of a virtue than excellence. To keep the IT in line, a highly feudal managerial structure is put in place, controlling bonuses and contract extensions. For technical guidance, 2 cast system prevails. Business functionality is worked on by a mobocracy of grunts, infrastructure is policed by managerial lackeys sitting in the Ivory Tower – “Infrastructure Team”. Absence of personal accountability among the grunts usually achieves the desired anarchy, but should a mutiny arise, “Infra” is quick to pounce and restore chaos. Disobedience is rare though, as management skillfully keeps developers overworked and confused with a plethora of tricks. These range from a simple denial of a refactoring request, impossible deadlines that breed hacks (never to be refactored), and potentially most genius – usage of a single shared environment where individual developers not only trip up each other, but also bring down System, Performance and UAT testing.
IT starts behaving unlike any other developer community outside of finance. Work/life is imbalanced by the natural desire to mother a perpetually sick system. Perks such as subsidized cafeteria and free gym make it easier to stay in the office building longer. Rebellious tendencies to produce quality are squashed by “Infra” pogroms. Dreams of architectural position cannot exist within …a place with no architecture. Status quo is accepted with sad dignity. And the strictest rule enforced: don’t ask/don’t challenge.
What gains are to be drawn out of such legions of overpaid and constantly underachieving programmers? With no economical vantage point – is there more at stake? Could it be that hell is running out of fuel and depends on overheated CPUs running inefficient code? Has a harvest of our creative souls and passions been requested by Beelzebub himself? Either is a good excuse for evil orchestrated recession, as a result of which the banks arise from the ashes stronger then ever, causing a mass exodus of IT staff from other industries. With Prince of Darkness’ front shop Oracle (with the blood red logo) acquiring Sun and hence Java; and M$ always in his back pocket – the devil now controls all the trade tools of his soul/heat supply …And this is where you can break free.
Turn away from Java, turn away from .Net. Start coding Haskell, Lisp, Erlang, Ruby, Python, anything that favours elegance and readability over primitivity and verbosity of “Programming for Dummies” examples. Limit overuse of patterns and frameworks, silver bullets of Java/.Net. Adopt the simplest of protocols, minimal set of libraries. Write code in lightweight editors, incapable of transparently evil code generation (just look at Eclipse generated hashcode() and equals()). Start working for a charity. Do as I say, not as I do – one day I’ll break free and join you…