Being Agile
Good evening toastmaster of the
evening & audience. How many of you
are using software’s daily? Software`s have become inseparable part of daily
life. Starting from the time of daily from mobile phone to the time to sleep we
are using software applications without which we can`t survive in the modern
world. Today I am going to share info about the agile practices in software
development which is the progressing trend now. I am also started working on
the agile projects.
All major organizations have
started adapting to Agile methodologies. Some of the familiar organizations are
1.
Apple
2.
Microsoft
3.
IBM
4.
Amazon
5.
Google
6.
Cisco
7.
Etc
The traditional way of
developing any software is to follow a waterfall model. Below are the process
followed in the Waterfall model. Here the scope is fixed, Cost & schedule
are variables. Strict processes is to be adhered. Comprehensive documentation
has to be maintained for all the processes.
1.
Requirements – We
should gather all the requirements with the details in this stage
2.
Design – We should
do design to cater the requirements.
3.
Development – We
should do the development against the requirements
4.
Testing – All the
developed components will be tested.
5.
Release – Post
testing, software will be released to production
The activities should be
followed in sequence. If there are any changes in the requirements the change
management process has to be followed. In the traditional model, the changes
are not welcomed. Below are the difficulties identified in the traditional
model.
1.
Customers can touch
the software only at the end of the project.
2.
If the project
duration is long & in the course of the time if the technology &
requirement changed, it becomes very difficult to accommodate it in the same
project. Sometimes after years of work, projects are getting scrapped.
To address this issues, agile
practices in software development are introduced. Below are the key principles
of Agile manifesto.
1.
Individuals &
interactions over processes & tools.
2.
Working software
over comprehensive documentation.
3.
Customer
collaboration over contract negotiation
4.
Responding to change
over following a plan.
There are many
methodologies in Agile practices. Some of the key methods are
1.
Scrum
2.
Kanban –(Todo/WIP/Done)
got familiar from Toyota
3.
Xtreme
Programming(XP)
4.
Crystal
5.
Etc
The most popular is Scrum. Below
are the roles available in the Scrum methodology of software development.
1.
Product owner – Who
owns the product & he will be the chief steward officer who will determine
the priority of the items in the product backlog.
2.
Scrum master – It is
equivalent to the project manager role in the traditional method but here the
role is of servant leader role where he has to serve the team & try to
resolve for any impediments.
3.
Development/Testing team
– In scrum, the general expectation of the team is T shaped skills, meaning
members should have a general understanding of wide variety of skills & a
deep understanding of one skill.
A scrum team can be of 3 to nine
members. For bigger teams, there will be scrum of scrums.
Scrum can be of iterative cum
incremental. A typical iteration duration is 2-4 weeks. At the end of an
iteration depending upon the understanding a release can be done in the
production or till the UAT(User acceptance test)
Below is the flow in the Scrum.
1.
Product backlog –
Which contains the requirements in the form of user stories
2.
Sprint planning –
Product owner & the team will do the planning for the number of sprints.
3.
Sprint backlog -
Product owner & the team will prioritize the back log for that particular
sprint.
4.
Sprint
execution/Daily standup(15 min meeting-What done yesterday, what will be done
today, impediments)
5.
Sprint Review
6.
Release(Depends on
iterative/incremental)
7.
Sprint Retrospective
From step#2 to sprint#7 will be
called as an iteration. Iteration will be repeated till all the requirements
are done. The main philosophy of Agile
is that changes are welcome even at the end. In agile, Scope is variable, Cost
& schedule are fixed.
It is difficult for the
organizations to directly switch over to agile from traditional methodologies.
So organizations are using hybrid methodologies which is a combination of
traditional & agile practices. Eg. Till design it can be waterfall, then
agile practices can be followed for development till release.
Agile practices in software
development are causing major disruptions in software development. The release
are made incremental by which time to reach the market is reduced. The next
time if you are using any software application, just think whether it might be
developed in agile or traditional. Over to the TMOE.