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