agile assessment report - agilefaqs - expert agile, scrum ...€¦ · summary of our visit ......

82
Copyright © 2013, AgileFAQs. All Rights Reserved. Agile Readiness Assessment Report Dec 17-21 2012 Naresh Jain [email protected] @nashjain http://nareshjain.com

Upload: duongcong

Post on 22-Jul-2018

227 views

Category:

Documents


0 download

TRANSCRIPT

Copyright © 2013, AgileFAQs. All Rights Reserved.

Agile Readiness Assessment Report

Dec 17-21 2012Naresh Jain

[email protected] @nashjain

http://nareshjain.com

Copyright © 2013, AgileFAQs. All Rights Reserved.

This report contains...

Expectations of our visit

Summary of our visit

Our current understanding of the overall teams & processes followed

Summary of discussions with various groups within the Org.

Observations: What we found

Conclusion and Recommendations

Plan for the next 12 months

Copyright © 2013, AgileFAQs. All Rights Reserved.

Expectations from the visit

Understand current state of the organization in terms of process maturity & cultural compatibility with Agile

Formulate a strategy (plan) to improve team’s effectiveness and to take the teams to the next level

Figure out a way to make the Agile DNA an integral part of the company’s internal improvement initiative

Copyright © 2013, AgileFAQs. All Rights Reserved.

We had to understand...

Current state of affairs and how the teams operate

Key challenges faced by the team and its management

Key stakeholders and their expectations

Gaps in terms of knowledge and skill levels of the team

Historic data to understand the performance of the team

Copyright © 2013, AgileFAQs. All Rights Reserved.

Deliverables of this Assessment

Agile Adoption Roadmap (with specific recommendations for training/coaching)

Identify Potential Internal Coaches

Risks Backlog

Specific feedback to teams who were interviewed during the assessment

Basic Agile overview

Copyright © 2013, AgileFAQs. All Rights Reserved.

Summary of our visit

Copyright © 2013, AgileFAQs. All Rights Reserved.

What was done

Discussion with four teams to understand how they operate as of today

Process, Team composition, etc.

Current Org. structure

Value Stream mapping of their development process

To identify bottlenecks and gaps

Interviews and Reviews

To understand current pain points

Watching standup meetings

Observe team’s behavior

Copyright © 2013, AgileFAQs. All Rights Reserved.

Rationale Behind Agile Overview presentation

Meeting with important stakeholders to understand their expectations and pain points

Pairing with Developers

Technical Debt, Code Quality, CI and other infrastructure

Pairing with the Testers

Test plans, Test cases, building Quality into the Process

Discussions with Scrum Masters and Project Managers

Planning, Estimation, Velocity, Retrospectives, etc.

Discussions with the Business Analysts

User Stories, Product Backlog, Acceptance Criteria, Reviews

What was done...

Copyright © 2013, AgileFAQs. All Rights Reserved.

Time Meeting ParticipantsDay 1

09:00 AM - 10:00 AM Overview of teams, their structure & responsibilities, Organizational Background General Manager, Quality Head, VP of Engineering

10:00 AM - 11:00 AM Insights from the Quality Team Quality Head, Couple of Quality Leads

11:00 AM - 02:00 PM Overview of the First Project by their Project Manager and Product Owner Project Manager, Product Owner, Scrum Master

2:30 PM - 7:00 PM Detailed review of Project 1 Entire Team (Devs, QAs, BAs)

08:00 PM - 9:00 PM Discussion with CTO Office CTO, Lead Architects

Day 2

9:00 AM - 10:00 AM Day 1 retro General Manager, Quality Head, VP of Engineering

10:00 AM - 11:30 AM Insights from key Project Manager and Product Owners regarding their current challenges around existing processes Product Managers, Product Owners

11:30 AM - 02:30 PM Overview of the second Project by their Project Manager, Scrum Master and Architect Project Manager, Architect and Scrum Master

2:30 AM - 6:30 PM Detailed code review of Project 2 Entire Team (Devs, QAs, BAs)

Day 3

9:00 AM - 10:00 AM Day 2 retro General Manager, Quality Head, VP of Engineering

10:00 AM - 11:00 AM Insights from the ScrumMasters. Discussion around challenges faced by the SMs Scrum Masters across different projects

11:00 AM - 12:00 PM Executive Management meeting Executive Management

12:00 PM - 05:30 PM Overview of Project 4 by PM & SM. Followed by detailed project review PM, SM

05:30 PM - 06:30 PM Discussion with Automation Tester from Project 1 Automation Tester

Day 4

09:00 AM - 10:00 AM Day 3 retro General Manager, Quality Head, VP of Engineering

10:00 AM - 01:00 PM Agile Way of Dealing with Uncertainty in a Complex Adaptive World - Workshop Key representatives from different Projects

2:00 PM - 3:00 PM Review with Design Team on how agile’s evolutionary design fits into the company’s design process Architects from Design Team

3:00 PM - 4:00 PM Review with Analyst Team on how requirements are gathered and managed on Agile projects Analysts from Requirements Team

4:00 PM - 5:00 PM Review with Architect from CTO office to understand how they are executing projects Architects from CTO Office

5:00 PM - 6:00 PM Discussion with Project 1’s Architect Architect

6:00 PM - 6:30 PM Discussion with Project 3’s lead tester Lead Tester

7:00 PM - 8:00 PM Insights from Business Development/Sales Team to understand what customer’s are asking for & how, Agile will help them Sales and Pre-Sales Team

8:30 PM - 9:30 PM Meeting with Practice Group owners to understand how Agile will impact (help) them Practice Group Owners

Day 5

09:00 AM - 10:00 AM Day 4 retro & plan for the day General Manager, Quality Head, VP of Engineering

10:00 AM - 01:00 PM Feedback to individual teams PM and SMs from the 4 teams

01:30 PM - 06:00 PM Working on the roadmap General Manager, Quality Head, VP of Engineering

Agenda

Copyright © 2013, AgileFAQs. All Rights Reserved.

Our Understanding So Far...

Copyright © 2013, AgileFAQs. All Rights Reserved.

Org Structure

Image faded out for privacy concerns

Copyright © 2013, AgileFAQs. All Rights Reserved.

Challenges faced by PMs/GPMsHow to motivate individuals to try Agile? How to help them understand that it actually helps

How to educate/expose the teams to Agile

Changing people's mind set

Push back on daily tracking

How to educate customers so they don't take advantage of Agile in the wrong ways?

How do we Institutionalize Agile?

What is the standard Agile process with best practices?

Does Agile work with Jr. Devs?

How to build trust/faith factor in small projects?

Copyright © 2013, AgileFAQs. All Rights Reserved.

Challenges faced by PMs/GPMs...Agile Testing

Testing in pieces - bugs slip through & quality is compromised

What kind of testing is required/possible in 2 weeks sprint?

In a 5-day sprint where does QA cycle fit?

QA does not have enough time in the sprint to complete testing

What tools to use? - TFS, Testing?

How to set up Information radiators - task boards, burn down,...?

How to manage risk inside Agile?

Changing implicit behaviors

Not thinking through end-to-end scenarios

No documentation/specs - where to draw the line?

Copyright © 2013, AgileFAQs. All Rights Reserved.

Challenges faced by PMs/GPMs...How to freeze requirement before the next sprint (esp. for distributed teams)

How to manage clarification and expanding scope inside the sprint?

How to lock down the scope?

3-4 months Fixed price projects & Agile? - CRs or not?

Agile Planning

How to do Estimations in Agile?

How to avoid burn outs?

How to provide better & more reliable Visibility/Projections?

Productivity

How to improve Velocity?

How to measure and show productivity improvements?

What are the quality and productivity metrics?

Copyright © 2013, AgileFAQs. All Rights Reserved.

Challenges faced by Certified ScrumMastersNeed a better way to handle planned and unplanned releases

On a past project, working with Distributed Teams .i.e. team members belong to different companies - it was very difficult to get visibility/updates from them

Convincing customers to implement Scrum in the proper way

Management Awareness - mix up of roles (PM, SM)

Teams still waiting for direction from PM/SM

Education Gap

Very few stories are picked up by the team

They don't like changes in plan

Automation vs. manual testing

Questions around QA process in scrum

Lack of requirement clarity

Metrics?

How to deal with sprint spillovers?

Copyright © 2013, AgileFAQs. All Rights Reserved.

CSM - Advantages of Scrum

Get to see something early

Early time to market - don't have to wait for everything to be completed

Collaboration

Changes can be incorporated - pleases the customer

Higher feature ownership

Continuous Integration

There are good points, but some core benefits were left out.

Copyright © 2013, AgileFAQs. All Rights Reserved.

CSM - Limitations of Scrum

Need teams members who can independently execute items

Leads to sub-optimal resource utilization

Velocity fluctuation

In fixed bid projects - both the team and the customer satisfaction is low

I’m sorry, but I don’t think they really understand Scrum or AgileClearly they need more experience before claiming to be a Scrum Master.

Copyright © 2013, AgileFAQs. All Rights Reserved.

Project 1

Copyright © 2013, AgileFAQs. All Rights Reserved.

Project 1’sTeam Structure

Copyright © 2013, AgileFAQs. All Rights Reserved.

Project 1’s Release Process

1-2 Weeks

Pre-Release Release

3-4 Months

1. High-level Estimates

2. Impact Analysis

Release Planning

5-10 Days

1. Detailed Estimates2. Task Breakdown3. Task Assignment4. Detailed Design5. Test Plans6. Enter tasks in TFS7. Project Plan in MS

Project8. Agreement from

customer

3 Weeks 4 Weeks 2 Weeks 3 Weeks 1 Week 16 Hrs

Milestone 1 Milestone 2 Milestone 3 Integration TestingIn QA

Regression TestingIn Staging

Deploy

LiveDevelopers

1. Low-level Design2. Coding3. Unit Testing4. Code Review5. Launch Plan

Testers1. Test Cases2. Buddy Testing

Developers1. Fix bugs from M12. Low-level Design3. Coding4. Unit Testing5. Code Review6. Launch Plan

Testers1. Deploy2. Update Automation IDs3. Manual System Tests4. Buddy Testing5. Create new Test cases6. New Automation tests

Same thing...

Code Freeze

Developers (next release)1. High-level Estimates2. Impact Analysis

Testers1. M3 testing2. Regression testing

of M1 & M2

1. Ops execute the Launch plan

2. Regression testing

Biz Sign-off

Copyright © 2013, AgileFAQs. All Rights Reserved.

Good Initiatives on the Project

Buddy testing

Score card - self rating + customer voting

Constantly trying to reduce the testing cycle

Continuous improvement - tracking test cases in TFS, trying to automate manual tests

Trying to improve communication/transparency with Weekly, Monthly and Quarterly review report

Copyright © 2013, AgileFAQs. All Rights Reserved.

Management Challenges Highlighted by the Team

16 hrs Deployment process is very stressful

Release Planning is long and stressful. Yet the predictability is poor.

Knowledge Islands

Resource Dependency (work allocation) - Certain people are good in certain areas and only they keep working on it due to the pressure

Attrition - when an experienced developer leaves it take time to replace him/her. Ramp up time at least 1 month

Estimation & planning is not effective as there is constant crunch time

Lot of pressure from client-side and that pressure is passed on to the team

Multiple things are running in parallel & too much of context-switch, reducing efficiency

Copyright © 2013, AgileFAQs. All Rights Reserved.

Customer Needs Related Challenges Highlighted by the Team...

Backlog Prioritization is difficult

Overall team's efficiency has been questioned by the customer. Customer keeps asking - "how do I know this is optimal productivity?"

Breaking down backlog items is hard

3-4 months release cycle

Lot of change requests come during the 3 month release (25 CRs in last release, 40 CRs before that)

SLA does not allow for rotating people

Copyright © 2013, AgileFAQs. All Rights Reserved.

Technical Challenges Highlighted by the Team...

Environments have different configuration (Staging, Dev, QA, Prod)

Software on the trunk is not always in a releasable state - 2 Weeks of integration testing

Developers can't build the whole solution on their machine

Impact analysis is difficult. Even though TFS has an impact field, it really does not help

Copyright © 2013, AgileFAQs. All Rights Reserved.

Quality Control Challenges Highlighted by the Team...

300-400 Defects each release

Right Devs vs. QA ratio?

Constantly time crunched, which leads to not really following the test cases. Doing more of a high-level scenario testing

Automation: Many things are not possible or don't know how to do. So its not really paying off the investment

Many Environmental issues while testing (due to shared QA Env)

Not able to do any Load Testing

Tools: PMs are using a mix of tools from TFS, to MS Project Plan to Excel

Copyright © 2013, AgileFAQs. All Rights Reserved.

My ObservationsTeam is getting burnt out. I also see some serious capability issues with few members. If you see the overall quality of design, code & tests, it getting worse day-by-day.

Splitting team into support/maintenance & new feature teams is a classic anti-pattern.

Attended their estimation meeting - due to knowledge islands, no one knew the complete picture. There were quite a few new scenarios getting discussed which was not recorded anywhere. Also a lot of guess work was going on in estimation process. Some people weren't speaking. Testers were missing. Overall meeting effectiveness was low.

Team lacks collective ownership. Devs take more time & testers are getting squeezed.

There is no single person who understands the whole system & has the big picture including all the historical decisions.

Trivial changes are considered as change requests. Team feels that they are very stressed and bothered about the changes coming in.

Misconception among people on Agile.

Team feels that Scrum is bad. However, when poked further they are confused on the benefit of scrum vs. current model.

Copyright © 2013, AgileFAQs. All Rights Reserved.

My Observations...Estimation is done in hours/days

Poor code quality

Average file is 700 to 2500 lines of code.

Conditional logic is deep and hard to understand.

Unit test is written for name sake and doesn't even verify anything.

People aren't even aware that this is bad.

Team is not aware of their technical debt. No idea of current code coverage.

Quality of developer tests is very poor

So called unit tests are really service/behavioral tests.

Tests are really huge with lots of conditional logic. Tests are really hard to understand.

Most tests don't have any assert statements.

Tests are not part of CI build. Rarely developers run them or update them.

Copyright © 2013, AgileFAQs. All Rights Reserved.

My Observations...On an average there are 200 - 300 bugs for a release. This is very high for a 3 month release. Many bugs are straight forward happy path tests.

There are knowledge islands in the team. When there are touch points between modules/features, things start breaking.

Reduction of test cycle has squeezed things further.

70-80 hours is taken away to depend on automation. However, testers feel that automation is not helping them.

This team is using their own version of a keyword driven automation tool on top of selenium. Generally keyword-driven automation tool is not recommended. Defeats the purpose of creating Selenium.

Massive duplication in manual test cases which are not updated whenever there is a change.

CI server doesn't check for items like code coverage, coding standards, cyclomatic complexity, traceability and similar aspects.

Team members waste too much time on branching & merging. Its an anti-pattern.

TFS is not used effectively by everyone - Product & functional owners don't use TFS.

Copyright © 2013, AgileFAQs. All Rights Reserved.

My RecommendationsMove from the big 3-4 month release cycle to 2 week Sprints.

Practice pair-programming to resolve the knowledge island issue.

Invest heavily on scripted automated tests using Selenium.

Explain the rationale behind the process to the team & get their buy-in.

Integrate the automated tests into the build & run it with every checkin on the CI server.

Add static & dynamic code analyzers to the build.

Practice Behavior Driven Development to improve collaboration.

Focus heavily on design improvements, code quality and code hygiene.

Invest in productivity tools like ReSharper & a better code review tool.

Developers should improve their unit test coverage significantly.

Copyright © 2013, AgileFAQs. All Rights Reserved.

Project 2 Team

Copyright © 2013, AgileFAQs. All Rights Reserved.

Project 2 Team Structure

Copyright © 2013, AgileFAQs. All Rights Reserved.

2 Week Sprint Cycles

M T W T F

M T W T FTech Discussion (30 mins)

Sprint Review 1-1.5 Hr

Standup -30 minsRetro 1 hrSprint Planning 1-1.5 hrs

Client Meeting 1-1.5 hrs

Standup -30 mins Standup -30 mins Standup -30 mins

Standup -30 mins Standup -30 mins Standup -30 mins Standup -30 mins

Tech Discussion (30 mins) Tech Discussion (30 mins)

Code Freeze

4 Hrs Capacity 7 Hrs Capacity 7 Hrs Capacity 7 Hrs Capacity 7 Hrs Capacity

6 Hrs Capacity7 Hrs Capacity7 Hrs Capacity7 Hrs Capacity7 Hrs Capacity

Copyright © 2013, AgileFAQs. All Rights Reserved.

Interesting things on the projectGiven the performance improvement nature of the project, the overall approach taken to slice payroll portion, migrate it to the new architecture and testing it out first, is a great example of tracer-bullet approach.

Customer come down to Bangalore to kick-off the project. This helped them understand the culture & bond with the team very well.

The process is fairly streamlined using Scrum.

Testers have automated all the manual tests to perform regression and load tests:

Regression: Data-restore, updating the server config, resetting IIS, running MSTests and finally reporting the time taken & number of payrolls processed

Performance: SQL script to load the payroll info in the db, trigger the payroll processing and finally retrieve (collating) the timing information from database

Copyright © 2013, AgileFAQs. All Rights Reserved.

Challenges highlighted by the TeamClient has their own TFS and does not allow the team to customize it. Team ends up using internal TFS for managing sprint execution. Due to data being distributed in both TFS there are challenges to produce burn-down, capture efforts, root cause field, etc.

Team is not practicing certain practice like backlog grooming, retrospectives and planning poker. GPM is concerned that they are not following pure Scrum.

Since the nature of the project is performance optimization, there are many items which require investigation. These stories are hard to estimate and leads to complications in the sprint commitment.

Developers are spilling over the code freeze, eating into testing time

Due to client’s mandate, team is using multiple disconnected tools like TFS, Perforce & MTM. This leads to traceability being an issue.

Copyright © 2013, AgileFAQs. All Rights Reserved.

Challenges highlighted by the Team

The Daily Scrum meetings are running over 30 mins

Customer feedback is that the team is very shy & not really asking questions

People easily get into the silos, disrupting team collaboration

Procurement of 3 servers took more time than expected, so could not test on ideal environment

Sharing these servers for both Dev and testing env, causing issues

Mid way thru performance testing, new changes are constantly pushed, disrupting testing

Copyright © 2013, AgileFAQs. All Rights Reserved.

My Observations

Considering the nature of the project, Scrum is not the right model. Kanban is a better approach as the work is hard to estimate (hard to say what would fit into the 2 weeks sprints)

PM and GPM understands the process well. However the team does not understand the process nor the rationale behind it.

Tester are manually running tests which could be easily automated 100%. These can be integrated with the build and run automatically.

Testers are not writing many new tests. Mostly reusing tests given by customer, which are very high level. They cannot be relied upon 100%. There are many other areas which they should ideally test.

Tester-developer collaboration can be significantly improved.

Teams are not using productivity tools like ReSharper.

Copyright © 2013, AgileFAQs. All Rights Reserved.

My Observations...Poor code quality.

Average lines per class is 500.

Classes are filled with getters/setters.

Design is not Object Oriented.

High complexity (too many if/switch loops)

Local instance of CC.Net is set up for continuous builds. But FXCop, StyleCop, Code Coverage are not set up on internal server. Its only there on client side. Team members have to manually run these tools on a different machine.

Team members don't know what their current code coverage is. They mentioned that the on-site person knows about it

Stories are not written effectively.

As a developer I want to use IOC container to refactor the payroll queue logic

As a product owner I want to perform report of the payroll process so that I can compare with the baseline to understand performance gains - 5K+1server, 5K+3Server,10K+3Servers.....

Copyright © 2013, AgileFAQs. All Rights Reserved.

My RecommendationsSwitch to Kanban from Scrum. It will help:Address the estimation problem due to the nature of the work.

Will help the team focus on single-piece flow, hence higher throughput from the customer’s point of view.

Reduce the Scrum process overheads to a large extent.

Explain the rationale behind the process to the team & get their buy-in.

Integrate the automated tests into the build & run it with every checkin on the CI server.

Add static & dynamic code analyzers to the build.

Focus heavily on design improvements, code quality and code hygiene.

Invest in productivity tools like ReSharper & a better code review tool.

Developers should improve their unit test coverage significantly.

Copyright © 2013, AgileFAQs. All Rights Reserved.

Project 3 Team

Copyright © 2013, AgileFAQs. All Rights Reserved.

Team Structure

App Design

ASPXBiz Layer

+Entities

DAODBADO.Net

Stored Procs

Copyright © 2013, AgileFAQs. All Rights Reserved.

2 Week Sprint CyclesM T W T F

M T W T F

M T W T F

Demo 1-1.5 Hr

Standup - 60 minsDaily 8-9 PM

Offshore Retro 30 mins

Sprint Planning 1-1.5 hrs

Client Retro 1 hrTech Discussion (30-60 mins)

Code Freeze

4 Hrs Capacity 4 Hrs Capacity 4 Hrs Capacity 4 Hrs Capacity 4 Hrs Capacity

4 Hrs Capacity4 Hrs Capacity4 Hrs Capacity4 Hrs Capacity4 Hrs Capacity

PreviousSprint

CurrentSprint

Standup - 60 mins Standup - 60 mins Standup - 60 mins

Standup - 60 mins Standup - 60 mins Standup - 60 mins Standup - 60 mins

Tech Discussion (30-60 mins)

Tech Discussion (30-60 mins)

Tech Discussion (30-60 mins)

Tech Discussion (30-60 mins)

Development

Development Sprint Testing UAT (BA) Regression Testing

Standup - 60 mins

EstimationsUser Story AuthoringAcceptance Criteria

Low Level Stories + Tasks

Low Level Stories + Tasks

Low Level Stories + Tasks

Low Level Stories + Tasks

Low Level Stories + Tasks

High Level Stories

High Level Stories

High Level Stories

High Level Stories

High Level Stories

Copyright © 2013, AgileFAQs. All Rights Reserved.

Testing Cycle during ReleaseM T W T F

M T W T F

M T W T F

Code Freeze

Development

Release

Dev Integration Testing QA Integration Testing Staging Integration

Testing

Staging Integration

Testing

Min 6-7 Days of Manual Testing before every Release

Copyright © 2013, AgileFAQs. All Rights Reserved.

Challenges highlighted by the TeamNew requirements/CRs during sprint

80-90% sprint items are finalized by Thursday (2 days before the sprint), but remaining items (10-20%) can change after the planning

Rework for testers due to mid-sprint CRs

BA does not get enough time with the PO to get/clarify requirements

Retrospective

Retrospective action items might get dropped out. No action items from retros - ownership & analysis?

Retros are not taking place for the last 3 sprints (due to release pressure)

Too much pressure of release

Closer to release, QA are under heavy time pressure as they need to perform regression and sprint testing

Team is working 10-12 hours per day

Customer thinks the team is buffering their estimates and wants productivity improvement measures

Estimation (Story point to hour conversion)

Copyright © 2013, AgileFAQs. All Rights Reserved.

My Observations - User NeedsUser stories are very granular. Defeats the purpose of having user stories

Change management process is too tedious as developers & testers are expecting everything to be added as a story with screen-shots. This adds significant overheads. This can give the impression of poor productivity to customer

Lot of productivity wasted in detailing out requirements and dealing with smaller changes as CR

Acceptance Criteria are really scenarios, which could be written in-terms of BDD tests to improve effectiveness

PO is involved in daily stand-ups, but not really signing off on the stories as and when they are ready for review

No story maps or tree structure for the User Stories - makes it hard to do impact analysis

Team does not seem to understand customer needs very well. They expect the BA to take care of everything and babysit them from the requirements point of view

Copyright © 2013, AgileFAQs. All Rights Reserved.

My Observation - Team & ProcessTeam & Customer doesn't seem to understand the process and they haven't bought into it.

Team bonding/ownership was found lacking. More of individualistic approach. There is a significant productivity issue due to this.

Stand-up meetings are essentially a status meeting (micro-management)

Scrum Master is on-site and the team is here. Does not make any sense

No information radiators in the team area

Team is spending a significant amount of time in meetings (late night)

There is lot of work required to get to a decent Agile model. Team is currently doing mini waterfalls.

Currently not a very systemic way of estimating. There are misconceptions among the team about the estimate for individual stories. There is a big gap in estimation. Team is internally mapping 1 Story point to 2 hours. Defeats the purpose.

Massive productivity issue that needs to be resolved.

Consider moving to Kanban model instead of Scrum.

Copyright © 2013, AgileFAQs. All Rights Reserved.

My Observations - Tooling

Team don't understand how to effectively use Jira to manage their backlog.

Burn down and other reports are not available for team review.

Team has Jenkins and Hudson CI server, but its been used mostly for continuous builds. No static code analyzer or any other tools to keep track of things like code quality, code coverage, etc.

Devs use visual studio. They don't use any productivity tools like ReSharper on top of it

Branching (Feedback & Flashcard branches) and merging - seems like the default way to work. Big anti-pattern

Copyright © 2013, AgileFAQs. All Rights Reserved.

My Observations - TechnicalTeam inherited a lot of old (poor) code. After clearing up the code they demonstrated it to the customer. However the code quality is rapidly going down. Complex, monolithic design. No proper unit test. Tests are not run by developers with every change.

Inline SQL statements are converted to Stored Procedures in the name of performance improvement. This is a bad idea, since scaling database is really hard. Also application will get tightly coupled with the database since stored procedures are db specific & hard to port. Stored procedures are also hard to unit test.

Developers lack basic coding practices like externalizing labels/UI text to enable easy modification which can help reduce changes and improve productivity.

Long checkin cycles (one checkin per user story.)

Testers are not doing any automation at all. Selenium IDE could be used to automate even if testers don't know automation.

Lack of end-to-end traceability in the project.

Testers don’t understand the difference between +ve & -ve path testing.

3 stories have the exact same acceptance criteria & the tests are simply duplicated

Copyright © 2013, AgileFAQs. All Rights Reserved.

My RecommendationsSwitch to Kanban from Mini-waterfalls.

Seriously need to review the capability of certain team members. Developers and testers need a lot of spoon feeding in terms of extremely detailed out specs with screen shots of things like tooltip, etc.

Explain the rationale behind the process to the team & get their buy-in.

Planning and Estimation needs an immediate attention.

Cut down all the useless (name-sake) meetings

Considering that there are total 8 screens in the app, invest 2-3 days to create a suite of automated selenium tests.

Integrate the automated tests into the build & run it with every checkin on the CI server. Add static & dynamic code analyzers to the build.

Focus heavily on design improvements, code quality and code hygiene.

Invest in productivity tools like ReSharper & a better code review tool.

Developers need to write automated unit test & improve coverage significantly.

Copyright © 2013, AgileFAQs. All Rights Reserved.

Project 4 Team

Copyright © 2013, AgileFAQs. All Rights Reserved.

Team Structure

On-site (UK)Offshore (India)

Scrum Master

Lead Dev 2 Devs

BAProduct Owner

Copyright © 2013, AgileFAQs. All Rights Reserved.

2 Week Sprint Cycles

M T W T F

M T W T FRelease

Sprint Review 1-1.5 Hr

Standup -30 minsRetro 1 hrSprint Planning 1-1.5 hrs

Standup -30 mins Standup -30 mins Standup -30 mins

Standup -30 mins Standup -30 mins Standup -30 mins Standup -30 mins

Release

Change requestBoard approval

6 Hrs Capacity 6 Hrs Capacity 6 Hrs Capacity 6 Hrs Capacity 6 Hrs Capacity

6 Hrs Capacity6 Hrs Capacity6 Hrs Capacity6 Hrs Capacity6 Hrs Capacity

Copyright © 2013, AgileFAQs. All Rights Reserved.

Things working well according to the Team

High predictability (97% SLA targets achieved)

Compared to other teams, this team is fairly streamlined

On-site BA is able to chase business to get things done

Because of the transparency & visibility in Scrum, the business is able to pressurize the change control board to approve the releases faster

BA is able to do the testing and give rapid feedback to the developers

Copyright © 2013, AgileFAQs. All Rights Reserved.

Needs Improvement according to the Team

Release process is slightly heavy-weight due to the change control board & it can become a bottleneck

Sometimes mid-sprint there are high-priority change coming in from the Sr. Management

Due to client restrictions: the team has to use TFS for some stuff, time sheets are in a different place, bugs are in QC, client requirements are in Google Docs and some more stuff is managed in XLS

Copyright © 2013, AgileFAQs. All Rights Reserved.

My Observations

Considering the following aspects, I believe Scrum is not the right model for this team. Kanban might be a better fit.

nature of the work - mostly adding/updating reports, tweaking cube logic, ETL changes

no separate build or regression testing process

the release cycles are independent of 2 week-sprint cycles

good churn mid-sprint

Having burn down charts and other information radiators could help the team

Team is using the typical user stories format, but its quite repetitive & does not seem to add value (As a product owner I want to...)

Copyright © 2013, AgileFAQs. All Rights Reserved.

My Recommendations

Switch to the Kanban model (reasons highlighted on previous slide)

Do away with ceremonies from Scrum that are not really adding value

BI team has a total of 4 sub-teams called Quality Circles. One of them has moved to Scrum, while others are using a traditional iterative process. Now that one team has successfully moved to Scrum, it would be a good idea to follow the same process on all the sub-teams.

Copyright © 2013, AgileFAQs. All Rights Reserved.

Org. Level Observations

What we found.

Copyright © 2005-12, AgileFAQs. All Rights Reserved.

Copyright © 2013, AgileFAQs. All Rights Reserved.

My Observations

Even though teams are reluctant to change, we can get them excited to try and learn new ideas.

Throughout the organization, there is a very early, but growing culture of openness, communication and transparency.

The sense of team commitment is lacking, team members are reluctant to jump in and help each other.

The teams are really stretching to make their customers happy.

Collaboration within the teams needs massive improvement. Teams are not self-contained.

There are varying levels of maturity along the agile journey amongst the teams.

Teams are picking up the practices, but I would like to see them critically think about the values behind those practices and figure out variations or adaptations to those practices to better suit their environment without sacrificing the value.

Copyright © 2013, AgileFAQs. All Rights Reserved.

My Observations...

Misconceptions about Agile: Overall the teams aren’t excited about Agile, they need a lot of help to make the transition. There are quite a few misconceptions about Agile that need to be cleared.

Management Commitment: There is a strong backing from the management to improve the current state of software development.

Domain Knowledge: System domain is fairly well understood by the team, however business domains and value propositions need more understanding.

Churn and volatility: Teams agree on sprint Goals, but during the sprint there is a good 40-50% churn.

Mini-Waterfall: At a very high-level, the overall process followed seems like mini-waterfall process.

Every team seems to complain about extensive customer pressure.

Copyright © 2013, AgileFAQs. All Rights Reserved.

My Observations...Team lacks skills: Most team members lack necessary skills to be successful in an agile environment. They will certainly need a local coach/mentor to help them.

Need help with Agile: Based on my interactions with the team, they need help to understand Scrum/Kanban framework, relative complexity estimates, planning, stories, collaboration, etc.

Lack Technical Skills: Developers and Testers need specific help with eXtreme Programming skills and practices.

Old-school Testing Practices: Overall testing practice still seems to be in the “inspection” model, rather than building “quality-in” model

Distributed Development Challenges: Distributed nature of depended teams is causing quite a few challenges. Strong coaching is required to ease some of the problems.

Copyright © 2013, AgileFAQs. All Rights Reserved.

Agile Skills Lacking in the teams

Embracing uncertainty/change and effective finding ways to deal with it

Tight collaboration and Communication with everyone involved

Teams are predominantly baby-seated by Seniors on the team

Eliminating Waste

Collective Ownership, Drive (self-motivated), Focus and Discipline

Fail-fast: Breaking a large problem down into small safe-fail experiments and then willing to try and learn quickly.

Systems thinking

Critical thinking

Open to experimenting with radical ideas

Copyright © 2013, AgileFAQs. All Rights Reserved.

Misconceptions

Roles of PO, SM, PM, TechLead, Tester

Estimation, Velocity and Capacity

Why Agile?

Self-Organizing Teams

Clean-code

User Stories and Acceptance Criteria

Basic Scrum ceremonies

Copyright © 2013, AgileFAQs. All Rights Reserved.

Reasons for Churn during the Sprint

Customers change priority (mostly for valid reasons)

Teams lack good understand of the customer’s needs. They are very driven by requirement specs, which can’t capture their changing needs

Lack of collaboration between the teams, the Architects and other stakeholders (customers, onsite coordinators)

Testing & integration done late in the cycle causing sprints to overflow

Most teams lack experienced team members to guide the team

In some critical areas, poor implementation is leading to more churn

Most teams have knowledge islands which creates heavy inter-dependencies between them and multiplies the churn introduced by the above points

Copyright © 2013, AgileFAQs. All Rights Reserved.

RisksOverall the company is not ready for Agile (rapidly inspect & adapt.) Yet, that is the need of the hour to grow & sustain the business.

The product discovery & estimation process at the beginning of the sales process is not aligned with the Agile model. I feel many projects are set up for failure due to this process.

Teams seem to be pushing back on small CRs instead of truly collaborating with them & moving up the value chain & win their trust.

While the company is trying to grow rapidly, the foundation is not in place for this growth. Quality of many team members is questionable. I see a huge amount of inefficiencies in the teams.

Talking to the Sr. Management, I feel they are very strong, right vision & focus, but they don’t seem to have a matching team that can deliver as per their & their customer’s expectations.

The Management still relies on classic inspection (random sampling) based SQA approach, which cannot change people’s behavior, rather forces them to game the system (plus all the overheads).

Also this model does not scale. You need a model which is built on distributed cognition.

The L&D team is doing a great job, however they have a long way to go. The company lacks an informal learning culture. Teams are fairly out-dated on technology, tooling, techniques, etc.

While the CompanyName way is a great initiative, its very focused on documenting how things are done currently. Instead they should be focused on making a quantum leap. The industry is moving beyond Agile.

Copyright © 2013, AgileFAQs. All Rights Reserved.

Recommendations

Copyright © 2013, AgileFAQs. All Rights Reserved.

Developers need help with the following topics

Good Design Practices

Understanding and improving code quality

Understanding the bigger picture and asking for it

Working effectively with Legacy Code

Test Driven Development & Behavior Driven Development

Working effectively in a distributed environment

Evolutionary Database Design and Refactoring Databases

Thin Slicing and Evolutionary + Incremental Design/Implementation

XP Practices like Continuous Integration (to avoid branching), Pair Programming, etc.

Better productivity tools like ReSharper

Fail Fast approach

Knowledge Sharing

Impact Analysis

Effective unit testing

Copyright © 2013, AgileFAQs. All Rights Reserved.

Tester need help with the following topics

Work more closely with the Team daily to build quality in (prevent defects from getting in the first place rather than inspecting at the end)

Collaborating with Product Owners, BAs and Devs to build domain & tech knowledge

Collaborating with the PO/BA to better define User Stories and Acceptance Criteria

Work with Devs to practice Acceptance Test Driven Development

Exploratory testing and mistake proofing.

Create and maintain an effective automated (scripted) test suite

Copyright © 2013, AgileFAQs. All Rights Reserved.

BA need help with the following topics

Communicating the Product Vision and Roadmap (at least feature level)

Story mapping and product discovery

Understanding the business drivers, priorities and value chain

Writing effective user stories

Slicing stories functionally rather than technically

Defining better Acceptance Criteria for the stories

Helping the teams independently make implementation decisions

Risk identification and mitigation for each story

Collaboration with other team members to work-out dependencies

Facilitating better knowledge sharing with the team

Copyright © 2013, AgileFAQs. All Rights Reserved.

ScrumMaster/PMs need help with the following topics

Understand the essence/spirit of Agile

Using techniques like Value Stream Maps to identify bottlenecks

Create Self-Organized Empowered Team

Emerge as leaders and be the voice of the team, shielding the team from external interferences

Facilitating more effective meeting (Planning Meeting, Standups, Demos)

Capacity Planning

Story Point (Relative Complexity) Estimation

Intent behind standup meeting

Using Retrospectives as a means to continuous improvement

Process to following up on Retrospective action items

Copyright © 2013, AgileFAQs. All Rights Reserved.

Potential Internal Coaches

We’ve identified a few people who can be mentored to be good Agile Coach. Details about these folks were already communicated.

Copyright © 2013, AgileFAQs. All Rights Reserved.

Plan

Copyright © 2013, AgileFAQs. All Rights Reserved.

The Million Dollar Idea

Agile Working Group

Pilot ProjectsTypical Cloud Project

New Custom Software Delivery Project

Internal Project

Ongoing Maintenance Project

2-6 months

Agile & Org. Transformation

Experts

Coaching

Mentoring

Learn

Try/Apply

Refine & Standardize

SQA,Internal Coaches

&Practice Groups

All ProjectsCoach, Mentor, Support & Learn

USE

REFINE

INTERNA L

COACHES

Copyright © 2013, AgileFAQs. All Rights Reserved.

High-Level Improvement Areas (Focus Areas)Agile DNA

Culture to embraces change

Innovation centricity

Team collaboration

Team events

Awareness

Transparency

Customer collaboration Growing up the value chain

Engineering Excellence CompanyName's USP to customers to win customers

Product Discovery Story mapping

Estimation

Project plan

User Experience

Metrics (What, How & Tools)

Inverting the testing pyramid Testing vs. Checking

Automated Unit testing

TDD/BDD

Automation

CI with static & dynamic code analysis, reporting, build staging

Clean Code (Craftsmanship) Design principles & patterns

Refactoring skills + Code smells

Coding conventions

Architectural patterns

Dev Ops TeamTools for Dev, Test & Process

Automation (beyond test automation)

Internal coaches (Network of change agents)

On-boarding (Org, Project, Level & Role)

Learning & Development

Copyright © 2013, AgileFAQs. All Rights Reserved.

Agile DNATeam Collaboration

Cross functional self-sufficient teams

Project Wikis and Project handbooks

Continuous improvements, retrospectives, futurospectives

Collaboration games for running effective meetings

Information radiators in the team room

Appraisal process should be more team centric not individual centric. Add things like 360 Degree reviews.

Get first hand working experience with the candidate before hiring/rejecting them during the interview process

Building a learning culturePair Programming and Cross-functional pairing

Encourage generalizing specialists

Refactoring fests, design fest, hackatons, code retreat, coding dojos

Book clubs, library, open talks, Tech talks, user groups, conferences

Scratch your person itch day

Architecture council, SIGs, Tech Evangelists

Use game mechanics to drive the right behavior in employees

Copyright © 2013, AgileFAQs. All Rights Reserved.

Clean Code (Craftsmanship) Fundamentals

Developers and Testers need to master these skills/conceptsDifference betweentesting v/s checking

black box v/s white box

happy v/s negative

unit v/s integration testing

API testing v/s GUI testing

DB testing, Performance testing, Load testing, Security testing, etc.

Basic unit testing skillsTools

Breaking dependencies between classes/layers (mocking/stubbing/simulators)

Unit Testing patterns

Copyright © 2013, AgileFAQs. All Rights Reserved.

Clean Code (Craftsmanship) Fundamentals...

Continuous Integration process should automateCode quality checks like C3 (Coverage, Complexity & Churn)

Traceability

Static code analysis,

Dynamic code analysis

Reporting

Historical data/trends

Build Pipeline

Skills required for Simple DesignOO Design principles & patterns

Refactoring + Code smells

Coding conventions & idioms

Architectural patterns

Copyright © 2013, AgileFAQs. All Rights Reserved.

Recommended .Net ToolsProductivity Tools - ReSharper

Unit Testing - NUnit, NUnitForms, MSUnit, Moq, MSpec, QUnit (JavaScript)

Behavior Driven Development - SpecFlow, Cucumber, FitNesse

Evolutionary Database Migration tool - Migrator.Net, MigSharp

Mutation testing - NinjaTurtles, CREAM, Nester

Build & Deployment - NAnt, nRake

CI Server - CC.net, Jenkins, Teamcity

Code Coverage - OpenCover/PartCover, NCover, dotCover

Other CI Tools: NDepend, FxCop, StyleCop

Version control - Git

Web Automation testing - Selenium , Sahi, Watir

WinForm Automation testing - White, Quail

Code Review - Barkeep, Reviewboard, Rietveld

https://github.com/ooyala/barkeep/wiki/Comparing-Barkeep-to-other-code-review-tools & http://crew-cr.org/

Copyright © 2013, AgileFAQs. All Rights Reserved.

Pilot Projects

Copyright © 2013, AgileFAQs. All Rights Reserved.

Need for Pilot Projects

Trying to change the whole company is a long process. We first need to create some internal success stories on real (different) projects to

Get other team’s buy-in

Create sales & marketing collaterals

Mine out patterns that work in our company/culture

Rapidly create expertise & local champions

Create some case studies & a platform for team members to learn about the new way of working

Use these pilot projects to constantly push the envelope on the process & innovation side

Minimize the risk of things going out of control. Also formulate a transition strategy (we’ve seen many company fail miserably when they try to do a big-bang roll out)

Copyright © 2013, AgileFAQs. All Rights Reserved.

Pilot Project - High Level Plan

1-2 Months 3-4 Months 5-6 Months

Iden

tity

2 Pi

lot P

roje

ct +

Team

Mem

bers

Esta

blish

a w

orki

ng re

latio

nshi

p w

ith C

ompa

nyN

ame W

ay te

am

Basic

Agil

e+de

velo

pmen

t pra

ctice

s tra

inin

g

Get

ting

a sim

ple

proc

ess/s

truc

ture

in p

lace

Kick

off

proj

ect w

ith a

pro

duct

disc

over

y &

stor

y m

appi

ng w

orks

hop

Intr

oduc

e BD

D to

the

team

Impr

ovin

g C

ode

Hyg

iene

& A

utom

ated

Test

ing

(on

exist

ing

proj

ect)

Setu

p a

CI p

roce

ss w

ith a

ll th

e ne

cess

ary

tool

s int

egra

ted

Kick

-off

one

mor

e pi

lot p

roje

ct

Gain

ing

in-d

epth

und

erst

andi

ng o

f pra

ctice

s

Esta

blish

ing

foun

datio

nal d

evel

opm

ent (

XP)

pra

ctice

s

Min

e ou

t pat

tern

s fro

m th

e pi

lot t

eam

s

Stan

dard

ize c

ode

quali

ty &

pro

ject

trac

king

met

rics a

long

with

SQ

A

Train

ing

on E

volu

tiona

ry d

esign

& re

fact

orin

g to

pat

tern

s

Intr

oduc

e TD

D to

the

team

Setu

p a

small

Dev

-ops

team

Star

t bui

ldin

g ca

se-s

tudy

& m

arke

ting

colla

tera

l

Star

t with

Org

. wid

e Agil

e &

XP

train

ings

Kick

-off

the

last p

ilot p

roje

ct

Beco

me

profi

cient

with

all

the

deve

lopm

ent (

XP)

pra

ctice

s

Refin

e pa

ttern

s pul

led

out f

rom

all

the

pilo

t tea

ms

Get

as c

lose

to C

ontin

uous

Del

ivery

as p

ossib

le

Refin

e co

de q

ualit

y &

proj

ect t

rack

ing

met

rics

Shar

e in

form

al le

arni

ng p

atte

rns f

rom

the

vario

us p

ilot t

eam

s

Pack

age

case

-stu

dy &

mar

ketin

g co

llate

ral

Starting Jan Initiatives started in 1st Month continue.

Feature Teams

Evolutionary DesignIdentify people to be real change agents/coaches.

Identify & Coach 2 Pilot Teams to create Success story.

Focus on Code Hygiene

Basic OO Skills training and mentoring for Devs

Overall Product level Test

Coach Testers to build-quality-in-the-process

Test-First Development

Test Driven Development

Automated Builds

Team level Continuous Integration with Automated Tests & Code Quality Metrics

CI across Product Teams

Writing Effective Stories

1st Month 2nd Month 3rd Month 4th Month

100% Automation

Continuous Deployment

Acceptance Criteria

Slicing Stories

Pair Programming

Value Stream Mapping

Managing Legacy Code

Design Bootcamp Training

Effective Planning

Story Point Estimation

Capacity Planning

Standup Meetings

Retrospectives

Mistake proofing skills for Testers

Special Interest Groups

Refactoring Legacy Code

Design Patterns Training

Focus on Flow

Detailed Plan

Starting Jan

Zero Downtime Deployment

XP Practices Overview

Self-Organized Teams

Product Discovery Workshops

Initiatives started in 1st Month continue.

Copyright © 2013, AgileFAQs. All Rights Reserved.

To Achieve this Plan

Identify one person to play the Strategic Agile Coach role.

More internal coaches should be identified to help this coach.

Start with 2 Pilot projects. Two coaching models available:

Option 1: Hire an Expert full-time Agile(Scrum/XP/Kanban) Coach to coach 2 pilot teams.

Option 2: Hire a part-time Agile/Scrum/Kanban Coach + One full-time XP Coach to help coach 2 pilot teams.

Quite a lot of training on the following topics will be required to scale this org. wide:

Agile Overview workshop

Product Discovery & User Story Mapping workshop

OO Bootcamp & Design Principles & Patterns workshop

TDD & BDD workshops

Refactoring Legacy Code workshop

Test Automation and Exploratory Testing workshop

Copyright © 2013, AgileFAQs. All Rights Reserved.

Thank You!

Naresh [email protected]

@nashjain http://nareshjain.com