Agile software development is a
philosophy for delivering software to customers in a continuous and
incremental manner.
What does continuous amount to, in
practice?
It could be any interval from 1 day (
defect fix ) to one week (an enhancement) to a month (new feature)
to 3 months (multiple features) or anything in
between or more in extreme cases.What do we mean by incremental? A software increment of value to customers. (Minimal viable product, a new feature or a new enhancement or a defect fix).
Agile software development can be
adopted for all forms of software products. Be it a mobile
application or e-commerce website or an enterprise software as a
service (SAAS) product
or a product that only deploys in
enterprise customer IT environments.
There is no such thing as an agile
software development team in isolation. True agile software
development and delivery requires engineers and everyone in between
engineers and
customers to adopt an agile approach
in serving customers. i.e. The entire organization has to adopt the agile philosophy.
To transition to agile, the organization has to
absolutely clear on this simple and critical outcome of agile:
Continuous and incremental delivery. The team has to then work
backwards, and determine the
systems, teams & business processes
that need to be put in place to complete the transition.
Agile methodology can itself be adopted in an agile manner.
Agile methodology is most effectively
adopted using a top down approach; from leaderdship to every ground
level team member in every function; engineering, product management, marketing
or
sales.
Agile methodology is most effectively adopted from right to left in the value chain from
engineer to customer; From customer facing functions back
to the
internal functions or departments and
engineering teams.
Traditional businesses have been using
the agile philosophy for setting up and running businesses for ages.
Lets consider an example
You are an expert at baking cakes and
have decided to build a business around it.You could initially start
by testing your concepts with your family & friends, then identify a
restaurant that is willing to add your cakes to their dessert menu. If your
cakes are well received, you could then decide to extend your
production capabilities to scale to a few more restaurants. At some
point you might decide to setup your own outlet... and so on.
With the advancement, growth and
commoditization of technology and connectivity, the software industry
now has the same opportunity.
Here is an example of an continuous
iterative technology product delivery to customers.Lets consider businesses like MagicBricks.com or Housing,com which host websites to enable customers to rent or purchase apartments.
Once the business idea is validated,
the first product deliverable can be the minimal capability required
for owners to register and publish apartments available on rent, and
seekers to register and express interest in taking up an apartment
on rent, and exchange contact information with apartment owners to
engage and go through with the transaction.
With this minimal product capability in
place, the product can be launched in an agile and iterative manner
across geographic areas, one city at a time. This approach can enable
the business to focus on getting the product right in one city, and
also ensure that the product (website) is not overloaded with traffic
that it is not yet capable of handling. Once the product team has
validated the product for a single location, it can then choose to
build the right scale in the product to enable it to take on higher
traffic and handle larger data sets in the backend systems. It is now
in a position to rapidly iterate and expand across geographic locations.
As a second iteration, the product team
can then go on build product capabilities for enabling customers to
purchase new apartments and work with builders to register new
projects and enable customers to discover apartments that match their
needs.
At every stage of continuous engagement
with customers (builders as well apartment seekers), the product team
can use the opportunity to listen and take feedack from customers to
continuously refine the product experience for the customer to get it
to be as intutive as possible.
The product team can continue to add
more capabilities to the product that continually add value to
customers, and help the product and business in staying ahead of the
competition.
This is too obvious an example and you
dont have to be a software engineering professional to understand it.
Agile software development is all about the art of making technology
& software development transparent to the business or
customers or shareholders. The organization should only have to focus on what value it has
to deliver to customers, and software delivery systems,
processes and teams should enable effective delivery of
required capabilities in an continuous and incremental manner.
The transition of a traditional
technology company or a technology enabled company from traditional
product delivery mechanisms to agile product delivery can be
challenging, but tremendously
rewarding for customers, organization and engineers.
No comments:
Post a Comment