
![]() |
Micromanager
|
Effective-manager
|
They are like less effective ‘activity directors’.
|
They are ‘effective leaders’.
|
They focus on how things are done and want the prescribed way to be followed.
|
They focus on results. They discuss the end results, constraints, issues, expectations, paths and then they give people flexibility to think and create.
|
They tell people ‘what to do’.
|
They tell people ‘why we are doing something’. They explain and discuss the reasons behind the task at hand.
|
They want everything now. They want to get all things done within the determined timelines. Often defined by them without much consideration of existing constraints.
|
They focus on ‘when’. They work with their team to define the timelines.
|
They want compliance against the policy, inflexible practices and procedures.
|
They focus on growth and continuous improvements.
|
They look their team members as subordinates.
|
They work in teams.
|
They are always hovering around their subordinates for status.
|
They hold people accountable and allow them the freedom to do what they think is correct.
|
No. |
‘Ready-Ready for user stories’ check |
Description |
Are we doing it? Yes/No
|
1. |
Is the user story well defined? |
The Actor (Who is doing the action. ‘AS A’), The Action (work done, ‘I WANT’) and Purpose (value addition in performing the action, ‘SO THAT’) should be clearly conveyed in the user story.User story template – ‘‘AS A’ I WANT SO THAT ”. |
|
2. |
Do the user story follow the INVEST model? |
The INVEST model for user story:
Independent: The story stands alone with no dependencies.
Negotiable: Story should act as a starting point of conversation during the iteration. This conversation between team members will result in details about the implemented functionality and the acceptance criteria. Valuable: It should demonstrate some well understood value to end customer. Estimable: Known story points for the user story to be completed within iteration. Small: A story should not take longer than a sprint to finish Testable: It should be easy to define and test the acceptance criteria’s.
|
|
3. |
Are we confident about the value and intent of the user story?or
Does everyone agree on the viability and usefulness of the user story? |
Which means everyone agrees that user story is important for the product and should be immediately implemented to meet the product goals. |
|
4. |
Are all known basic user story acceptance criteria defined? |
It does not need to be all acceptance criteria’s upfront. Most of them will be discovered when conversation on user story happens during the iteration. Basic expected behaviour of the user story should be clearly understood, and communicated.
|
|
5. |
Are all dependencies of user story identified? |
Tight coupling between the user stories make them difficult for prioritization and estimation. User stories can be split into two or smaller user stories or they can be combined together to be completed in single iteration to reduce the dependencies and its impacts on the readiness of the user story for iteration.
e.g., Do we need to complete some other tasks before picking this user story? Do we need to wait for availability of some items (code, components, design etc.) from other teams?
Have the dependencies among different user stories in the backlog sorted out? etc.
|
|
6. |
Is the user story sized and estimable by team? |
The early estimation of the user story is possible if we know the following:
Do I have a realistic knowledge on how long it is going to take to build the user story? It won’t be right, but it needs to be a reasonable estimate given all that I know.
Do we know at a fairly high level about the tasks to be done to complete the user story?
Do we know the story points (measure for user story) required for the user story?
Do we know our velocity (capacity and speed at which we can complete story points) for iteration?
Do we need to merge or split the user story into more granular stories for better estimation? User story should be short enough to be implemented in single iteration. Otherwise it needs to be split into two or more user stories.
|
|
7. |
Have we identified the owner; the person who will accept the user story after it is completed in iteration? |
This has to be the product owner in most of the cases. Except for technical user stories owned by engineering team.
e.g. Development of a product infrastructure component.
|
|
8. |
Have we given some thoughts on how the user story will be implemented?or
Do we need (or have) higher level solution design for the user story?
|
e.g. early UML class and sequence diagrams, or just white board sketches can help in knowing how the pieces work together.
|
|
9. |
Have we identified all implementation impacts of user story?
|
1. Are there any critical design or architecture changes?
2. Are there any impacts on the implemented code?
3. Do we need any refactoring of existing code?
4. Are there any code flow change? If yes, do we know, how will we validate the code flow or any behavioural changes?
|
|
10. |
Has the implementation team accepted the User Experience (UX) artefacts (if any)? |
Basic Wireframes or UI mock-ups should be available.
|
|
11 |
Do we have good idea on what it will take to demo the user story? |
Understanding of, what it will take to demonstrate a user story will give team an insight into the user story integration and deployment requirements. It can uncover unknown constraints for user story implementation and acceptance.
|
|
12 |
Has product owner committed and signed for the user story? |
Product owner commitment is important for acceptance of user story. |
|
13 |
Do we have our development environment ready for user story? |
Any specific server, package, library etc. required? |
|
14. |
Do we know all the required non-functional requirements (Quality concerns: performance, scalability, availability testability, etc.) which will be affected by this user story? |
Non-functional requirements (NFR) are cross cutting concerns spanning across multiple user stories implementations. User stories implementations should address these NFRs (or product quality concerns). The components created, and their implemented functionalities should positively enable required quality concerns. Create a matrix for NFR vs. components or classes created, modified and impacted by user story. Some early understanding of these NFRs, helps in reducing the design and development time of user story. It also helps in reducing any later re-work that is done to address these quality concerns. Build the NFR into the user story design and implementation. |
|
15. |
Can we implement this story in iteration?Do we need to break the story into two or more stories?Do we need to apply some constraints to the user story? |
User story should be a single iteration consumable unit. Large user stories are complex and difficult to understand, debate, implement and test. Keep it small and manageable.User stories may have dependencies on other pending user stories, availability of external libraries or API’s etc.
Knowledge of Non-functional requirements like performance, interoperability, robustness, availability etc. will also constrain and impact the readiness of the user story.
|
|
16 |
Are we making any assumptions related to user stories? |
State all assumptions related to user story. Assumptions can arise due to solution boundaries or due to lack of information. |
|
17 |
Do we have clear and shared-understanding of product and design principles and goals in context of user story? |
Prioritized Product and Design principles will help the team on the following:
1) To help in making right design trade-off decisions. They serve as clear statements of what the team believe and agree on the purpose of product and design.
2) They help in setting right stage for constructive debate, and arguments within team about the user story.
3) They create visibility and clarity in decision making, and reasoning during the user story conversation.
Product principles: Product principles guide the user story purpose. They are foundation for user story elaboration discussions; that take place in the team between developers and product owners. They bring together the product owner and implementation team on common platform. Product principles should be prioritized for clear understanding, and use in product decision making. E.g. What is more important for current release? – High usability or increased scalability to handle rapid user additions with acceptable and simple usability.
Design principles: Design principles guide the design and architecture strategy. They help in making important design trade-offs. T
Together, the clear and shared product and design principles can really ensure a smooth start of iteration. It will resolve design conflicts, help in design and implementation feasibility assessment, and quick user story acceptance and development. It helps in ensuring effective process for making early, informed, product and design decisions in iteration.
e.g. Do we need to open our API’s for user access? This will depend on out product strategy, which, if yes, will influence the user story design and time lines. It is good to know these details in advance.
|
|
18 |
Are there any requirements for specific technical skills and knowledge? |
External expertise like UI design experts, database expert etc.
|
|
![]() |
Ready-Ready for user story |
If you have practiced Test Driven Development (TDD) is that BDD drives its value from principles of TDD (which focus on incremental design delivery) where the Software development team(Product owner, Business Analyst, Development and Testers) incrementally create common and shared understanding of the next most valuable behavior to build in the system to realize the best incremental value.
This required behavior is captured as specification in Acceptance tests and its scenarios and developed incrementally using BDD with focus on Behavior of the System under envelopment not its implementation details.
BDD concepts and practices are promoted by Dan North, who realized the during his TDD training classes that TDD is too Test focused and has probkem. In his words –
“I had a problem. While using and teaching agile practices like test-driven development (TDD) on projects in different environments, I kept coming across the same confusion and misunderstandings. Programmers wanted to know where to start, what to test and what not to test, how much to test in one go, what to call their tests, and how to understand why a test fails”
Definition from Dan North, the creater of the BDD approach is as follows:
BDD Descroption from Dan North during
BDD is a second-generation, outside–in, pull-based, multiple-stakeholder, multiple-scale, high-automation, agile methodology. It describes a cycle of interactions with well-defined outputs, resulting in the delivery of working, tested software that matters.
Simple Introduction
Let’s make it simple for everyone to understand. Let’s try to understand the follow question:
Assuming What happens between team members (Product owner, Developer , Test engineer) developing a User Story?
–
BDD Practice
public class OrderVerificationTest{
@Test
public void shouldEnsureThatOrderItemsAreAvailableInInventory() {
Inventory invnt= MOCK(Inventory.class);
Order order = new Order();
order.addItem("item1");
order.addItem("item2");order.placeOrder(); //check if the invnt.checkAvailability(item) is called twice,once for each item in the order when placeOrder() is called; }}
What is the advantage?
Collaboration: BDD brings all customers (or PO, BA representations ) together in describing the behavior of the system.
Ease of implementation change: The behavior of the system under design and implemenation hardly chnages. Its the implmentation of the system behavior that can chnage. If the Behavior chareteristics are static, why not have them abstracted out in a structure which is independent of how the final implemnattion. This is great advantage of BDD. Think and
Ubiquitous language for stake holders:
Ease oif Refactoring:
Process of BDD:
Tools for BDD
1) Fitnesse
2) Twist
3) JBehave
4) Cucumber for Ruby
5) Rspec for Ruby
6) Specflow for .NET
7) CBehave: A Behavior Driven Development Framework for CLanguage for BDD:
Given:
When:
Then:Following are some good links on BDD:1) Introducing BDD by Dan North.
2) BDD is Like TDD by Dan North.
3) Short description of BDD – BDD in Nutshell by Rachel Davies
4) Wikipedia page on BDD.
5) Liz Keogh’s blog on BDD
6) IBM article. Very good example driven introduction of BDD – In pursuit of code quality: Adventures in behavior-driven development
7) BDD approach to defining and identifying stories – Whats in a story?
8) Good stackoverflow discussion
9) Another small example for JBehave BDD users by Giordano Scalzo’s Personal Blog
10) Good Presentation slides on BDD and JBehave by Nikolay Vasilev.
11)
Agile Architecture: Strategies for Scaling Agile Development