Sunday 22 January 2017

Importance and Benefits of Agile Scrum methodology in Software Development


Agile is by no means critical of development methodologies developed in the 1970s and 1980s in response to the chaotic and unplanned approaches often used in the early days of software. This fast delivery approach provided a couple of important benefits. First, it enabled users to get some of the business benefits of the new software faster. Second, it enabled the software team to get rapid feedback on the software's scope and direction.
Agile software development refers to a group of software development methodologies based on iterative development, where requirements and solutions evolve through collaboration between self-organizing cross-functional teams. Agile methods or Agile processes generally promote a disciplined project management process that encourages frequent inspection and adaptation, a leadership philosophy that encourages teamwork, self-organization and accountability, a set of engineering best practices intended to allow for rapid delivery of high-quality software, and a business approach that aligns development with customer needs and company goals. Agile development refers to any development process that is aligned with the concepts of the Agile Manifesto. The Manifesto was developed by a group fourteen leading figures in the software industry, and reflects their experience of what approaches do and do not work for software development.
A very popular methodology under Agile is Scrum which is a subset of Agile. It is a lightweight process framework for agile development, and the most widely-used one. A “process framework” is a particular set of practices that must be followed in order for a process to be consistent with the framework. “Lightweight” means that the overhead of the process is kept as small as possible, to maximize the amount of productive time available for getting useful work done.

Scrum is a most perplexing and paradoxical process for managing complex projects. Scrum shows management how to guide a project along its optimal course , which unfolds as the project proceeds. Under this there is an iteration of development activities that occur one after the other. The output of each iteration is the increment of product.  A time box is a maximum duration that has a specific purpose to achieve, as well as duration, scope, and an agenda to meet the desired purpose.  In any ongoing  project we need to know and understand the goals of the overall project which should be achieved at the end.  The project is broken down into sprints. Each sprint should have one or more objectives which is finished in an iterative manner one by one.

 Scrum process is distinguished from other agile processes by specific concepts and practices, divided into the three categories of Roles, Artifacts, and Time Boxes. These and other terms used in Scrum are defined below. Scrum is most often used to manage complex software and product development, using iterative and incremental practices. Scrum significantly increases productivity and reduces time to benefits relative to classic “waterfall” processes. Scrum processes enable organizations to adjust smoothly to rapidly-changing requirements, and produce a product that meets evolving business goals. An agile Scrum process benefits the organization by helping it to :

  • Increase the quality of the deliverables
  • Cope better with change (and expect the changes)
  • Provide better estimates while spending less time creating them
  • Be more in control of the project schedule and state
BENEFITS OF AGILE
·         Customer Satisfaction by Rapid, Continuous Delivery of Useful Softwareà All customers and users gets  satisfied when developers continuously deliver the value to them with usable software.
·         People and Interactions are Emphasized Rather Than Process and Toolsà Agile is focused very heavily around people and the interactions between people, rather than process and tools.
·         Continuous Attention to Technical Excellence and Good Designà When working agile the whole work is in shorter iterations and only build what is necessary to satisfy the requirements for that iteration and nothing else. This thing forces  to keep designs simple which is very important as simplicity helps developers design testable and therefore more reliable systems. Developers understand, and choose from, many possible technical ways to satisfy business need and these are choices that reflect a craft that balances design, use, and support.
·         Regular Adaptation to Changing Circumstances à Customer or business sponsor may change their mind about what is being built. This may be because developers have given them new ideas from the software they delivered in a previous iteration. It may be because the companies priorities have changed or a new regulatory change comes into force. Hence change is a reality of software development, a reality that your software process must reflect.
x

·         Benefits to Customer à  Customers find that the vendor is more responsive to development requests. High-value features are developed and delivered more quickly with short cycles, than with the longer cycles favored by classic “waterfall” processes.
·         Benefits to Vendors à Vendors reduce wastage by focusing development effort on high-value features, and reduce time-to-market relative to waterfall processes due to decreased overhead and increased efficiency. Improved customer satisfaction translates to better customer retention and more positive customer references.
·         Benefits to Development Teams à Team members enjoy development work, and like to see their work used and valued. Scrum benefits Team members by reducing non-productive work (e.g., writing specifications or other artifacts that no one uses), and giving them more time to do the work they enjoy. Team members also know their work is valued, because requirements are chosen to maximize value to customers.
·         Benefits to Product Managers à Product Managers, who typically fill the Product Owner role, are responsible for making customers happy by ensuring that development work is aligned with customer needs. Scrum makes this alignment easier by providing frequent opportunities to re-prioritize work, to ensure maximum delivery of value.
·         Benefits to Project Managers à Project Managers (and others) who fill the ScrumMaster role find that planning and tracking are easier and more concrete, compared to waterfall processes. The focus on task-level tracking, the use of Burndown Charts to display daily progress, and the Daily Scrum meetings, all together give the Project Manager tremendous awareness about the state of the project at all times. This awareness is key to monitoring the project, and to catching and addressing issues quickly.
·         Benefits to PMOs and C-Level Executives à Scrum provides high visibility into the state of a development project, on a daily basis. External stakeholders, such as C-Level executives and personnel in the Project Management Office, can use this visibility to plan more affectively, and adjust their strategies based on more hard information and less speculation.

Apart from the regular benefits Agile has certain Advantages in the field of Software Development. They are given as below :

Advantages of Agile

Developers like to use the best techniques for keeping the design under control without excessive work or rework. Some of these techniques include :
1)       Refactoring : Refactoring is the process of improving the design of existing code without changing its externally observable behavior. Refactoring is most often done in the context of Test-Driven Development/Design where extensive tests and simple design make it easy to refactor safely.
2)       Simple Design : Keeping the design simple and not repeating code helps developers keep the code maintainable
3)       Test Driven Development : Test-Driven Development is a way of driving the design of code by writing a test which expresses what developers intend the code to do, making that test pass, and continuously refactoring to keep the design as simple as possible.


It is evident from the given points above we can say that Agile has a very special space and importance in Software Development environment. There are several reasons behind it that Agile approach is very rapid and it involves continuous integration at each and every step otherwise the result/output can be different from expectation. Scrum is a popular project management framework for agile projects which is being followed in most of the Software Industries. Scrum methodology uses different measures and metrics which applies automation and track the progress without going in manual methods.  

Author: Ms.Shweta Shree Sharma
Project Manager
IBM Technologies. 


Sunday 24 July 2016

Knowledge Management: An Introduction

Introduction

As the foundation of today’s global economy moves away from natural resources to intellectual assets, knowledge has increasingly become the only basis for a competitive advantage that can be sustained. Rather than land, labor or capital it is knowledge that is the key factor of production in many industries. In this “third wave”*, the wealth system is increasingly based on thinking,  knowing and serving customers  in the way of providing them a unique experience. Companies need superior knowledge to leverage their traditional resources and capabilities in new and distinctive ways to serve their customers. And they must do this more effectively compared to competitors. As a result, Knowledge Management (KM) is being taken seriously by companies across industries.

A major driver of KM in recent times has been Information Technology (IT). But KM should not be equated with IT. It is human beings who think, experiment and learn to create knowledge. Much of the valuable knowledge that lies in the brains and minds of people can be best shared through human interaction. IT is only an enabler, though  in the words of famous journalist, Thomas A Stewart ,’it is one hell of an enabler’. Without IT, would be quite difficult to replicate and distribute knowledge related documents in a cost effective way across an organization that is largely geographically dispersed. As Stewart mentions[1], “KM is knowing what we know, capturing and organizing it and using it to produce returns. Nothing in that definition says anything about computers but modern knowledge management is inconceivable without using them and in some sense they created it.” 

A final point before we get into more details is that KM should not be looked upon as a new mantra that can produce a magical impact on the functioning of an organization. Organizations need to take a practical hard-nosed perspective when it comes to managing knowledge. Like any other initiative, KM activities will build momentum, only if they generate business value. That in turn is possible only if KM helps the organization to cut costs by improving efficiency or to innovate and come up with new products/services.

Background Note

Development and sharing of knowledge started from the time God brought man to this world. For millions of years, human beings had limited ways of passing knowledge to the next generation. Apart from oral narratives, knowledge died with each dying person and each dying generation. Fortunately, the pace of change was so slow that it did not really matter. As Alvin Toffler mentions in his recent book, “Revolutionary Wealth”, a major breakthrough occurred about 35,000 years ago when someone drew the first pictograph on a cave wall to mark an important event. The next turning point in knowledge sharing came when man learnt to write, enabling future generations to access the knowledge of earlier generations. The invention of the printing press, which allowed copies of a document to be made and distributed cost-effectively, was another watershed event. And in the last 10 years, IT in general and the Internet in particular have given a new momentum to KM.

When we go through the history books , we notice that knowledge as a subject, including knowing and reasons for knowing, was documented by Western philosophers for millennia, and undoubtedly, long before that. Since ancient times, Eastern philosophers too have emphasized knowledge and understanding for conducting both spiritual and material life. The Hindu religion, for example, has laid great emphasis on gaining knowledge. Along with these efforts directed towards theoretical and abstract understanding of knowledge, practical needs for expertise and operational understanding have also been important since the battle for survival first started.

Managing practical knowledge was implicit and unsystematic at first. Later, it became more systematic. The craft-guilds and apprentice systems of the 13th century, were based on systematic and pragmatic KM considerations. So also was the way owners of family businesses passed on their commercial acumen to their children. Still, the practical concerns for knowledge and the theoretical and abstract perspectives were not integrated then.

There was little change in the need for putting knowledge to practical use until the industrial revolution changed the economic landscape in the 17th century. The introduction of factories and the need for systematic specialization, gave an impetus to knowledge. Still, KM was largely based on traditional approaches such as a master training an apprentice. Meanwhile, schools and universities mostly focused on providing education for the elite. Knowledge was approached from a largely theoretical perspective with little effort directed at leveraging it for making products and services needed by society.

All this has changed in recent times. Today KM is increasingly being looked at from a business perspective. Many organizations have put in place systems and processes for managing knowledge to cut costs or differentiate their products/services. At the same time, there is a growing belief that intellectual development plays a key role in motivating workers and making them more productive in the workplace. As Peter Senge has mentioned, people in general have a natural desire to learn. Thus KM can be seen as one more step in the evolution of the move towards personal and intellectual freedom that started with the age of enlightenment and reason a few centuries go.

In the years to come, KM will increasingly be an integral part of corporate strategy for the following reasons:

·         KM helps avoid unnecessary work duplication, expensive reinvention of the wheel and repetition of mistakes. In other words, KM improves productivity.
·         KM softens the blow when talented people leave the firms, by ensuring that most, if not all of their knowledge is captured in the company’s systems and processes.
·         KM improves the agility of the firm by helping it to understand and react to the environment better.
·         KM can compress delivery schedules and reduce cycle time, by reuse of components.

Understanding KM

What exactly do we mean by KM?  KM does not have the same meaning across organizations. Some companies focus on knowledge sharing among individuals or on building elaborate educational and learning capabilities. Others emphasize the use of technology to locate, capture, manipulate and distribute knowledge. A few others focus on knowledge utilization to improve the enterprise’s operational and overall effectiveness. Still others pursue building and exploiting Intellectual Capital (IC) to enhance the enterprise’s economic value and generate sustainable competitive advantage. (See Schools of Knowledge Management)

While there may be different approaches, in a broad sense, KM is the systematic and explicit management of knowledge-related activities, practices, programs, and policies within the enterprise. The goal of KM is to build and exploit knowledge assets effectively and gainfully. The key challenge in KM is to leverage the knowledge of individuals for the benefit of the organization. By systematically mapping, categorizing, and benchmarking organizational knowledge, KM makes knowledge more accessible throughout an organization. A systematic approach to managing knowledge also helps a company prioritize particular strategic areas of knowledge. This enables the company to strengthen its core capabilities and compete more effectively in the market place.

As Amrit Tiwana says [2], “KM enables the creation, distribution and exploitation of knowledge to create and retain greater value from core businesses competencies. KM addresses business problems particular to your business – whether it is creating and delivering innovative products or services, managing and enhancing relationships with customers, partners and suppliers or improving work processes. The primary goal of KM in a business context is to facilitate opportunistic application of fragmented knowledge through integration.”



* A term coined by Alvin Toffler
[2] In his book, “The Knowledge Management Toolkit: Orchestrating IT, Strategy, and Knowledge Platforms” Prentice Hall, 2002.