Process Improvement

now browsing by category

 

Getting Value out of Agile Retrospectives

Hi guys, I want to use this post to introduce a topic I will discuss during next few weeks. Me and my colleague Ben Linders we are writing a pocket book about retrospectives. The title of this book is: “Getting Value out of Agile Retrospectives“.

The main target are: Agile coaches, scrum masters, project or product managers or facilitators who have at least some experience with doing retrospectives. They know the purpose of them, how they fit into agile / scrum, and how to arrange and perform them. This book will deliver practical description of retrospectives and how to do them, as well as an inspiration to different retrospective techniques and good practices in doing them.

Based on the previous information I want to use this blog to get a feedback from you. During following weeks I will publish several posts that will cover retrospective exercises and I would like to get some comments which would enable me to improve a content for the final version.

Below you can find some of the exercises that will be part of the book(Ben’s exercises are not here).

In conclusion, I would like to ask you to leave as much feedback as possible so that I can improve the outcome of this book.

Did you like this post? Do you want to get more in the future? Subscribe my newsletter below and follow me on twitter: .



I am trying to improve these blog posts with a help from professional designers and editors to give you even more valuable content. If you want to support me on this effort, feel free to contribute with any amount of money that you think it´s fair.




Thanks guys,
Luis

Ping Pong Programming

pingHi guys, in my last post I gave a small introduction to pair programming. This post will be short where I would like to present a small technique that can be used during pair programming. I learnt this in Rachel’s and Liz’s book. This technique is called Ping Pong Programming and it ensures that both members of the pair take a turn at the keyboard. Below you can find the steps.

  • The first developer writes a falling test and then passes the keyboard to his pair
  • The second developer writes just enough code to make the test pass
  • They then work together to re-factor the code that has just been written
  • Then the cycle can start again with the second person writing a new failing test and handing the keyboard back to the first person.
  • What do you think about this approach? Do you think that would help your developers? Do you think it would help you guys to design a better code and to spread knowledge within a team?

    Please leave some comments.

    Final3dPostCTA

    Small intro to “Pair Programming”

    pair-programming-stuhl

    Hi guys, some of teams, that I have been helping lately, identified a lack of knowledge as a problem in some parts of our product. To tackle this issue, they decided to start with “Pair Programming”. Previously, they never did it so they asked me for some guidance where and how to start. That´s why I am writing a small intro to a “Pair Programming”.

    As Rachel and Liz said in their book: “Pair programming is two people working together- at the same computer, solving the same problem. Each person plays an active role in creating the software; the person actively typing is known as the driver, and her/his partner is the navigator who looks ahead to consider next steps and potential pitfalls. Pairs swap fluidly between these roles.”

    If your team adopts “Pair Programming”, these are some of the advantages that you will benefit from:

  • Code is higher in quality, because it is constantly being reviewed
  • Good practices are shared more widely among the team
  • Developers are interrupted less, because people tend not to interrupt people working together
  • More than one developer knows each part of the code
  • Team bonding improves, because the team learns from each other and enjoys working together
  • But what should be done during the Pair Programming session?
    First, when you are driving, demonstrate that an important aspect of pair programming is explaining what you are doing and why, so don´t just type code in silence.

    Second, stay open for suggestions from your pair, even if they are novice programmers. Even though you see a very obvious solution, be willing to try the solution that your pair suggests. In any case, both will learn. If the solution of your pair is wrong, he/she will learn why it is wrong with a help of your explanation. If the solution is good, then you will learn new aspects with your novice colleague :).

    Third, one person shouldn´t use the keyboard for more than ten minutes at a time. Using ping pong programming can be a good approach. More information about ping pong programming here.

    One big mistake that is common in “Pair programming” is the fact that only one person does all the job. A lot of interaction between pairs should be observed. Interactive pairing forces pairs moving keyboard back and forward several times. In the beginning pair programming can be frustrating. Most of the time it means that developers will slow down to help colleagues but on the long term this is a tremendous help for the team itself.

    This was a brief introduction to the “Pair Programming” . Naturally, this post itself is not enough but at least gives an idea about what “Pair Programming” is. If you want to know more resources about pair programming, just let me know.

    Final3dPostCTA

    Small intro to “Coding Dojo”

    Hi guys,at the company, where I currently work, we are ramping up several Communities of Practices and one of the activities we want to introduce is “Coding Dojos”. This is the topic for today´s blog.

    A Coding Dojo is an activity that brings developers together to work in a pre-selected programming challenge. This is a great way for developers to improve their skills and it´s a great activity to encourage learning between developers.

    Everything starts with a pre-selection of a coding challenge which helps the people to prepare better for the activity. The dojo runs with two developers working in a pair in front of a computer solving the coding challenge. This can span different topics. For example, re-factoring some part of the code, implement a new architecture, etc. The PC will be connected into a projector in order to share their work with the rest of the room/office.

    During the development task, developers talk aloud giving an explanation to others about tasks and their solutions. If the room cannot follow what is being said, the developers will explain once again until they understand the approach taken by the pair.

    In every five minutes one half of the pair changes a seat with someone else in the room. This will allow everyone in the room to participate in this activity. Usually this exercise lasts for 1 hour.

    I believe this is a great way to help team members sharing the knowledge among each other.

    What do you think about this activity?

    Final3dPostCTA

    How to build agreement within your team

    Hi guys, in this post I want to demonstrate a small exercise that I learned from the book “Facilitator’s Guide to Participatory Decision-Making” by Sam Kaner.

    As an agile coach I spend lot of time introducing new ideas to teams but a question is: ” How can I figure out if these ideas will have enough buy-in from teams to be implemented?” The exercise that I´m showing you today will solve this problem; the exercise is called “Gradient of Agreement”.

    The exercise is really easy. Use a flip-chart, draw fiver different levels of agreement: “Endorse”, “Agree with reservations”, “Mixed feelings”, “Disagree but go with the majority” and “Block”. Ask team members to put a check mark on the level they feel comfortable, as presented below in the example.

    Using this kind of tool allows everyone to reveal its own opinion and level of commitment to the proposed approach. Sometimes it is not possible to get buy-in from the team, therefore I propose that you start with small steps, instead of having an ambitious final solution. Why not break the solution in small pieces, for example, instead of proposing to the team that automated tests should run after every check in, split this ambitious goal into smaller ones:

    • Automated tests should run automatically after every checkin
    • Automated tests should run manually after every checkin
    • Automated tests should run automatically every night
    • Automated tests should run manually every night

    And use the same technique for each different goal. After that chose the one that has the right balance between an ambition and agreement from the team.

    This was the exercise that I wanted to bring up today.

    Final3dPostCTA

    Using VSM(Value Stream Mapping) as data gathering for restrospectives

    IMG_20130217_190326Hi guys, in this post I wrote how can we use Value Stream Mapping as a tool to help with system thinking. Many people asked me if I could explain better what Value Stream Mapping is. Therefore, in this blog, I will give a short introduction about it and I will explain how you can use it as a gathering data for your retrospective.

    Although value stream mapping is often associated with manufacturing, it is also used in logistics and supply chain, service related industries, healthcare, software development, product development, and administrative and office processes. Value stream mapping is a lean manufacturing technique used to analyze and design the flow of materials and information required to bring a product or service to a consumer. At Toyota, where the technique originated, it is known as “material and information flow mapping”. It can be applied to nearly any value chain. But how can you use this in your team?

    The easiest way to do this is to grab some flip-chart papers and tape them on the wall, then divide the space in equal intervals, each interval represents a day of the iteration. Draw a line on the Y axis, this line should be on the position Y=0. If they are doing any activity that will bring value to the customer, tell to each member to draw a line on top of the Y axis line. On the other hand,draw a line under the Y axis line, if they are waiting or blocked by something. They need to do this activity everyday in order to to track all different activities inside the team. Do not forget to write notes when people are blocked or in IDLE; these notes are important to be discussed in the retrospective. The possible result can be something as the picture above seen above.

    I guarantee you that you will have plenty of data for your retrospective at the end of the iteration. I tried this couple of times and I was surprised how many issues we find out, how many dependencies and blockers we had and so on. Having this information available will help the team to decide how and where they can improve.

    P.S. On the picture, you can see different member roles. I know the setup is not perfect but it was what we could do at that time :) So, if you want to comment on the blog, try to ignore “non- optimal team setup”, instead focus on the activity.

    Final3dPostCTA

    Value Stream Mapping a tool to help Systems Thinking

    Hi guys, in this post I want to share with you a nice story that happened several months ago with one of my teams. At that time I had a team that was making the first steps towards Agile. They were a fantastic team, really eager to learn but still with the “old waterfall” mentality. They had a typical approach where the developers did development work and the testers – testing, not really a truly Agile team. I believe this is a common problem for teams that are switching to Agile: seeing only a small picture, they are not able to see the entire system. I believe they lacked “System Thinking”. But what is “System Thinking”?

    Shortly explained, “System Thinking” is the ability to see the “big picture” and not to be focused on just a small part of your job. For a better explanation, I will use as an example my former team to demonstrate my ideas. In that particular team the work was arranged so that the developers had a set of User stories to work on. A finished User story was passed over to the testers for testing. The problem was that although for the developers these stories were quite simple to implement, they were quite challenging for testing because of several compatibility issues that required full allocation of testing resources. When developers ran out of User stories they were asking the Product Owner for more stories to work on. However, the PO acted rationally and did not give them any new stories until the team delivered everything to the iteration backlog. It was obvious that the team needed some help to visualize everything that was happening. How to help the team?

    Clearly, the developers had their best intentions in mind: they ran out of work, therefore, they asked for more tasks. However, because of their lack of “System Thinking” they did not understand that more work for them would mean more pressure on the testing resources that were already fully allocated and, ultimately, an outcome of a poorer quality of the team effort. Apparently, the developers needed to understand that it was not anymore a matter of “us and them” because their job is accomplished when a customer gets the product, and the product would be ready when the team would act as a single unit. I have discussed this issue with some of my colleagues and they gave me a good idea: in next iteration to use Value Stream Mapping (VSM) for observing how the system behaved. This tool is a great instrument to identify different aspects of a system. If you want to use it you need to take some time to explain this tool to your team. From my experience not many people apply this in software development. VSM can be a fantastic tool to be used at retrospectives, but this could be explained in another post ;). Let´s see what happened at the iteration retrospective (an iteration where VSM was used).

    By that time, the team was already familiar with the VSM and they were quite impressed with the amount of information we collected using it. Having looked at different VSMs (we created one for each different User story), it was not long before the team could see that bringing more User stories to the iteration would not translate into higher output because the testers were already fully loaded, therefore, producing more code would only mean that the testers would not be able to deliver everything on time. The team started appreciating more “System Thinking” and not just think anymore in terms of their separate “boxes”. After some discussions, the developers decided that in the folllowing iteration they would help the testers with all the testing activities to deliver more User stories as a team. In the following iteration the developers and the testers worked more as a team and the output of the joint effort of the team was indeed of a higher quality and volume.

    Do you think this is something to consider when you work with your teams? What are your ideas on the topic?

    Final3dPostCTA

    Is there any demand for “Agile Localization”?

    Hi guys, this week I want to tell you what I have been up to for the past couple of weeks. I have written about it as it is always easier to see new ideas in a better light once they are written down. The purpose of this particular post is to invite you to a discussion about Agile Localization.

    I have previously mentioned that I started with Agile some years ago, around 2007. Few years onwards while working for one of my previous employers I became responsible for improving the localization process for several products. At the time the localization for those products was done the traditional way - at the end of the product development process towards the end of the project. My role here was to change the traditional approach in-line with the Agile approach so that the product deliverables of each iteration would be localized. The initiative was a success and we were able to have product deliverables of each iteration localized in 87 different languages. After some years of working with Agile I decided to share all the knowledge I acquired during those years with other Agile developers out there, so I started the “Agile Localization” project.

    I started writing a book on the subject thinking that it would be something I do in my spare time, but feedback I received from several friends and colleagues made me believe that my interest in Agile localization could lead to something more than just a book. Such as, a consultant might consider writing a book in order to have a successful career in consultancy. Together with two other colleagues we started a consulting company “Oikosofy”. The website mentions several innovation and Agile services that we offer, but there isn’t a mention of Agile localization there.

    However, I think Oikosofy could offer Agile localization as a service to localization vendors to be offered to their customers. At least this is what I had in mind when I had a “sales call” from one of the vendors. But it seems the guy did not understand me, rather, as one of my business partners puts it: the problem is not with the listener but with the messenger. I believe, I did not explain myself well enough. So, I take this opportunity to explain my idea in order to see how you like it. Let’s say in this post I present my MVP(Minimal Viable Product) and I would like your opinion on whether there is a demand for this service out there.

    The idea behind this service is to help companies sync their localization with their Agile development, so that the deliverables for each iteration would be localized. Of course, to make this possible a team must be already working in Agile and if they are not working in Agile yet, they can always contact us for help with the transition to Agile :). But coming back to the topic, this would be a service designed for teams that are working already in Agile yet still treat localization as something to be done outside the Agile process, at the end of the entire product development process. So our role would be to coach the team while working together with them and helping them adopt Agile localization practices so that they could have their product deliverables localised for each iteration.

    This service would be offered as a partnership with the localization vendors who would take care of the localization of the product and we would be working together with the customer changing their way of doing localization. This would help the localization vendors because it would improve their collaboration with the customers taking it to a new level. Instead of receiving a huge amount of strings at the end of a development project they would be able to deliver small batches of translated strings for each iteration. This would be also beneficial for the customer because it would allow the customer to have the deliverables of each iteration in all the languages they require. Another advantage here is that the feedback loop would be scaled down, too, which means the customer together with the localization vendor can timely fix any problems with the localization thus improving the quality of the product and reducing its time to market.

    So this would be one of the Oikosofy services in a nutshell - Agile Localization :). This is my idea of how Agile localisation could be developed into a service and I would greatly appreciate your feedback. Do you think there is a need for such service? Do you think Localization deserves to be a special service for Agile development, what would be pros and cons of it?

    Thank you so much for your most valuable input that will help us a lot in developing further the Agile community!

    Final3dPostCTA

    How large stories can impact learning

    Hi guys, this week I got inspiration for the post from a conversation that I had with one of my colleagues. I was explaining him the book that I read during my holidays - “Drive“. We went through many topics, but the one we discussed most was about Casual Friday, let me explain what it is.

    In case you are not familiar with the term, you can think of it as a relaxed work day, the day when people are already in anticipation of the forthcoming weekend :). In the context of our discussion this pertained to that specific time that Google made popular with its employees: when they can use their time to do whatever they want, of course, within the company activities, but not necessarily related to their on-going projects.

    The conversation continued for some time when he suddenly said that he cannot really do that, he does not have time to try this Casual Friday. He then explained that each their iteration takes two weeks, so if he starts using a day per week off the project they will have only eight days left and then they cannot deliver much for that iteration. At first, I could not understand him, so I decided to dig into it…

    I asked him, “How come you cannot deliver anything in eight days? How long do you take to finish a story?” However, when he told me that each story usually takes six to seven days, I understood their problem. Of course, if they take seven days to deliver a story and if something happens, say a small delay, it would easily take them the whole iteration to deliver that one story, but they will not have any time for Casual Fridays.

    In my humble opinion, they are just accepting too large stories. It would make sense for them to break these large stories into smaller units so that they could have more deliverables at the end of the iteration. Then I suggested that he tries an experiment: they could start creating smaller stories, say two-day stories, and they could see how many stories they would accomplish within the iteration. If everything goes well, they could deliver up to four stories per iteration and still have their Casual Friday.

    I cannot promise that this would immediately solve their problems and allow them to have their Casual Friday, but I think they might be one step closer to it, because I truly believe that smaller stories are much better than the large ones.

    This was just one example that demonstrated how large stories can have a negative impact on the development work. Here you can find more examples that explain why smaller stories are better for your development process.

    What is your opinion about it?

    Final3dPostCTA

    Lunch with Herman - A fantastic story of waste creation

    Hi guys, this week I got a call from my friend Herman who works as Agile Coach in Super Soft, here you can find a bit more about what he already did. He sounded quite sad and frustrated, though he didn’t want to explain the reasons. So, I invited him for lunch since no one can resist a Schnitzel and Weiss beer.

    During the lunch my fears were confirmed - Herman was down and depressed. After my insistence he finally opened up to me. As it turned out, he was extremely frustrated about the latest happenings in Super Soft. This time his responsibilities were beyond Agile Coaching, he was in charge of a project as Project Manager. So he finally had a better overview of the entire release process in the company. Being quite an experienced Agile Coach and a System Thinker, Herman felt extremely frustrated about the way things were managed within the release process.

    The way software release is managed in his company is completely against his vision of how the process should be. In his opinion the company should have a complete cross-functional team responsible for software releases. The team would make independent decisions, and if they decide that the product is ready to be shipped - it would be shipped.

    At the moment the company is full of small boxes (different departments), and the release of software depends on the decision of each of these departments. Herman has a feeling that most of the people in his company can only see their own small boxes and cannot understand the big picture. What is worse, he fears that people have little understanding of customer value, because instead of reducing the time to market they prefer to spend most of the time on acceptance gates.

    Then I asked him, “Why are those acceptance gates there?” The poor guy almost exploded telling me that quite a few times in the past there were situations when something went wrong, but instead of understanding what went wrong, the company created more processes to prevent the same happening in future. He then quoted “Mary and Tom Poppendieck”: “When an organization experiences software development problems, there is a tendency to impose a more disciplined process to the organization usually one with more rigorous sequential processing: Document requirements more completely, obtain written customer approval, control changes more carefully, and trace each requirement to the code”. This is exactly what is happening in Super Soft.

    He then gave me his opinion on how things should be managed. In his opinion, his company should try something what Toyota does. They should “stop the line” and understand the problem. They should find the root of the problem, its cause, instead of creating another process just to avoid the issue. Because creating another process will never fix the problem but only waste resources, and, most probably, sooner or later the problem will re-appear elsewhere in the organization.

    Herman believes that Super Soft has a difficult culture – it is a culture that does not tolerate mistakes. If people make mistakes - they are punished, and it is easier to put acceptance gates into different phases of the software development process rather than try some other approaches until they find the root causes. In his opinion it will be extremely difficult to change his organization because it is not a learning organization. If an organization is not open to learning, it will be unable to develop.

    After that I could not really say much to him, the problem is quite complex and I do not have any ready solutions. The only thing I suggested was that he could try to map all the release processes using a Value Stream Map and with that try to understand how much time his company spends on doing something that brings real value to the customer.

    Based on what he told me, though, I believe he would have a difficult time trying to agree with his colleagues on separating the activities that are a waste of time from those that actually bring value to the customer. But that is another story :)

    What do you think about it all? Can you help us with your suggestions? What other options do you think Herman has?

    To close this post I would like to say this is a fictitious story, any relation with the characters or the company’s name is mere coincidence.

    Final3dPostCTA