subscribe via RSS

Recent Articles

  • Giraffe Ears: An Example

    A practical example of how to use the “Giraffe Ears” concept from Nonviolent Communication, taken from conversations that programmers routinely have with their coworkers.

  • Two Simple Tools for Handling Open Loops

    Get things out of your head by combining sleep and say, or whatever those tools are called on your system. Schedule 30 minutes to investigate them and figure out how to use them.

  • How TDD Seems To Go Against Agility

    Yet another person yells absurd thoughts about TDD that seem ludicrously easy to debunk. But what if their absurd thoughts are perfectly sensible? What would that mean about TDD and its role in Lightweight Software Development or “agility”? If we put on our Giraffe Ears, we can see the situation differently and possibly even—shockingly—be helpful.

  • The Trouble With 'Readable' Code

    I routinely encounter programmers complaining about “unreadable” code, who then play games of refactoring tug-of-war in their code base. By describing more precisely what they don’t like about the code, they can agree with less effort and move on with their lives.

  • Not Only X, But Also Y

    Learning a new way doesn’t immediately invalidate the old way. Recommending one way doesn’t mean recommending against the alternatives.

  • Scarcity Mindset and Work In Process

    One very common trap that software professionals become stuck in: the positive feedback loop between feeling stressed for time and trying to do everything. Burnout follows for those who don’t find a way to break free of this trap.

  • Agility Creates Options, But Strategy Remains a Free Choice

    Many decision-makers are attracted to Lightweight/Agile ways of working because they believe it will help them deliver faster. Some proponents counter this by focusing on value and proposing a one-size-fits-all way to think about “business value”. I believe that these ways of working ultimately help us most by guiding us to create options so that we can spend less time catching up to our outdated plans and more time consciously executing our business strategy. And we don’t get to outsource our business strategy to “the framework”.

  • Remote Training Without (With Less?) Blame

    Fellow trainers, please resist the urge to blame your participants for what you interpret as insufficient interaction during a remote training session. Clients, please don’t let your trainers blame and shame you for how much you choose to interact during a remote training session.

  • Promoting Working Together With Value Streams

    Mapping your work system’s value stream doesn’t only give you insight into how to reorganize the work, but it also promotes true collaboration by aligning co-workers against a common problem, rather than pitting them against each other.

  • "Being Agile": An Example

    You will read many articles about the difference between “doing Agile” and “being Agile”. For better or worse, I have written another one. Thankfully, I have made it brief.

  • Sooner, Not Faster: Revisited (and Intensified)

    It seems like common belief that “Agile = Faster”. That’s wrong. It seems like common practice to blame the people who have this common-yet-incorrect belief. I don’t think that’s fair. Let’s stop blaming them and instead meet them where they are and move forward.

  • How Does One Start With Unit Tests?

    I have all this web stuff. I want to test it. I don’t know how to start. I think I want to write unit tests. What does that even mean? How do I get started?