Saturday, May 30, 2015

So, why plan? A note to self..

Would life be easier if we did not have to think about planning? Let's face it, whether it is about running our day to day routine or even something as simple as paying a visit to the neighborhood grocery store there is planning involved. Imagine taking a vacation without planning where you will go, what you will do while you are there, how long will stay and what you need to bring with you. Or imagine not thinking about how much you need to earn, to save and to invest to meet your worldly needs.. Well lets just keep those worries aside for a few minutes shall we and think about how planning can actually help! Yes that's right, no matter how much burdensome it might sound, planning can help.

What is planning?

The simplest definition of planning that I have come across is "decide on and arrange in advance". I like this because this definition is light, it does not say how much detail we need to plan in, but an important thing that it does say is that planning happens in advance.

Why plan?

There are many reasons why we plan. Our limited information about the future and vision of what we want to do with that information in order to achieve a specific objective gives us an opportunity to play with creative alternatives and paths to get there. Applying constraints helps us narrow down our search of solutions, breaking them down into chunks or steps that are (hopefully) easy to understand and sequence as necessary. When steps and solutions are not known we put on our experimentation hats and navigate our way to discovering the possibilities.

Use the plan as a defense strategy

So what should I tell my teams when they get planning? What are the things I need to keep in mind but don't come easy, specially with Scrum? In my note to self, I include the following.


Plan just in time, and just enough.. 

Plan early but not too early. Have a high level roadmap that (can change and) tells the team the path we will take if things went all-right. Planning too much too soon could mean a lot of wasted effort and repetition. Planning too little could mean little predictability in outcomes for initiatives that span multiple sprints. So lets groom our backlog stories and have them ready for a few (may be two to four) sprints to come. Lets find that right balance for our team where Sprint planning sessions do not become painful and burdensome.


Plan based on data..

More often than note, teams are asked to meet an "aggressive targets". In other words, there is a huge tendency to ask for deliveries tied to dates without understanding scope and effort involved. These dates are usually based on business constraints and are tight (more often than not). So, organizations and teams find themselves in situations where teams are unable to deliver as some say - "on time" and "within budget". Lets avoid that for our team through scientific and consistent use of measures such as velocity and cycle time. Lets make forecasts based on data so that business understands our non-trivial effort and can make realistic, prudent decisions on scope and priority.


Maintain discipline, Estimate or #NoEstimate..

There is much debate on whether to do estimates or not. What seems more important to me than that debate is to agree on an approach that works for our team and for your organization and follow it with discipline. When we estimate, lets spend little time estimating, after all estimates do not produce value for customer, working software hopefully does. Estimates are just that - "estimates", they are "not actuals".


High priority, High risk first..

What should the team work on first and what should it work on later? There are multiple factors that decide this, chief among them are dependencies, customer feedback and risk. The product owner plays an important role balancing all aspects while deciding the order so that team delivers value while making continuous progress. So lets keep in mind the problem we are trying to solve, and order our backlog on the basis of that. Lets identify those things that are not clear and run spikes. Lets reduce the risk early as early as we can, so that we do not embarrass ourselves in front of our stakeholders and customers when the time comes.

Minimize hand-offs, eliminate technical debt..

Lots of times, teams work with other teams to deliver an experience or functionality. Many times this needs dependency management, and back and forth discussions. This can lead to side effects such as reduced velocity, need for additional testing to retain quality, development of interfaces and/or APIs etc. When we get into such situations, lets find out if we can minimize dependencies through techniques like creating mockups, and integrate early and often. Let us ferociously automate testing and deployment (at all levels) so that we can identify and resolve issues quickly.

Plan often and monitor, welcome change..

Lastly, should planning be one time? Absolutely not! The team should be ready to embrace change as they get better insights into customer needs and potential solutions. Lets dispassionately accept new stories, reject old ones that are no longer useful and update ones that need to be updated. Once again, an active Product owner and Team partnership can make a big difference. It is not as important to stick to the initial plan as it is to fulfill needs of the customers.

Friday, February 27, 2015

Want to be a Scrum Master - What is your motivation?

Thinking about being a Scrum Master? Have you thought about:
1. What is your motivation and do you think you are the right fit?
2. Would you like it to be a career choice?
3. What is in it for you? Is this role really attractive for you? What kind of growth are you looking for?
4. What does this role mean to your organization?

If you have thought about any of these questions and chose to be a scrum master, you are among the few scrum masters I have come across, who had the chance to do so.

In many cases I have come across, being a scrum master has been a matter of chance, many times imposed, rather than a matter of choice. To me that is an indication of how much (lack of) thought we devote into our role in a team setting as we probably should. As a result, we have multiple cases of job done badly, the role being viewed as "just" an administrative role, or something so easy that "anyone" can do, etc.

 Here I list a few things to think about when you are contemplating this role for yourself.

1. Start with motivation. Ask yourself why you want to be the scrum master, and what do you think you will achieve through that role. If you are a good scrum master, your services will be rewarded through your team's successes (or fast-fails, which should also be considered as successes). Highly successful teams will shine and through them, you will shine. Be aware that scrum master is only as strong as the team, so the primary job of the scrum master is to build a strong, learning team and actively sense and remove impediments that come its way.

2. Proud and Happy Teams - Do you love that? Will you make it your mission to make your teams proud of the work they do and how they do it, so they can predictably meet their commitments to business, deliver quality output keeping technical debt under check? If you answered these questions as yes, you get full marks!

3. Are you looking for glory for yourself or for the team(s) that you will serve? Can you be self-less in victory of your team's success, will you let them take the credit and can you teach them to learn from failures? Will your organization reward you if you served selflessly? Will your manager understand? If your answer to these questions is yes, you have hope.

4. Do you understand Agile manifesto, Agile principles and do you subscribe to XP values of simplicity, communication, feedback, respect and Courage? If you answered yes, think again. If you answered yes again (and again), think about situations that could get you in trouble with stakeholders, management, and even the team that you might be serving. Would you be able to manage expectations and still help the teams succeed? Yes means you are in business!

5. Are you ready to learn, unlearn and learn again? Different situations require different responses and solutions. Are you willing to experiment with different approaches, solutions and options with different team members, different teams, different projects, and different managers? Are you willing to engage with your audience and fail-fast, take responsibility for your team's decisions, actions and results (god or bad, specially bad ones)? Are you willing to be open, positively debate with your team, take responsibility of (poor) team decisions even if you disagreed with the team before the decision was made? Yes indicates you have it in you to be a great scrum master.

6. How does your organization view the role of a scrum master? Does it recognize this function as requiring special skills, training and coaching or is there a tendency that Scrum Master is a side-job that anyone with little time can do? If your organization recognizes the importance of this job, you are in luck and the probability of your success will increase dramatically! If it does not recognize it this way, your hard work, diligence and success will surely influence the organization, do not lose hope.

Bottom line, if you want to be a good Scrum Master, wear your servant-leader hat, be well grounded and open to learn, and experiment your way to success.

Monday, July 22, 2013

Can Agile Principles Help Run Successful Programs?

This article was first published by Scrum Alliance on July 22, 2013.

During the last few years, my view of how programs work has evolved. It has moved from viewing program management as traditional "old-school" handling of multiple projects and product portfolios (dry and boring) to seeing program management as a key to ensuring organization success that aligns the organization with its vision, strategy, and innovation. I think of program management as a crucial tool that makes an organization successful by pointing its entire energy and focus toward its most important initiatives and fulfilling its promise to customers, shareholders, and employees.

Why do organizations need programs?

"Programs are a group of projects managed in a coordinated way to obtain benefits and control not available from managing them individually," according to PMI. What do organizations have to gain by investing in coordinating and controlling multiple projects as a program? This is similar to asking what value program management brings to an organization.

A quick search on Google reveals various links on the topic. An article at lists the following: comprehensive view, work toward strategic goals, consistency, cost savings. An article at lists supervision, organization, budgeting, funding, accountability, and delegation.

Program managers shepherd different teams and projects in the organization toward a common objective. These teams sometimes have different internal priorities, which can impact when and how they deliver their part of the program. Program managers help surface these issues and facilitate much-needed conversation around issues, risks, and mitigation to achieve a higher-level organizational goal (or a set of goals).

Streamlining various lines of work within the organization can translate into several financial and nonfinancial benefits, such as revenue generation through on-time market launches, avoided or reduced opportunity costs, reduced operational costs, higher customer goodwill and revenue retention, transparency, and even better employee engagement.

Simple or complex?

There are many factors that make programs simple or complex to execute, such as:
·         Number of projects
·         Dependencies
·         Size of project teams
·         Resource availability/capacity
·         Prioritization of the initiative
·         Degree to which roles and responsibilities of project teams are well defined
·         Communication flows between project teams that require less coordination
·         Processes followed by project teams
·         Degree of transparency between the teams
·         Silos within the organization
The world of strategic program management is usually complex. Simple programs are hard to find, unless you are a small organization with a tightly knit set of teams and only one or two objectives to work on. The reality is that things start becoming complex even in small or midsized organizations when there are multiple issues at play.

How does complexity impact programs?

As organizations grow in size, they usually spread their operations, increase the number of their product offerings, try to become more cost efficient, and create specialized units for different functional areas (marketing, finance, sales, legal, engineering, technical operations, customer support and service, business intelligence, etc.). This suggests that organizations should pay attention to their most important goals while structuring their programs. That can be difficult, as different functional groups of the organization may be working on multiple priorities that might be competing with each other.

How do Agile principles help in dealing with complexity?

 laid down along with the Agile Manifesto can be useful in addressing issues related to complexity of programs. Even though these principles are heavily colored with nuances of software development, they can be applied in addressing issues related to complex program management:

1.     Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.Organizations usually have a strategy that is supposed to convey to its employees what is most important for its success in the coming period. This strategy usually includes what the leadership sees as most valuable to its customers. Organizations that manage successful programs are able to prioritize those programs as per their strategy and focus their energy into those initiatives that are most important to their customers.
2.     We welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage: Just as with software development teams using the Agile process, it is desirable that the rest of the teams are attuned to changing market conditions or new insights (whether external or internal to the organization) that might require the product or a service to take a different direction than initially conceived. If all teams are receptive to change, there is a greater chance that the needs of customers will remain the central focus.
3.     We deliver working software frequently, from every couple of weeks to every couple of months, with a preference for the shorter timescale. Just as Agile software development teams manage their work, such as working on small chunks, it makes sense for program teams to show off their work in short cycles so that the rest of the organization knows how the entire effort is progressing. Examples include iterations on sales and marketing strategy by the sales and marketing teams, iterations on customer communication/rollout planning by relevant teams, iterations on a new product or major functionality by the development teams.
4.     Businesspeople and developers must work together daily throughout the project. There is great value in understanding the business perspective while building software. The same is true for other functional groups within the organization, who may not be as involved in building the software as they are in maintaining it. If the development itself is complicated and there are multiple development teams involved, it becomes even more important to keep everyone aligned with business expectations so that the program progresses in the right direction.
5.     We build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done: All teams involved in a strategic initiative need to be motivated to deliver as per customer needs. If the environment encourages favoritism instead of making decisions based on merit, there are chances that everyone will not give their best to fulfill the goal of the program, likely impacting it adversely.
6.     The most efficient and effective method of conveying information to and within a development team is face-to-face conversation. Face-to-face communication impacts teams' effectiveness by helping them build rapport and find solutions to bottlenecks and problems quickly. This is true for programs, even though it is much simpler to institutionalize daily face-to-face communication for a co-located team of five to seven people who are working on a single objective. While this is true, program teams should synchronize as often as they can and use technology to fill the gaps if they are not co-located.
7.     Working software is the primary measure of progress. This principle is most useful in complicated projects involving multiple software development teams. Even when other nondevelopment teams are involved in a program, software development is often on the critical path, and that is often where most of the costs are incurred. So it makes sense to measure and track the progress made on working software. Likewise, program teams should measure and track progress of other non-software development deliverables that are required for readiness to deliver the product or service to the end users (launch readiness).
8.     Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely. From the program management perspective, all teams should maintain and deliver at a pace based on the work needed to satisfy the program objective. In many situations, one team might start its work after another team has delivered. For example, the team in charge of invoicing may only be able to update the boilerplate of a product after that product is ready and the legal team has delivered the boilerplate to them. Dependencies such as this need to be tackled by program managers, along with the teams, when planning cross-team programs. When program management is sustainable, dependencies surface regularly and are addressed routinely -- kind of like the way it works within a small Scrum team, where those dependencies surface and are resolved on a daily basis.
9.     Continuous attention to technical excellence and good design enhances agility. There is a balance between doing the right things and doing things right. When in a rush, teams may be tempted to cut corners in order to deliver on time. Sometimes this tendency might be driven by a business need that cannot be overruled, and teams are forced to take shortcuts. When this happens, teams must identify and track this as debt that they need to repay at a later stage (sooner is better, as with any debt that incurs an interest cost). Repaying debt regularly and doing things right ensures that the team does not slow down (or become bankrupt!).
10.  Simplicity -- the art of maximizing the amount of work not done -- is essential. Even in case of complex programs, organizations should strive for simplicity. Transparency and visibility are needed in order to create simplicity and maintain the flow of work between teams.
11.  The best architectures, requirements, and designs emerge from self-organizing teams. Agile encourages self-organization, which can be useful when managing programs. For multiple teams, this starts to happen when the each team is considered a unit and the overarching program team is considered the team that needs to reorganize. This is a question of mind-set and is in some ways easier to understand in case of small teams. When multiple teams are involved and each of them has slightly different (at times divergent) goals, self-organization can be difficult to achieve. That is where transparency, prioritization, and visibility of organizational objectives to all teams are useful.
12.  At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly. Inspecting and adapting at regular intervals is necessary to re-enforce good practices and make improvements. Agile encourages teams to practice self-sustained introspection and retrospectives. This is an important tool for program teams to review and use to fine-tune their practices for long-term success.


Agile principles, though exhibiting an overlay of software development influences, can be valuable for managing programs involving multiple teams from diverse functional groups.

Sunday, February 19, 2012

Goldtaking Notes - Sustainable Pace, Agile India 2012

Here are the audience notes from the GoldTaking Exercise done at Agile India 2012 during the session on "Slowing down to speed up: Encouraging sustainable pace in teams" on 19-Feb-2012.

Final slides are here.

Video from the session:

Group 1: How to motivate team to deliver at sustainable pace
  1. Acknowledge the achievements
  2. Environment, open culture, celebrate success
  3. When things go wrong, personal attacks should be avoided. Learn to internalize and change
  4. Celebrate with connection to purpose of work
  5. Try adn figure out why team is demoralized and plug the issues
  6. Understand the mindset of individuals to understand their de-motivators or motivators. It is possible that coaching will vary from person to person
  7. Make team members feel safe and secure to out of demotivation
  8. It is good to make mistakes but learn from them. Difference between personal and professional.
  9. Over-pampering should be avoided. Put up facts, and be straight-forward
  10. Like volleyball, coach should ask for timeouts if required
  11.  Practice and preach respect between team members, gain trust
  12. Challenge team on collective ownership
  13. Team building
Group 2: Tackling Management Interference at Sprint Planning
  1. Do not over-commit
  2. Rely on velocity and capacity for committing work
  3. Scrum Master should facilitate planning and protect team
  4. There can be client interference causing pressure on management
  5. There is need to adopt new work culture of Agile
  6. Lack of clear acceptance criteria upfront during planning
  7. Make sure all the stakeholders attend the sprint planning meeting
  8. Re-prioritizing of Product backlog by PMs causes disruptions
  9. Lack of trust: PM should not commit on behalf of the team at/outside Sprint Planning
  10. Development overflows beyond one sprint
    1. Plan in a way that this does not happen
    2. Estimate for less, specially when team members are shared
  11. (Only as much as possible) Accurately estimate/predict the team velocity to know the number of points to take this current sprint
  12. Under-commit but over-achieve
  13. What should happen if more points need to be delivered to client than what the team can deliver?
    1. If the team cannot deliver the points, then team should say "no"
Group 3: Motivation
  1. Leaders have to trust. Sustainable pace is a good way of building trust
  2. Dan Pink -> Motivation
  3. Do you buy into the company objective -> Helps motivate people
  4. Behavior that is appreciated, gets respected
  5. Stretch goals can help people grow fast
  6. Individuals knowing how they are contributing to the bigger picture
  7. Exposure to customers: Know about Customer's needs and vision
  8. If team values opinion you feel you matter, need to be noticed
  9. Appreciation of individuals from external sources over appreciation of teams may demotivate others on the team
    1. If the recipient appreciates the team that may help
  10. Team finds ways to appreciate/motivate high performers so perhaps no external appreciations needed!?
  11. Transparency at all levels is a pre-requisite for motivation
  12. Recognize team contribution
Group 4: Ad-Hoc to sustainable pace
  1. Experience: Last minute checkins, Slack and work inflow reduction after release
  2. Burned down before release, then next sprint gets off to slow-start
  3. Why this big-effort before the release? May be things were not really done!
  4. Expectations to go faster than you really can go, causes the problem
  5. Management push
    1. Educate Manager? No, that addresses just one problem
    2. You are actually not done if that happens
    3. Provide dates to managers that shows the real pace and use that as a basis for planning
  6. Improve effectiveness
    1. Non-value added requirements, for example paperwork. Have someone else do it - hire a clerk!
    2. Identify activities that are taking time and see if they can be reduced to save time
    3. Use CI and increased automation to release more often
  7. Use scrum prioritization to make hard and real prioritization
  8. Avoid "Goldplating" - over-engineering
  9. Zero defects to make sure it is really done
  10. Piling up work to test at the end of sprint is risky
  11. Argument about ability to swarm around stories. Some have seen it happen, some have not
  12. Positive experience with testers collaborating with developers (pair) from start. Done=> All test cases targeted => Done
  13. How much time to finish a story? 3 days on average, some have minimum 3 days of dev. effort.
  14. Tester writes test cases. Developers start developing at the same time they get the test cases

Friday, December 16, 2011

Agile India 2012: Slowing down to Speed up: Encouraging sustainable pace in teams

Agile India 2012: Slowing down to Speed up: Encouraging sustainable pace in teams

Find the final presentation here.

Here is the description:

We would like solutions delivered fast without compromising quality, user experience, implicit requirements and non-functional aspects such as scalability and performance. This would have been easier, if we had all the time in the universe. Doing this in a sustainable manner becomes a huge challenge for teams as there are multiple competing forces at play and because software development is very complex.
Coaches & Practitioners, participate in this workshop and leave with thoughts that will help your teams adopt and practice sustainable pace, and delight your customers over and over again.
Introduction to the topic, understanding participant expectations - 10 minutes
Achieving sustainable pace - 20 minutes
Workshop briefing and topic selection - 10 minutes : Participants will propose and select topics for deeper discussions Workshop - 30 minutes : Goldtaking (The “Goldtaking” format was introduced by Jan-Erik Sandberg and Lars Skaar at Agile2008 and is a variation of the open space format)
Workshop debrief and discussion - 20 minutes
Learning outcomes
In a highly competitive world, delighting customers is no longer optional. Steve Denning, in his book “The Leader’s Guide to Radical Management”), mentions that the goal of an organization is “Customer Delight”, as opposed to making money for its shareholders. Going by this goal in mind, we will examine how we can use Agile as a means to make our teams and organizations successful.
During this workshop, we will explore:
  • Sustainable pace - Importance and challenges:
  • How does it result in customer delight?
  • How agile values are challenged without sustainable pace?
  • What prevents us in delivering at a sustainable pace? (such as competitive surroundings, culture, organization structure, conflicting priorities, old habits, antiquated tools, technical debt)
  • How can we coach teams towards sustainable pace?:
  • Self realization
  • Importance of contextual information
  • Understanding and responding to Force fields
  • Challenging status quo: Stakeholder alignment and participation
  • Building your team into Agile craftsmen, and not Agile mechanics
  • Using Data as a vehicle for change
  • Inspecting and adapting
  • Continued engagement

Friday, September 2, 2011

Agile Coaching and Mentoring: Agile India 2012

Submissions to the stage can be made by creating an account at:

“As Agile becomes main-stream, the values laid down by the Agile Manifesto are continuously challenged in different ways during its adoption in different situations. Great coaches help teams and organizations in facing and overcoming these challenges through various learning techniques, so that the issues can be handled effectively. Coaches help teams and organizations embrace agile in its true spirit in order to maximize value that is delivered to the customer.

The Coaching stage presents sessions for people who want to help teams become better at agile software development. We are seeking interactive sessions that explore practical techniques a coach can use with teams. We also want to hear stories from experienced coaches that sharing insights into what works and what to avoid.

As an agile coach and mentor, you will learn about skills and techniques needed to improve team effectiveness so that you can guide your teams towards unleashing their true potential. As an agile team member, you will get a better understanding of different perspectives and techniques for improving team dynamics and create a better work environment. This stage will have multiple sessions, potentially including experience reports, tutorials, talks, workshops and research papers. Through these sessions Coaches, Mentors, Leaders and Team members will enhance their existing toolset and return with real life examples and thought leadership in this area. With these insights, they will be in a better position to apply this knowledge and get great results for their situation.

This stage will cover the following:
• Coaching and Mentoring skills and techniques
• Coaching challenges with people and technology
• Helping teams discover and deal with team dysfunctions
• Coaching in different situations (product development, IT services, consulting, distributed teams, new and mature teams, large and small teams etc.)
• Coaching for the enterprise

Come and learn techniques, listen to the experience of other coaches, and see how you can better support teams in their Agile journey.”
Coaches Corner
A space for conference participants to freely interact and mingle with Coaches. We will invite Coaches to sign up for this before and at the conference and coordinate with the Open Jam stage.
Opportunities to contribute:
- Contributing to Coaches Corner (sign up to be a coach on call or when convenient during the event)
- Help the stage evolve (by signing up to update your ideas on the Titan Pad created for the stage: )
- Submitting for the stage (
- If you would like to be a reviewer, let me know