Developer! rid your wip!

I’m big on eliminating waste, I’m big on minimizing Work In Progress (WIP).

Here’s my story: a colleague asked me to pair with him because he broke the application and he didn’t know why. So we sat together. My first question was:

– “Did the app work before you made your changes?”
– “Yes”
– “Ok, show me the changes you made”

I saw ~150 hundred unknown files, ~20 modified or added files. I said:

– “That’s a lot of changes. I bet you started doing too many changes at once so you ended up with a lot of WIP. Can we revert all the changes you made?”
– “Errr… I guess so. I know what refactoring I wanted to do. We can do it again”
– “Excellent, let’s clean your workspace now”

We reverted the changes. We also discovered that there were some core “VCS ignores” missing (hence so many unknown files in the working copy). We fixed that problem by adding necessary “VCS ignores”. I continued:

– “Ok, the working copy is clean and the application works OK. Let’s kick off the refactoring you wanted to do. However this time, we will do the refactoring in small steps. We will keep the WIP small by doing frequent check-ins on the way.”
– “Sounds good”

Guess what. We didn’t encounter the initial problem at all. We completed the refactoring in ~1 hour doing several check-ins in the process. Previous attempt to the refactoring took much more time due to few hours spent on debugging the issue.

Here’s my advice for a developer who wants to debug less & smile more:

  1. Understand what is your work in progress; keep WIP under control; keep it small.
  2. Develop code in small steps.
  3. Keep your workspace clean, avoid unknown or modified files between check-ins.

13 Responses to Developer! rid your wip!

  1. Pawel Badenski says:

    Brett Schuchert also wrote an excellent article on related aspect: http://blog.objectmentor.com/articles/2010/08/19/the-4-contact-points-of-software-development. I do really like that idea of 4 contact points it reminds me a metaphor by Eckel (I suppose it was him who was the author) about how we often get into habit of “juggling several sharp swords” by changing code all over the place instead of applying “divide and conquer”.

  2. I also suggest you to use Mikado method together with Baby steps. It helps a lot when you want to change something in your app. You can read about it here: http://pragprog.com/magazines/2010-06/the-mikado-method

  3. pequt의 생각…

    Developer! rid your wip! – One Small Thing – 편하게 하고 싶다면 결국엔 branch를 마음대로 편하게 늘릴 수 있어야 하나……

  4. szczepiq says:

    I don’t understand fully but ‘branching’ is not an option. We are very keen on continuous integration!

  5. Samuel says:

    You know I’ve been tempted to sign up for the ‘pincushion of the month’ too…but I’ve retissed till now. But seeing your sweet kit and pin topper is tempting me again lol!! Hahaha you know what I just did?? I bought 4 adorable pin toppers from Gigi’s etsy shop…ooooh I’m sooo excited can’t wait to get them then I can show and tell…what FUN!!! xx

  6. Juri says:

    I think you do marvellously well to make all the lvoely things you do. And being last is no bad thing: you can learn from others’ experiences. I hope you have lots of good days for crafting!!! The pin cushions sound great and I think the fact that they are reasonably small makes them a perfect project!!!

  7. I’ve got my first MS wniitag for major re-writes for other reasons, though I’m sure I have some info dumps in there too. Then there’s the fact that I started it at 12 and finished it at 17 BEFORE I joined my critique group. Yikes, the horrors that await me if I ever attempt to re-write it. I tried to edit some cause I figured some excerpts would make a good free read, but it’s just so bad that I can’t look at it and re-write at the same time. I’m going to have to read it and then put it away, and completely do it from scratch, from whatever memory I have.I’ve got a prologue for my newest story, but it’s just a seperate moment before my story starts that sets it up. The original crime definitely works as a good prologue.Definitely take the time to watch the other Dollhouse episodes, because they’re good after that first one.Gah. I need to stop checking all my online stuff and write. I’ve been blessed with all this time and I’m not using it properly. *Skips off to accomplish more than a pathetic 169 words*

  8. Shanee says:

    Continually, when people mangae employment seeks that they can deal with employment paying around my topicalso known as job opportunities in my specific geographic area.There is nothing other in that. In addition, across frustrating low-cost occasionswhen women and men is required to be modestadditional potent by getting a task search results. In theevent you look at it, the important reason that people young and old wish torecognize a activity associated with neighborhood is about efficiency.Whatever straightforward to have emplyment inthat the vicinity of house hold that the manner it drops that thehassles, duress, and / or expense on carrying. An additional reason why that men attempt occupations hiring into my fieldis really because seriously is invaluable staying near homein the event that numerous vital internal send out appears.Nevertheless this is to speak about certainly nothingof their advantages engaging in case you have school childrens.

  9. Felix says:

    Hey, I love monkeys too! Yours are very cute!Didn’t want to say anhntiyg before; but you’re sister is right about your daily progress reports!Hope you enjoy your day a week off, they’re fab – I’m sat here enjoying mine too. (Yeah yeah, just about to start the ironing. Any moment now. No, really.)

  10. carinsurance says:

    Sharp thinking! Thanks for the answer.

  11. vardenafil says:

    I didn’t know where to find this info then kaboom it was here.

  12. Princess says:

    Thanks for finally talking about >Developer! rid your wip!
    | monkey island <Loved it!

  13. Aw, this was a really nice post. Taking the time and actual effort to produce a superb article… but what can I say…
    I hesitate a whole lot and never seem to get anything done.