Monday 11 April 2016

Distributed Teams Challenges And Agile Advantages

Distributed Teams Challenges And Agile Advantages


Part 1 - Project management methods and Agile


With dynamically changing market scenarios dominating the outsourcing markets, it has become imperative to remain conversant with emergent technologies and use them for developing projects. New platforms and technologies have a lot to offer in terms of reduced development time and targeting a wider range of client-centric requirements, however, while reaping the benefits they offer, they also impose a few constraints regarding their applicability. Offshoring businesses can increase the productivity levels and generate higher profits but often face problems in finding technical teams familiar with the usage and implementation of new technologies. For most organisations, it is more profitable to find technical talent in other countries and outsource their projects depending upon the nature and scope of the project on hand. 

It is very important to manage projects in an effective manner to make them profitable. Several project management frameworks and methods aim to make project management easier and more effective. Some of the popular methods used in the past, and even now are:

  • Critical Path Method (CPM)
  • Critical Chain Project Management (CCPM)
  • PMI/PMBOK Method
  • Event Chain Methodology (ECM)
  • Extreme Project Management (XPM)
  • Adaptive Project Framework (APF)
  • Lean Development (LD)
  • Six Sigma/Lean Six Sigma
  • PRINCE2
  • Dynamic Systems Development Model (DSDM)
  • Feature Driven Development (FDD)
  • Rapid Application Development (RAD)
  • Systems Development Life Cycle (SDLC)
  • Waterfall (Traditional)



Each method proposes to make project management easy and more accurate. Often, it is difficult to choose which method one ought to adopt for developing a project since every management technique has its own pros and cons. While a particular organisation may offer a positive feedback regarding a method it is following, consultants might consider it a bad choice and speak against it. There are no postulates or rules which define a “successful” project. Also, there are no rules which can help in deciding whether a particular methodology is more effective as compared to the other. It is based more upon personal experience, understanding how a methodology works and what it has to offer, and how well it can be implemented. Perhaps, the most important aspect to understand is whatever methodology you choose, what is more important is how well you use it to your benefit to make your project successful.

Projects may vary in terms of their scope, size, complexity, and nature. However, regardless of that, offshore or distributed teams have to be properly coordinated and managed. Agile project management framework offers several options for managing remotely developed projects.

Agile frameworks
Scrum
Recommended for developing small to medium sized projects using a team of 7 to 12 cross-functional and multi-skilled individuals. The Scrum framework is characterized by its clearly defined events, artefacts, roles, and process which have to be followed by the entire team. The error correction and retrospection activities take precedence over documentation and delegation of authority. The client is actively involved in verifying the development carried out by the team. The Scrum team delivers the business value in the project through successful product increments developed through periodic cycles known as sprints.

Extreme Programming (XP)
Extreme Programming (XP) offers a practical approach to program development and focuses primarily upon the delivery of business results. It follows an incremental, start-with-something approach towards product development, and makes use of continued testing and revision processes. XP is generally recommended for short-term projects, and development teams typically follow code-test-analyse-design-integrate process. XP is known for “paired” programming i.e. two developers engaged with code development and testing simultaneously. One programmer creates the code while other tests it on the spot.

Kanban
Based upon the concept of Toyota production model, Kanban offers a pragmatic approach to development by matching the actual amount of work in progress to the development teams capacity in delivering it. The framework provides more flexibility in terms of planning options, quicker output, a clear focus pertaining what needs to be developed, and maintaining total transparency throughout the product development cycle.  

Scaled Agile Frameworks (SAFe)
Scaled Agile Framework (SAFe) is a structured and prescriptive method to help large organisations and enterprises to get started with adopting Agile. It is a popular and efficient Agile framework successfully used by many companies covering various industry verticals. It is specially recommended for large sized software based projects where teams can function interdependently.

Nexus
Nexus is an Agile framework focusing upon cross-team dependencies and team integration issues. It facilitates Agile implementation in complex and large scale projects. It functions as an exoskeleton and helps multiple Scrum teams to integrate and pursue a common goal of delivering valuable product increments through sprints. Each team delivers a certain business value to the client through each product increment cycle, and the teams achieve this by following Agile principles and process. Nexus is recommended for development teams consisting of over 100 individuals.


Part 2 – Agile for distributed teams


While executing your very first remote project, the most logical thing to do is to document the project vision and figure out how the team will deliver the project goals. Proper and effective communication is of paramount importance while explaining the goals and objectives to team members. It is a simple and straightforward process most of the times, but while working with distributed teams, the cultural differences and varying language proficiency levels may often create constraints and lead to miscommunication as well as confusion. This can be a common scenario in case of teams located in countries across different time zones and possess limited ability to communicate using a particular language. Individuals may find it difficult to understand and capture the exact project requirements and deliver code or functionality that does not fulfil end user requirements. Projects often fail because of these and other such technical and non-technical reasons.

Using Agile it may be possible to simplify these types of problems. Agile is not a silver bullet that can rectify all issues and problems faced during project execution. Agile is a framework, therefore It depends upon how well the team understands its principles and how effectively it implements them in the project. However, the framework is designed such that issues can be dealt with in a more proactive and effectual manner.

Part 3 – Dealing with issues using Agile


Businesses opt for remote or distributed teams mainly to segregate the development activity from the main organisation body by trans-locating the team and development activity to some other location for management or financial reasons. The team is directly employed by the organisation and each member is an employee. In case of offshoring, the entire project is outsourced to a development vendor who executes the project on behalf of the client, or develops it as a part of client contract. This discussion does not try to differentiate between whether the remote team is a part of parent organisation or it belongs to an outsourcing vendor. Some common issues faced while working with both types of teams are discussed and how those issues can be properly targeted using Agile. It is worthwhile to know that Agile is not the only project management platform to develop IT or software projects. Neither does it offer a guaranteed way of dealing with issues faced while working with or employing remote teams. However, the framework is uniquely designed, and is flexible enough, to deal with such issues in a more effective manner, and more easily.

Project vision and documentation
The project vision explains the goals and project deliverables. The primary aim of the team should be to deliver work supporting the vision so meaningful business value can be delivered to the client. Often, development teams put in efforts and deliver work, but when reviewed by the client, it is discovered that the features developed don’t exactly support what the client actually wants. This can be a very common scenario when teams are unclear about what the project aims to achieve and why it exists in the first place. Common reason why teams may fail to understand the vision could be language barriers (In case of distributed teams located in different countries and speaking different languages) or a lack of proper communication from the client’s or management’s side explaining the objectives.

Agile does not emphasize upon extensive documentation. In real life scenarios elaborate or extensive documentation often remains locked away in filing cabinets or resides on shelves for future references - teams rarely bother to read them thoroughly since they can be large in size and a lot of time is spent in reading and understanding them. The attitude of most development teams (Don’t mean to disrespect them in any way) is to get started with work so deadlines can be met. Teams are generally pressed for time so they don’t bother, or can’t afford to spend hours reading comprehensive documentation. Paperwork is greatly reduced in Agile, and if you choose to follow Agile, you need to create just enough documentation to get started with work. More importance is given to understanding client-centric requirements and delivering business value, rather than creating elaborate reports and documents. Moreover, one of the responsibilities of the product owner in Agile is to ensure that the team understands the deliverables and project vision properly before it starts to work. The PO also makes sure that the business value delivered from the sprints is useful and matches the project vision.

Maintaining quality standards
Quality and deadlines are two most important factors associated with, and affecting, the success levels of a project. Quality features fulfilling end user requirements have to be developed within the decided time so it can be properly marketed and business returns availed from it. In the IT market segment it is not just important to build quality software, but to release it in the correct manner at the correct time and at the correct place (targeted market audience i.e. the geographical boundaries within which end users are likely to buy your product. With online marketing these boundaries remain virtual but nevertheless play an important part in deciding the “target audience” when the project is planned and incepted). When outsourcing work to remote teams, the quality aspects could get compromised upon if a QA or testing process in set up as a part of development process. Fewer development teams actually bother to test the code for regression after it is developed unless it is a pre-decided activity and integrated with the development process.

The Agile manifesto states "Our highest priority is to satisfy the customer through early and continuous delivery of valuable software." It emphasis upon “early and continuous delivery of valuable software” i.e. useful and valuable product features should be developed and delivered to the client on regular basis. Agile focuses upon the delivery of “shippable” features. Each feature should be properly tested for errors and made bug free before its development can be considered as complete and deployable. Developers and programmers often double as testers to carry out the QA part during sprint cycles. Agile fails if “workable” features are not developed. Remote teams trained in Agile have to fulfil the test conditions stated in the acceptance criteria defined for each development task created in the product backlog (ideally).

The supervisor or project manager’s role
Every project needs a manager to oversee its execution and completion. It is important for the supervisor or the project manager to remain available to the team and resolve problems and issues as and when they occur. When teams are located on-premises it becomes easy to resolve technical problems since face-to-face interactions are possible and the manager is always available when you need him or her. That is not always the case with remote or distributed teams. Owing to time differences, the manager could be ending the day while the remote team would be just about to start with work. Teams may be required to wait for some time before problems are resolved, and this could delay work further. Deadlines and commitments may therefore not be met.  

The Scrum Master’s role is very clearly defined in Agile framework. The SM often plays a servant-leader role, and mentors and facilitates the Agile process. The SM ensures that he or she is always available to the team and resolves glitches whenever the team gets stuck. In Agile, the Scrum Master is a specific role played by a person, rather than a designation or responsibilities given to a single individual. The role can be played by anyone in the team. In case of distributed teams, a responsible team member can be taught to play the Proxy Scrum Master’s role and provided with quick-access channels to communicate with the actual SM or PO in case of urgent issues. The person also functions as a team representative and creates daily feedback reports which can be studied by the client, PO, and the SM as per their convenience.

Ownership and team empowerment
Traditional project management methods differentiate between senior and junior level individuals, and have a clear hierarchical structure defining authority levels and who reports to whom. Even today, most organisations still follow this traditional hierarchical model, and individuals belonging to different levels of authority remain concerned about their responsibilities and reporting status. Even though the model is organised, it takes a lot of time for issues to get resolved as the escalation process involves several individuals starting from the junior level to senior levels. Moreover, people have a tendency to “pass on” issues to senior levels personnel and let them decide what to do next. Technical staff and junior level employees may prefer not to get involved with decision making since they often become scapegoats to bureaucratic procedures. In case of distributed teams the scenario can become even worse because you don’t have to deal with just bureaucratic attitudes but the language and distance factor may further make the team even less accountable for the success or failure of the project.

Agile does not believe in shifting responsibilities or escalating issues. As per the model, teams are cross-functional and self-managing. Each team member often takes up additional tasks other than his or her particular skillset thereby reducing the total numbers of skilled members required in the team. There are no senior-subordinate levels – just three primary roles of product owner, scrum master, and the development team. Rather than assigning tasks, each team member voluntarily takes up work based upon his or experience and skills. One of the most important aspect about Agile is that the team has to “own” the project on behalf of the client. It means each person is responsible not just for the work done by him or her, but the overall contribution of all members at the team level is even more important. The entire team is accountable for the success or failure of the project – not just the product owner but each and every member of the team.

Moreover, the three roles of PO, SM, and the team are empowered in Agile to decide on their own what course of action to take to best fulfil their objectives. The development team is not required to follow orders or take permissions in deciding how a particular feature should be developed, and in what manner. It has to deliver work as decided in an event – the sprint planning meeting – held before each product incremental cycle known as a sprint starts.

Friday 18 March 2016

Can Agile Reduce Complexity?

Every project has a certain level of complexity in it. When we say a project is simple, we actually mean that its degree of complexity is very less or can be considered as negligible, but nevertheless, it does exist even if in a minute magnitude. Project management methods deal with project complexities depending upon how flexible they are, and what kind of provisions they offer to deal with them. Tradition management methods such as Waterfall are often rigid owing to their “staged” working processes, which are also often irreversible. Using pre 1990 era methods, one can try to address the complexity in a project to a lesser or greater degree of success, but typically such management methods do not make it possible to reduce or minify the actual level of difficult in executing the project and neither its complexity. This is not necessarily true in case of Agile. With Agile you can actually try to control the level of complexity in a project provided you have the correct level of experience in implementing Agile principles and techniques.

Agile Project Management

What is "Complexity" in a project?

Broadly speaking the term "complexity" can be best understood as difficult or complicated conditions arising due to the availability of multiple options, or options which make you simultaneously focus upon different directions at a given time, and which result in a multi dimensional scenario that is hard to understand and resolve. Complexities can be of different types in a project. Business level complexities arise due to uncertain market conditions, technological advancements, and other such factors which affect the business logic contained in the project. The project level complexities can be of two types – project complexity and requirements complexity.

Project complexity

Project related complexity can be different of different types of organizations. Several factors contribute to it, however, the most important ones are uniqueness, limiting factors, and uncertainty.

  • Uniqueness
Every project is unique and has its own attributes and requirements. As the project commences it gains maturity over time and benefits through the learning process. This is most significant when the organization is running a project which is the first of its kind, or if it has no prior experience dealing with projects.

  • Limiting factors
Projects are subjected to certain factors which can affect its execution or commencement such as budget constraints, the technical knowhow of the team, working schedule, and at times even cultural differences.

  • Uncertainty
Uncertainty in a project can be due to external or internal factors. External factors may include government imposed rules and regulations, uncertain market changes, and fluctuating economic climate. Internal factors may comprise of the levels of management’s participation in the project, constantly changing company policies, stakeholders’ involvement in the project, etc. All these factors affect the scope of the project.

It is a known fact that a project’s complexity affects its success. The manner in which a business anticipates, fully understands, and addresses the complexity determines whether a project is going to be successful or not.

Can Agile reduce complexity?

In traditional project management methods, the complexity in a project is often managed by investing a certain amount of time in the “analysis phase” with the sole objective of analyzing the levels of complexity and ... Read more

Thursday 7 January 2016

Types Of Agile Coaches And What Do They Do?

Agile Coach

People may or may not have heard about the word “Scrum”, but for those who have, a question most commonly asked by them might be “What can Scrum do for me to improve my business?” or “How do I use Scrum to grow?” – A topic most discussed by CEOs, CTOs, project managers, and other senior level executives in a development company or organisation when they are faced with choices of adopting a framework to better their work processes and increase the investment returns for their organisation. It is important to understand that for a business new to Agile and Scrum a lot depends upon what type of Agile or Scrum coach it hires, and how successfully the coach can help the organisation to adopt Agile principles.



Agile can work wonders for you provided it is implemented in an effective way. Agile coaches ensure that business implement the framework in a proper manner. Therefore, a lot depends upon what type of Agile coach do you actually need? You may feel unsure about Agile adoption but serious enough to “give it a try” and see if it can benefit you. On the other hand, you may be aware about the benefits of using Agile but not certain how to start. It’s worth considering about the level of Agile coaching you actually need to get started.


What is an Agile coach?



What is an Agile coach? When the question is asked to different people you’re sure to get different types of answers depending upon whom you’ve asked. The perception of Agile coaching changes from individual to individual, and from company to company. Perhaps the main reason why this happens is because there are no standard definitions explaining Agile coaching, and people have the liberty to interpret the terminology in a manner they deem correct.

So, rather than trying to define exactly what an “Agile coach” is, it would be more worthwhile to comprehend what activities Agile coaching includes, and what does an Agile coach do when he/she is appointed by an organisation to facilitate or implement Scrum in their business processes. Coaching needs and activities vary from businesses to businesses based upon the type of product to be developed. However, in a typical organisation, there are three main areas where managements often decide Agile coaching is needed.

Agile Team Facilitator

An Agile facilitator may or may not possess a coaching certification from a reputed or known Scrum body. His/her primary role involves facilitating Scrum activities and mentoring Agile teams in achieving Scrum agility. The person usually engages with one or two Scrum teams – not more – and may lack experience or skill sets required for adopting and implementing Scrum to the fullest extent in the entire organisation.

Small organisations, or businesses having a limited Scrum budget but still interested in implementing Scrum may opt for Agile team facilitators to introduce Scrum in their organisations before deciding upon a concrete Scrum adoption plan. Usually, the objective of hiring an Agile team facilitator is to familiarise managements and development teams with the Scrum process and get an idea about how to go ahead with Scrum adoption, or, at times, to decide whether Scrum adoption is needed or not.

Agile Coach

An Agile coach can have one or more certifications from a well-known Scrum certification body. Unlike getting certified as a chartered account or a medical practitioner in a particular state or country, there are no formal or authorized “government recognized Scrum certification issuing authorities. Certification availed from a few Scrum entities like Scrum.Org, Scrum Alliance, Agile Coaching Institute, etc. carry value in the Scrum market, and employers generally search for coaches who have qualified or hold certifications from these type of institutes.

Agile coaches have a sound and relevant experience in at least one Agile discipline – Scrum, XP, or Kanban. They are certified Agile professionals who have achieved a high level of proficiency in their respective fields. They possess sufficient domain knowledge and coaching skills to facilitate and mentor the Scrum process in an organisation. An Agile coach trains the development team and the management in Agile principles and practices.  He/she contributes at both macro and micro levels, and in addition resolves all Scrum related issues. Often, Agile coaches promote and act as Scrum ambassadors in organisations which appoint them.

Businesses appoint Agile and Scrum coaches when they decide to go “all the way” with Scrum, and want to make sure they benefit from Scrum principles. Coaches are also consulted to discuss ways and means to develop better products, increase the ROI, and improve the current business processes.

Enterprise Agile Coach

An Enterprise Agile coach is a person who has achieved some additional skills such as advanced systems coaching, understanding work culture, training organisations in specialized business processes, implementing change management, and creating collaboration and leadership qualities amongst individuals which “regular” Agile coaches may not possess.

An Enterprise Agile coach may work at all levels in an organisation and help managements in using Agile as a strategic asset for generating consistent and reliable business value by improving current processes through Agile.

Tuesday 28 October 2014

Salient Features Of Scrum

Agile - The base of Scrum

Agile, and the path to Agility is now becoming a much sought after norm for many businesses across the world. There is a huge demand for understanding, and implementing, Agile based frameworks. Perhaps one of the main reasons why Agile is becoming increasingly popular is because consumer demands are changing radically and people now desire more. And, people are not ready to wait. They want products which offer good value for money, and that too with enhanced features. This has created a need to develop products which are:
  • Competitive
  • Feature rich
  • Quickly available
  • Fulfil specific end user requirements
Agile proposes to satisfy these requirements without adding on to the product costs.
The basic issue with all Agile frameworks is that they are – frameworks. They offer guidelines how the Agile process can and should be implemented in a project. For that, it becomes imperative to understand what a framework is, and how it differs from a methodology. Many individuals still feel Agile is a methodology and they could not be more wrong.

Agile methodology misconception

There is still a misconception regarding Agile – some people still tend to refer to Agile as a methodology. This is not true. A methodology offers a set of rules, principles, tools, or practices that can be used to conduct processes and achieve certain goals. A framework, on the other hand, is a loose structure that leaves enough room for other tools and practices to be included, and only provides the process required. In simple terms, a methodology is like a doctor’s prescription – you have to “take” it as per instructions provided, while a framework is like trying out home remedies – you know what can be done to achieve a particular objective, but it is up to you how to implement the remedy, and when to implement it. An Agile framework has to be implemented in a project to be successful, and there are no specific rules about how to do it. You have to follow certain guidelines and configure your project to function as per the rules specified in the framework. This is very much the case with Agile. Agile is a framework.

Agile Scrum salient features

Of all Agile frameworks, Scrum and Extreme Programming “XP” are the most popular. Even though Scrum framework is more generally used for developing software projects, it can also be used for developing non-IT projects. Scrum constitutes a collection of ideas and rules pertaining to effective project management. The framework supports collaboration and self-organisation. The team members work jointly and develop the project. They collaborate and share their ideas and findings. Scrum teams self-manage their activities. The most important aspect of Scrum is that all activities are time boxed. The client receives working versions of the product features on a continued basis through product incremental cycles – sprints – at regular intervals ranging from a week up to a maximum of one month. Cycles keep on repeating until all product features are developed and the product is ready.  

A unique aspect about Scrum is that the framework has a capability of adapting itself to changing market conditions, and incorporates those changes in the product development cycle even late during the development process. The Scrum process focuses upon responding quickly and efficiently to changing environments and assimilating those changes in the product design. The client benefits though the development of a product that is in tune with the most recent market demands. Moreover, participation from the end users and incorporating their suggestions while developing the product features further ensures that the product developed is most likely to assume a high business value or worth.  
  • Scrum - an agile process – focuses upon delivering high business values to the client in the shortest time possible.
  • It supports rapid and repeated inspection of the actual working software.
  • The product is developed in stages through the product incremental cycles known as sprints.
  • The client benefits from shippable product releases at the end of incremental cycle.
  • Frequent and consistent product increments should be delivered to the client.
  • The client, and the business, sets the priority.
  • The working process responds quickly and efficiently to the changes occurring in the market conditions, and in incorporating those changes into the product features in the least time possible.
  • Scrum teams self-organise and self-manage to determine the most efficient and quick way of delivering high priority features.

Scrum principles

Scrum functions as per certain rules or principles which are very important for its efficient working:
Individuals and interactions over Process and tools
Working software over Comprehensive documentation
Customer collaboration over Contract negotiation
Responding to change over Following a plan

Tuesday 21 October 2014

Breaking Down The Agile Manifesto And Understanding It

The popularity of Agile frameworks, especially XP and Scrum, is increasing by the day, and more and more organisations are deciding in favour of using these frameworks to execute their projects. Agile proposes many advantages – frequent and reliable product increments, delivering product features having high business values, and above all – delivery of shippable product features even while the development process is underway. However, a major issue with Agile, and all Agile based frameworks is that the framework has to be properly understood and later implemented in the project. Moreover, the implementation should be carried out keeping Agile principles in mind. More than often, businesses fail to benefit from Agile simply because the management has not understood the basic principles behind the framework, or has failed to implement those principles in a proper manner.

The Agile manifesto

Since it was developed in 2001, thousands of individuals including project managers, software professionals, and C level executives have endorsed the Agile manifesto. Hundreds of books and references have been written to discuss what the guide has to say, and how it should be interpreted. The manifesto has drastically changed the way in which organisations and individuals develop software projects. The manifesto packs a lot of punch for its 68 words which have been written by 17 software professionals over a two days meet at a ski resort.

The principles of Agile are stated in the official guide written by Ken Schwaber and Jeff Sutherland. The guide functions as a bible for all Agile groups and Agile professionals. People refer to the guide when in doubt, or when they wish to clarify a particular point during Agile framework implementation. For individuals interested in Agile, it is very important to understand the guide and interpret what it has to say.


We are uncovering better ways of developing software by doing it and helping others do it.
Through this work we have come to value:
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the left more.
 
We
To start with, the manifesto states “We” i.e. it emphasis that Agile is not a solo endeavour. It involves group activity and people have to collaborate while working, at every level, and at every instant. Development teams, project teams, and organisation have to work jointly as a composite unit, and rely upon each other for completing work.
 
are uncovering 
Here, the guide suggests that Agile does not offer one-size-fits-all type of solutions. Agile cannot be standardised and implemented in a project. People involved with Agile processes have to put in efforts, and strive to seek answers through discussions and collaborations. Answers have to be discovered through experimentation, and the “adapt” and “inspect” principles which are... Read more

Friday 10 October 2014

Scrum Product Owner Role And Sprint Planning Meeting Agenda

In many ways, in a Scrum project, the sprint planning meeting agenda plays a very significant part in determining the success of delivering shippable product increments through the sprint iterative cycles. The product owner is very closely involved in the sprint planning agenda, and is responsible for the outcome of the sprint cycle, since he or she is primarily responsible for taking the initiative and “designing” the sprint – the PO decides which user stories should be ideally taken up for development purposes based upon their business values. Moreover, the product backlog needs to be refined on a regular basis. The PO may invite and seek the help of Agile team members to keep the backlog refined so “granular” and developable user stories are available at the time of Scrum planning meeting.
The main issue with Agile Scrum today is that the role of a PO cannot be “standardised” based upon assumptions as to how Scrum ought to be implemented in a project, and what the PO should ideally do to make the project a distinct success. In addition, while considering Scrum sprint planning, the same thoughts might be applicable to it as those associated with the PO’s – it is difficult to create generalised rules regarding how a sprint should be ideally designed. The primary reason is products and requirements change as per fluctuating market conditions, and stakeholders too are liable to change their thoughts as and when end user demand user-specific requirements and development. However, after considering the fact that scaled Scrum versions are likely to “dominate” the Agile scenario over the coming years, it is worthwhile thinking that “some” of the duties of a PO and certain sprint planning “characteristics” are likely to remain common – irrespective of which scaled version is used, and the manner in which Scrum should be, or can be, implemented in a project. In addition, while the sprint planning meeting was traditionally conducted in two parts, the Scrum event has now evolved to be conducted as a whole – as a single event – and include two topics in it, rather than two parts:
  • What can be done in this (currently being planned) sprint – the “What” aspect
  • How should the chosen “work” be ideally “done” – the “How” aspect
It is interesting to think about how the product owner’s role is likely to modify itself in the future, and what features the sprint planning event is likely to include. The suggestions are open for debate, and the reader is invited to present his or her viewpoints.

Scrum product owner role and responsibilities likely to remain “common”

  • Creation of the product backlog based upon the vision as seen by the stakeholders. Defining user stories having high business values so the project “worth” is maintained at all times.
  • Monitoring all Scrum related activities in project. Even if the PO’s role may be demanding and “difficult to play”, the PO still has to deal with changing market conditions, stakeholders requests, and negotiate with the development team with regards delivering shippable stories and maintaining team velocity... Read more at Scrum Product Owner Role And Sprint Planning Meeting Agenda



Tuesday 7 October 2014

Scrum Product Owner’s Role

Agile professionals have often discussed what the exact role of a product owner should be in Scrum. What virtues should a product owner possess to be considered a “good” PO? The answers are many. And this is not surprising because Scrum is a framework, and its implementation in a project depends upon the requirements specific to the project. When requirements change, the role of the PO also changes. Therefore, it may not be possible to standardise the exact role a PO should play in a Scrum project.

A certain process flow remains common to almost all Scrum projects. The role of a product owner can be thought about in terms of what POs actually do in a typical Scrum project. Here are a few suggestions:


 Scrum Tool
Common role or activities of a Scrum product owner

· Creating the product backlog as per the product vision seen by the stakeholders. Defining user stories having high business values in the backlog so the project “value” is constantly maintained.
· Monitoring and tracking all Scrum activities. The role of a product owner may be difficult to act since a project might be demanding, and the product owner may have to cater to market related issues and still monitor the work carried out by the team. Balancing both the aspects can prove to be trying.
· Make sure that the product backlog is kept refined at all times. Moreover, the product backlog should be accessible by the entire team.
· Each product backlog item “PBI” should be properly stated and defined in the product backlog. The story description, appropriate business value, and the acceptance criteria should be stated precisely in the story card and explained to the entire team so the team members can develop effective stories and develop shippable product features.
· To be available whenever needed, to remain present, and share information, knowledge, as well as expertise with other team members.
· The PO responsibility should also include defining productive sprint goals just before a sprint commences.
· A product owner’s responsibility should also include... Read more at Scrum Product Owner's Role

Wednesday 1 October 2014

What is Role of Scrum Product Owner?

Several discussions have been carried out by Agile professionals regarding the Scrum product owner role. What virtues make a product owner an “ideal” one? How should a PO delegate authority? Should it be as per traditional management models, or should a servant-leader role be employed? How should the person handle stakeholders when there are issues? There are many questions. The debate can keep on extending indefinitely since newer “scaled” versions of Scrum keep on coming, and the PO has to change his or her role based upon the traditional, or scaled, version of Scrum the management decides to follow.

It would be more practical to concentrate upon some of the most important, and the most common, activities of a PO.

Scrum Product Owner Role

Read more at 

Scrum Product Owner Role

What is Sprint planning meeting agenda?


In a Scrum project, the Sprint planning meeting agenda is one of the most important activities undertaken by the team. The product owner plays an important part in the agenda. In Scrum, out of the many important duties carried out by a PO, a very important one is to create the product backlog based upon the vision of the stakeholders, and subsequently maintain or “groom” it with the help of team members (preferably). However, once the backlog is created and all required product backlog items are properly defined in it, it becomes necessary to “prepare” for the next step in the Agile product development cycle – plan and develop effective sprints so shippable user stories are delivered at the end of sprint cycles. Offering consistent development over successive sprint iterations is an inherent feature of Agile Scrum. In a sprint planning agenda, the objective of a sprint meeting is to prepare productive sprints so the team can develop meaningful stories.

So, what does a sprint planning meeting actually consist of? In practice, the meeting is conducted in two parts – the first part is dominated by the product owner while in the second part the development team actually prepares tasks from user stories taken up for development in the sprint backlog.

1st part of sprint planning

The product owner is the most “conversant” person as far as user stories are concerned since he or she actually “creates” the product backlog. The stories need to be explained to the team members. During the first part of the Scrum sprint planning meeting, the PO selects some of the most important product backlog items from the top of the backlog, and creates a “sprint backlog” by transferring the selected stories into it. So, the sprint backlog is a subset of the main backlog, and contains a “chunk” of stories which carry high business values. The PO explains how the development of a particular story should be carried out by the development team. The acceptance criteria is explained and the team is briefed regarding what it should do to ensure their “development” is shippable i.e. the stories are bug free and satisfy the benchmarks or acceptance criteria linked with each story. The PO also answers any doubts or queries put up by the team.

Sprint Planning Meeting Agenda

The first part is attended by the entire team – the product owner, scrum master, and the development team members. It is not necessary for the stakeholders and project owners to attend the meeting, but if they desire to do so, they can attend the meeting as “passive” invitees, and not disturb the proceedings with their suggestions or even try to get “involved” in the meeting.

2nd part of sprint planning

User stories form the base of all development activity in Scrum. The entire product is developed by creating shippable stories, which are later integrated to “form” the complete product. During the second part of the Scrum planning meeting, the team starts discussing how it will carry out the actual development activity and create the stories in the sprint backlog. Generally, a Scrum team is “multi-talented” i.e. each team member possesses more than one type of expertise. However, it is important to know that this may not always be the case in all Scrum projects, since the product requirements and resources may vary depending upon the nature of product to be developed.

The team members – developers, programmers, designers, QA personnel, and technical writers – decide amongst themselves how the user stories should be split up into parts that are more “manageable”. Each such “part” is referred to as a “task” in Scrum. Tasks are developed to create shippable user stories. A developer can develop each task individually. Certain Scrum teams may even work in “pairs”. Members collaborate, and decide amongst themselves as to who should take up which task depending upon the experience and levels of expertise possessed by them. Once the tasks are “distributed” the actual sprint can begin.Read more at

Sprint planning meeting agenda

Why Agile Can Be A Popular Software Development Framework?

Software products penetrate almost every aspect of human existence today. They manifest themselves in a multitude of manner, and remain omnipresent in a host of devices ranging from washing machines and smartphones to automobiles and computers. Owing to a consistent usage of different types of digital devices by people across the world, software applications and utilities have to evolve as and when consumer requirements change and “strive” to fulfil the new set of requirements demanded by end users. It is, therefore, essential to develop newer versions of existing software products more frequently, in the shortest time possible, and in a manner such that end users do not face any problems while using the products in the upcoming months. Stiff market competitions and an ever-increasing consumer “appetite” for feature-rich products have created a special need to implement a reliable and sustainable product development methodology, or a framework, which can aid in developing sophisticated software products in a relatively short time. Moreover, the methodology should also help in reducing the developmental overheads so investment returns can be increased. As on today, a reliable project development methodology is very much required to fulfil the business goals on a consistent basis, and earn large profits from the products manufactured by IT companies.

Over the decades, IT stalwarts have introduced many software development frameworks and project management methodologies. While many of these methodologies have proved to be useless and non-productive, a large number of them have been, in fact, successful in delivering the desired results – with varying levels of acceptance. With the passage of time, two software development frameworks have managed to dominate the field of software development. The frameworks are:

1. Waterfall
It is a traditional software development framework typically featuring “staged” development processes which have to be “carried out” one after the other. A unique aspect about this framework is that product development starts from the “topmost” stage and “flows” towards the “bottommost” stage. Once started, the product development cycle cannot reverse itself – it is unidirectional in nature. The framework is widely used, and is very popular amongst software development companies, primarily because the framework has “been around” for a long time and used by a large number of software developers and IT firms. It is easy to understand and use. Therefore, it is also used for teaching the software development process to engineering students. Even though it is a much sought after development framework, a large number of individuals and companies traditionally using Waterfall methods for developing their software products are now finding it increasingly difficult to meet the changing global software trends, and developing state-of-the-art applications and utilities, which are so much in vogue today.


2. Agile
A comparatively new “entrant” Agile has managed to find a special niche for itself in the IT development field over the years. The Agile framework was originally envisioned, and developed, to overcome the defects of traditional software project management methodologies and frameworks, which had failed to evolve “in the desired direction”, could not adapt themselves to the changing market trends, and offer reduced turnaround times. There are many reasons why “lightweight” Agile frameworks have become popular development platforms:

They support product development through “short bursts” of programming/development activity, generally lasting from two weeks up to one month. It is much easier to develop, test, and document smaller “pieces” of code, features, and functionality rather than entire projects. Individually developed features are later integrated to form the “complete” product. The frameworks primarily focus upon rapid delivery of “shippable” products and business value.
The client is actively involved with the team and the development process. Each feature is checked and “cleared” by the stakeholders before it is accepted as “Done”. This leads to increased customer satisfaction and enhanced user experience.
Potential pitfalls are identified well in advance, at a micro level, so it is much easier to control regression and reduce technical debt. Agile software projects generally help to earn good profit margins.
Agile frameworks support error detection and error correction processes. Technical errors are discovered early during the product development process, and dealt with effectively.
The frameworks provides an opportunity to carry out “retrospective” thinking, reflect in terms of where the project is heading, and what “more” could be done to improve the product development process.

Agile and the scope of software development
Individuals associated with the software industry generally prefer using the term “software development” Read more at Why Agile Can Be A Popular Software Development Framework?

Tuesday 30 September 2014

Which Software Development Activities famous In The IT Field?

Individuals who are associated with the IT industry and computers generally use the term “software development” to describe the particular kind of work, or activity, they are currently doing or involved with. The terminology is very loosely used by most people, and can include almost any type of computer programming activity - including testing, debugging, document creation, deployment, developing and maintaining application frameworks, and even customising operating systems as well as platforms. There is a trend to mention one’s profession, or one’s mode of professional engagement as “software development” while the person may be working as an application developer, a Java or VBScript web developer, an Android or iOS mobile apps creator, or even developing scripts for WordPress based themes.

The fact is, the words “software development”are extensively used to refer to almost any type of IT related work, or activity, and generally denotes a development of “computerizable” code, in any way or manner, and of any “kind”. The following list provides a rough idea regarding the scope of development related activities in the IT field.

The list is periodically updated and keeps on evolving to include the new scope of software development.

Current list updated on 29th July, 2014.

Languages and scripts
Scripts and scripting languages:

HTML / HTML5 / DHTML / XHTML
Active Server Pages - ASP
VBScript
JScript and JavaScript
Personal Home Page - PHP
ColdFusion ( ColdFusion Markup Language - CFML)
Ajax
Ruby (Ruby on Rails)
Python
AppleScript
TypeScript
Job Control Language - JCL
Unix Shell scripts - ksh, csh, bash, sh, and others

Assembly languages:

Autocoder (used for programming mainframe systems such as IBM 1401 and 1440)
BAL (Basic AssembLer used for coding IBM System/360 and other mainframe systems)
FAP (Fortran Assembly Program for encoding IBM mainframes 709, 7090, and 7094)
GAS (acronym for GNU Assembler)
HLA (acronym for High Level Assembly)
MASM (acronym for Microsoft Macro Assembler)
MI (acronym for Machine Interface)
Motorola 68k Assembly (used for encoding Motorola 68000 family CPUs)
NASM (acronym for Netwide Assembler)
PASM
TASM (Turbo Assembler developed by Borland)

Authoring languages:

PILOT
Command line interface languages:

4DOS (extended command line shell for IBM PC family)
csh and tcsh (C-like shell developed by Bill Joy while at UC Berkeley)
CLIST
DCL DIGITAL Command Language (for DEC, Compaq, HP)
DOS batch language (standard batch language for IBM PCs and clones running under MS-DOS, PC DOS, and DR-DOS before Windows)
EXEC 2
JCL (punch card oriented batch language used in IBM Systems and 360 family mainframes)
REXX
TACL (acronym for Tandem Advanced Command Language)
Windows batch language (as understood by COMMAND.COM and used by accessing the Command Prompt)
Windows PowerShell

Compiled languages:

Ada
ALGOL
BASIC
C
C++
CLIPPER 5.3
C#
COBOL
Cobra
Common Lisp
Delphi
Fortran
Pascal
Visual Basic
Visual FoxPro
Visual Prolog

Educational languages:

Alice
Logo

Mobile operating systems and applications development

Android
Symbian
Apple iOS
Blackberry OS
Windows OS
Palm OS

Portals and websites
Web portals
Early types of portals, which originated, and are still being developed, ever since the World Wide Web or the internet started becoming popular amongst the masses. These portals and websites exhibit assimilated content, and typically display links supporting searching facilities.

E-commerce portals
E-commerce portals, also known as e-business portals help to share information with customers, partners, and suppliers. They generally support an online payment gateway or an “online transactions” processing component. The portals provide information, and in addition describe products and services. E-commerce portals try to increase customer-relationships and lower the product/service costs.

Self-service portals
These portals target employees, suppliers, and/or customers, and allow access to information which can aid the users in carrying out specific processes and activities.

Business intelligence portals
Also known as decision portals, business intelligence portals aid online users in making important decisions. Besides allowing users to submit query and avail reports across multiple data storages, business intelligence portals have many built-in facilities and tools that can help to generate targeted reports.

Collaboration portals
These types of portals provide information pertaining to geographically dispersed workforces, and help to interact with people and projects sharing a common cause or belief. Typically, collaboration portals provide generic tools supporting chat and white boards, in addition to threaded discussions and streams which help to share maps and documents.

Enterprise information portal
Generally of complex nature, enterprise information portals are highly tailored, and offer a unique experience to the visitors. Various legacy systems offer functionality to carry out predefined business related processes.

e-learning portals
Supporting online education, e-Learning portals aim to help and guide students by offering an organised and structured learning experience. These portals also offer testing facilities to evaluate your learning, and provide appropriate feedback to the students.

Communication portals
Communication portals, as the name rightly suggests, fundamentally support communications and messaging facilities through emails, voice messages, mobile linkups, web feeds, etc. in a manner that allows access from across multiple interfaces and locations. The users can configure how to use the facilities.

Social networking portals
These types of portals can be individual or groups based, and primarily aim to improve and enhance social communications between like-minded individuals, or those who share a common idea or belief. Typically, members subscribe and log into the portal and subsequently start sharing their ideas and thoughts with other member groups and individuals.
source:-

software Development Activities In The IT Field

How Can Agile Scrum Reduce Regression During Software Development?

For IT development companies, and organisations developing computer and digital-devices (smartphones, tablets, digital diaries, etc.) software projects, one of the most important, and also the most troublesome issue is encountering “bugs” or defects in the code functionality when a particular application, or a system, is deployed and used in a live environment. Software bugs can be very common. Ever since computers were designed in the yearly years, bugs have inadvertently, or otherwise, kept on troubling coders and project managers, and have tested their ingenuity to resolve them to the fullest extent possible. Ask any seasoned programmer - He or she will tend to initially confer, and eventually say that the word “Bug” is aptly named – It tends to “bug” you!

Etymology of the word “Bug”
It is interesting to know how the terminology “bug” was first coined, and used to describe a state of functioning in which an error, or a flaw in coding can lead to flawed results, or “outputs” in IT jargon. There are several stories as to how the terminology came into existence. A theory most subscribed to involves the pioneer programmer, Grace Hopper, who was a young Naval Reserve officer working on a Mark II computer at Harvard University. In 1944, she related an incident in which the computer had malfunctioned – an actual moth had, in fact, “managed” somehow to get itself embedded between two electrical relays, causing the computer to halt in its functioning. She explained that the cause of malfunction was a “bug,” which was later removed by a technician. The famous bug was exhibited by the Navy for many years, and is now owned by the Smithsonian Institute.

Bugs and software regression
In a broad sense, a software bug can be understood as an error, failure, flaw, or even a fault in the code designed to develop an application or a computer based system. Bugs typically create unexpected and incorrect results or outputs, which cause the functionality of the particular application to stop, or function in a manner other than so desired. Bugs generally arise owing to reasons such as:

Mistakes carried out while encoding a program
Designing improper code structure or logic
Utilising the functionality of the code in a manner other than that recommended
Technical errors in the code compilers and/or interpreting resources and agents
Of course, the above are not the only causes which give rise to bugs, however, they constitute the major reasons why bugs tend to occur in majority of the cases. When the numbers of bugs increase significantly, the overall functionality of the application may be compromised upon to a considerable level, rendering it useless and non-productive. This can cause severe financial loses, and even force businesses to face litigations from troubled end-users and consumers.

Broadly, the word “regression” means to return to a former, or a lesser developed state. So, how can regression be understood in terms of “software regression” pertaining to software development? In practice, developers write down, or generate code, to develop a particular functionality as requested by the end-user or the client. During the coding stage, the developer not only develops the code, but also checks it and ensures that it is working properly. This is a standard practice followed by most experienced programmers and developers. However, at times, the testing process may not be carried out properly, or the code functionality might work properly in most cases, but fail to work under certain circumstances and situations. A second scenario is the code may be developed and properly tested at the time of creation, and the application deployed in a successful manner. However, a newer version of the deployed functionality may be subsequently re-developed to include even more features and functionality, to replace the prior one. The reason could be a need experienced by end-users to use the functionality for a more specific purpose. The newer version may cause some of the older functionality to stop working. This, in a rough sense, can be understood as software regression.

For example, you could encode a program to display “Hello World” on the monitor. It might work perfectly, and display the message each and every time it is executed. Later on, the same code may be re-developed to accept the user’s name, and display it in lieu of “World.” The objective of the new code might be to display “Hello John” rather than “Hello World.” However, once the newer code is developed and deployed, it actually ends up displaying the user’s name only - “John” - instead of the actual greeting “Hello John.” In this case, some of the older functionality associated with displaying “Hello” in the greeting is curtailed due to some coding reason and “missed out” by the newer code. This is software regression.

Knowing a “bit” about what is Agile Scrum framework
Agile is a framework. It offers guidelines as to how software based projects can be effectively developed through consistent and sustained delivery of software functionality through short bursts of development activities known as “sprints.” Agile is based upon certain principles which suggest how the framework ought to be ideally understood and interpreted by people, and how the framework should function in an ideal working environment. One of the Agile principles state “Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.” To support this principle, Agile framework supports an iterative (repetitive) product incremental cycle (a process through which smaller components or parts of the actual product are individually developed, and later integrated to form the complete product). At the end of one product increment cycle (sprint), Agile events known as the “Sprint Review” and “Sprint Retrospective” are held to ascertain the reliability of the code functionality developed during the sprint, and whether it satisfies the acceptance criteria so it can be considered as “bug free” and fully functional. Agile promotes “shippable” product increments i.e. small pieces of code offering a certain functionality that is complete, perfectly functional, and free of any “manufacturing” defects.

It is worth knowing about the actual Agile process, events, roles, and artefacts which can help to eliminate bugs, and control the factors causing regression in software code. People new to Agile concepts and principles may find the framework difficult to understand. This article does not aim to educate the reader in Agile or Scrum framework. Rather, it aims to explain some of the important Agile characteristics which make the framework a very good choice for developing software projects. The objective is to describe how Agile can help to reduce regression levels during the development process. To understand how Agile can do this, it is important to know a “bit” about Agile first.

The product owner “PO” (Role)
He or she is the person who “owns” the project on behalf of the stakeholders or project owners. The person represents the interests of the stakeholders in the Agile project, and ensures that the project delivers a certain business value (importance in terms of market value and financial implications) at all times while the product is being developed. The individual is primarily responsible for the success or failure of the project.

The product backlog (Artefact)
It is a master list mentioning all features and functionalities to be developed in the software project, and to manufacture the software product in totality.

Product backlog item “PBI” or user story (Artefact)
In Agile scrum, the actual product is “broken down” into much smaller, manageable, and developable parts known as product backlog items “PBIs,” or user stories. Each developable sub-unit or product item exists independently in the backlog. Moreover, each PBI is defined to include:

An index or a reference number to uniquely identify the PBI
A description stating the functionality to be developed
An explanation describing what the functionality is supposed to deliver, how it is to be delivered, and why it is needed
A list of acceptance criteria which needs to be satisfied for the PBI to be considered as “perfect” and “complete”
A short explanation describing what must be “done” for the PBI to be considered as “shippable” and ready for immediate use

Sprint planning meeting (Event)
The iterative product development cycle (sprint) is initiated by an Agile event known as “sprint planning.” This meeting is important from the development point of view. The meeting is held in two parts. In the first half, the PO selects important PBIs or user stories for development purposes from the product backlog, and a temporary list known as a “sprint backlog” is prepared to hold the user stories for development purpose. The PO then explains to the development team how the stories should be developed, and what activities team members should carry out to make the development “acceptable.” The acceptance criteria is properly explained to the team, so each developer becomes familiar as to how the actual development activity should be carried out, and what the management expects out of the proposed development.

In the second half of the meeting, the development team discusses how user stories should be distributed amongst the developers in the team. Stories are generally distributed based on the expertise and skill sets possessed by the developers. Individuals are assigned development tasks based upon their familiarity with the development process and their experience levels.

Sprint backlog (Artefact)
It is a temporary list created by the PO during the sprint planning meeting to hold the PBIs, or user stories, for development purpose. In Agile, development is always carried out in short bursts of activity known as sprints, and at any given time, a small subset of the product is actually developed. Unlike the traditional waterfall method, development is never carried out in “whole.” The entire sprint backlog is processed for development during the sprint.

Daily sprints (Event)
The “heart” of all Agile frameworks, daily sprints form the base of all development activities. Sprints generally last for two weeks, but can extend up to a maximum of one month. Agile sprints are fundamentally product increment cycles which keep on repeating until the entire product is developed in bits and pieces.

The sprint review (Event)
It is an Agile event held immediately after a particular sprint, or a product increment cycle is completed, and a certain code functionality in the form of user story is developed by the team. The meeting is headed by the Product Owner who verifies the development, and ensures that the user story satisfies the definition of “Done” as mentioned in the PBI. If the user story fails to satisfy the acceptance criteria so stated, it is sent back to the product backlog for re-development. If it is accepted by the PO, the user story is presented to the stakeholders in the succeeding sprint review event for their acceptance and opinions.

Sprint retrospective (Event)
Held immediately after the sprint review event, the stakeholders preview the user stories developed by the team. The stakeholders offer their opinions regarding how much of business value the user stories actually offer after their development, and whether the stories can be, in fact, considered as “shippable.” The main purpose of the retrospective is to reflect upon what mistakes occurred in the Agile project in the past, and what needs to be learnt from prior mistakes. The retrospective offers an opportunity for the Agile team to communicate with the end-users and project owners, and to get “first hand” information as well as knowledge as to what the stakeholders actually need in their project, and how they had actually envisioned their project at the time of its inception.

How can Agile Scrum framework help to reduce or eliminate bugs and software regression?
Software regression is identified if it exists in the code functionality, checked, rectified, and re-tested during the Agile development process. This is how it happens.

Starting with the software development process using Agile
In Agile, the actual development starts with the creation of the product backlog. Based upon how the stakeholders and project owners have envisioned the software project, and what they desire in terms of product functionality, the PO initially “breaks down” the entire project into PBIs or user stories, which are small, individually developable functional units. Once the master list or the product backlog is created, the PO assigns a business value to each PBI, so that important user stories having a higher “market value” can be developed first. The PO than proceeds to conduct a sprint planning meeting which is attended by all. In the sprint planning meeting, the PO selects some of the important PBIs from the top of the product backlog, and transfers those stories to the sprint backlog so the development team can start with its coding activity. It is important to know that developers and programmers only develop those user stories which have been transferred to the sprint backlog, and none of the other PBIs stated in the product backlog. The developers then break down the PBIs into individually developable even smaller tasks and distribute them amongst themselves. Each programmer or developer prepares a smaller list which includes all tasks to be developed by him or her during the sprint.

Carrying out the actual software development
The actual product development is carried out through sprints. During the sprint, each developer takes up tasks allotted to him or her, and proceeds with their development. At a time, one task is taken up for development. Once the task is completed, it is marked as “Completed” and another task is subsequently taken up for development. The process is repeated until all the tasks are developed. Once a particular task is completed, it is tested for its reliability, consistency, and accuracy by team members specially appointed to carry out the testing process. Some Agile processes maintain a separate team for carrying out the Q.A. related activities. Each task is painstakingly checked for any errors arising through improper coding practices, wrong usage of coding language, flawed design, and other regression related parameters. Agile teams can also use specially developed regression testing software to identify any flaws in the coding, designing, or functionality aspects. Once the regression checking is over, the user story is verified whether it fulfils the benchmark and acceptance criteria mentioned in the PBI. After the story is thoroughly checked, it is marked as “Completed” and its status updated in the Agile process flow. It is important to complete all the tasks allotted to the team members during the sprint.

After the development activity
After all user stories have been developed by the development team during the sprint, an Agile event known as the sprint review is held to present the development carried out to the PO. During the sprint review, the PO scrutinises each user story and re-verifies whether they fulfil the acceptance criteria, and whether they, in fact, meet the definition of “Done.” If any user story fails to satisfy the PO, it is transferred back to the product backlog from where it may be taken up for re-development at a later stage. Only bug free, well documented, and “shippable” user stories should be accepted as “final” during the sprint review. The objective of the event is to check for any regression related issues at a “micro” level.

Once the sprint review event is over, another Agile event known as the sprint retrospective is held to further ascertain whether the user story functionality is acceptable from the market point of view. The stakeholders, project owners, end users, and other technically oriented staff members attend this event. The user story functionality is demonstrated to the participants, who minutely scrutinise the functionality aspects and working to find any flaws or incorrect functioning of the user story. The participants also determine how much worth the functionality is from the saleability and market point of view. Once the stakeholders are satisfied with the results, the user story is accepted as “Done.” The aim of this event is to check for regression related issues at a “macro” level.

Agile Scrum and software regression
Each task, when completed by the team during the daily sprint, can be individually tested for bugs, design flaw, and regression. In Agile, the user story cannot be accepted until it fulfils the acceptance criteria and meets the benchmarks. At the time of development, the developer initially checks the user story for any bugs, or errors of any kind. Once the development team Okays the functionality, it is checked and verified again by the PO. POs are usually experienced Agile professionals, and have the knowledge, as well as the ability to find any bugs or flaws overlooked by the team. This is how bugs are eliminated at a micro level. Once the PO acknowledges the user story, it is exhibited to the stakeholders who are familiar with the market trends and conditions, and know what kind of functionality a particular user story should offer to satisfy the end user’s requirements. They again check the functionality from the end user’s point of view, and if it does not proffer to fulfil what the end users need, they reject the user story. When any user story reaches the sprint retrospective stage, it will not possess any bugs or coding errors, which are detected in the preceding micro level stages. The development is checked at a macro level during the retrospective, and accepted by the end users.
Source:-  How Can Agile Scrum Reduce Regression During Software Development?