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:
- A move from ClearCase (multiple active branches) to Perforce (trunk based development & monorepo)
- A move from a single giant package hierarchy, to a recursive build (Maven style, but with Ant)
- Ant script templatization and cleanup
- A move from Singleton-esque shared static state lookup of components to service locator
- Tactically adding tests as work progressed
- 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].
-
Drinking your Guice too quickly? (Apr, 2008, InfoQ) ↩
-
Refactoring Experiment - ‘least depending and most depended on’ components first (Sep, 2011, my blog) ↩
-
A Singleton Escape Plan (Mar, 2013, PDF on my blog) ↩
-
Java legacy hairball: refactoring case-study (Jul, 2016, my blog) ↩