Maximize efficiencies in delivery through aggregating sub-process efficiencies in large development groups
ADP India Pvt. Ltd.
Products are of varied nature. Some of the factors that bring about the variation are size (build size, functional breadth, workflow complexity), market they address (shrink wrap, web offering, enterprise solution) and their revenue models (one-time sale, pay-as-you-go, act as media). Each of these factors comes out in different magnitudes and a combination of these determines the nature of a product. In addition to these, aspects like geographical distribution of teams that contribute to building play a significant role. One of the most critical components of making a successful product is achieving efficiency in software product development with the often talked about goal of “delivering within time, quality and budget”. Software development has matured over the years and in doing so has produced several development methodologies. This has enabled the development owner to choose an appropriate methodology considering the various factors and the context of development.
These methodologies look at the big picture, split the entire process into sub-areas and provide detailed processes that optimize those.
Challenge – Blinkered Vision
One of the key decisions that the development owners make is about choosing the right development process and structure the groups accordingly. This involves striking a good balance between keeping focus on the big picture and obtaining efficiencies in the sub-processes. While it is easier to manage when the group size is smaller, it manifests into a bigger challenge as the development groups (includes marketing, service etc) grow larger.
In large development teams, there is a strong need for clear team structure. On a practical note, one would see team leads, managers managing three/four teams and we may even have senior managers getting to manage multiple of these large teams. While one may argue over the need for several layers of management and that it should be a flat structure, in reality we tend to see this more often. For teams that need to continue for fairly extended period of time, unless there is enough leadership bandwidth, it is difficult to sustain the passion and motivation of the teams to consistently deliver. In many cases, especially in large organizations, large groups with their structures already exist and although desired, it may not be possible to dismantle existing structures and form ones that are ideal.
To ensure that all the teams perform to their optimal levels, team goals are arrived at and tracked on a continual basis. These teams are lead by the leaders who themselves are strong contributors and have evolved to this role due to their excellent abilities in managing their deliveries. They also are specialists in their areas of work (development, business analysis, testing etc.) and constantly look at improving efficiencies in their teams for optimal deliveries. As desired, these teams work towards these goals and put in their best to make sure that their goals are met/exceeded. In an ideal scenario, each of these team goals should roll-up into the overall product goal. However, it becomes very difficult to achieve the ideal scenario.
As the teams get focused on their meeting their targets and excelling in their own areas, they exhibit strong sense of ownership of their targets and work towards outperforming those goals. This and probably the very nature of “team” create a kind of “competition” among the teams. Unintentionally and unfortunately, this “competition” slowly translates to “blinkered vision” among the teams and their leaders thus missing focus on the end delivery. Due to strong plan focus, each leader works towards ensuring that any changes to the delivery parameters due to their team issues are accommodated within the team. Meeting the plan is considered to be always “good thing”. While it is good, plans are plans and just the way that certain tasks take more resources than expected, some take much lesser resources than expected. Unless these gains are constantly realized and used in other areas that may need them, they are lost.
We embarked on developing a declarative development framework that was further used to develop and deliver a highly scalable financial services solution to a multinational bank. This involved building a declarative programming tool and a run-time engine that interprets and executes the solution defined with the declarative tool. The framework was an implementation of distributed server architecture on J2EE platform and depends on the platform to deliver persistence, database independence and scalability. Business logic is componentized and enabled as Enterprise Java Beans that can be deployed on any EJB container. Extensive support for building a complex User Interfaces is provided. Capabilities include built-in templates for capture, edit, enquiry and reporting of the underlying business entities. Actual screens are dynamic in nature and driven by configuration. The term configuration encompasses various configurable capabilities of the interface like different UI technologies, look & feel, validation on captured data (both business as well as standard), dynamic rendering of UI components, various screen layouts etc.
Development and delivery of framework and solution spanned over 7 years with about 300 person year effort that went through all stages (inception to production) of a product development life cycle. This also involved close to 100 associates spread across two locations working in different teams of Client support/implementation, business analysis, project management, development (declarative tool, runtime engine, and application) and testing.
We adopted an incremental software development approach and as the groups became larger, we started experiencing issues of “Blinkered Vision”. Discussions like “we have been sticking to our plan but other team is always exceeding their plan due to which we have to squeeze our efforts/schedule” were not unheard of.
Approaches that worked for us
To overcome the challenge and to achieve our end goal, we had several brainstorming sessions within the leadership team that resulted in adopting the following two approaches.