Dragons in the Algorithm
Adventures in Programming
by Michael Chermside

Culture of Reuse - Part 2: Capital One and Innovation

Part 2 of a 4-part essay

For the past several years I have worked at Capital One, which is one of the larger financial institutions in the US. As an organization, it lies somewhere between being a bank and being a tech company. And Capital One is really good at technological innovation.

Capital One; Many Languages

Unlike some corporate workplaces, developers at Capital One are given a fair amount of freedom to experiment with new technologies. As an example, I have seen code written in Javascript, Java, Python, Go, Scala, PL/SQL, PHP, Perl, R, Mumps, and I'm sure there are lots that I haven't seen. We enthusiastically support the use of (and sometimes contribution to) open source projects. Developers who lead the charge in creating a new system or framework tend to get rewarded -- promoted even.

One result of this commitment is that Capital One is a great place to work for people who are dedicated to coding and innovating in software. Another result is that Capital One tends to be quick to discover new tools or new ways of working and also is very good at moving to a new technology when it becomes available. As an illustration, we were (so far as I know) the first bank to publicly experiment with running systems "in the cloud" instead of in our own data centers. We rapidly figured out how to do that while still securing data well and monitoring and controlling the systems. We were able to show that it allowed develop faster and to deploy auto-scaling systems in a way that had never been possible before. And then, in the space of about 2 years, we moved more-or-less EVERYTHING in the entire company into the cloud. If you've never worked in a large, regulated industry you may not realize just how big an accomplishment that is, but believe me: in most similar companies it would take 10-15 years with significant executive support, and might NEVER happen without.

But that culture of innovation has its downsides. Innovation is something we do well and something we value. So everyone wants to innovate. The last time I counted, we had 5 different systems for uploading files to a website. We have at least 3 entire frameworks for web application development that were built in-house, and several open source and proprietary frameworks that are also used. We have at LEAST 12 different systems where we store customer data -- probably many more than that. Yes, largely *because* we value innovation so highly, Capital One is not especially good at reuse.

[Back to part 1] Part 2 coming soon...

Posted Tue 29 May 2018 by mcherm in Software Development