Skip to main content

Agile Overview

Agile Manifesto:

Many processes like Scrum, Kanban, Lean, Extreme Programming(XP), Crystal Clear, Agile Unified Process, Dynamic Systems Development Method, Feature Driven Development, Agile Modeling what they were doing is same so they came up with Agile Manifesto which is set of 4 Values and 12 principals.

The 4 Values are:
  1. Individuals and Interactions Over Process and tools:
    As process and tools avoid direct interactions the agile manifesto values Interactions.
  2. Working Software Over  Documentation:
    Giving value to Woking software than the document which describes the software.
  3. Customer collaboration Over Contract:
    We should not stick to contract, as technology changes.
  4. Responding to change over plan
    We should unfollow plans and de prioritise tasks which take longer time 







The 12 Principles of Agile Manifesto:



Underlying Agile Concepts:

  1. Short Feedback Loops
  2. Just in Time Requirements and Design
    Software does not need blue prints like before building home, so development should be done based on TODO lists and requirements and design should be provided at last responsible movement (just before staring work)
  3. Delivering Incremental Value:
    Should keep adding values like features or bug fixes
  4. Release ready deliverables

  5. Sustainable pace
    There should be equal/sustainable work load on developers. It should be not be up (working late nights) and down (very low work load)
  6. Lean management hierarchy
    Smaller number of people must make decisions, if more people makes decision then it takes longer to decide.
  7. Self organising teams
    Manage themselves and make decisions
  8. Trust, courage and transparency 
  9. Continuous Delivery
  10. Embracing Change
  11. Inspect and adapt

Scrum is most widely adapted Agile Process




Roles:

Scrum allows people(common minded) to talk, It does not allow us vs them type of environment. So we have roles


  1. Product Owner:

    * Maximise the product value
    * Manage product backlogs
    * Represents the user
    * Single Person (cannot be many people)
  2. Scrum Master: (Not a Product Manager)

    Unlike PM(we report to project manager), We are not reporting to Scrum master, They(Scrum Maters) just make sure we follow the rules.

    * Shepard of Scrum(group) / Guardian, they should know the process and values

    * Servant Leader: If team needs education/guidance they will help how to get to the point but not tell people how to do.

    * Remove Impediments: Like if team does not have software/Servers down

    * Resolves Conflicts: within team/ soft skills / help team to get back to work.
  3. Development Team:
    Business Analysts / Developers / QA / Designers

    * Should be Cross Functional
    * Should be Self Organising
    * Should be Highly Collaborative (Helping each other).
        Cooperative - Same Goals / Do separate things / Judge differently
        Collaborative - Same Goals / Give up our own responsibility and help others share others work.
    * Should be smaller teams 5-9 members.
Events in Agile:
  1. Sprint Planning:

    * Occurs at the beginning of the sprint and what will delivered is decided. depending on past performance and capacity.
    * Determine how it will be delivered. This creates sprint backlogs
  2. Sprint:

    * It is time boxed to 1 month or less (usually 2 weeks)
    * It has clearly stated sprint goal.
    * End of sprint should have releasable work.
    * Scope is set by scrum team (developers/QA)
  3. Daily Scrum (Standup Meeting)

    * It is time boxed to 15 minutes (5-9 members)
    * Should discuss work done yesterday
    * plan work for today
    * Talk about Impediments / blockers
  4. Product Backlog Grooming (Refinement meeting):

    * Clarify and estimate new items
    * Product owner answers question and scrum team gives high level estimates and then item is kept in backlogs.
    * Review priority items
    * Less detail on lower priority items - low priority item does not need details, they should be ignored some times.
    * Around 10% of time of sprint should be spent on backlog grooming (i.e., for a 2 week sprint 8 hours should be spent on grooming, clarifying questions, providing estimates, ..)
  5. Sprint Review:

    * Demoing the product increment (new version/things implemented developed in current sprint)
    * Should take feedback of stakeholders. update product backlogs
    * Plan what to do next.
    * Review release plan
  6. Sprint Retrospective Meeting:

    * Scrum team inspecting and adapting / reviewing what went good/bad in sprint, what needs to be changed. whats working, what are improvements. lessons learnt. Make action item for next sprint.
    * What went well ?
    * What can we do better ?


Comments

Popular posts from this blog

Memory Management in iOS

The two basic rules of Memory Management are Objects obtained with  -alloc ,  -new ,  -copy , or  -mutableCopy  have a retain count of one. For objects created with any other method, assume they have a retain count of one but will be autoreleased . If you need to keep them in memory, you need to explicitly retain them. Lets see in detail how the memory management works, Memory management concepts are of critical importance and every Cocoa programmer should take the time to master them. Memory management in Cocoa comes in two flavors:  classic retain counts  and  garbage-collected . The question deals with the retain count flavor, so I will focus on that one. The retain count memory management scheme in Cocoa works on the basis that an object will remain in memory as long as other objects claim to be "interested in it." The Objective-C runtime keeps track of this "interested in" relationship with a simple number: the  retain c...

Advanced Debugging with Xcode and LLDB - WWDC 2018

Advanced Debugging Tips and Tricks: Injecting Code at runtime We can change values of variables at runtime while debugging (here variable_name is a Bool) expression variable_name = false  Here we are injecting value at runtime, so no need to run again to see the effect. (Other eg.,  expression animator.delegate = self) Under Xcode > Preferences > Behaviours > Running > Pauses > Check Show Tab Named, In order to show new tab while a breakpoint is hit. We can set other behaviours as well. We can add symbolic breakpoints on methods in frameworks. like This is in objective c because UIKit is in objective c. In order to find the values/parameter of a function inside framework, we can use For expression -[UILabel setText:] po $arg1 <UILabel ****> po (SEL)$arg2   "setText:" po $arg3 "0 ft" We can set symbolic breakpoints in 2 ways 1. By clicking plus in bottom left and choosing symbolic (Cons: Sets BP in all places) 2. By adding a breakpoi...