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.
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...