# Process As discussed, one of the objectives of the retreat/hackathon will be to develop skills for collaborative work and software development. As such, it was proposed that we explore the benefits of `Agile` software development processes which have proven successful in industry. This page will collate a number of resources related to `Agile`. ## TL;DR - `Agile` is a set of project management principals - `Scrum` and `Kanban` are the two most popular Agile frameworks - I propose that `Kanban` might be best suited to the retreat/hackathon (see below for detail on `Kanban`) - I propose that we implement the `Kanban` cheat sheet linked below ## Agile From my extensive research (Google search) it seems there are a lot of resources about `Agile` and they are not all consistent. **Atlassian** wrote a good series of articles in which they define `Agile` as: > Agile is an iterative approach to project management and software development that helps teams deliver value to their customers faster and with fewer headaches. Instead of betting everything on a "big bang" launch, an agile team delivers work in small, but consumable, increments. Requirements, plans, and results are evaluated continuously so teams have a natural mechanism for responding to change quickly. https://www.atlassian.com/agile The key concepts that tend to be consistent across definitions is `Agile` is: - A set of **principles**, not a method/framework per se - An **iterative** approach that delivers **small increments** - Focus on **delivery** - Continuous **evaluation** of the process The is also an `Agile` manifesto which is based on the 12 principles of `Agile` (sew below): - **Individuals and interactions** over processes and tools - **Working software** over comprehensive documentation - **Customer collaboration** over contract negotiation - **Responding to change** over following a plan 12 principles of `Agile`: https://agilemanifesto.org/principles.html There are numerous specific frameworks based on the `Agile` principles. The two most popular seem to be **Scrum** and **Kanban**. Furthermore, both **Scrum** and **Kanban** can be combined and mixed-and-matched. ## Scrum vs. Kanban - https://www.youtube.com/watch?v=rIaz-l1Kf8w (Watch this one) - https://www.youtube.com/watch?v=F5QIqFEDv2k `Scrum` vs. `Kanban` cheatsheet: [Scrum_vs_Kanban_1.6.pdf](Scrum_vs_Kanban_1.6.pdf) ### Scrum > Scrum is a framework utilizing an agile mindset for developing, delivering, and sustaining complex products, with an initial emphasis on software development, although it has been used in other fields including research, sales, marketing and advanced technologies. It is designed for teams of ten or fewer members, who break their work into goals that can be completed within time-boxed iterations, called sprints, no longer than one month and most commonly two weeks. The Scrum Team assess progress in time-boxed daily meetings of 15 minutes or less, called daily scrums. At the end of the sprint, the team holds two further meetings: the sprint review which demonstrates the work done to stakeholders to elicit feedback, and sprint retrospective which enables the team to reflect and improve. https://en.wikipedia.org/wiki/Scrum_(software_development) Scrum in detail: https://www.atlassian.com/agile/scrum ### Kanban > Kanban is a lean method to manage and improve work across human systems. This approach aims to manage work by balancing demands with available capacity, and by improving the handling of system-level bottlenecks. Work items are visualized to give participants a view of progress and process, from start to finish—usually via a Kanban board. Work is pulled as capacity permits, rather than work being pushed into the process when requested. In knowledge work and in software development, the aim is to provide a visual process management system which aids decision-making about what, when, and how much to produce. Kanban is commonly used in software development in combination with other methods and frameworks such as Scrum. https://en.wikipedia.org/wiki/Kanban_(development) `Kanban` in detail: https://www.atlassian.com/agile/kanban Videos that demonstrate `Kanban` in somewhat condescending detail: - https://www.youtube.com/watch?v=Lib1vFmfCng - https://www.youtube.com/watch?v=LFYnkFq3ITE - https://www.youtube.com/watch?v=ColwAL-ZkFs (if you only watch one, choose this one) Kanban principles: 1. Visualise the work 2. Limit work in progress 3. Focus on the flow 4. Continuous improvement ## Agile in GitLab https://about.gitlab.com/solutions/agile-delivery/