Devops & Agile Programming Unit-2
Devops & Agile Programming Unit-2
OF MCA
A STUDY MATERIAL OF
Unit-2
FOR
Prepared by
1. Request for changes or New Features: Whether it's a request for new
features for a product or the requirement for a new product, the cycle begins
with identifying the need for changes.
6. Support: The cycle doesn't end as soon as the feature goes live. Marketing and
Customer Relations teams coordinate with developers to create awareness and
support material about the new feature for end users.
Continuous integration
Continuous delivery
With this practice, the code is release – ready almost all the time. This
reduces the coordination, efforts, and stakes associated with each release. You
only need a manual trigger.
Continuous deployment
They are adept at managing time, money, and people. Managing a release is
fairly similar to managing a project, so it’s crucial release managers possess project
management skills as well.
All through your release cycle, you will get feedback from different
channels—stakeholders, customers, or internal users. This feedback offers a
starting point for enhancements or new features. Sort the barrage of feedback
based on criticality and relevance to avoid getting overwhelmed or misled by
them.
1. High priority bug — in this category, we consider the bugs that the core
functionalities of the product.
For example, for a car software product, an issue that doesn’t allow the
user to drive its car will be a high priority bug.
3. Low priority bug —the issue is rather cosmetic or comfort, with no critical
functionality.
Defining the classification of the bugs helps for the fast sorting of the defects.
The product owner can decide quickly which ones get on the teams’ sprint and which
bugs to add to the product backlog.
We could have operational teams and product teams. This article concerns the
product teams that do both maintenance of the production product but also the new
development of the product.
There are two scenarios: you can either time box the time spent on bugs or
refine them and assign story points. Let’s have a close look at the options:
The team assigns a fixed number of hours dedicated to the bugs, takes them
one by 1 to treat them from the top priority of the list. In this scenario, the team can
handle one bug or five or an unlimited amount of bugs. There is no prediction on
how many bugs the team can do and no commitment to the delivery time. But, at the
same time, there is no time lost on investigating the bugs.
For clarification, the bugs are the miss functioning of the product.
Functionalities that aren’t present in the product, they must be handling with user
stories, not with bugs. The nature of the flaws in software is very uncertain: they can
take a few minutes, as they can make an un estimated amount of time. It might take
more effort to find the root cause of a bug than actually fixing it. If you want to
estimate a bug, you first need to investigate the issue, look in to the code, debug,
and isolate the problem. If the team spends this effort during the refinement
processes and the entire team is involved, it might be a waste of team effort.
I recommend the bugs aren’t estimated but sorted using the priority definition,
assigned to the team backlog, and then directly fixed. Anytime spent on investigating
the flaws is a waste, and most of the time cannot be estimated.
Above we clarified that the team should not assign story points to the flaws
because estimating bugs is a waste of team effort.
Every time I start working with a new client, my answer to this question is:
define first the priorities (see list above), and I strongly recommend the tribes to fix
the urgent bugs.
While this is a temporary solution to stop a fire, it is the worst long term
strategy. Must the bugs be minimized? The user story must contain all the effort
involved from creation to production. It includes development, peer review, testing,
product owner acceptance, integration testing, and deployment to the right
environment.
Only when the entire circle is closed, we can know if the functionality meets the
business requirements or not. If the full testing is not part of the user story, then we
have a fake velocity. We measure the coding, but not if it did the final customer can
use it. For the whole agile methodology to work, testing must be part of the
development of the user story and the velocity.
Version control systems enable software teams to operate more swiftly and
intelligently as development environments have increased. They are beneficial for
DevOps teams because they will allow them to speed up successful deployments and
reduce development time.
Version control, also known as source control, is the practice of tracking and
managing changes to software code. Version cont
control
rol systems are software tools that
help software teams manage changes to source code over time. As development
environments have accelerated, version control systems help software teams’ work
faster and smarter. They are especially useful for DevOps teams since they help
them to reduce development time and increase successful deployments.
For almost all software projects, the source code is like the crown jewels –a
precious asset whose value must be protected. For most software teams, the source
code is a repository of the invaluable knowledge and understanding about the
problem domain that the developers have collected and refined through
carefuleffort.Versioncontrolprotectssourcecodefrombothcatastropheandthecasualdeg
trolprotectssourcecodefrombothcatastropheandthecasualdeg
radationofhumanerrorand unintended consequences.
Software developers working in teams are continually writing new source code
and changing existing source code. The code for a project, app or software
component is typically organized in a folder structure or "file tree". One developer on
the team may be working on a new feature while another developer fixes an
unrelated bug by changing code, each developer may make their changes in several
parts of the file tree.
Version control helps teams solve these kinds of problems, tracking every
individual change by each contributor and helping prevent concurrent work from
conflicting. Changes made in one part of the software can be incompatible with those
made by another developer working at the same time. This problem should be
discovered and solved in an orderly manner without blocking the work of the rest of
the team. Further, in all software development, any change can introduce new bugs
on its own and new software can't be trusted until it's tested. So testing and
development proceed together until a new version is ready.
Software teams that do not use any form of version control often run into
problems like not knowing which changes that have been made are available to users
or the creation of incompatible changes between two unrelated pieces of work that
must then be painstakingly untangled and reworked.
If you're a developer who has never used version control you may have added
versions to your files, perhaps with suffixes like "final" or "latest" and then had to
later deal with a new final version. Perhaps you've commented out code blocks
because you want to disable certain functionality without deleting the code, fearing
that there may be a use for it later. Version control is a way out of these problems.
Using version control software is a best practice for high performing software
and DevOps teams. Version control also helps developers move faster and allows
software teams to preserve efficiency and agility as the team scales to include more
developers.
Version Control Systems (VCS) have seen great improvements over the past
few decades and some are better than others. VCS are sometimes known as SCM
(Source Code Management) tools or RCS (Revision Control System). One of the most
popular VCS tools in use today is called Git.
Git is a distributed VCS, a category known as DVCS, more on that later. Like
many of the most popular VCS systems available today, Git is free and open source.
Regardless of what they are called, or which system is used, the primary benefits
you should expect from version control are as follows.
3. Traceability.Beingabletotraceeachchangemadetothesoftwareandconnectittopro
jectmanagementand bug tracking software such as Jira, and being able to
annotate each change with a message describing the purpose and intent of the
change can help not only with root cause analysis and other forensics. Having
the annotated history of the code at your fingertips when you are reading the
code, trying to understand what it is doing and why it is so designed can
enable developers to make correct and harmonious changes that are in accord
with the intended long-term design of the system. This can be especially
important for working effectively with legacy code and is crucial in enabling
developers to estimate future work with any accuracy.
The main issue here is that everything is saved locally. If anything were to
happen to the local database, all patches would be lost. Similarly, if any damage
occurred to a single version, all changes made after that particular version would no
longer exist.
While it can be difficult to collaborate with other developers or teams, there are
ways to make it work.
A centralized version control system is ideal for teams who need to work on the
same project at the same time. Multiple clients can access files simultaneously with
a single server containing all file versions. This way, everyone usually knows what
everyone else is doing, and administrators have control over who can do what.
Two well-known
known examples of centralized version control systems are Microsoft
Team Foundation Server (TFS) and SVN.
If you’re using a distributed version control system, you don’t just check out
the latest snapshot of files from the server. You also mirror the repository, which
means that everyone collaborating on a project has their own complete history of the
project stored locally.
The 10 Minute Build is the gold standard for getting what, in Agile / Scrum, we
call Fast Feedback. With the click of a button, you should be able to build your
software, run comprehensive automated tests, and deploy to a testing environment.
This matter it allows the team to “fail fast”.
Fast Feedback
When a feature or user s story can be put in front of the product owner
o and
stakeholders within minutes, feedback, acceptance, or rejection, can be given to the
team in near real time. Agile/
Agile/scrum moves pretty fast, but our 10 Minute Build
means that when sprint review rolls around our s stories
tories have a higher acceptance
rate. Fast feedback
eedback has helped reduce the amount of undone work, meaning we hit
more of our targets.
Any scrum master will tell you that in progress is toxic; a very common cause
of failed sprints.
I’ve built and shipped a few SaaS products using Agile/Scrum, but with Cycle
this was the first “blank page” that I was able to approach as a Product Owner.
Previous projects sometimes felt like Agile/Scrum was adapted for a process rather
than adopted
pted (not uncommon!). With cycle we invested time and effort upfront in
engineering to give us:
One of the biggest lessons we took from our 10 Minute Build was the need to
integrate often, ensuring that a development branch didn’t drift too far. Complex
merges are much more likely to snag on regression tests, meaning a higher
frequency of failed builds.
Continuous integration refers to the build and unit testing stages of the
software release process. Every revision that is committed triggers an automated
build and test.
Compile code in CI
Run tests in CI
There are two types of software development teams, ones that follow
individual code ownership and ones that follow collective code ownership.
In collective code ownership, the entire team is responsible for the code.
Everyone works together to produce a product of quality. No one individual is
greater than the rest of the team members. This is what the true agile teams
are supposed to be.
When the team is collectively responsible for the code, everybody learns.
With more people having the knowledge to make a difference, the product
quality is bound to improve.
With many people contributing to the code, it will result in better overall
quality of the code. Of course, this is assuming that they care about improving
the code. With only one person coding in a module, there will not be any
constructive criticism of the work carried out.
Let us not ignore the coding style–each person has a different style,
some more understandable than others, some better and more efficient than
others. When the team contributes to the code, it will evolve without leaning to
an individual’s coding style and hence more comprehensible to a wider set of
people.
When no one else other than one person knows about the code with in a
feature or a module, the code reviews become a farce. Aside from being able to
make abstract comments at a high level, real improvements cannot be
suggested.
On the other side, when everyone in the code review is more familiar
with the code, the reviews are highly beneficial with everyone contributing to
the code review, different ideas and improvements come to the discussion and
optimal solutions can be chosen.
It is continuous learning that keeps the developer’s skills sharp and the
mind active. With constant interactions and discussions with better
developers, one can learn a lot in a short period of time.
Agile/Scrum Principles
Collective responsibilities and interaction are what agile is all about. The
teams with collective responsibilities tend to be more adept at sticking to the
agile principles than ones that don’t for the following reasons.
With all the positives of collective code ownership, one might conclude
that it is no brainier to go with that approach. While that is true in most cases,
it is worthwhile to consider the following aspects.
1. Who is Responsible?
If there is one thing that separates successful people from mediocre ones,
it is that successful ones always want more responsibility. They are never the
ones to just do their job and go home. They want to improve things further;
their passion makes them go the extra mile.
If the more skilled developers are not given more responsibilities or
challenges, it will de motivate them. It is a knife’s edge that separates
democracy vs individual brilliance.
The team’s technical capability will play a huge role in whether collective
ownership will sustain for the length of the project, or whether the project will
be successful at all. A group of mediocre or poor programmers will not achieve
good results. It is better instead for more skilled person to be making the
important decisions on behalf of the team, to govern and monitor the work
done by others.
In agile projects, a high level of documentation increases the overall project risk
as it lowers down the adaptability to changes.
This way you document what you have actually built. The majority of the
user and support documentation is pushed to the end of the life cycle to
ensure high quality. You still take notes throughout the development for
capturing critical information that will help to formulate the documents at the
end.
3. Simplify documentation
The higher the number of pages in the document, the higher would be
the chances of error. A short and concise document is easier to maintain and
lesser prone to errors. In the agile documents, the high-level overview may not
have detailed information but it does provide a map to dive in the source code.
from smaller ones. You can create Wikis sort of documentation to create
different single pages for single topics.
For example, you can have a single page describing the user interface
architecture. There can be a single page to describe the user interface flow
diagram. A table of contents pages for the system documentation and system
guides. This will also ensure that there is no overlap of information.
Agile Planning
Let's take this planning and apply it to the field of Agile Software Development.
In Agile, there are multiple levels of planning based on the scale and size of the
requirements and the defined timeframe.
The requirements, also called Backlogs can come from many stakeholders like
the Business, Product Owner or even the Teams. Some of the requirements could be
a small enhancement or functional addition to the product that can be completed in
iteration.
In case of Backlogs that are bigger in size and cannot fit into one iteration, it
can be split into two or more User Stories that are planned into multiple iterations. It
is said that your User Story should be small enough to fit into a 'Sticky Note'. Larger
backlog items will be identified as features and these deliver business value to the
customers.
These features are further broken down into stories that are planned in
multiple iterations. At the end of every release, these features, in the form of working
software is delivered and validated. This may or may not really involve multiple agile
teams.
Enterprises usually have many portfolios with many products. There can be
large scale requirements, or initiatives like a new product idea itself, which may
involve multiple teams and iterations. But how do you handle such large scale
initiatives that span across multiple iterations? This requires lot of planning! But
hey, in agile doing upfront planning and design is a big 'No', right?
To counter this, Agile itself suggests 5levels of planning for such large scale
development
1. Product Vision
The Vision provides a top-level view of the ultimate objective for the
business. It is strategic and transcends any one project. The Vision provides a
way with which to judge related actions through a simple question. “How does
this forward the Vision?” Visions are best when they are exciting, inspirational,
attainable, and aggressive. The scope of a Vision is usually measured in years.
2. Roadmap
Roadmap is a plan on how the product should evolve to achieve the above
vision. The stakeholders will create a roadmap, which clearly depicts the plan with
milestones, defining the steps that will help the enterprise move closer to the goal.
3. Release Plan
The Release Plan defines the list of features that will be delivered in the
decided timeline. A Release plan is a collection of the most important (valuable)
Roadmap stories that can be delivered in a reasonably short time – short enough
that business focus is unlikely to change during the Release time frame
(nominally three months). The collection of stories is prioritized so if the
schedule slips, the most valuable stories are still completed and delivered.
4. Iteration Plan
5. Daily Standup
The Daily Standup is where the entire team meets. This usually happens at
the start of the day, where each team member shares details on:
This will be highlighted so that the Scrum Master can help to resolve the
issues quickly. For small products, you may just need the Iteration Planning and
Daily Standup.
The purpose of the Daily meeting is to align and coordinate the work of the
team, as well as encourage accountability for progress.
Therefore, based on the Requirements (Backlogs) size, you may apply few or all
the levels of planning as per the need. As Agile teams, let's continue rolling value to
our customers and have happy users and happy us at the end.
Vision:
The Vision is a description of the future state of the Solution under
development. It reflects customer and stakeholder needs, as well as the Feature and
Capabilities proposed to meet those needs.
The vision is both aspirational and achievable, providing the broader context—
an overview and purpose—of the Solution under development. It describes the
markets, customer segments, and user needs. It sets the boundaries and context for
new Features, Nonfunctional Requirements (NFRs), and other work.
The vision applies to any Safe configuration, which explains why it’s on the
Spanning Palette. While its focus is typically on the solution, a portfolio vision is also
clearly relevant, reflecting how Development Value Streams will cooperate to achieve
the Enterprise objectives. Agile Release Trains (ARTs) and Agile Teams may also have
their own vision to communicate their part in developing the solution.
Portfolio Vision
In Portfolio SAFe, The portfolio vision sets a longer-term context for near-
term decisions in a way that is both practical and inspirational. (“This is
something worth doing.”) Understanding the longer-term view helps the Agile
teams make more informed choices about the development of functionality in
both the short and long run.
The Portfolio canvas is a key input in developing the portfolio vision. One
of the primary uses of the canvas is to record the current state of the portfolio.
The current state canvas represents the as-is state for the portfolio, enabling
alignment of the organization on its structure, purpose, and status. The next
step is to envision the future state, which helps define the vision for the
portfolio.
Lean-Agile Leaders have the most responsibility for setting the strategic
direction of the company and establishing the mission for the teams who will
implement that strategy. Switch calls this view a “Destination Postcard,” as
Figure 1 illustrates [1].
Solution Vision
In Large Solution SAFe, Product and Solution Management have the
responsibility for translating the portfolio vision to a solution vision, indicating
the reason and direction behind the chosen solution. Doing so requires specific
questions to be asked and answered:
The relevant elements of the vision, along with details of the current and
specific behaviors of the system, are captured in solution intent.
Program Vision
When using Full SAFe or Large Solution SAFe, each ART will likely have
its own vision, detailing the direction of the specific capabilities or subsystems
that it produces. This vision should be tightly coupled to the solution vision it
supports.
Roadmap View
Figure 4. Vision is achieved one PI at a time, via the “Top 10 Features for the next PI”
In Agile release planning, you prepare for staged releases and then break those
down into several different sprints or iterations. Depending on your team structure
and the size of the project, you may even have several sprints running at the same
time.
A sprint ends with a new product increment, but that may not mean a product
release happens. Think about writing a book — each sprint should end with a new
draft. But, just because you have a finished draft for your client (editor, publisher,
etc.) to review doesn’t mean you release it to the public.
You might create versions 1.1, 1.12, 1.14, 1.2, and so on, each one
incorporating the new features and improvements of the last. But you’ll only release
the big ones (1.1 and 1.2, etc.)
Using a release plan helps you plan which product increments (versions) get
released to the market and when. And it’s an integral part of the Agile SDLC
(Software Development Life Cycle) because it can also give higher-ups peace of mind
that there’s a structure and plan beyond just the next sprint, and helps the
individual agile teams stay on track.
A release plan outlines immediate future releases but doesn’t try to plan for
years to come, but it also is unique from a product roadmap (high-level scope and
timeline) because it goes into more detail. However, an Agile release plan doesn’t
outline the work in each release. Instead, it batches iterations or sprints together
into releases.
Those not familiar with the Agile process tend to worry each version of a
product becomes a random collection of features, but a release plan actually ensures
that you create a coherent version of your product every time. It’s a great tool for
combining changes that will have a significant impact on the user experience in a
shorter period of time. In fact, implementing Agile can help you cut your time to
market for a new product by up to 70%.
1. Evaluate your product vision and roadmap and single out outcomes
Your overall product vision and the product roadmap should guide the
whole process. Focus on outcomes in terms of which are the most important in
the short to medium term and according to stakeholder and customer
demand.
If you use Scrum, meet with your agile team for a product backlog
refinement meeting. Break down your desired outcomes into specific user
stories and add them to your backlog.
3. Set a clear release goal that combines logical product backlog items
The key thing to remember for this step is to not overestimate or try to tackle a
huge release in one go while balancing the need for timely releases — a principle of
Agile development.
Honing this skill is an art that improves with practice, so don’t be afraid to
adjust your release plan and your sprint planning as you go. That’s what being Agile
is all about.
Agile projects often aim to incorporating project goals more intensely than
traditional projects. In a daily Scrum, for instance, team members might answer the
question ‘what have I created since the last meeting’ and ‘which impediments am I
facing’ with reference to the project goals (or sprint goals, to be precise).
Teams and team members in waterfall projects might tend to focus on their
own areas and deliverables they are individually responsible for.
While this may smoothen the management of individual risks in agile projects,
it does not necessarily so for the overall project risks. In particular if they are
external to the project – e.g. social, technological, economical, environmental and
political risks (STEEP) – an agile project is probably quicker to react to their
occurrence. Yet, it also needs to manage these risks in advance as the flexibility to
react might not be sufficient.
For instance, agile project teams are able to quickly adapt to stricter regulatory
requirements for the software or service they produce. However, the risk exposure to
other overall project risks is not necessarily different from traditional projects – e.g. if
this service or product gets prohibited entirely or if their office building burns down.
However, this does not suggest that agile projects are entirely risk-free. It only
implies that different approaches to the management of risks are needed that take
the characteristics of these types of projects into account.
These approaches are quite effective to maintain quality and avoid fatal issues
in late stages (as they could occur in waterfall projects, e.g. if fundamental
malfunctions are only detected in the testing phase, almost at the end of the project).
However, they might not entirely address external risks a project is exposed to.
These may include environmental, political and legal risks (e.g. if elements of the
product are subject to regulatory requirements), for instance. While these risks may
be impactful on projects of all different sizes, the risk exposure becomes even more
complex for agile projects of a larger scale, such as Scrum-of-Scrums or Disciplined
Agile.
Risk identification,
Risk assessment,
Risk responses, and
Risk review.
In predictive projects, this is often done during the project set-up and updated
on an ongoing basis during the entire project lifecycle. In agile projects, these steps
are performed at least once for each iteration, and updated during the development
cycle. Regular communication within project teams, such as the daily stand-up
meeting in Scrum, facilitates the quick identification and assessment of risks. Let’s
look at the details of each of these steps:
Risk Identification
This step requires the team, the project manager or an equivalent role and
the business side or product owner to identify potential risks for achieving the
project goals.
While this is initially done in meetings, using the typical agile information
gathering tools and techniques, it is also incorporated in the daily project work.
In Scrum, for instance, one of the topics discussed in daily Scrums relates
to potential impediments (i.e. risks) team members are expecting for their
respective next step.
Risk Assessment
Risk Responses
The risk responses are potential or actual strategies to deal with positive
and negative types of risk when they occur. Assigning responses to the most
relevant risks is a good practice in both traditional and agile projects. The project
management methodology (PMBOK, part1, ch.11.5.2.7, p.445) defines the
following response strategies for overall project risk:
Avoid
Exploit
Transfer/share
Mitigate/enhance
Accept
failure. A good example of a ‘doing rather than planning’ mentality is the quick
initial development of potential solutions to a requirement in order to explore its
feasibility. Some frame works explicitly suggest the development of these so-
called ‘spikes’ to test different options and, thus, reduce risks.
Risk Review
Risk reviews comprise the check and review of identified risks and issues. A
result can be there-adjustment of impact and probability assessments or the re-
assignment of potential risk responses. Risk reviews are ideally done on a regular
basis, at the least at the start or end of a development cycle.
The tools and techniques used in agile risk management include yet are not
limited to:
Iteration Planning
Iteration planning is needed from the beginning of the scrum process as it
helps to manage the software development more efficiently. The team backlog is
partially done during the program increment (PI) planning.
The team and the tasks are matched for the sprint backlog and then iteration
planning is done for one successful sprint.
Let us discuss some of the terminologies in agile and scrum development. The
scrum is part of the agile methodology that is used in software development. The
scrum consists of three major parts for software developments are Product backlog
(living artifact), Sprint backlog, and work done status.
The living artifact is planned and is done by the product owner and generally
consists of user stories and epics. A story is the smallest part of the product backlog
that can be programmed in the sprint to make a value in the work done area or the
software development. This can be a function or any smallest requirements of the
whether business or technical or functional that can be realized as the outcome in
the form of a feature.
An epic is a large part of the requirements that need to be broken down into
the smallest part such as user stories. Learn more to get more knowledge on the
SAFe course at the best training institute.
A sprint backlog consists of the group of tasks that is obtained from the user
stories of the product backlog that can be converted into features in single sprint
iteration. The work done consists of multiple features of the products after several
sprint iterations.
Iteration planning is the process by which planning is done on how many tasks
can be lined up to make the feature in a single sprint. Sometimes a single feature
consists of multiple sprint iterations. The owner and the master based on the
resources decide how many tasks can be committed in a single iteration.
Iteration planning is helpful to make the sprint and the product backlog more
effective and the development activities of the tasks more efficient. Planning is the
key to success. At every stage one must meticulously plan to deliver the right
outcome. The repetitive process became successful in development due to the right
planning at the right time. The entire team sits together to plan and commit about
how much they can complete.
Before proceeding know the difference between iteration and incremental
model.
Logically speaking the iteration planning is completed only when the last sprint
backlog is committed with the final sets of tasks. However, each set of sprint
backlogs consists of iteration planning and is completed on the completion of that
particular sprint.
1. Inputs to the iteration planning – These are nothing but the tasks that can
be accomplished by the team in the single iteration that is a single sprint. This
is planned using the user stories, during the sequencing and scheduling of the
user stories and taking in to account the previous projects or the historical
averages, from lessons learned from previous projects, taking into account any
similar projects completed previously and by studying any other similar team
in the other projects. One other important parameter is the system demo that
was done before the start of the project.
2. Planning the iteration –This is done when the product owner establishes the
program increments and then breaks down the requirements into user stories
for the resources to work on.
4. Story Analysis and estimation – This is done by the product owner when
each user story and epics are made in the product backlog depending on the
complexity, how long it will take to complete, how many resources are needed,
size, difficulty, acceptance criteria, technical challenges, and uncertainty. This
is also called the Behavior-Driven Development (BDD) of the tasks in Scrum.
5. User stories– This is nothing but making the individual tasks from the user's
stories for the resources to act upon and complete the tasks in a sprint
backlog and then planning many more iterations if required.
6. A goal of the iteration – Making the iteration goals to develop a feature of the
product is the next step. The iteration goals will accomplish certain customer
requirements in iteration.
7. Finally committing to the iteration goals –Once the goals of the single
iteration are established and worked upon then committing to the iteration
goals are the final steps in the iteration planning stages.
An iteration planning is done by taking into account resources and the tasks
and the resources time usually a single day and sometimes a week. So a safe
iteration planning takes into account all the above things and the simple logic that a
single sprint is completed in a day with necessary resources by taking into account if
a resource is unable to turn up for the work then how the tasks will be completed.
There two main metrics that come into picture are Story points and velocity.
The story points are the capacity of the team to complete a single iteration taking
into account the velocity of the team. A story point is a relative story that is 8 point
user story is 4 times the efforts of the 2 point user stories. A velocity is the historical
average of all user stories completed per iteration.
Therefore a safe iteration planning takes into account the velocity of the team
and the story point’s average they can realize in a single iteration.
Stories, also called “user stories,” are short requirements or requests written
from the perspective of an end user.
Epics are large bodies of work that can be broken down into a number of
smaller tasks (called stories).
Initiatives are collections of epics that drive toward a common goal.
In a sense, stories and epics in agile are similar to stories and epics in film or
literature. A story is one simple narrative; a series of related and interdependent
stories makes up an epic. The same is true for your work management, where the
completion of related stories leads to the completion of an epic. The stories tell the
arc of the work completed while the epic shares a high-level view of the unifying
objective.
On an agile team, stories are something the team can commit to finish within a
one- or two-week sprint. Often times, developers would work on dozens of stories a
month. Epics, in contrast, are few in number and take longer to complete. Teams
often have two or three epics they work to complete each quarter.
If your company was launching rockets into space, and wanted to improve the
streaming service for your launches, you might structure your stories like the ones
below.
I Phone users need access to a vertical view of the live feed when using the
mobile app.
Desktop users need a “view full screen” button in the lower right hand corner of
the video player.
Android users need to be linked to apple store.
The above stories are all related, and could all be considered individual tasks
that drive toward the completion of a larger body of work (an epic). In this case, the
epic might be “Improve Streaming Service for Q1 Launch.”
Organizing work into stories and epics also helps you and your team
communicates effectively within the organization. If you were reporting your team’s
progress to the Head of Engineering
Engineering, you’d be speaking in epics. If you were talking
to a colleague on your development team, you’d speak at the story level.
In the same way that epics are made up of stories, initiatives are made up of
epics. Initiatives offer another level of organization above epics. In many cases, an
initiative compiles epics from multiple teams to achieve a much broader, bigger goal
than any of the epics themselves. While an epic is something you might complete in
a month or a quarter, initiatives are often completed in multiple quarters to a year.
Let’s say your rocket ship company wants to decrease the cost per
launch by 5% this year. That’s a great fit for an initiative, as no single epic
could likely achieve that big of a goal. Within that initiative, there would be
epics such as, “Decrease launch
launch-phase
phase fuel consumption by 1%,” “Increase
launches per quarter from 3 to 4,” and “Turn all thermostats down from 71 to
69 degrees #Dad
ad mode.”
At Atlassian:
Internally, we call our initiatives “PC Tickets.” Project Central tickets are
configured in Jira Software just like our epics. Each team takes their four or five
most important goals for the year and makes PC tickets for each one. These PC
tickets are used by the founders and management to understand all the work being
done in the company.
Beyond initiatives
For example:
User stories are from a user perspective. So when user stories are
written, users are given more importance during the process. Some points
outlined which are taken into consideration during writing user stories like
1. Requirements
2. Tasks and their sub tasks
3. Actual user
4. Importance to user words/feedback
5. Breaking user stories for larger requirements
With this also some other principles which are given importance during
creating user stories are discussed below.
A good user story should be based on INVEST principle which expresses the
quality of the user story because in base a good software product is completely
dependent upon a good user story. In 2003 INVEST checklist was introduced by Bill
Wake in an article.
1. Independent–
Not dependent on other.
2. Negotiable–
Includes the important avoid contract.
3. Valuable–
Provide value to customer.
4. Estimable–
It should be estimated.
5. Small–
It should be simple and small not complex.
6. Testable–
It should be evaluated by pre-written acceptance criteria.
1. Card–
Write stories on cards, prioritize, estimate and schedule it accordingly.
2. Conversation–
Conduct conversations, specify the requirements and bring clarity.
3. Confirmation–
Meet the acceptance criteria of the software.
1. Once the user story is fully written then it undergoes review and verification.
2. In project work flow meetings it is reviewed and verified then added to the
actual work flow.
3. Actual requirements and functionality are decided based on the stories.
4. User stories are scored based on their complexity and the team starts work
based on user stories.
Agile estimation is the process for estimating the effort required to complete a
prioritized task in the product backlog. This effort is usually measured with respect
to the time it will take to complete that task, which, in turn, leads to accurate sprint
planning.
What is a Sprint? A sprint is a time – boxed interval that defines the time
allocated to complete a task.
Agile teams also make estimations with reference to story points. A story point
is used in Agile Development projects to estimate the difficulty of implementing a
given user story. This is measured in relative units assigned to different user stories
that require estimation.
Over estimating and underestimating are both common for Agile development
teams which leads to varying development and launch times. Though the process is
complicated, considering Agile estimation in the initial stages can assist with
accurate user story estimations and helps the team stick to the timely deliverables.
Some of the to-the-point benefits of Agile Estimation techniques include:
1. Improved Decision-Making
With accurate, agile estimation, the development team will be able to conduct
effective backlog grooming sessions, which will further help in precise sprint
planning. When they make informed decisions and plan well, their user story
delivery time will improve.
2. Better Coordination
Let’s say that the estimated effort for user story A is two weeks. On the other
hand, the estimation effort for user story B is four weeks. Now, suppose both the
user stories depend on each other and are connected. In that case, the team needs to
prioritize work so that both user stories get completed simultaneously, thus leading
to better coordination among teams.
Software projects often suffer from exceeding budgets and timelines. To lessen
this risk, agile project estimation is an ideal solution. Agile product estimation helps
estimate story points and stick to budgets, estimates, and the project’s scope. The
more accurate the estimates, the better the chances of on-time, quality delivery.
This is an exercise that typically takes two to four weeks, depending upon the
project’s complexity. The in-detail process includes:
The Business Analyst (BA) assigned to the discovery team revisits any
existing documentation shared initially and extracts the gaps and queries. The
BA then conducts regular workshops with the stakeholders to discuss the gaps
and clarify doubts in the system workflow.
These workshops can be conducted over a call with the client or when
they visit the premises to have one- on-one sessions.
The next step of Agile Estimation involves the BA and the Technical
Architect. They frame an initial outcome that the stakeholders are looking for
with a feasible solution or product.
The UX analyst works on person as of the possible user group who might
use the application, the eco system in which the personas will be using it, and
the touch points of the user personas within the system. The deliverables here
would be ecosystem maps, personas, user journeys, and storyboards.
4. Prioritize Requirements
The discovery team becomes involved in the agile cost estimation project
and works on the high-level backlog after it has been validated by the
stakeholder.
The MVP backlog might also contain a few items from the ‘should haves’
list, ensuring that the product is sufficiently competitive in the market.
The discovery team estimates the MVP backlog to define the estimated
cost and timeline for the first release.