Optimizing the whole with the strategy and the vision

In the past year I have played and studied chess more or less active. It has been interesting to see how strategy game chess actually is. As well chess is fun to play I have also found interesting relation to software product development.

In both “games” I have found one of the best approaches first doing strategy, then planning and  executing it in small pieces. Let’s take a closer look why I think strategy is important.

Software development and vision

A vision is strategic document in software development. Document usually contains description from the problem and vision from the solution. It also declares in which boundaries solution needs to be implemented.

In other words in the vision you set up strategy how customer problem will be solved.

Based on vision you can start to create more detailed plan like product backlog or functional requirement lists, adjust priorities and then execute it.

Advantages of strategic thinking in chess

chessboardIn chess strategic thinking means you are building a plan which you can follow and finally win a game. That plan is not step by step moves to the victory. It’s rather vision about which weaknesses and strengths to guide you through the game. The game can be in situation when it’s better to attach, switch pieces or even to sacrifice a piece to get better position as opponent has.

Without a long term plan in chess your chances to win are not good. It’s not possible to count all variations which opponent might play. It’s too complex. And if you just move based on opponent’s last move then he or she controls your game. You need to have long term vision how to win a game.

Software development complexity board

In software development complexity might not be so easy to see, but it’s there. I’ll try to explain complexity with software development board.

Let’s start from the chess:

  1. Your opponent has his or her pieces which have different properties. Your opponent has own mind which you can’t read. So he or she moves pieces more or less unpredictably. This causes most of the complexity.

  2. You have your own pieces which have different properties. You can control your own pieces.

Transforming it to the software development:

  1. LIke in chess I added items which cause complexity to the top of the table. Those are again more or less unpredictable and not fully controlled by you and your team. There is two kind of things. There is items which are related to customer and there is items which are related to environment where you are working.

  2. To the bottom I added items which are solution. These items you can control. There is features delivered and then solutions how features were done.

You win if you can handle complexity and unpredictability and build the solution which satisfies stakeholders.

From theory to the game

As I told in chess it’s impossible to count all moves and win the game. Same applies to software development. It’s not possible to create detailed functional and technical documentation upfront.

Why? Because there is too many factors and you learn those when development goes on. That’s why, as in chess as well, you create first a vision and only then plan next and only next moves.

Now let’s take an example about playing with the vision.

Let’s assume that playing couple moves in the chess game. You find out (or learned) that you opponent is attacking from the left side with his bishop. You need to stop that and you have two options. Which one to choose? The one which aligns with your strategy. This way you improve your whole game and you are just controlled by your opponent.

Same in software development. Let’s assume you created a proto and showed it for the users. You learned that the way they do their things are different that you expected. You need to do something. Way to do things was unknown for you and now it’s attacking you.

With this case you have now possibility add more details to feature which will be implemented in near feature. Like in chess game  you had two options to react to opponents move now in software solution you have several ways to fill the need which you learned. You choose one which is aligned with your vision. You are optimizing the whole solution, not just single need. You are going toward your goal, your vision. And the vision declares your strategy. Brilliant.

Vision or strategy is there to help you when you learn more from the vision. Vision is like a compass that guides you to the north pole.

So what I learned?

In chess it is easy to understand game complexity. It’s there front of your eyes. In software development it might not be so obvious. Complexity makes it almost impossible to count all moves upfront. Same applies to software development planning.

When you learn more from the game or from the system then it’s the vision that guides which helps you to do new decisions. With the vision you optimize the whole system, go to the correct direction and not just react to single needs which will pop up.

It’s interesting to think that long term product road maps are strategical documents as well. What could be in the top row when thinking about product road mapping complexity board?

Advertisements

Case study: Planning communication for managing stakeholder expectations

How could stakeholder expectation management be done in practice? We already went it through in theory and now I’ll adopt theory to practice with imaginary case study.

Let’s assume we have product which has been built as a back office solution. Marketing and product owner sees opportunities in markets if frontend would be web UI instead of back office UI. Development team has checked that new UI can be implemented with reasonable cost and owners of the company have agreed to invest money for the product development. Marketing department have got two pilot customer signed in for beta testing.

Identifying stakeholders

There has been named one person from the owners to be responsible from the cash flow for this project. He has authority to cancel project. There are two customers who have agreed to be pilot customers. They have named 2 main users (1 from each) to be responsible about feedback. Pilot customers are able to purchase software later on with discounted price. Customer support will support product after it’s published. Marketing department is interest how they are able to sell product and company has one 6 people scrum team which will work with the project

Analyzing and grouping stakeholders

Customer support wants to have product which is easy to support. They want to know that there has been taken care of usability issues and that there is followed company’s standard for web UI development. Support is also interested that team will not build too complicated features for new UI. As customer support knows the team and what they can do it’s enough for them to monitor such things.

Pilot customers are more interested. They have some investments in as they have people inside project. Also they are interested that final product will give as much value for their business as possible. They also have some power as product goal is to fulfill needs of customer segment which selected pilot presents.

Marketing has almost similar interest for the product as owners of the pilot customers. Market’s contains lot of potential new customers but it requires that product features matches market expectations. Marketing provides lot of important information for guiding product development.

Dev team is interested to deliver valuable product (case company is proud to have such team). After all it’s their job to do project. Also they have some power as this team is only team which can make product with reasonable cost.

Main users are interested from the product as well. Product impact will be high for them. They will use product in their daily work after this project. Their power is not high as dev team but it is higher than customer owner (we assume that owners of the customer companies are listening these users).

Owner is providing cash flow. He has high power. He is also interest about product success. There are certain risks with dev team and web UI. Because of that owner is interest to follow how product development starts.

Following picture shows how stakeholders are placed to matrix based on those groups.

When product beta’s will be taken to use it has impact to customer support. Even customer support priority group is  small it should be managed closely in release planning. Based on this short analyze there can be created groups

  • Manage closely: Owner, Dev team, Main users (+ Customer support for release planning)
  • Keep informed: Marketing, customer owners
  • Monitor: Customer support

But these groups are only initial.  For example, after project goes on then stakeholder can be moved from group to another. Why? Because environment changes. After a while owner finds out that he can trust the team. Also he notices that feedback from main users is positive. Things have changed and he doesn’t want to use such much time for this project. He is then moved to group Keep satisfied.

Communication

Grouping is now done and communication can start. First there is created vision with people who needs to be managed closely and kept informed. In this case study vision is written by product owner but it’s based on co-operation with marketing, owners from customer, main users, owner and representatives from dev team.

After vision there is planned schedule with people who needs to be managed closely and who will have impact based on schedule. Owner of the company has told that he only wants to be informed about release plans. Product owner starts to work with developers and with main users to create rough product backlog. This backlog has first estimations from the size of product features. Release plan is created based on rough product backlog and for that also customer support and marketing are asked to contribute. Backlog has now first priorities.

Development starts and reviews takes their place. Demos are important for  the people who are in the group which needs to be managed closely.  Other groups are invited to demos but its optional for them to join. This means that there can be found at least dev team, main users and the owner from the demo session. Sometimes you can find people from marketing, customer owners and customer support as well.

Stakeholders decides to split releases to two sessions. First one introduces release  and second session works as a retrospective for the release. To both sessions there is invited all stakeholders. In the second session there is checked how project is going based on the vision and release plan. If needed then changes to expectations and groups are made. This goes on until project is finished.

Conclusion

In case study there was used 4 steps to manage stakeholder expectations:

  1. Identify stakeholders
  2. Analyze and group stakeholders
  3. Manage expectations with known tools
  4. Iterate

Case was pretty nice and in practice there comes many surprises along the project. Environment changes. It would be nice to hear what are best surprises what people have experienced along the way. If you share some of yours, I can share some of mine. We can together think how to handle stakeholder expectation management in those cases.

Stakeholder expectation management – introduction

Let’s go more deeply to managing stakeholder expectations as it was discussed in earlier post comments. Successful project and product needs successful stakeholder expectation management. When expectation management is kept effective it provides valuable source for the feedback. Even expectation management sounds relative simple to do I have found myself many times figuring how it would be good to done. Other question is that how much it’s needed.

In this post I’ll go through basics of stakeholder expectation management from product owner point of view and in next post I’ll adopt theory to practical example in my agile context.

Stakeholders

From the wiki we can find that project stakeholders

  1. sponsor a project, or
  2. have an interest or a gain upon a successful completion of a project;
  3. may have a positive or negative influence in the project completion

In practice it can be management, customer, main users, dev team and customer support. For finding how much expectations management is needed we could group these entities with these question.

How much communication is needed

First you need to identify the need. Identify and analyze your stakeholder to different groups based on their needs. After you have groups then communicate based on group needs. This way you are avoiding unnecessary overhead. After a while start to get feedback and re-arrange groups if needed.

For grouping there is several ways

  • Users, governance, influencers and providers (source)
  • Priority groups which are based on variables: power (high/low) and interest (high/low) (source)
  • Impact of product (ROI, change in future work load etc.)

Also there is needed to consider that how big trust there is for project/product success. If stakeholder trusts product success then need of the communication is not so high. From my experience there is variances like

  • Competence people vs. not competence people working with product
  • Small project vs. big project
  • Known markets vs. unknown markets

How communication can be done

Keeping expectations in already familiar tools will help you to avoid unnecessary overhead.

Product vision

  • Here you will capture your business value, customer main needs, critical attributes etc. So it is already telling you what are the stakeholder expectations
  • Checking this regularly will give to you and other stakeholders opportunity to know if product is still going to deliver value what was expected
  • This usually is document. For communicating more about critical attributes I propose tool from Mike Cohn’s blog.

Release plan

  • What expectation are going to be filled and when? What are milestones? When people with impact needs to be ready?
  • With this it’s also easy to visualize what happens when stakeholders come up with new ideas and requirements (yes it really happens when stakeholders understands that changes and feedback are welcome) or some key people are lost from project.
  • Visualization can be simple time line or gant chart or release burndown chart.

Product backlog

  • Which are the next things to be build.
  • More detailed than release plan and from my experience big picture can be hided to backlog. Use it for correct purposes for needed stakeholders (like dev teams and users).

Demo sessions

  • Useful session to make sure that expectations for this sprint are filled.
  • Is more detailed and might hide big picture so this is not ideal for all stakeholders.

 Conclusion

Identify and analyze your product stakeholders. Try to find how often and what kind of information they are interest to get. After this is done then include information to existing tools which you are using for your product. During implementation phase get back to these tools and check is product still meeting stakeholder expectations. If not then fix direction (or expectations).

One point which also good to know is mentioned in this post. There are realistic and unrealistic expectations. Don’t let unrealistic expectations be alive.