Application Services provides a platform for IT Development and Maintenance professionals to discuss and gain insights into best practices, process innovations and emerging technologies that will shape the future of this profession.

« August 2014 | Main | October 2014 »

September 15, 2014

Striking the Balance: Waterfall and Agile - Part 3

In part 1 of this blog series, we discussed on how business and application related considerations affect selection of SDLC methodology

In Part 2 of this blog series  we saw impact of agile team execution location as well as what pre requisites are considered while team is formed for execution, paving way for inclination to type of methodology preferred.

In this blog post, we will continue to explore information on organizations exiting situation around organization's current/proposed technologies/ tools repository and automation; it's future investment roadmap. This will help driving out methodology choices.

Agile approach requires collaboration and communication among team members either in collocated or distributed situation. Tools and Technologies providing effective communication such as conference call , video conferencing facilities, polyphones, emails, instant messaging, web cameras, video calling, WebEx, On Sync, Chat as well as enterprise agile lifecycle management tools, Wikies, SharePoint sites, Blogs should be made available, particularly in the case of distributed teams. If team is following phase gate waterfall work, good project management system with time/task tracking and monitoring, knowledge/document management systems are required.

Agile advocates shorter release cycles necessitating regular and frequent check-ins and check-outs by teams. Agile advises use of fast and reliable source code repository solution that can be easily accessed by distributed teams. Waterfall approach desires a source code repository system.

Agile assures working software at the end of each sprint. To enable development in short cycles and to sustain good quality and high velocity, the team should be able to quickly and effectively test what it develops. Following practices such as test-first approach like TDD, acceptance test driven development (ATDD), behavior driven Development (BDD) and creating a robust set of automated tests after team reaches certain maturity, helps maintain system health after multiple sprints without impacting speed of delivery. While this involves significant adoption effort and behavioral changes like pair programming, these yield better outcomes over a period of time.
On the other hand, Test-first approaches and pair programming seems impractical in waterfall approach, Test automation is desirable, provided it meets the constraints of cost and resources as testing is a phase and there is no pressure to deliver in a time boxed manner.

Agile project expects continuous integration involving regular and automated build, integration and testing of software being followed to inspect/adapt with faster feedback cycles delivering better results. This is advised to be considered as early as possible during release cycle, may be form iteration 1 itself.
This needs to be analyzed within constraints of cost and resources during waterfall, may be during integration phase. 

Agile advises dedicated development and quality assurance (QA) environments for agile teams along with enough hardware, software licenses, and IT support staff to build or maintain those environments as working software is getting delivered in short time box of few weeks iterations.
Infrastructure, IT asset management teams as well as operations teams needs to work collaboratively with agile teams to support multiple dev./test environments, servers, databases, networks, and other third party softwares.
Waterfall approach if taken and organization mandates certain cost and resource constraints, above mentioned resource requirements needs to be well planned in advance to make these available during development/ test phase.

Pre requites for agile implementation is better communication and collaboration technology along with adequate automation wherever possible; demands investments upfront, with possibility of returns only in the long run.

It also demands leadership backing with long term vision and investment appetite, mind shift change of teams with changing roles & responsibilities due to initiatives like automation and collaboration. Many organization in search of resources will keep working in business as usual mode.

In the last of this blog post series, we will discuss on how projects and programs dependencies affect quest to reach final stages of methodology approach selection.

September 12, 2014

Striking the Balance: Waterfall and Agile - Part 2

In part 1 of this blog series, we discussed on how business and application related considerations affect selection of SDLC methodology 

Part I:

In this blog post, we will continue looking for impact of agile team execution location as well as what pre requisites are considered while team is formed for execution, paving way for inclination to type of methodology preferred.

Agile teams will be more productive if all the team members are collocated. Work needs to divided into vertical slicing as against traditional horizontal slicing as per requirements, design, development, testing work. If teams have to be distributed, they needs to be encouraged to become self-sufficient and self-organizing with provision of additional enablement needs like   better communication and collaboration infrastructure, some means of product owner access as well as well thought out automation roadmap.

If teams can arrange for dedicated collaborative team workspace, it will help facilitate face-to-face communication, encourage informal communication through adequate display area within workspace show and tell way of work using boards, drawing sheets, stationery. It is under such a well networked environment that agile works at its best. These initiatives will motivate the teams and triggers work environment change, enabling mind set change.

If teams don't prefer to change their ways of working, waterfall approach can be preferred and projects can continue as business as usual (BAU) in existing cubicle workspace.

In an environment where organization focus is on factory standard processes, leadership expects project team members to understand and implement common processes to their personal work and project success, demands process/compliance heavy command and control phase gate approach, there is a separate process management staff or PMO who maintain process documentation, waterfall can be chosen as more suitable methodology as agile suggest more leaner approach for documentations.

In an environment, where teams can avail agile coaching and training in the areas of  refactoring, pair programming, code review, test first approaches like test driven development (TDD), acceptance test driven development (ATDD), behavior driven development (BDD),   agile process trainings such as scrum , lean ,Kanban, agile adoption is much better off. Whole team should get training along with role specific trainings such as product owner (PO), scrum master (SM). Additional trainings such as cross functional team behavior, generalist approach, facilitation skills, problem solving, team ownership, Whole system approach will enhance agile projects success manifold.

If project team can be formed as cross functional teams  including architects, BA's ,designers, developers, testers along with release and configuration stream representatives for broader views and collective decision making, agile approach will be effective.
A waterfall project requires specialized teams working using a phase-gate approach.

Agile demands long lived teams with minimal attrition rates to retain cohesive teams of individuals with core competencies and multiple cross-functional skills. HR policies should be able to handle agile recruitment, benefits and compensations, rewards and recognition, and appraisals. 
A centralized HR department that follows organizational policies and procedures for people management will be more inclined towards waterfall approach.

For agile teams to be effective, team members must be fully allocated to the project instead of allocating percentages. Team members must be retained within iterations as well as for multiple versions of product development making team long lived. This ensures that the project delivers on its iteration level commitments. It also makes the team/ resources own the iteration results and sustain a predictable team velocity.
If project is desiring to have shared resources among projects for maximum allocation and utilization, naturally waterfall may be more adapt.

For Agile to be effective, the team needs to be empowered to perform faster and better and be accountable for its results. Teams that are not empowered are unable to make certain decisions such as providing a fresh estimate forecast at the beginning of each iteration/ sprint and providing revised estimate forecast. This is needed to ensure that the team gains more visibility on what needs to be done.
It is common to have a matrix functional organization where resources are grouped temporarily for the duration of project. This necessitates multiple lines of reporting, making teams less empowered and more geared towards waterfall approach.

In an agile environment, a scrum master or iteration manager should be available who will identify or help the team to overcome obstacles. SM/IM needs the authority to act in the interest of the team, represent the team, and eliminate disturbances.
In a matrix organizational role, the project manager handles the project with command and control and can follow waterfall.

In an agile environment, team members should be empowered with several degrees of freedom to define problems and handle resolution. If organization rely heavily on policies and procedures and expects the team also comfortable and empowered with policy compliance with clear hierarchies of responsibilities and authorities are existing, waterfall is better suited.

Team Location, work distribution, workspace design, team composition, coaching and training are differentiators for the choice of either agile or waterfall.
In the coming post, I will put forward importance of tooling in deciding either waterfall or agile approach.

Subscribe to this blog's feed

Follow us on

Blogger Profiles

Infosys on Twitter