PH.DO

Bank of America FX Platform Case Study


In 2005 I assessed Bank of America’s FX platform in Chicago, and presented back to the leadership on their challenges and left them with recommendations. I went on to lead a development technology-focused mission for them implementing the recommendations.

In one choreographed effort, I organized, and trained the staff in:

  1. A move from ClearCase (multiple active branches) to Perforce (trunk based development & monorepo)
  2. A move from a single giant package hierarchy, to a recursive build (Maven style, but with Ant)
  3. Ant script templatization and cleanup
  4. A move from Singleton-esque shared static state lookup of components to service locator
  5. Tactically adding tests as work progressed
  6. Hooking everything up with a CI daemon (CruiseControl).

Items #1 to #5 the above were performed in parallel. At any one time we were part complete on all of the those, and each would leap forward a percentage as emphasis shifted to it tactically towards the larger completion.

And when #4 was complete,

   7. Service Locator to Dependency Injection, according to a methodical ‘Least depending, most depended on first’ approach.

ThoughtWorks rolled off the account before the mission was complete, but I was invited back a year later to check progress. A day trip to Chicago from San Francisco!

Branch by Abstraction

One of the major contributions I’ve made to the DevOps field is this procedure, and it cme ouf ot the BofA mission.

Legacy Refactoring: Least depending, most depended on first

This approach to a large refactoring agenda came out of this mission. I first documented it for InfoQ in 2008[1]. It was referenced in a follow up “refactoring experiment” article [2], and updated and made into a PDF in 2013[3]. Actual animations from the BofA recommendation deck were redone in JavaScript and SVG for a blog entry on "tweening" in 2016 for fun [4].


  1. Drinking your Guice too quickly? (Apr, 2008, InfoQ)

  2. Refactoring Experiment - ‘least depending and most depended on’ components first (Sep, 2011, my blog)

  3. A Singleton Escape Plan (Mar, 2013, PDF on my blog)

  4. Java legacy hairball: refactoring case-study (Jul, 2016, my blog)