AGILE CRASH COURSE UDEMY
Table of Contents
Agile Principles⌗
- Customer satisfaction by early and continuous delivery of useful software.
- Welcome changing requirements, even late in development.
- Working software is delivered frequently (weeks rather than months).
- Close, daily cooperation between business people and developers.
- Projects are built around motivated individuals, who should be trusted.
- Face-to-face conversation is the best form of communication (co-location).
- Working software is the principal measure of progress.
- Sustainable development, able to maintain a constant pace.
- Continuous attention to technical excellence and good design.
- Simplicity- only build what is really essential.
- Self-organizing teams.
- Regular adaptation to changing circumstance.
What does MVP stands for?⌗
MVP is an acronym for Minimum Viable Product. It basically means keep it simple!!! Don't build a Ferrari if all you need is a skateboard!
Key Concepts in Agile⌗
1. User Story Example:⌗
–> As a Spotify podcast listener, –> I want to save podcasts as my favorites. –> So that I can create my own custom list of favorite podcast.
1. User Story Format⌗
- WHO: As a
<user role>
- WHAT: I want to
<action>
- WHY: So that
<value>
Acceptance Criteria⌗
1. Acceptance Criteria Format⌗
- Given the Spotify app displays podcasts.
- When i click the favorite icon that is displayed by each individual podcast.
- Then the podcast gets saved
- And is displayed in my favorite list.
Given/When/Then Format:⌗
- Given: Context or pre-condition
- When: Some action is carried out.
- Then: Observable outcomes and expected results.
How to Verify if we wrote a good and effective user story?⌗
{INVEST}⌗
2. Story Points⌗
Story points Story points are a relative unit of measure to assess whether a user story is big or small. You can use different scales for story points (e.g. 1, 3 or 5; t- shirt sizes s, m, l, xl, xxl).
3. Product Backlog⌗
Product Backlog An ordered list of everything that might be needed in the product (also known as Master Story List).
4. Sprint Backlog⌗
The set of Backlog items selected to be delivered over a period of time.
5. Velocity⌗
Number of Story Points delivered over a sprint.
6. Swimlanes⌗
A visual representation of stories (y axis) vs. status on the kanban/agile board: To Do; Doing; Done (x axis). Swimlanes let the team see progress on individual stories, while highlighting specific areas that need attention.
7. Minimum Viable Product (MVP)⌗
The bare minimum product that meets the client’s expectations. Includes all must haves and excludes all nice to haves (no bells and whistles).
8. Release Comprised of several iterations or sprints.⌗
9. Sprint⌗
A period of time in which the team will work on a defined set of user stories.
Before you start doing Agile…⌗
Start with Sprint O (Planning).
- Define who will be part of the team and which role each person will play.
- Agree with the team on days and times for the Agile rituals.
- Get your physical or digital tools ready (e.g. Kanban board).
- Make sure you have done the due diligence required for the project (e.g. business case, budget, key requirements, etc.) - yes, you still need it, just keep it lean.
- Determine any constraints that are part of your project (budget, time, business cycle, etc.).
- Define which days you will release, test and sprint (e.g. releases or push to production will be done on a Thursday morning).
How do I start doing Agile?⌗
At its core, Agile does the same thing you and I do when faced with too much to do and not enough time.
- You make a list > feature or what needs to be done (a.k.a. user stories)
- You size things up > estimate the effort required for each user story by assigning a unit of measure (a.k.a. story points)
- You set some priorities > put most important story points at the top of the list (backlog), which will be the first you take for the upcoming sprint.
- You start executing > working through user stories (delivering value) over a period of time (a.k.a. sprints)
- You update the plan as you go > you reflect on what worked and what didn’t and adjust (a.k.a. retrospectives).
Agile Case Study: How to break down a very complex project into manageable tasks
Breaking down a complex project into manageable tasks is fundamental in Agile methodologies. Here’s a simplified step-by-step process:
1. Define the Vision: Start with the end goal or the main objective of the project. What are you trying to achieve? This can be documented in a vision statement or a product roadmap.
2. Create Epics: An epic is a large chunk of work that can be broken down into smaller tasks. It’s more granular than the vision but not as detailed as individual tasks. For example, “User Authentication” might be an epic for a software project.
3. Develop User Stories: For each epic, create user stories. A user story is a description of a feature or requirement from an end-user perspective. It typically follows the format: “As a [type of user], I want [an action] so that [a benefit/a value]”.
4. Break Down User Stories into Tasks: A user story can often be broken down into multiple tasks. For instance, for the user story “As a user, I want to reset my password”, tasks could be:
– Design the “Forgot Password” interface.
– Develop backend logic for password reset.
– Implement email service for sending reset links.
– Test the password reset functionality.
5. Estimate Tasks: Once tasks are identified, the team can estimate the time or effort required for each task. In Agile, this could be in story points or hours, depending on the team’s preference.
6. Prioritize: Determine the order of importance for your user stories and tasks based on business needs, dependencies, risks, and other factors.
7. Plan Sprints: In Scrum (a type of Agile methodology), work is divided into sprints, which are time-boxed iterations (often 2-4 weeks). Place your prioritized tasks into these sprints based on the team’s capacity and the project timeline.
8. Review and Adjust: After each sprint, conduct a retrospective. Discuss what went well, what didn’t, and how processes can be improved. This feedback loop ensures that the project remains adaptable and the team continues to improve.
9. Maintain a Backlog: Not all tasks or stories will fit into the immediate sprints. Keep a well-maintained and prioritized backlog of these items. Over time, some backlog items might become irrelevant or new ones might be added.
10. Continuous Communication: Foster an environment of open communication. Ensure that team members can discuss challenges, clarify doubts, and collaborate on solutions. This keeps everyone aligned and ensures that tasks are accurately defined and understood.
Remember, the goal of Agile is flexibility and adaptability. As you move through the project, it’s okay (and expected) that tasks, priorities, and even the broader scope may change. The key is to maintain communication and ensure that the team is always working towards the most valuable outcomes for the project.
Case Study⌗
Let’s take the hypothetical scenario of developing a new e-commerce platform:
Vision: Create a user-friendly e-commerce platform where users can buy handcrafted products from local artisans.
Epics:
- User Authentication
- Product Browsing
- Shopping Cart Management
- Checkout and Payment
- User Reviews and Ratings
User Stories (for the ‘User Authentication’ Epic):
6. As a new visitor, I want to register for an account so I can make purchases.
7. As a registered user, I want to log into my account to view my order history.
8. As a user, I want to reset my password in case I forget it.
Tasks (for the ‘Reset password’ User Story):
9. Design the “Forgot Password” interface.
10. Develop backend logic for password reset.
11. Implement email service for sending reset links.
12. Test the password reset functionality.
Estimate Tasks:
13. Design interface – 8 hours
14. Backend logic – 5 hours
15. Email service implementation – 3 hours
16. Testing – 4 hours
Prioritize:
17. User registration and login (critical for user acquisition)
18. Product Browsing (core feature)
19. Checkout and Payment (necessary for monetization)
20. Shopping Cart Management
21. User Reviews and Ratings (can be introduced as an enhancement in version 2)
Sprint Planning:
– Sprint 1: Complete the design and development of user registration and login, start on product browsing.
– Sprint 2: Complete product browsing and start on shopping cart management.
… and so on.
Review and Adjust (after Sprint 1):
– Found that users want social media login options.
– Adjust upcoming sprints to integrate social media authentication.
Backlog Items:
22. Implement a recommendation system based on user’s browsing history.
23. Offer gift wrapping options during checkout.
24. Create a loyalty rewards program.
Throughout the project, the team meets daily for stand-ups to discuss progress, blockers, and next steps. They also engage with stakeholders frequently to ensure the platform is aligning with business goals and user needs.
After the launch of the e-commerce platform, iterative feedback is gathered from real users, and the team continues to enhance the platform based on this feedback, ensuring its success and adaptability in the market.
Now, let’s evolve the e-commerce platform example by focusing on a comprehensive database design and implementation for it.
Vision: Develop a robust and scalable database for the e-commerce platform to efficiently manage products, user data, transactions, and reviews.
Epics:
25. Database Design
26. User Data Management
27. Product Data Management
28. Transaction Data Management
29. Reviews and Ratings Data Management
User Stories (for the ‘Product Data Management’ Epic):
30. As an admin, I want to add new products to the database with all related data points to list them for sale.
31. As a system, I need to categorize products based on several attributes (e.g., type, artisan, price range) to aid in product searching and filtering.
32. As an admin, I want to update or delete product details to maintain accurate inventory and product information.
Tasks (for the ‘Add new products’ User Story):
33. Create a table ‘Products’ with columns: ProductID, ProductName, Description, Price, ArtisanID, CategoryID, StockCount, ImageURL, etc.
34. Develop an admin interface for entering product data.
35. Integrate data validation checks to ensure product data integrity.
36. Implement backend logic to insert product data into the ‘Products’ table.
37. Test the product addition functionality.
Estimate Tasks:
38. Create ‘Products’ table – 3 hours
39. Design admin interface – 10 hours
40. Data validation checks – 5 hours
41. Backend logic for data insertion – 8 hours
42. Testing – 5 hours
Prioritize:
43. User Data Management (to support user registration and login)
44. Product Data Management (to list items for sale)
45. Transaction Data Management (essential for sales)
46. Reviews and Ratings Data Management (for user feedback)
47. Database Design (constant across all other epics, foundational)
Sprint Planning:
– Sprint 1: Set up initial database schema, focus on user data management.
– Sprint 2: Focus on product data management and start transaction data management.
… and so on.
Review and Adjust (after Sprint 1):
– Found that users also want to store multiple shipping addresses.
– Adjust upcoming sprints to add a ‘UserAddresses’ table in the database schema.
Backlog Items:
48. Implement database archiving for older transactions.
49. Design data redundancy and backup protocols.
50. Analyze database performance and optimize queries.
Throughout the project, the database team collaborates with frontend and backend teams to ensure seamless data flow. Regular backups, testing, and performance checks are scheduled to maintain data integrity and system health.
Once the database is up and running, periodic audits and optimizations are conducted based on system usage and growth patterns, ensuring its scalability and reliability.