Agile
Agile Software Development
Notes on MIT Lecture Youtube
- Definition. Project management is planning organizing, securing, motivate and controlling the resources to successfully complete a project.
"Fast, good, cheap. Pick two! PM chooses them."
Old Model - Waterfall
Waterfall does each of the stages sequentially:
- Gather requirements/spec = define design + determine concept
- all features, budget, resources, determine constraints to have meaningful design
- Pre-production. Given all assumptions in design and concept you test on small case.
- Build product, e.g. Alpha/Beta version. Add more testing.
- Release/Maintenance.
Problem: Testing is all at the end, when the team can't respond to it usefully.
Agile
Agile manifesto:
- Individual interactions over processes and tools (talk to someone instead of sending requests over)
- working software over comprehensive documentation (prototypes > documentation)
- customer collaboration over contract negotiation
- responding to change over following a plan
Agile model: You do small iterations on the waterfall stages. Deliver small chunk of results at each iteration: Gather requirements/feedback, pre-production, test, release on each of the features.
Steps of each iteration:
- You do a little bit of design
- You do a little bit of implementation
- Test it does what you expect
- Review your results, plan the direction for next iteration.
Agile project management helps you spend less time designing features that users do not want and spend more time on features that users do want. Agile does not help you write code faster but helps you focus on writing the code that is important to users.
Sprint is the iteration cycle
Scrum vision's statement:
- transparency (everybody in the team should stay informed and does decision)
- inspection (everything done by the team is inspected)
- adaptability
Scrum is one of the agile methodologies (there are other as well). Scrum is an agile process most commonly used for product development, especially software development. Scrum is a project management framework that is applicable to any project with aggressive deadlines, complex requirements and a degree of uniqueness. In Scrum, projects move forward via a series of iterations called sprints. Each sprint is typically two to four weeks long.
In scrum the team has the responsibility to manage the project (no lead). Scrum puts project management responsibility on the shoulders of the team.
Anatomy of a sprint:
- meetings: sprint planning, daily scrum (stand ups), sprint review, retrospective
- artifacts/tools: product backlog (feature list for the whole project), sprint backlog(tasks work in the sprint)
In every sprint you do a little bit of planning/design/implementation/testing.
At the start of each sprint the team looks at the product backlog/ holds sprint planning meeting, move from product backlog to sprint backlog, turns them into smaller tasks. Hold daily stand ups talking about your tasks.
At the end of the sprint you have a sprint review - check your sprint backlog. Then have a retrospective where the team improves the way they work together. Ready for a new sprint planning meeting.
Scrum teams have 3 type of members:
- regular team members
- product owner (creates the product backlog, has a the whole vision of the product)
- scrum master (runs the meetings, set up meetings and make sure they happen, keep backlog straight, keep communication is good in flow). Does not make decisions, is not the producer. Scrum master is the person who keeps think running smoothly.
Product backlog is an organized prioritized list of everything that will be needed in the product and is the single source of requirements for any change to be made in the product.
Product backlog = maintained and prioritized feature list managed by the Product Owner
User Story = very specific way to describe a feature. Phrase your feature in a clearly testable and understandable manner
User Story are created by users (to ask for something to get done) As The (User,Designer, Artist) I want (describe something testable here) So that (explain reason).
Agile is about making sure you do not spend time on features which users will not use. That is why we have user stories. (explain reason) part in the end is a double checker for the implementer of the feature to be sure that the user indeed needs the feature they are asking for.
Making effective Team meetings:
- time-boxing (define time you spend on a meeting before the meeting)
- clear agendas
- involved participants
all meetings in scrum should be time boxed
Sprint planning meetings:
- create sprint backlog
- set sprint planning goal and deliverables and time it would take to do it
End of sprint. Sprint review meeting
- show deliverables
- review and evaluate the product
- change and update product backlog
- all about reviewing the product
Retrospective
- all about reviewing the process
- generate shortlist of potential improvements in the future
- forward looking meeting, see what we did in the past to improve the future
Daily Scrum (Stand up)
- keep team accountable to each other
- combined with the scrum board (board in the jira)
- what did you do yesterday, what are you going to do today, what blocks you.
Buzzwords
Agile software development, Scrum, Project management, Waterfall, Agile manifesto, Sprint, Scrum Master, Product Owner, Scrum Board (Trello), Sprint planning, Sprint, Retrospective, Sprint Backlog, Product Backlog, User Story
What is Agile
Youtube video notes
Agile is a set of Values and Principles = collections of believes of how to develop software.
Agile gives a foundation of how to develop software and does not make concrete points to follow. Main message of Agile is in its MANIFESTO. Agile principles does not tell you what to do but give you only general direction.
Agile principles are used to create agile practices which are team-specific. Agile practices are defined by agile frameworks such as scrum, kanban, lean, extreme programming XP
Atlassian Agile coach
Teams choose agile so they can respond to changes in the marketplace or feedback from customers quickly without derailing a year's worth of plans. "Just enough" planning and shipping in small, frequent increments lets your team gather feedback on each change and integrate it into future plans at minimal cost.
Agile frameworks have emerged such as scrum, kanban, lean, and Extreme Programming (XP). Each embodies the core principles of frequent iteration, continuous learning, and high quality in its own way.
The way each team practices agile should be unique to their needs and culture. The key to doing agile right is embracing a mindset of continuous improvement. Experiment with different practices and have open, honest discussions about them with your team. Keep the ones that work, and throw out the ones that don't.
Agile Methodology, as the name suggests, is a set of methods and practices where software development and project management take place to deliver customer-centric products in a short development cycle known as sprints. It is an iterative approach and each iteration is specially designed to be small and manageable so that it can be delivered in a specific given period of time. Agile methodologies are open to changing requirements over time and encourage constant feedback from end-users. It is the most popular approach because, in this process, customers are also involved so that they can get updates regarding their product and also make sure whether or not they are meeting their requirements.