Showing posts with label Agile. Show all posts
Showing posts with label Agile. Show all posts

Tuesday, November 10, 2020

Acceptance Criteria

 https://www.freecodecamp.org/news/the-acceptance-criteria-for-writing-acceptance-criteria-6eae9d497814/

Criteria can be written in a variety of formats. Most teams lean towards two specific types: rule-oriented or scenario-oriented.


1. Testable with clearly defined pass/fail results

2. Unambiguous and concise

3. Establish shared understanding


“Acceptance Criteria should state intent, not a solution” (Segue Technologies)
Product Owner provides AC

Wednesday, June 10, 2020

Agile manifesto and principles


The Four Values of The Agile Manifesto

The Agile Manifesto is comprised of four foundational values and 12 supporting principles which lead the Agile approach to software development. Each Agile methodology applies the four values in different ways, but all of them rely on them to guide the development and delivery of high-quality, working software.
1. Individuals and Interactions Over Processes and Tools
The first value in the Agile Manifesto is “Individuals and interactions over processes and tools.” Valuing people more highly than processes or tools is easy to understand because it is the people who respond to business needs and drive the development process. If the process or the tools drive development, the team is less responsive to change and less likely to meet customer needs. Communication is an example of the difference between valuing individuals versus process. In the case of individuals, communication is fluid and happens when a need arises. In the case of process, communication is scheduled and requires specific content.
2. Working Software Over Comprehensive Documentation -> living document
Historically, enormous amounts of time were spent on documenting the product for development and ultimate delivery. Technical specifications, technical requirements, technical prospectus, interface design documents, test plans, documentation plans, and approvals required for each. The list was extensive and was a cause for the long delays in development. Agile does not eliminate documentation, but it streamlines it in a form that gives the developer what is needed to do the work without getting bogged down in minutiae. Agile documents requirements as user stories, which are sufficient for a software developer to begin the task of building a new function.
The Agile Manifesto values documentation, but it values working software more.
3. Customer Collaboration Over Contract Negotiation
Negotiation is the period when the customer and the product manager work out the details of a delivery, with points along the way where the details may be renegotiated. Collaboration is a different creature entirely. With development models such as Waterfall, customers negotiate the requirements for the product, often in great detail, prior to any work starting. This meant the customer was involved in the process of development before development began and after it was completed, but not during the process. The Agile Manifesto describes a customer who is engaged and collaborates throughout the development process, making. This makes it far easier for development to meet their needs of the customer. Agile methods may include the customer at intervals for periodic demos, but a project could just as easily have an end-user as a daily part of the team and attending all meetings, ensuring the product meets the business needs of the customer.
4. Responding to Change Over Following a Plan
Traditional software development regarded change as an expense, so it was to be avoided. The intention was to develop detailed, elaborate plans, with a defined set of features and with everything, generally, having as high a priority as everything else, and with a large number of many dependencies on delivering in a certain order so that the team can work on the next piece of the puzzle.
With Agile, the shortness of an iteration means priorities can be shifted from iteration to iteration and new features can be added into the next iteration. Agile’s view is that changes always improve a project; changes provide additional value.
Perhaps nothing illustrates Agile’s positive approach to change better than the concept of Method Tailoring, defined in An Agile Information Systems Development Method in use as: “A process or capability in which human agents determine a system development approach for a specific project situation through responsive changes in, and dynamic interplays between contexts, intentions, and method fragments.” Agile methodologies allow the Agile team to modify the process and make it fit the team rather than the other way around.

The Twelve Agile Manifesto Principles

The Twelve Principles are the guiding principles for the methodologies that are included under the title “The Agile Movement.” They describe a culture in which change is welcome, and the customer is the focus of the work. They also demonstrate the movement’s intent as described by Alistair Cockburn, one of the signatories to the Agile Manifesto, which is to bring development into alignment with business needs.
The twelve principles of agile development include:
1.       Customer satisfaction through early and continuous software delivery – Customers are happier when they receive working software at regular intervals, rather than waiting extended periods of time between releases.
2.       Accommodate changing requirements throughout the development process – The ability to avoid delays when a requirement or feature request changes.
3.       Frequent delivery of working software – Scrum accommodates this principle since the team operates in software sprints or iterations that ensure regular delivery of working software.
4.       Collaboration between the business stakeholders and developers throughout the project – Better decisions are made when the business and technical team are aligned.
5.       Support, trust, and motivate the people involved – Motivated teams are more likely to deliver their best work than unhappy teams.
6.       Enable face-to-face interactions – Communication is more successful when development teams are co-located.
7.       Working software is the primary measure of progress – Delivering functional software to the customer is the ultimate factor that measures progress.
8.       Agile processes to support a consistent development pace – Teams establish a repeatable and maintainable speed at which they can deliver working software, and they repeat it with each release.
9.       Attention to technical detail and design enhances agility – The right skills and good design ensures the team can maintain the pace, constantly improve the product, and sustain change.
10.   Simplicity – Develop just enough to get the job done for right now.
11.   Self-organizing teams encourage great architectures, requirements, and designs – Skilled and motivated team members who have decision-making power, take ownership, communicate regularly with other team members, and share ideas that deliver quality products.
12.   Regular reflections on how to become more effective – Self-improvement, process improvement, advancing skills, and techniques help team members work more efficiently.
The intention of Agile is to align development with business needs, and the success of Agile is apparent. Agile projects are customer focused and encourage customer guidance and participation. As a result, Agile has grown to be an overarching view of software development throughout the software industry and an industry all by itself.
Advertisements

Ceremonies in Scrum Cycle


·         Sprint Backlog Refinement
·         Sprint Planning Meeting
·         Daily Stand-up Meeting
·         Sprint Review Meeting
·         Sprint Retrospective Meeting

Sprint Backlog Refinement

Product Backlog refinement is the act of adding detail, estimates, and order to items in the Product Backlog. This is an ongoing process in which the Product Owner and the Development Team collaborate on the details of Product Backlog items. During Product Backlog refinement, items are reviewed and revised.
As mentioned above, Product Backlog refinement is an ongoing activity, and unless it is being conducted at scale it does not restricted to be a time-boxed event (or meeting). However, there is nothing to stop teams from time-boxing each refinement session anyway. In general it is good practice to use time-boxing.

Sprint Planning Meeting

The goal of Sprint Planning is to answer the questions “What are we going to work on, and how are we going to do it?” It’s also important for the team to have a shared goal and a shared commitment to this goal before beginning their Sprint – the list of items the team plans to work on during that specific Sprint. The team then breaks down these items into tasks, typically no bigger than a 2 days’ worth of work.

Daily Stand-up Meeting

Once we begin a Sprint, we have what we call a Daily Scrum every day. Organized by the Scrum Master, Daily Scrum is typically a 15-minute stand-up meeting to synchronize the work of team members, i.e. what’s done on the prior day, what needs to be done today, identify any impediments, and creates visibility around the work that everyone is doing in the Sprint.
Note That
At the end of the Sprint, the goal is to have a Potentially Shippable Product Increment (PSPI). We’re trying to get something of incremental value done every Sprint.

Sprint Review Meeting

Held at the end of each sprint to demonstrate the added functionality. The goal is to get feedback from the product owner and other stakeholders to ensure that the delivered increment met the business need and to revise the Product Backlog based on the feedback. This feedback will then become items that will be looped back into the Product Backlog, where it can be ordered and pulled in by the team in a future Sprint.

Sprint Retrospective Meeting

Retrospectives typically last 90 minutes and are there to help us incorporate continuous improvement into our team culture and into our Sprint cadence. This is where the Scrum Team meets to reflect on their previous Sprint and to figure out how to improve as a team by asking – what went well, what did not and what can be improved. It allows the team to focus on its overall performance and identify strategies for continuous improvement.



Wednesday, April 1, 2020

Scrum team - Self - organizing

Scrum Teams are self-organizing….. Self-organizing teams choose how best to accomplish their work, rather than being directed by others outside the team.

Self-organisation is a process where some form of global order or coordination arises out of the local interactions between the components of an initially disordered system. This process is spontaneous: it is not directed or controlled by any agent or subsystem inside or outside of the system; however, the laws followed by the process and its initial conditions may have been chosen or caused by an agent.

The key here is that there is no single point of authority, even temporarily, in a self-organizing team. Every individual member of the team volunteers for tasks within the framework of “the laws followed by the process” – namely Scrum. Scrum does define some constraints on individual behaviour, particularly for the Product Owner and the ScrumMaster. People in those two roles have specific duties which usually prevent them from being able to volunteer for any task. But all the other team members (the Development Team) have complete freedom to individually and collectively figure out how they will do the work at hand.

Wednesday, August 7, 2019

Agile Methodology

Agile Methodology

The general and typical V model or water fall model were used years ago. Nowadays more and more software companies use Agile Method to develop products.

What is Agile Methodology?
(From Wiki)
Agile software development is an approach to software development under which requirements and solutions evolve through the collaborative effort of self-organizing and cross-functional teams and their customer(s)/end user(s). It advocates adaptive planning, evolutionary development, early delivery, and continual improvement, and it encourages rapid and flexible response to change.
It is iterative, incremental and evolutionary.

Why Agile Methodology?

  • High customer satisfaction ( Agile development method gives high priority to customer participation, from the very beginning of the development cycle. The client is involved at every step so that they have a product that they are happy with at the end. )
  • Collaboration, Communication & Efficiency (Agile development method  asks all the team members to work together and encourages open face to face communication. The regular meeting enables every team member to be at the same page and keeps the project transparent. )
  • High product quality (The testing is done in development cycle regularly, so the defects can be caught in time. Changes can be made quicker and throughout the development process according to client's requirement. Incremental development results in small incremental releases with each release depending on previous functionality. Rigorous testing of each release to ensure software quality is maximum. )

How to apply Agile methodology?
Scrum is an Agile Framework for completing a Complex project. There are many frameworks in Agile. Scrum is one of the most important frameworks.Scrum model is iterative and flexible. 

Scrum cross-functional team usually consists of 5-9 members and suggests a set of roles and steady processes repeated in every iteration. The iterations in Scrum, named with a rugby term sprints, are usually 1 to 4 weeks long. One of the most well-known features of Scrum is a daily stand-up meeting lasting about 15 minutes. Every sprint includes planning, designing, developing, testing and reviewing.

Roles in Scrum include product owner, sprint master and team members.
Product Owner communicates with the customer to understand the requirements, which will be broken down to "user stories". He/She is responsible for Product Backlog, which include list of items with different priorities, typically in the form of user stories. He/She  participates actively in Sprint Planning and Sprint Review meetings.
A Scrum Master oversees that Scrum in agile methodology is appropriately performed by the team and manages the process.



Reference https://www.loginworks.com/blogs/agile-methodology/

Kanban vs Scrum
kanban: continuous delivery
Scrum: fixed time delivery

kanban + scrum
“kanban”的图片搜索结果


Agile methodology is now widely used in software development and ensures delivery of high quality products.

API interview questions

  https://www.katalon.com/resources-center/blog/web-api-testing-interview-questions/ Top 50+ Web API Testing Interview Questions [Ultimate l...