Subscribe by Email


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

Monday, June 2, 2025

What Are User Stories in Agile Development: A Tech Guide for Beginners

If you’re stepping into the world of Agile development, you’ve likely heard the term “user stories” thrown around in meetings, sprint planning sessions, or backlog grooming. But what exactly are user stories, and why are they so important in software development? As someone with a bit of tech experience, you might already be familiar with concepts like sprints or Scrum, but user stories are a foundational piece that can make or break a project. In this guide, we’ll break down what user stories are, how they work in Agile, why they matter, and how you can create effective ones. We’ll also share some tips to ensure your user stories lead to better products, plus resources for further learning. Let’s dive into the world of user stories and see how they help teams build software that users actually love.

Understanding User Stories: The Basics

A user story is a simple, concise description of a feature or functionality in a software product, written from the perspective of the end user. Think of it as a way to capture what a user needs and why they need it, without getting bogged down in technical details. User stories are a key part of Agile development, a methodology that focuses on delivering small, working pieces of software quickly and iteratively. Unlike traditional requirements documents, which can be long and rigid, user stories are short and flexible, allowing teams to adapt as they learn more about the user’s needs.

The typical format of a user story follows this structure:
As a [type of user], I want [some goal] so that [some reason].
For example:
As a website visitor, I want to reset my password easily so that I can access my account if I forget my login details.
This format keeps the focus on the user (who), the action or feature (what), and the value or benefit (why). It’s simple but powerful, helping teams prioritize features that deliver real value to users rather than just checking boxes on a requirements list.

User stories are usually written by the product owner or business analyst, often in collaboration with the development team and stakeholders. They’re stored in the product backlog—a list of all the work the team needs to do—and are prioritized based on user needs, business goals, and technical feasibility. During sprint planning, the team selects user stories from the backlog to work on in the upcoming sprint, typically a 2- to 4-week development cycle.

Why User Stories Matter in Agile Development

User stories are a cornerstone of Agile because they put the user at the center of the development process. In traditional waterfall development, requirements are often written by technical teams or stakeholders without much input from the end user, leading to products that might not meet actual needs. User stories flip this approach by focusing on what the user wants and why it matters to them. This user-centric mindset helps teams build software that’s more intuitive, useful, and enjoyable to use.

Another reason user stories are so valuable is their flexibility. Because they’re short and written in plain language, they can be easily adjusted as the team learns more about the user or the project. For example, if user feedback during a sprint reveals that a feature isn’t working as expected, the team can tweak the user story or write a new one for the next sprint. This adaptability is a big part of what makes Agile so effective—it allows teams to respond to change rather than sticking to a rigid plan.

User stories also improve communication within the team. Since they’re written in simple, non-technical language, everyone—from developers to designers to stakeholders—can understand them. This shared understanding reduces miscommunication and ensures the team is working toward the same goal. Plus, user stories encourage collaboration. During backlog refinement or sprint planning, the team can discuss the story, ask questions, and add details to ensure they fully understand the user’s needs before starting work.

How to Write Effective User Stories

Writing a good user story takes a bit of practice, but it’s not complicated. The key is to keep it simple, focused, and user-centered. Here’s a step-by-step guide to writing effective user stories, with some tips to make them even better:

  1. Identify the User: Start by figuring out who the user is. This could be a customer, an admin, a guest visitor, or even another system interacting with your product. Be specific about the user type to ensure the story is targeted. For example, “As a new user” is better than just “As a user” because it gives more context.
  2. Define the Goal: Next, describe what the user wants to do. This should be a specific action or feature, like “I want to search for products” or “I want to receive a confirmation email.” Keep it clear and avoid technical jargon—focus on the user’s perspective, not the implementation details.
  3. Explain the Value: Finally, state why the user wants this feature. This part is crucial because it helps the team understand the purpose behind the request. For example, “so that I can find items quickly” or “so that I know my order was placed successfully.” The “why” ensures the feature delivers real value to the user.

Here’s another example:
As an online shopper, I want to see customer reviews on a product page so that I can decide if the product is worth buying.
This story is clear, user-focused, and explains the value of the feature. But a good user story doesn’t stop there—it often comes with additional details to help the team understand the scope.

Adding Acceptance Criteria to User Stories

To make user stories more actionable, they’re often paired with acceptance criteria—specific conditions that must be met for the story to be considered “done.” Acceptance criteria act as a checklist for the team, ensuring the feature works as intended from the user’s perspective. For the online shopper example above, the acceptance criteria might include:

  • The product page displays a “Customer Reviews” section below the product description.
  • Reviews include a star rating, a written comment, and the reviewer’s name.
  • If there are no reviews, a message says, “No reviews yet.”

Acceptance criteria help developers and testers know exactly what’s expected, reducing the risk of misunderstandings. They also make it easier to test the feature during the sprint, ensuring it meets the user’s needs before it’s marked as complete.

The INVEST Criteria for Quality User Stories

To ensure your user stories are effective, many Agile teams use the INVEST criteria—a set of guidelines that help evaluate the quality of a story. INVEST stands for:

  • Independent: The story should stand on its own, not relying on other stories to make sense.
  • Negotiable: It should leave room for discussion and refinement, not be a fixed requirement.
  • Valuable: It must deliver clear value to the user or stakeholder.
  • Estimable: The team should be able to estimate the effort needed to complete it.
  • Small: It should be small enough to complete in a single sprint.
  • Testable: There should be clear criteria to test whether the story is done.

For example, a story like As a user, I want the app to be fast might not meet the INVEST criteria because it’s too vague (not estimable or testable). A better version would be: As a user, I want the app’s homepage to load in under 2 seconds so that I can start browsing quickly. This version is specific, testable, and valuable, making it easier for the team to work on.

Benefits of Using User Stories in Agile Projects

User stories bring several benefits to Agile projects, making them a go-to tool for development teams. First, they keep the focus on the user, ensuring the product solves real problems and meets actual needs. This user-first approach leads to better software that people actually want to use. Second, user stories promote collaboration by encouraging the team to discuss and refine them together, which helps catch potential issues early.

Third, user stories support Agile’s iterative nature. Since they’re small and independent, the team can deliver working features in every sprint, getting feedback from users quickly and making adjustments as needed. This iterative process helps teams build better products over time, rather than waiting until the end of a long development cycle to find out what users think. Finally, user stories make prioritization easier. By focusing on the value to the user, the product owner can decide which stories to tackle first, ensuring the most important features are delivered early.

Challenges of User Stories and How to Overcome Them

While user stories are incredibly useful, they’re not without challenges. One common issue is writing stories that are too vague or broad. For example, As a user, I want a better dashboard doesn’t give the team enough detail to work with. To fix this, break the story into smaller, more specific pieces, like As a user, I want to see my recent activity on the dashboard so that I can track my progress. Adding clear acceptance criteria also helps clarify expectations.

Another challenge is ensuring all stakeholders are aligned. Sometimes, the product owner might write a story that the development team doesn’t fully understand, leading to miscommunication. To avoid this, hold regular backlog refinement sessions where the team can ask questions, discuss the story, and add details. Involving the team early ensures everyone is on the same page before work begins.

Finally, some teams struggle with estimating the effort required for a user story, especially if it’s too complex. If a story seems too big to complete in a sprint, break it down into smaller stories. For example, instead of As a user, I want to manage my entire account, split it into smaller stories like As a user, I want to update my email address and As a user, I want to change my password. Smaller stories are easier to estimate and deliver, keeping the sprint on track.

Tips for Getting the Most Out of User Stories

To make user stories work for your team, here are a few practical tips:

  • Involve the Whole Team: Writing user stories shouldn’t be a solo task. Get input from developers, testers, and designers to ensure the story is realistic and actionable.
  • Use Personas: Create user personas—fictional characters representing your target users—to make your stories more specific. For example, “As Sarah, a busy mom, I want…” adds context.
  • Prioritize Value: Always ask, “What value does this bring to the user?” If a story doesn’t deliver clear value, it might not be worth doing.
  • Keep Iterating: Don’t be afraid to rewrite or split stories as you learn more. Agile is all about adapting to change.
  • Test Early and Often: Use acceptance criteria to test the feature during the sprint, ensuring it meets the user’s needs before moving on.

By following these tips, you can create user stories that guide your team to build better software while keeping the user’s needs at the forefront.

Applying User Stories in Your Projects

If you’re new to Agile, start by writing a few user stories for a small feature in your project. Practice using the As a, I want, so that format, and add acceptance criteria to clarify what “done” looks like. Share the stories with your team and get their feedback during sprint planning. As you gain experience, you’ll get better at writing stories that are clear, valuable, and actionable. For more experienced tech professionals, focus on refining your backlog regularly to ensure your user stories align with the product’s goals and user feedback. Over time, user stories will become a natural part of your development process, helping you deliver software that truly meets user needs.

Resources for Further Learning

Want to learn more about user stories and Agile development? Check out these resources for deeper insights.

Books on Amazon:

  • User Stories Applied: For Agile Software Development by Mike Cohn (Buy book - Affiliate link) – A must-read for anyone new to user stories, with practical examples and tips.
  • Agile Estimating and Planning by Mike Cohn (Buy book - Affiliate link) – Covers how to prioritize and estimate user stories in Agile projects.
  • Scrum: The Art of Doing Twice the Work in Half the Time by Jeff Sutherland (Buy book - Affiliate link) – A great book on Agile and Scrum, including the role of user stories.

YouTube Videos:

How to write good User Stories in Agile



A Final Note on User Stories

User stories are a powerful tool in Agile development, helping teams focus on what matters most: the user. By writing clear, user-centered stories, you can ensure your team builds software that solves real problems and delivers value. Whether you’re just starting out or looking to improve your Agile process, mastering user stories is a skill that will pay off in better products and happier users. Give them a try in your next project—you’ll be amazed at how much they can improve your team’s workflow and results.


Thursday, October 16, 2014

What is agile modeling (AM)? An explanation. Part 2

Read the first part of this post (Agile Modeling: An explanation - Part 1)

The modeling should be carried forward in small increments. As such it is easy to find bugs if the increment fails or some fault occur. As an agile developer, it is your duty to continuously strive to improve the code. This is just another way of showing that your code works in real, and is not just mere theory. The stakeholders know what they want better than the developers. Thus, by actively participating in the development process and providing constant feedback they can help in building a better software overall.
The principle of assuming simplicity means keeping focus on the required aspects instead of drawing out a highly detailed sketch. It also means using simple notations for depicting various model components, using simple tools, taking information from a single source, rejecting temporary models and updating models only when required. Facilitation of the communication can be improved by making a public display of the models, be it on wall or website, application of standards of agile modeling, collective ownership of artifacts and modeling in a team. Gentle application of the patterns enhances the results drastically.
The formalized contract models are required when you require integrating your system with other legacy systems such as web application or database. These models lay out a contract between you and the owners of these legacy systems. The principles, values and practices of AM have been developed by many experienced developers. With AMDD or agile model driven development we do sufficient high level modeling in the initial stages of the project for making out the scope of the project. In the later stages the modeling is carried out in iterations as a part of the development plan. You might then take model storming road for compiling your code straightaway. Agile practices can be applied to most of the projects. It is not necessary that you should be working on an agile project to benefit from these practices. Also it is not necessary to put all principles, practices and values to use to harness agile advantage. Instead it is better to tailor these practices according to the specifications of your project.
Another way of harnessing agile benefits is to follow AMDD. MDD (model driven development) in its agile form is called agile model driven development. In AMDD before writing the source code we create extensive agile models. These models are strong enough for carrying forward all the development efforts. AMDD is a strategy that seeks to multiply the scale of agile modeling. The main stages in this process are:
> Envisioning: Consists of initial architecture envisioning and initial requirements envisioning. These activities are carried out during the inception period.
> Iteration modeling
> Model storming
> Reviews
> Implementation

It is during the envisioning phase that we define the project’s scope and architecture. It is done using high level requirements and architecture modeling. The purpose of this phase is explore the requirements of the systems as far as possible and built a strategy for the project. Writing detailed specifications is a great risk to take. For short term projects you may like to pare only few hours on this matter. Agile modelers are advised to spend only required time on this phase to avoid the problem of over – modeling. For exploiting the important requirements you might require a usage model. It helps you explore how the product will be used by the users. For identifying fundamental business entity types an initial domain model is used. The issues with the user interface and its usability can be explored using an initial UI model.


Tuesday, October 14, 2014

What is agile modeling (AM)? An explanation. Part 1

Agile modeling is one of the most trusted development methodologies when it comes to producing an effective documentation and software system. If described at a high level, it comprises of all the best practices, best principles and values required for modeling a high quality software product (this description may seem a bit hyperbolic, but it tends to be true for the most part). These practices are lightweight in implementation, with a lot of flexibility. Although, Agile Modeling is a set of principles and therefore on its own, it is of no use. It has to be mixed with other fuller technologies such as rational unified process, extreme programming, and adaptive software development, scrum and so on. This process enables us to develop software that satisfies all of our requirements. Agile modeling is governed by the following values. Some of these values are extended from extreme programming:
- Communication: All the stakeholders should maintain an effective communication between them.
- Simplicity: Developers should strive to develop the simplest solution possible meeting all the requirements.
- Humility: As a programmer, you should have a sense of humility that you may not know everything and you should allow others to add value to your ideas.
- Feedback: There should be a mechanism for obtaining feedback early in every stage of development.
- Courage: You should have courage to make decisions and stay firm.

The principles on which the Agile Modeling is based are defined by the agile manifesto. Two of these principles are to assume simplicity and embrace changes. Assuming simplicity makes it easy to design software. You are able to cut out unnecessary secondary requirements and focus on the primary needs, thereby reducing the complexity. When you embrace the fact that there will be changes in the requirements, it adds flexibility to your project. As a result, you can develop more flexible projects that can adapt to the changes in requirements, and other changes, over time. 
The software evolves in increments. You should know that it is this incremental behavior that maintains agility of the system. The requirements are ever changing and so there should be rapid feedback mechanism in place through which early feedback can be obtained. With this early feedback it becomes easy for you to ensure that your system is fulfilling all the needs. The modeling should be done with a purpose i.e., if you don’t understand the purpose of your project, its audience or its environment you should avoid working on it unless you are pretty confident. 
It is always wise to have a contingency plan. Therefore, it’s good to have multiple models on standby. There can be a situation in which your primary model might fail, the standby models will provide a back up. One thing worth noting is that agile models are not just mere documentation; they are light weight realizations of your system’s purpose. Once the purpose is fulfilled, the models are discarded. 
One belief of agile developers is that representation is less important than the content. It is the content that matters. Also there are a number of ways in which the same content can be represented. Focus should be maintained on quality work because sloppy work is not valued anywhere. Also adapting to the principles of agile modeling for meeting the environment needs is important. Modeling in an agile manner requires practice. Agile modeling can be applied through various practices. You have to pick the most appropriate one for your project. However there are few fundamental practices that are always important for success of an agile model:
> Parallel creation of several models.
> Application of the right software artifacts depending up on the situation.
> Moving forward through continuous iteration.
One word of caution though! These models are just an abstract representation of the actual systems and therefore cannot be accurate.


Friday, October 10, 2014

What are some of the limitations / challenges of Adaptive Software Development (ASD)?

The Adaptive Software Development (ASD) culture is the result of efforts of Sam Bayer and Jim Highsmith in the field of rapid application development. The methodology aims at developing software that is capable of adapting continuously to the changes in the working environment. In ASD, in place of the waterfall approach, we have cycles of speculating, collaborating and learning. It is because of this dynamic cycle that the software is able to adapt to changing state of the requirements and learn through it. The cycle is very much tolerant to changes, driven by the risk, timeboxed and works in iterations.
Throughout the process the ASD life cycle remains focussed on the mission. Since adaptive software uses the information available from the environment for improving its working pattern, with the increasing complexities it becomes difficult for it to gather usable information. The effectiveness of the adaptive software development is reduced by the complexities of the environment. Today we expect more from the software and in such critical situations in which we never expected earlier. Thus complex environments pose a great challenge. There are three dimensions that contribute to this complexity:
> Increasing number of users: Now not only professionals, everyone uses software.
> Increasing number of systems: More number of systems means more number of interactions between them. Most of the system networks that we have now are heterogeneous. Maintaining homogeneous networks is easy.
> Increasing number of resources and goals: The most common trade off that programmers make is between time and space. Now there are several other things to worry about including security, bandwidth, money, quality, resolution and so on.

These three dimensions make it even hard for the designers to design a system. It is impossible to predict about these factors and therefore always right decisions can’t be made. This results in a product with a short lifetime. Every now and then upgrades will be required for modifying the software. Other factors related to complex environment that pose a challenge for adaptive software are:
> uncertainty
> hidden inputs
> non – deterministic
> unique
> continuity
> real world

Other things that put limitations on adaptive software development are following 4 myths:
> The traditional belief is that the specifications must be determined first. But this is not the case always. One specification can be taken at a time and refined in later stages. The aim should be combining several components together successfully and not developing a single app.
> People usually believe by maintenance that program code has degraded. The truth is that it remains the same while its environment changes. So maintenance involves evolution of the code to satisfy these changing needs. When programmers view this through a maintenance perspective, they tend to preserve the old program structure.
> It is undeniable that abstraction has an important role to play in the development process. But when we treat a process as a black box object we are actually ignoring the practical problem it faces of resource usage. In adaptive software development we take a new approach called open implementation. Here the modules have two interfaces – one for input/ output and the other checking performance. These two interfaces are perpendicular to each other. ADS also adds a feedback mechanism to this orthogonal interface system making it much better.
> While designing software we consider all the possible alternatives. The desired one is kept and the others are rejected. This means that once a requirement changes, we again have to see what alternatives are available and which one can be implemented. This might require changing all of the program structure. The best thing here to be done is programming the system such that it reconfigures itself.


Thursday, October 9, 2014

How is Adaptive Software Development (ASD) different from Scrum? Part 2

Read the First Part (Adaptive Software Development being different from Scrum - Part 1)

For understanding the further differences between the two, it is important that we know what Agile Development is. The Agile manifest defines the agile methodology. There are 7 agile methodologies; namely XP, Crystal orange, Scrum, Adaptive Software Development, DSDM, Pragmatic programming and Feature – driven development. All these methods differ in their mechanisms and the parameters they take. All these methods have a different agile life cycle. For ASD, it depends on what techniques we are going to use. Generally speaking it doesn’t have a life cycle of its own. In contrast to this, scrum has an abstract lifecycle which packs certain activities in to its schedule.

However here we discuss differences based up on a lifecycle having some general phases.
- Project initiation: This step includes justification of the project and determining the requirements.
- Planning: Laying out an elaborate plan for development and leaving some gap for contingency actions. Scrum doesn’t have choice for including optional phases. It must work within predefined options, whereas the adaptive software development can have many options because it does not limits itself to few techniques.
- Elaboration of requirements: This stage is optional. The requirements are explained in great detail. Scrum does not implement this stage separately, but, it may be done in Adaptive Software development. Since the requirements are still in high level, they need to be broken down in to simpler specifications. The requirements are collated in to requirements document after classification. This document also contains use cases apart from the requirements.
- Architecture: Both scrum and ASD are based on agile principle of, design today and refactor tomorrow. Software developed using ASD can be modified to suit the changing environment just by adjusting their software capabilities and leaving the hardware unchanged. Software developed through scrum has to be modified through manual intervention and may even require to change hardware. A system architecture document is prepared in this phase.
- Release: The software is released to the customer. It has one timebox at least. Scrum can have many releases depending upon the development span of the project. Adaptive software usually delivers product in one go.

One of the important questions to be asked during project initiation phase is that whether to invest more or not? Not all methods answer this question. However addressing this question is an important part of the adaptive software development. Scrum doesn’t address this question explicitly. Next step is choosing the appropriate method. Scrum claims that it can be used for any project. Adaptive software development creates a list of all alternatives that can be used and chooses the best one.
The level of formality to be maintained in scrum is given by documents such as running code and backlog. In adaptive software development there are many too many choices to choose from. It makes use of vision statements for clearing out the confusion. Scrum defines a sprint goal which is a kind of timebox vision i.e., it follows one choice for some time and then can change if required.
Scrum avoids elaboration phase for speeding up the delivery. It uses product backlog maintained by the product owner.
Since adaptive software development may have an elaboration phase, it may also have a draft plan initially which may turn into a complete plan after determination of requirements. Scrum plans based on timeboxes.
Both methodologies help you work faster creating products with better quality. The agile customer too is an important role in the agile process. The customers are responsible for providing input during prototyping sessions. The organizing and controlling of user testing is the responsibility of the user. 


Tuesday, October 7, 2014

How is Adaptive Software Development (ASD) different from Scrum? Part 1

Adaptive software development and scrum both come under the overall heading of agile software development, but are two different beasts with differences between them. These are two different approaches with the same aim i.e., agile development. Below, we will write more on what differentiates the two.
It is necessary to know the differences between these two approaches since Scrum, as a part of agile software development is already a very famous methodology, whereas the adaptive software development is relatively new, but also a strong upcoming methodology ready to take the software development market by storm. Agile methods are always preferred over traditional development approaches to incorporate major factors such as increased levels of customer participation and satisfaction, project delivery flexibility, and acceptance of ongoing requirements or design changes at any level in the development process. This is the usual development scenario and that is why agile development methods are used mostly.  Most commonly used agile methods include:
-  Adaptive software development
- Scrum
- Feature driven development
- Extreme programming

Even though all these strategies aim at the same set of objectives (well almost), they do take somewhat different paths (having some items common, and yet others are different). It is important to know the differences between them. Otherwise how you are going to maintain agility in your development structure? Comparison between different agile methodologies, their common points and differences lets the managers choose the most appropriate agile method for their software characteristics.
There are many traditional techniques for drawing comparisons between 2 software development techniques. In this post, Scrum and ADS have been compared on basis of 2 areas, namely software construction and software requirements.
First difference between adaptive software development and the scrum approach is that in the former, there is no predefined technique to be followed. In scrum there are certain predefined techniques to be followed. On the other hand the focus of adaptive software development is on the end result rather on the steps. Adaptive software development methodology implements a particular technique only if it is required.
Since the last two years agile principles have encompassed methods such as extreme programming, feature driven development, adaptive software development and so on.  So far companies using scrum or adaptive software development have been able to deliver successful products. Scrum is described as a process for management and control used for cutting down the complexity. This is used by the organizations who want to deliver products faster. This approach to software development has been used on advanced development methods including software; it usually works well in the object – oriented development environment.
On the other hand adaptive software development is described as methodology for developing reliable and re – adaptive software. It is used by the organizations who want their products to function in a wide range of changing conditions. Software built with this approach are capable of reconfiguring themselves to better suit to the environment. It can be used under any kind of environment. Any technique can be applied here to make software as much flexible as possible. The owners are responsible for estimating backlog items in scrum. In adaptive software development it is mainly the task of the developers.
Scrum follows time-boxing method for speedy delivery. At the start of each timebox, a sprint planning meeting is held. A backlog that can be achieved is picked up by the team members and they decide how it can be achieved.
Scrum may have 1 to 4 teams with 5 – 9 members and adaptive software development may have even more number of teams dedicated to each phase of development process. Agile developers play a number of roles – analysing, estimating, designing, coding and testing. Even though the typing burden is less, there is a lot of stress because of the short frames. But you get to see your progress through user reviews and daily meetings.

Read next part  (Adaptive Software Development being different from Scrum - Part 2)


Friday, March 8, 2013

What are benefits of agile process improvement?


Agile methodologies that we have today are a resultant of the experiences gained from the real life projects that were undertaken by the leading software professionals. These professionals were thorough with the challenges and limitations imposed by the traditional development methodologies on various projects. 

- The agile process improvement directly addresses the issues of the traditional development methods both in terms of processes and philosophy behind it. 
Agile process improvement provides a simple framework to the development teams suiting varying scenarios while focusing up on the fast delivery of the business values. 
- With all these benefits of the agile process improvements, the organizations have been able to reduce the associated overall risk with the development of the project. 
- The delivery of the initial business values is accelerated well by the agile process improvement. 
- This is achieved through a process of constant planning and feedback. 
- Agile process improvement ensures that the business values are maximized throughout the development process. 
- With the API’s iterative planning plus feedback loop, it becomes possible for teams to align the software process with the business needs as required. 
Another major benefit of the agile process is that the software development process can adapt to the ever–changing requirements of the process and business. 
- By taking a measure and evaluation of the status based up on the amount of work and testing done, visibility can be obtained to a more accurate value. 
- The final result of the agile process improvement is a software system that is capable of addressing the customer requirements and the business in a much better way. 
- By following an agile process improvement program, not only just deployable, tested and working software can be delivered on an incremental basis but also increased visibility, adaptability and values are delivered earlier in the software development life cycle. 
- This proves to be a great thing in reducing the risk associated with the project. 
- There are a number of problems with the traditional development methods. 
In a research it was found that the waterfall style development methodology was the major factor in the contribution of failure of the software. 
- Some other software could not meet the real needs. 
- They had the inability in dealing with the changing requirements and late integration. 
- All this has proven that the traditional development methods prove to be risky as well as a costly way for building software. 
- Thus the majority of the industry has turned towards agile development.
- There is a continuous feedback input from the customers and a face to face communication among all the stake holders. 
- The business needs associated with the agile process improvement are ever changing. 
- Organizations want quick results from what they invest. 
- They want their improvement programs to keep pace with these changing business needs. 
- The agile process improvement is composed of several mechanisms using which all this can be achieved. 
- Working iteratively lets you deliver the product before the deadline to the customer. 
- It lets you deliver only the things are actually required i.e., it does not let you waste your time on the un-required things. 
- Also, early and regular feedback from the customer lets you deliver the product with quality as desired by the customer.
- Agile projects are distributive in nature i.e., the work is divided among people. 
- Agile software development is still an immature process and there is a need for improving it for the betterment of the software industry. 
- Agile process improvement is one way to do this.


Sunday, March 3, 2013

What is the need of Agile Process Improvement?


It is commonly seen that a number of change projects are designed and published but none of actually goes into implementation. Most of the time is wasted in writing and publishing them. This approach usually fails. We should stop working with this methodology and develop a new one. Below mentioned are some common scenarios in the modern business:
  1. Developing a stronger project
  2. Changing the people working on it.
  3. Threatening that project with termination
  4. Appointment of a committee that would analyze the project
  5. Taking examples from other organizations to see how they manage to do it.
  6. Getting down to a dead project
  7. Tagging a dead project as still worth of achieving something.
  8. Putting many different projects together so as increase the benefit.
  9. Additional training
-Drops in the delivery of the normal work always follow a change. 
-Big change projects are either dropped or rejected.
-It all happens because the changes introduced by such projects are mandatory to be followed.
-This threatens the normal functioning of the organization. 
-So, the organization is eventually compelled to kill the whole process and start with the old way of work again. 
-Instead of following this approach, a step by step process improvement can be followed that is nothing but the agile process improvement. 
Now you must be convinced why agile process improvement is actually needed. 
The changes needs to be adaptive then only the process will be balanced. 
- An example is the CMMI maturity level. It takes 2 years approx. for completion and brings in the following:
  1. Restructuring
  2. New competitors
  3. New products
-Only agile methods make these changes adaptive in nature.
-The change cycles when followed systematically produce results in every 2 – 6 weeks.
-Thus, your organization’s workload and improvement stay perfectly balanced. -The early identification of the issues becomes possible for the organizations thus giving you it a chance to be resolved early. 
-By and by the organization learns to tackle the problems and how to improve work.
-At the end it is able to adapt to the every changing needs of the business.
-The responsibility of the deployment and evaluation of the improvement is taken by the PPQA. 
-Whole process is implemented in 4 sprints:
  1. Prototyping
  2. Piloting
  3. Deploying
  4. Evaluating
-A large participation and leadership is required for these changes to take place.
-Some other agile techniques along with scrum can also be used in SPI.
-We can have the improvements continuously integrated in to the way the organization works. 
-The way of working can also be re-factored including assets and definitions by having an step by step integration of the improvements.
-Pair work can be carried out on improvements. 
-A collective ownership can be created for the organization. 
-Evaluations and pilots can be used for testing purpose. 
-In order to succeed with the sprints is important that only simple solutions should be developed. 
-An organization can write the coaching material with the help of the work description standards.
-This sprint technique helps the organization to strike a balance between the improvement and the normal workload. 
-In agile process improvement simple solutions are preferred over the complex ones.
-Here, the status quo and the vision are developed using the CMMI and SCAMPI. 
-Status quo and vision are necessary for the beginning of the software process improvement.
-SPI when conducted properly produces useful work otherwise unnecessary documentation has to be produced.
-An improvement in the process is an improvement in the work. 
-Improving work is what that is preferred by people. 


Friday, March 1, 2013

What is an Agile Process Improvement?


A process improvement program is successful only when the meaning of the word ‘process’ is clearly understood. Process means work. So when one improves, the other one also improves. The quality of the software depends a lot on the process. Whenever a change is introduced, a temporary drop in performance is always recorded. In most cases what happens is that the organization stops the implementation of changes fearing the disruption in the normal work since so much effort is required. To avoid such situations, the changes need to be adaptive. It is the agile process improvement that makes this possible. You might say that such a way of iterative improvement is not new. Well, the agile techniques introduce discipline in the whole program.


Stages of Agile Process Improvement

The following are the stages of the agile process improvement:
  1. Initiating:
Ø  Stimulus of change
Ø  Set context
Ø  Build sponsorship
Ø  Charter infrastructure
  1. Diagnosing:
Ø  Characterize current and desired states
Ø  Develop recommendation
  1. Establishing:
Ø  Set priorities
Ø  Develop approach
Ø  Plan actions
  1. Action:
Ø  Create solution
Ø  Test solution
Ø  Refine the solution
Ø  Implement solution
  1. Learning:
Ø  Analyze
Ø  Validate
Ø  Propose future actions

- The improvement cycles are meant to be followed systematically so that the results might be obtained in time ranging from 2- 6 weeks.
- The whole process lets you maintain a balance the workload as well as the improvement. 
- The flow of the process is as follows:
  1. Prioritized list of improvements
  2. Detailed plan for the current cycle
  3. Implemented improvement
  4. Feedback
- After this process, the following becomes possible for the organization:
  1. Identification and resolving of the issues earlier in the cycle.
  2. Learning process regarding how to tackle difficulties and working of this process.
  3. Adaption to the business needs that keep changing.
  4. Giving response to the feedback.
- The sponsor holds the responsibility for prioritizing the improvement backlog at the start of each sprint. 
- Also, he is the one responsible for ROI. 
- Prioritization is a good tool for the sponsor to direct the change. 
- Using prioritization, the goals and feedback can be revised from quality assurance. 
- A focus can be kept on the benefit received from each improvement cycle. 
PPQA deploys and evaluates the improvement in organization in every sprint. - The improvement package consists of 4 sprints namely:
  1. Prototyping
  2. Piloting
  3. Deploying
  4. Evaluating
- Active participation and leadership is required for a change to take place. 
- An endorsed vision and status quo is required for the beginning of the process. 
- Both of these are established via SCAMPI and CMMI. 
- The change is led by the management on an everyday basis.
- An excellent description is provided by the generic practices of CMMI for the leadership purpose.
- Similarly participation is a key element that is facilitated by the change team. - A vision is required for initiating the improvement project. 
- The initial improvement backlog is defined by 3 things namely scrumMaster, change team and the work owner i.e., the sponsor all based up on an assessment. 
- The organization is facilitated by the change team.
- With each sprint a tangible improvement is delivered. 
- The change is led by the management in a sprint.
- The effect introduced by the change is evaluated at the end of each sprint by PPQA. 
-The new improvements are defined by the work-owner who is also responsible for adding those in to the backlog of improvements and prioritizes it.
-Commitment is supported at the end of the sprint by appraisal.
-The improvements can also be continuously integrated in to the organization’s way of working. 


Thursday, February 14, 2013

Explain Telerik TeamPulse?


About Telerik TeamPulse

- Telerik TeamPulse has been developed by Telerik as an agile project management tool in the year of 2010. 
- One of the characteristic features of the TeamPulse is that it can be integrated as well as hosted as local Microsoft team foundation server 2008, 10 and 12 services. 
- However, it cannot be integrated with the Microsoft visual studio.
- This Telerik product is available under commercial license. 
- The features of TeamPulse have been mentioned below:
  1. Bug tracking
  2. Integration with the telerik’s web UI test studio
  3. Time tracking
  4. Backlog management
  5. E – mail notifications
  6. Cross – project dashboard known as xView and developed with html5.
  7. Task board
  8. Storyboard with WP limits
  9. TeamPulse can be integrated with Microsoft TFS (team foundation server) 2008, 2010 and 2012.
  10. Requirements manager
  11. Best practices analyzer
- The extension provided with the Telerik TeamPulse is the TeamPulse ideas and feedback portal which is based on html and is compatible with html5.
- Since TeamPulse is commercial software, it is not available for a hosted solution but it is to be used only on premise. 
- When you add TeamPulse to TFS the planning, tracking and collaboration improves automatically.
- With the real time project intelligence of Telerik TeamPulse you can improve decision making power. 
- It provides you with up-to-date views of the status of the project. 
- By using TeamPulse, you bridge the boundaries between the team members and their geographical location i.e., the communication is improved. 
- This tool has been exclusively designed for scrum and kanban teams i.e., any of these either kanban or scrum or scrumban can be used.
- It has been designed to reduce the delivery time, eliminate the waste and improve the work flow. 
- It also provides you a convenient way for collecting and managing the customer feedback. 
- It lets you create products that your customer actually needs. 
- TeamPulse lets you manage project well with the following:
  1. Work burn down
  2. Velocity
  3. Cycle time
  4. Iteration delta
  5. Agile best practices and a number of other reports. 

- Telerik TeamPulse favors most of the agile projects.
- It lets one plan, manage and monitor the results thus improving the overall process. 
TeamPulse has got a rich interface with in–context guidance making the integration with TFS faster. 
- Its other features include:
  1. Automatic notifications
  2. Bug tracking
  3. Gantt charts
  4. Interactive gantt charts
  5. Privacy settings
  6. Project templates
  7. Reporting
  8. Scheduling
  9. Task feedback
  10. Workload
  11. Dashboard
  12. Email integration
  13. Issue tracking
  14. Messaging or IM
  15. RSS feed
  16. Collaborative
  17. Issue tracking system
  18. Risk management capabilities
  19. Web application
- The tool has not got any remote capability features. It comes with the following resource management features:
  1. Time sheets
  2. Compare project
  3. Management software
- Teampulse has been developed with the view that all the clients, scenario and environment differ from each other.
- Large enterprises require a tool that is capable of scaling their workload. 
- Teampulse fits every scenario even though if you require some time to master it. 
- Firstly, you need to set up the project info, template, iterations. 
- Then you need to create your team and lastly take a view of the summary of your project. - It is recommended by the system to start with the stories.
- Being an enterprise tool, it has got many features which might make you feel like it might be quite complex to use. 
- But it is quite user friendly. 




Thursday, January 17, 2013

What is meant by Behavior Driven Development (BDD)?


BDD or Behavior Driven Development is one of the most important development approaches in the field of software engineering and is just a modified implementation of the TDD or test driven development. It actually combines the guiding principles and general techniques of the test driven development with the combined ideas from two sources namely:
  1. Domain – driven design
  2. Object – oriented analysis and design
- The behavior driven development thus provides a shared process and tools to business analysts and software developers for their collaboration on the software development process.
- Ideally, behavior driven development represents an idea regarding the management of the software development process by both technical sight and business interests.
- It is assumed in this approach that the specialized software tools are being used to provide support to the development process. 
- The specialized tools thus involved have been developed especially to be used in projects following the BDD approach. 
- They can be considered as special tools that supports test driven development. 
- The primary purpose of these tools is to automate the ubiquitous language statements around which the BDD process is centralized. 
- Agile software development gets successful only when it is considered from the beginning. 
- On the contrast, in some projects this is the last thing to be considered which means that there is no sustainable operation in the websites that serve purposes other than blogging.
-  A blogging web site is just a software that is just modified by the users as it is ready for use. 
- However, BDD and TDD provides the only ways for achieving this goal. 
- The word ‘driven’ in TDD signifies that the test cases are written first and then the code for passing the test. 
- TDD is actually a low level methodology of accomplishing tasks and is sort of developer oriented. 
- On the other hand in BDD, the description of the tests is written in a natural language, thus making the tests more accessible to people outside the development team. 
- Such descriptions can describe the functionality in the same way as done by the specifications. 
Dan North was the person who actually brought the concept of behavior driven development in response to the issues experienced in implementing the test driven development such as:
  1. From where to start testing?
  2. What is to be tested?
  3. How much should be tested in one turn?
  4. How the reason for the failure of the test is to be understood?
- At the heart of the behavior driven development approach lies the approach to acceptance testing and unit testing which were again identified by North. 
- He emphasized that the acceptance tests should be written using the user story frame work. 
- Thus starting from the scratch, the development of the BDD approach continued over a couple of years and finally we have it as a communication and collaboration framework. 
- It has been designed especially for the QA people and business participants involved in a project.
- The agile specifications, BDD and testing eXchange meet highlighted the following characteristics of BDD:
  1. Second generation methodology
  2. Outside – in approach
  3. Pull based
  4. Multiple stake holder support
  5. Multiple scale generation
  6. High automation process
  7. Agile methodology
- Further, it was said that it involves a cycle of interactions with outputs that are well defined and results in delivery of working software that makes sense. - First, BDD frame work that came in to existence was Jbehave which was followed by Rbehave–a story level BDD ruby frame work.
- All these frameworks were later replaced by cucumber testing tool. It was developed by Aslak Hellesoy. 


Facebook activity