Getting the most out of in-house coding efforts is an ongoing task, but Macquarie Bank claims to see greater productivity and quality with agile development and proactive internal communication.
Grant Gardner, associate director in the information systems division for Macquarie's banking and property group, said because there is a lot more talk about agile processes in the media people expect a methodology to be a "magic bullet" in solving process problems.
"There's no substitute for good people but we make good use of techniques," Gardner said. "
About four years ago the bank started a $1 million project to modernize its client/server architecture and made a "straightforward" decision to go with Java. This move also gave Macquarie an opportunity to adopt an "agile manifesto" which set principles valuing individuals and processes over tools, working software over documentation, customer collaboration over contract negotiation, and responding to change over following a plan.
"We are a bank and the conservatism that comes with that is apparent," Gardner said. "We looked at the market and found a partner with good agile development experience - ThoughtWorks."
Macquarie's agile development practices involve iterative cycles of typically two weeks, which are a smaller version of the overarching plan done "repeatedly and frequently".
"The process starts with planning, when the business analysts flesh out the details," Gardner said. "At the start of the iteration, the project team comes together. Then developers stand up and demonstrate it to the whole team - including business stakeholders and sponsors."
Gardner said it's a "powerful thing" when the momentum starts building and the business stakeholders see the project grow before their eyes; it's a good incentive for developers to present and "get it right".
The whole process should take about six months, according to Gardner, and if projects are larger they can be chopped up.
The process is then handed to testers and at end the team has a retrospective to see what has and hasn't worked well and to raise issues to get problems fixed.
To ensure the team builds a two-week system into a working product, and the iterations are stable, Gardner recommends "continuous integration".
"Compiling Java code and deploying it every two weeks is boring for the people involved and much better done by a machine than a human, so automate that," he said. "You need to repetitively run automated tests [as it is] much cheaper to fix a bug earlier in process than later."
Macquarie uses Cruisecontrol to detect changes and run the automated build process. "The green light is a good talking point when the CIO comes around," Gardner said. "It's the measure everyone sees [so] you do need to be very disciplined."
Despite the inherent risks in the cycles, Gardner said the key business outcomes resulting from agile development are lower production defect rates and improved usability.