Sep 5, 2015

Practical Agile

Principles of Agile


Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

A big change is in thinking from Waterfall to Agile is that in Waterfall we know very clearly what we are building.  Indeed if we know what we are going to build, which also means we know tools, technologies, Operations, Architecture, resources, etc.  But we live in ever changing world where only time follows the same cycle minute after minute, hour after hour, and so on.
We keep time roughly constant and build in that time in iterative manner.  Our customers are in highly competitive market, they know they need vehicle but they don't know they need exact model.
A customer can give example of BMW X5, but this is not what he exactly wants.
And so we deliver in iterative manner -
One example is we first deliver a skate board, then cycle, then motorbike, then car, and customize car.

Agile is an iterative and incremental model of approaching planning, designing, developing, and delivering. Software development is a complex process where we probe, sense, and respond
In Agile we focus not only on delivery but also on early delivery.  No Big upfront planning, no big upfront design, no big bang theory, and no big phases, and neither jigsaw puzzle.

Incremental vs Iterative

Source - http://www.infoq.com/resource/news/2008/01/iterating-and-incrementing/en/resources/Patton_Incremental_Iterative_MnaLisa.jpg

An Agile team are made up of people with required skills, expertise, and authority to complete the specific task, or a minimum of all user stories in current Sprint backlog.


Best results are gained with co-located team, but I believe same results can be achieved by dispersed team with modern technologies such as web camera, webex, video conference, etc.
Daily Scrum or sometimes called Daily Standup should be done in same place with whiteboard using kanban approach, but it can also be done using tools like JIRA and video conferencing.  We used whiteboard initially, but after days we found it hard to share the whiteboard. Not everyone is updated with current state of whiteboard as it requires sharing whiteboard image after any status change of any task. When we shared whiteboard in video conferencing, some had poor connection and they were unable to view it clearly. Later we decided to also use JIRA, and then we found it hard to maintain tasks at two places - Whiteboard and JIRA. Lastly we decided to only use JIRA.
We had short development cycles and regular delivery but without pair programming. No two person have same skills and it becomes personal when they do pair programming.
Another major step is Continuous Delivery, which meant automated testing and automated build.
And Last Step is Iterative Releases

In big organizations, One simply doesn't starts with Sprint 1 instead Agile needs to be incorporated into existing established practices.
Merging and mixing methodologies will create confusion and so moving towards Agile is extremely cautious process and must be done with help of coaches and experts.
Typically we still have few - four stages - Initiation (Risk, Regulatory, ROI, etc.), Inception (Rough planning with Rough Design), Sprints (Design, develop, test, and build), Iterations(release).
A project will have a team to complete stages and team will constitute of Product Owner, Scrum Master, and Development Team (which might also include architect and tester).
Apart from above team, an organizations have secondary teams - Business Analysts, Performance Testing, Technical Experts, and other Specialists - for occasional support.

Waterfall to Agile Shift -
Practically Agile Still has Stagesand stages are same as defined in Project Management standards. I still feel there 4 major process groups -
Management & Control, Plan & Design, and Execute.
Lets forget for some time the original 5 process groups and 47 knowledge areas

Management & Control


Plan & Design
Plan & Design will also include planning for Security Requirements, Testing Requirements, and Business Requirements. Deliverable will include Signed off business requirements along with incorporating requirements into design. 3rd party contracts, review of design, and presentation of design. 

Execute

Sprints based on Scrum framework.
Source - http://techiejs.com
Outcome of every Sprint is an addition to Finished Work (Software Product).
When its decided to Release this product, then some SDLC documents need to be produced: Operational Risk Impact Assessment, Implementation Plan, Test Completion Report, High Level Operational Design, Approval, and RAID Log approval.

Tips:

A helpful article on InfoQ combined with another helped me prepare these useful tips
  1. Remove the developer urge to shrink backlog, instead remain motivated to work as planned in Sprint planning meeting, and dont get distracted by blockers.
  2. Existing project managers have experience in fixing impediments, resolving conflicts, and organization culture, so they should accept role of Scrum Master, if they wish.
  3. Office Space should be very well ordered so that multiple scrum teams can sit and work on same floor.
  4. Technologies and processes should support Agile such as Microservices, DevOps, and Cloud
  5. Automated testing, Quicker Code review, Build tools
  6. In scaled Agile, a solid coordination is required on "Definition of Done" and "Scrum of Scrums".
  7. In scaled Agile, break user stories into functions rather than one line tasks.

Below is top three Impediments for Agile Adoption by InfoQ voting, which says who to blame -
  1. Organisational culture is not aligned with Agile value.
  2. Insufficient executive support.
  3. Existing project management processes/rules

Also according to InfoQ voting, what is most important for Agile Adoption -
  1. Continous Integration
  2. Automated Testing
  3. User Stories
Share:

No comments

Post a Comment

Comment

© Shift, ShEkUP, Shape, and Surprise | All rights reserved.
Blogger Template Crafted by pipdig