PH.DO

Big Four bank's FX Platform Case Study


In 2005 I assessed this “Big Four” bank’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 at the time).

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)