Category: Agile

  • Deep dive: Planning

    In this post, we’ll discuss different ways of planning. When I talk about planning, I mean deciding what to do or what objective to achieve.

    As such, estimation and other timeline-related activities will be out of scope here ;-).

    When do we plan?

    In Waterfall, we start with a planning phase: deciding all the work to be done, up front. It looks a little something like this:

    waterfall
    Waterfall Planning

    In Scrum, we have iterations (sprints) which have a Sprint Planning meeting at the start of each. So our picture looks a little bit like this:

    scrum
    Scrum Planning

    In kanban, teams can do as they wish. Often this results in doing planning when it is needed (eg once all the “in progress” work is done) so it is more sporadic:

    kanban
    Kanban Planning

    Overall, the proportion of time spent on planning might be about the same: Agile evangelists would say that because of the pivoting this repeated planning allows, the value they deliver overall over the same time period will be much higher. (I agree with them!)

    One of the things I find interesting as thought experiments is applying these concepts to life. As a child, many of us have some dream of what we would like to do. As time progresses, perhaps this dream changes: in some sense perhaps this is a bit like a failed waterfall project… I hope though that we can instead see it as more like kanban planning: if you wanted to be married by the time you were 25, but didn’t meet the right person, it doesn’t feel fair to call that a “failure”.

    Who does Planning?

    In Waterfall, it is often a Project Manager, with the help of a few trusted Business Analysts. Perhaps the rest of the team have not even been assembled at this point.

    In Scrum, the Product Owner sets the direction (and if they are a “good” team the rest of the team will be very involved too). Often the developers are involved in estimation, and in a good team they will also be involved in creating some of the stories, with the Product Owner having an overall accountability for it.

    In Kanban, it can be anyone, though it is common to have someone fulfilling a kind of Product Owner role, to engage with stakeholders and understand what work will add value and be the best return on investment. Importantly, it is often those doing the work who will trigger the planning sessions (eg when they have no more work to do).

    Psychology of Planning

    It seems clear from Self-determination theory that those doing the work being involved in planning will lead to more intrinsically motivated workers, who actually want to work. This is particularly true in creative work. If you are interested, I would really encourage you to read up on Self-determination theory and see how you can apply it to your team to help them be more fired-up about their work.

     

     

  • Guy’s favourite Agile links

    I thought I’d share with you some of my favourite tools and resources I use as an agile coach. I find all these topics to be essential for being a coach.

    Retrospectives

    I love helping teams do retros, so they can reflect and improve the ways they work. But better is getting them to lead their own retros. To help, I often share my favourite retrospective idea sites:

    Scrum

    I try to use only the scrum guide here. Too often I hear people say things like “We must have User Stories because we are doing Scrum”, which is not only untrue by the definition of Scrum, but also may stop the team from doing something smarter (though I do like user stories in general, to ensure the team have a value focus).

    Kanban

    David Anderson’s “blue book Kanban” suggests a fairly rigid approach, which is worth considering and learning from. I would argue it runs counter to the philosophy of empowerment evangelised by the Agile movement.

    I like the “primary sources” for this, such as this from Toyota.

    Agile

    Clearly the Agile Manifesto is the source of truth on this.

    Lean

    I can’t help but recommend Mateusz Gajdzik’s simulator tool. Don Reinertsen’s book Principles of Product Development: Flow is also of interest here.

    Psychology

    I tend to use coursera to expand my horizons in Psychology (as well as in other areas such as gamification or mathematical techniques), as books get out of date very quickly. I very much enjoyed “foundational neuroscience for perception and action”, “social psychology” and “inspiring leadership through emotional intelligence”. These change all the time and many of the above are no longer available, so have a browse yourself.

    I also love the following videos (which I am sure to have mentioned before):

    • Dan Pink on motivation
    • Nudge (and I like many other RSA videos too)

    Management and Leadership

    The distinction between management and leadership is critical. For some “agile appropriate” tools, I like Jurgen Appelo’s work, particularly Management 3.0 #Workout.

    For leadership theory, I’d recommend reading some summaries to broaden your perspective, such as this.

    Coaching skills

    Lyssa Atkins’ book Coaching Agile Teams I found a helpful and well-thought-through guide. Overall though, I’d suggest that in coaching there is no substitute for practice. Inspect and adapt.

    I’d love to hear about your favourite resources, and any feedback or suggestions for better resources.

  • Technical Debt

    According to wikipedia…

    Technical debt is “a concept in programming that reflects the extra development work that arises when code that is easy to implement in the short run is used instead of applying the best overall solution”. I’d like to talk to you about something more physical instead:

    IMG_20160703_220615
    A Technical Debt Tree

    First, someone planted a hedge. Then the bushes grew into trees, weren’t good as a hedge any more, but they left anyway… and built a wall too. After some time, they wanted to keep sheep in, so added some barbed wire to stop them climbing over the wall. And now we have a (rather amusing looking) bodge: it would have been better to rip it all down and have a proper fence instead. I think you’ll agree that (whilst quite attractive with the greenery) it is a bit of a mess. Let’s translate this now into software development.

    How do you know if you have technical debt?

    Almost by definition:

    • New features are slow
    • Bug fixes are slow
    • Developers say the code is crap and messy
    • There is extensive documentation separate from the code itself
    • New starters take a long time getting up to speed

    What can I do about technical debt?

    Like other Agile Coaches, I’ve seen lots of ways teams can get better at this:

    • Realise as a team that there is a problem
    • Allow developers the time they want to get the code good, as part of each story
    • Add “technical debt” stories / work parcels
    • Write (and live by) coding standards
    • Write (and live by) definitions of done
    • Do code reviews
    • Consider trying pair programming

    There are lots of other things you can do too. I’d recommend avoiding a big rewrite and do improvement incrementally if you can, as this increases your feedback. Use your noggin: If you’re refactoring code, do the most-often-changed bits first. And if your stakeholders are hesitant to invest in this, measure your Lead Time and show them how it gets better on the parts of code you’ve improved.

    Any comments on this topic would be great! Do you have other ideas for removing technical debt?

  • Keep it lean

    I spent last week with a friend, trying to help him spring clean his house. He’s been struggling with feeling overwhelmed with all the complexities of life, and wanted some external help.

    “Being lean” isn’t reading a book. “Being lean” is “being lean”. [1]

    Key principles to articulate:

    • Limit work in progress – e.g. do one thing at a time
    • Make it visual – e.g. through a physical board and colourful post-its
    • Keep inventory small – e.g. don’t waste time writing out the 50 things you wish were doing already, just write down the first 5 and crack on
    • Sustainability is important – both in terms of pace and what happens after you (the trainer) are gone

    You’ll notice the above are all “for example” rather than “this is exactly how you must do it.” As a coach, and as a mathematician,  I don’t care how you do it, I care that it is smart. And the above principles are either psychologically or mathematically sensible. This is also why the role of Scrum Master does not make sense, but Agile Coach perhaps does.

    Cue Kanban board!

    williamkanban
    Low budget Kanban board

    Especially with novices, this doesn’t need to take very long. As you can see, the above has been assembled (by the trainee) using a cereal box. It is very important the trainee does it themselves, so they feel ownership.

    Contrary to popular belief, smaller is better. Small tasks make it feel more sustainable, and help give more endorphins as you move to “Done” more frequently. Just like a production line, which is where Kanban was famously popularised. [2]

    Supporting others in their lean journey is about giving them tools, not doing things for them. If your friend wants their house clean, it might help in the short term to clean their house for them: but it will just get dirty again. The essence of this is something like “Give a man a fish and you feed him for a day, teach a man to fish and you feed him for a lifetime”, and it extends further to “Why are you eating fish?” and “Have you thought about farming?”

    It is much smarter to give them the ability and motivation to clean it themselves, and techniques and motivation to keep it up once it is in a reasonable state. Better still is to give them the broader desire and ability to reflect more fully, to understand why this matters to them and how it helps them on a deep level (psychologically, spiritually, philosophically, e.t.c.) Or maybe it doesn’t and they shouldn’t be prioritising doing it.

    Motivation is key. Without it, there would be nothing done. As a coach, your role is about inspiring more than anything else. If you can build a sustainable flame in someone, they can easily google the rest.

     

    [1] https://xkcd.com/703/

    [2] http://www.toyota-global.com/company/vision_philosophy/toyota_production_system/just-in-time.html

  • Data-Driven Decisions in Culture Change

    Today I want to share some thoughts around data-driven decisions. Rather than present some evangelical-sounding argument, I think it might help if I speak from my personal experience:

    • I care about data because it is the only way I know if I’m getting better.
    • It also helps me to think about what truly matters.

    Seriously, I apply this to everything: from my work, to my workouts, to my gardening, to my…

    Enough of that. Let’s take a real example: let’s say our goal is

    “Make the company culture better”

    The first obvious question is what does “better” mean? This is always worth a proper discussion. For our purposes now, let’s say we’ve agreed for our purposes it means that people enjoy being at work, and are productive.

    So how would we know if we were changing that? That’s when it gets difficult, and very important, to measure: since then we can see what things (experiments) we do that impact this.

    On the “people enjoying being at work” topic, we might look at some quantitative measures from People data such as “rate at which people leave the company” or “hiring ability”, together with some softer, qualitative, conversation-based data. We might even want to construct things, like a culture survey or exit interviews, to understand some specific aspects of what matters to us.

    Then in terms of “productivity” (or some measure of value delivered), we might want to look at the customer benefit delivered each week, in £. This might be too hard (indeed I’m not sure anyone has cracked it [1]), so we’re looking at throughput (a count of stories done in a time interval) instead as a proxy-measure. If you have any ideas of how we could do that better I’d be really keen to hear them!

    Following scientific method:

    1. First, we want a baseline: to capture what the current status of these things is.
    2. Then, we want to conduct smart, hypothesis-driven experiments, so we can see if these genuinely do impact things: being sure to take repeatable measures.

    Unfortunately for our example, this interactive human behaviour is almost the definition of a Complex Adaptive System [2], so it won’t be easy to show causation – we’d need to do some Principle Component Analysis [3] (or similar) and that would require “long” and ideally also “wide” data, together with experiments and consciously-held-out subsets. In a business environment, this is hardly pragmatic.

    We can though at least show that something important has changed, even if we can’t easily prove why it changed.

    By gathering data that matters, you too can be data-driven! Experiment with this on something simple to start with, and see whether it works for you. It might be what time of day to commute to work, your own wellbeing, or the quality of your code. Let us know in the comments below what you try and how it goes!

    [1] http://agileresearchnetwork.org/wp-content/uploads/2015/07/Measuring_value_in_agile_projects_WP.pdf

    [2] https://en.wikipedia.org/wiki/Complex_adaptive_system

    [3] https://en.wikipedia.org/wiki/Principal_component_analysis

  • Making lean decisions in the wild

    IMG_20160403_151839
    The wild

    In the lead-up to founding a company, like many others in my position, I thoroughly enjoyed “The Lean Startup” by Eric Ries. Inspired accordingly, I’ve been trying to make smart decisions, in particular by making decisions at the right time. This post is really about the idea of deciding as late as possible, in order to reduce waste and increase pivot-ability.

    There are SO MANY things to think about – from the impact on the rest of life, to coding some software, to actually running the business – that it’s really important to be able to correctly prioritise or risk being overwhelmed.

    Let’s take some examples for decisions it is tempting to take on day zero of starting a new company:

    • Company name: needed for URL and company registry, so pretty important to do early
    • Company logo: not needed for URL or company registry, so don’t even think about it yet

    One thing that took me a large amount of time and effort to make a decision on was on computing hardware, mainly because it directly involved money. It wasn’t entirely clear at what point I needed to make the decision. I didn’t even know what I’d need, and it is quite difficult to be adaptable when buying hardware (for example upgrading from one graphics card to another could be a waste of cash.)  

    I had a few clear criteria though:

    • “Presentable” and transportable for working on client sites, right now
    • Able to build mathematical models whilst working in the home-office
    • Be a good value purchase

    Considering my requirements, it seemed like there were two logically separable requirements that probably justified two different pieces of hardware, particularly if it meant I could delay one decision.

    Firstly, I ended up choosing an Asus Chromebook Flip for its easy google integration for client work, because the tablet format would be useful during presentations, plus I needed something for this right away.

    IMG_20160403_152702
    Working on the kitchen table

    For the second criteria, I decided to use my (pretty old) PC as a modelling computer in the meantime so I could learn more about what I need. At the point when I have to upgrade, I will. In this sense, the lean philosophy of making the decision as late as possible has felt really helpful.

  • Your life is like a software product

    Your life is like a software product. Not in the sense that people are a bit like robots… I mean that you can choose your life’s features, look-and-feel, and what it does! (If this analogy doesn’t work for you.. sorry! Feel free to suggest a better one in the comments below)

    Software development isn’t the same as it used to be. Instead of deciding all the requirements up-front, we use Agile to incrementally deliver value [1].

    The same can be true of our lives.

    People no longer need to feel like they are deciding “Mummy I want to be a doctor”, but rather “Mummy I want to be a doctor first”. Approximately 1 in 10 people in the UK have a current intention to change their career[2].

    IMG_20160305_161256.jpg
    Even Birmingham (UK) changes

    How does this relate to you?

    Firstly, by thinking of your life like a software product, you can consider the features your life currently has. Is it happy? How connected are you to other people? What are you spending your time on? What can you measure to understand more about your life? What are the issues you want to fix?

    Once you understand where you are, you can think about where you are going. Not necessarily overall, but for the next “increment”. In particular, what one small change would make something better? And do that. People often do this each year at New Year: I do this at least every three months, since (maybe) this should be enough time to form a habit [3].

    And you know what, if what you try fails, that’s fine: you’ve learned something! Information density (and learning) is highest when we fail half the time. You can stop that experiment, and try something new. Who knows, now the most important thing might not even be related to what you were doing last month. Maybe “Prepare in advance for Christmas” is now more important than “Lose 5kg by the end of November”.

    This is hardly new news but please, don’t wait to start improving your life. Perhaps take up “Inspect and Adapt” as your (next attempt at a) personal mantra. If you’re after ideas on how you can help yourself understand more, take a look at something like http://plans-for-retrospectives.com/index.html

    [1] http://www.agilemanifesto.org/

    [2] http://www.thecareerpsychologist.com/2010/11/career-change-statistics/

    [3] http://www.sciencealert.com/here-s-how-long-it-takes-to-break-a-habit-according-to-science