Category: Culture

  • 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

  • More Happiness!

    One of the things I’m trying to optimise for is my happiness. Hopefully it doesn’t come as a huge surprise that this is a pretty complex thing to do. In my time as an Agile Coach, I’ve read a lot of literature of varying quality on this, and indeed hopefully have helped others to use this to find increased happiness for themselves.

    From the studies supporting “Thinking fast and slow” it is clear that present happiness and “remembering happiness” are two very different things, both of which would need to be considered. [1]

    IMG_20150925_084513.jpg
    A happy (in the present) panda

    Through my reading of several studies, there is one key thing that I want to call out in this post: social connectedness. It turns out that social connectedness is a better predictor of happiness than any other variable (such as money or education).[2]

    As someone going from full-time employment (with a built-in 5-day-a-week social) to self-employment, I was worried that I’d lose a lot of the social connection I had in my life.

    To combat this, I agreed to spend 2 days a week in an office coaching teams. I also joined a few local clubs, and committed to myself that I’d go to some interesting meetups.

    I’ve also been measuring my happiness day by day, and reflecting on it, in order to cover both “types” of happiness. I draw smileys on my calendar each morning, and do a monthly check on how I feel the last month was.

    2016-05-15
    With thanks to Tung Chun Food Manufacturing Ltd.

    I know this isn’t very advanced, or even scientific. By using this basic data, I’m trying to understand just a bit more about how I feel, and see whether changes I make (such as joining a club, or doing more running) make a measurable difference to my happiness. Also, through the mere fact that the data exists, I ensure I focus on it more, which is what I want anyway! [3]


    [1] Kahneman’s TED talk https://www.youtube.com/watch?v=XgRlrBl-7Yg

    [2] http://www.hks.harvard.edu/saguaro/communitysurvey/results4.html

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

  • The journey to a company culture

    I like to think of culture as what happens when no-one is looking.

    As a new company, you’re in a unique position to genuinely define your culture, rather than adapt to someone else’s [1]. Who do you want to be? What matters to you beyond your Product or service?

    IMG_20160306_173110.jpg
    Some books

    I’ve found a number of challenges to the cultural philosophy I want to live, the strongest of which (for me at least) are from customers. To be specific, I found many customers wanted a fixed price arrangement. This would mean:

    • defining work up front
    • attempting to estimate duration
    • committing myself to a potentially large chunk of time

    As I discussed with them, I don’t want to do any of those things, in the interest of the customer getting great value[2]. I want us to be able to pivot as we learned more, so we can work on what matters rather than what happened to be in the contract. This is the spirit of the value of genuine “Collaboration” that Fuza has[3], which I believe means I need to share the same goals as my customer. Luckily most of the people who are interested in working with Fuza are keen to make smart decisions, and have understood and embraced the attitude.

    The key reason: Without shared vision for the work, we cannot work to get the same benefit and it can become a purely capitalist transaction. When I work, I want to feel and genuinely be a set of people working together for the same thing, as this sense of shared purpose is motivating [4] and as such I am confident it will lead to not just better delivery but also more engaged and happier customers. I’m sure this holds for people working in larger and longer-established companies too: we all like to have purpose. Hopefully one day soon we can get some solid scientific studies to help us understand how to share that purpose effectively.

    [1] https://en.wikipedia.org/wiki/Social_philosophy

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

    [3] See www.fuza.co.uk for more info on our values.

    [4] Incase you haven’t watched it, http://www.ted.com/talks/dan_pink_on_motivation?language=en

  • The key to being awesome: feedback

    Last week I was talking with one of my friends. “I’m going to get fired, I know for sure I am delivering below what they had hoped” he said.

    This isn’t the first time I’ve heard these kinds of fears voiced. I encouraged him, as I am now encouraging you, to SEEK FEEDBACK. There is no need to live with insecurity. Everyone should do this, as it is valuable information about ourselves that we can use to self-improve. Doing this regularly is even better! There is no need to wait a year for your annual appraisal: by getting quicker, regular feedback we learn faster. With this in mind, please do take a minute to give me feedback on this blog, either in the public comments, or privately here:

    Go back

    Your message has been sent

    Warning

    Warning.

    How can I get feedback?

    Often, feedback comes in an annual appraisal with your boss. You will likely also be getting some kind of feedback from your close friends (e.g. “it is really annoying when you turn up late Harry.”) In this post I’ll outline some well-established methods for getting professional feedback.

    Pick some people whom you value the opinion of. This probably will be people from work, but may include some friends or family. A broad variety of perspectives and relationships will help you get a fuller picture.

    Now there are many different ways I’ve seen for gathering this kind of feedback.

    Start, Stop, Continue

    This is arguably the simplest for a beginner: simply email some people asking them:

    • What should I start doing?
    • What should I stop doing?
    • What should I continue doing?

    They’ll reply with some things, and maybe you’ll want to follow up with a one-on-one discussion to check your understanding on some of the points.

    360 feedback

    You can do this as “Start, Stop, Continue” or as a custom SurveyMonkey form with some traits you’d like particular feedback on. The “360” element of this is that you should ensure you ask not just your manager, but also your direct reports and other peers. The top link on google when I looked was this example. It is very quantitative and trackable if you do it regularly. I would only recommend this particular site if you have a direction you want to develop in though, as it restricts ability to comment on some things, like say whether they’d really appreciate it if you used some more effective deodorant.

    Johari Window

    This is a personality mapping test, where you can see how different people see you compared to your self-perception. I found this quite interesting and surprising. This is much more of a long-term improvement and measurement exercise, and again you won’t get specific feedback on performance, etc. in this. Try it out here.

    A conversation

    This is my favourite. It is best to give the other person time to prepare and get their thoughts in order about the feedback they’d like to give you. Keep it safe by using a start-stop-continue method or other framework if you prefer. If you have particular questions, you can ask them: again preparing this beforehand is great, but don’t hide behind a piece of paper. Ideally you’d both give one another feedback, since this is a great trust-building mechanism and you can both benefit!

    Other methods

    There are many other ways to get feedback. Let me know if you have another favourite in the comments below.

    How should I take it?

    Receiving feedback can be hard, especially if it feels critical. Remember this is an opportunity for you to grow, and these people are being nice enough to help you. If you take this with a developmentally-focused, rather than self-critical, mindset, then you’re on to a winner.

     

  • 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