Welcome to Manicprogrammer Sign in | Join | Help

Aspirations

Join a community of thinkers,
engage teams and organizations,
unfetter human potential,
inspire through my contributions,
create safe, successful environments,
facilitate amazing outcomes,
learn from the successes of others,
deliver amazing experiences,
maximize value, and,
in short, realize my vision of helping everybody involved with a project sleep better at night.

Posted by willeke | 0 Comments

Agile 2010 – The words we use

As I was looking through the schedule for Agile 2010 today, I thought I’d take a look at how many lean and kanban talks there were. As I was searching, I noticed a few other words that kept coming up, and thought I’d check out the actual distribution of words among all the session titles. Thus, I took the session list from http://agile2010.com/schedule.html, cleaned it up to remove the extra columns, headers, footers, etc, and then ran it through the tool at http://textalyser.net/ to see what was in there.

First, it appears that “Agile” is the most popular word in the English language, at least based on our sample. At least we’re buzz-word compliant in this case!

image

Next, there are definitely some clues as to what our community finds important during the selection process… here are all non-trivial words appearing seven or more times. Does this mean anything? I don’t know. Maybe we need to forbid the use of the word “Agile” at agile conferences (and Lean at lean conferences, etc). image

Posted by willeke | 0 Comments

Define: ScrumMaster

image

It seems that everybody already assumes they know what a ScrumMaster’s supposed to do! Let’s try the non-trademarked version.

 

image 

Ahhh, so all I need to know, according to what I do first when I want to learn what something means, is that a ScrumMaster is equivalent to a project manager. Perfect. Let’s get started.

Please note, I have no desire to imply any criticism of Scrum (in this post), this is just an observation of what people “outside the bubble” might happen to find when we throw around our terms.

[EDIT]

It seems you can order ScrumMasters off the shelf, too. They even include free shipping if you spend more than $25 on one!

image

Posted by willeke | 1 Comments

Test post

This is a test post to see how quickly google picks up the #lssc10live tag from this post.
Posted by willeke | 0 Comments

Back in the day – The Inkubook board

Based on a question posed on kanbandev by Jeff Anderson, I’m sharing these four slides to share again one way of representing parallel work streams that have to merge. They were originally presented at Lean & Kanban 2009 in Miami.

First, planning, prioritization, and initial comp work was done by the BA group on the left side. This was handled at the requirement level. Our requirements were roughly similar to an MMF and could vary greatly in scope (maybe 25-1 variation?).

image

Next, development was handled in the main central area, with broken out tasks moving through the top portion of each swim lane. Since our WIP limit tended to be 2, we made a complete swimlane for each requirement.

The very top chunk was for high priority bugs (different SLA, as we’d call it now) that the development team would choose before any other work on the board. Developers also handled bugs in the right hand zone if any were found during the test execution process.

image

The QA team would write track preparing their test plans and scripts in the middle section below the development work (after planning the work along with the developers). When all test scripts were written and all code was ready, the entire requirement would move over into a designated SQA environment. We had three different environments that could be used for verification and/or experimentation. The horizontal swimlanes in SQA would track what was happening in each one at a given time so we knew where to look for reproductions. If bugs were found, they’d go in the tiny swimlane under each environment allowing them to be worked, submitted for retest, and marked as done. When all bugs were fixed (or deferred) and the product manager liked what he saw, we moved it over to “ready to deploy”. We often would deploy immediately, but occasionally batched things together and deployed to support a specific marketing campaign.

image

Finally, we had another type of creative work that was independent of the development team. This consisted of our awesome graphics guys crafting new themes, backgrounds, borders, and anything else that would give the user more options to play with. He did his work here, and when he had a good set to release (usually tied to a marketing campaign), they’d go straight into either a SQA environment or directly to “ready to deploy”.

image

Just as a bonus, here’s a picture of what it looked like at the time (sorry for the poor lighting, it’s the best I had).

Green – standalone – Requirement
Yellow – standalone – Task (broken down items used to implement a requirement)
Orange - adorner – External impediment
Purple - adorner – Team member token – identified who was working on something
Blue - standalone or adorner – Bug. Adorner if in/pre SQA, alone if in high priority lane or reinjected into system.

image 

Hopes this helps!

Posted by willeke | 0 Comments

Finding Creative Commons images on Flickr

I’ve greatly streamlined the process of finding images licensed in the Creative Commons for my presentations. I’d like to share the tools I use to the community. Enjoy!

Please remember that anything you find in the Commons either should or must be attributed to the original creator. I prefer to attribute everything, regardless of the actual license selection.  Also note that my selection below assumes you require things that allow commercial use; the setting change is obvious if you don’t need commercial use. I prefer to err on the side of safety because I never know when speaking at a conference may carry a stipend or when I may use a deck created for the community in one of my paid courses.

Creative Commons Searching on Flickr

This is the hard way, but paves the way to an easier path.

Go to Flickr, click Search with nothing selected.

 image

On the empty results screen, click Advanced Search

image

Fill out your options. I generally prefer to include only photos (no videos) but include Photos, screenshots, and illustrations/art in my results. Regardless, the important bits are the CC options at the bottom. I rarely (if ever) modify the content once I use it, but I do desire the ability to use it commercially.

 image

Now, click search. For reasons to become apparent, I recommend searching for the word TEST in all caps for your first search. You’ll get results something like the following. Importantly, it tells you what rules you’ve applied.

image

Setting up a Search Provider

Doing this repeatedly, however, is a huge pain. I’m an IE user (for better or worse), so I’m providing IE’s approach. People using FF or Chrome are smart enough to figure out their own version of these rules image (Attribution: dotbenjamin via Flickr)

 

In Internet explorer, click the dropdown next to the search box and select “Manage Search Providers”

image

At the bottom of this page, select “Find more search providers….”

image

At the very bottom of the new page, choose “Create your own Search Provider”.

image

Remember when I had you search for TEST? Take the resulting URL from that search and paste it into the URL field, and then title the Name field something like “Creative Commons non-commercial images on Flickr”.

image 

Click Install Search Provider, and you’ll now see that option in your search drop down. This makes for VERY easy repeatable searching as part of other workflows, like building presentations.

image

 

Hope this helps!

Posted by willeke | 0 Comments

Punch card teams

My very talented and experienced colleague Ira was sharing his stories about the good old days (tm), and inspired me to reflect on how very far we’ve come as an industry over a very sort time. Back in the day, this is how things worked.

You just had to get a good programming book, spend a few hours planning, organizing, and punching, and submitting the code, then you go away, wait two days, and come back to see the results.

We have come a very long way since then. Our languages are stronger, our tooling is better, the systems are more powerful. Everything we do has changed since then. In fact, you no longer have to be a programmer to get the code written! This is how it works now:

You just have to get a good Scrum team together, spend a few hours to planning, organizing, and clarifying the work, and then you can go away, wait two weeks, and come back to see the results.

Wait a second… didn’t I just say that?

What’s next?

Posted by willeke | 0 Comments

Retrospective Prime Directive

Anybody who’s worked with agile teams for a while has likely come across the prime directive in one form or another. The copy I use in retrospectives is below [1]:

Regardless of what we discover,
we understand and truly believe
that everyone did the best job they could,
given what they knew at the time,
their skills and abilities,
the resources available,
and the situation at hand.

At the end of a project everyone knows so much more.
Naturally we will discover decisions and actions
we wish we could do over.
This is wisdom to be celebrated,
not judgment used to embarrass.

Here’s the thing: I was building a deck to support a more “formal” retrospective and realized that I had internalized the directive in a very different form than it was actually written and it took some friendly advice from Liz to find it because I was looking in the entirely wrong place. Somehow I came to the belief that it was actually the “Facilitator’s Manifesto” and that it was written entirely in the present tense. Talking about the idea and my perspective further, I thought I’d go ahead and write up my version for the community. Here’s what I think and believe, and what I informally tended to coach and share in many team contexts:

Regardless of what is done,
we understand and truly believe
that everyone does the best job they can,
given what they know,
their skills and abilities,
the resources available,
and the situation at hand.

Throughout a project everyone learns so much more.
Naturally we will discover decisions and actions
we wish we could do over.
This is wisdom to be celebrated,
not judgment used to embarrass.

The differences are fairly subtle and the sentiment is largely similar, but the differences in practice are large [2]. The retrospective directive creates a zone of safety around the moment of the retrospective itself. The present tense makes this a creed to be respected and valued continually throughout a project. Directing attention to the statement on a regular basis has a value that can spill beyond the immediate team to infect an organization with respect for people.

 

[1] I owe somebody a reference for this one, I’m not sure how it got into my slide deck without a reference. If it’s yours, comment and I’ll put it in my decks. If not, I’ll find it when I’m not on a plane and have a few minutes :)

[2] I have no doubt that the majority of good agile teams (and good people, regardless of environment) create a safe environment and respect these perspectives all the time. Addressing the disjoint language is important to me.

Posted by willeke | 0 Comments

Who am I?

My personal biography [1] bothers me. Each time I needed to update it, I found myself disliking it more and more, putting off the edits. I dreaded it the same way I dreaded updating my resume. Maybe it’s because they were the same document, presented slightly differently. Introduce my name, present what I’m good at, provide a bit of experience to prove it. Make sure I use all the right keywords. Sell myself.

Enough of that.

I’ve decided it’s time for my bio to tell people who I am. [2] Tell them what I’m passionate about. Give them a fair chance at engaging me in an interesting conversation that’s not about agile, or about the latest technology. Here’s my draft, what do you think? [3]

My life is learning, applying, and teaching.

I am a broad generalist who loves watching my team surpass me. I am a creative technologist specializing in the brilliance of others. I apply new technologies quickly and effectively while planting the seeds of world changing applications in others. I passionately _do_, yet I live to enable.

I am a pathfinder. I contribute on technical teams by seeking new approaches to accomplish our goals, and then amplify by helping my entire team gain the same capabilities. I explore ways to work faster and more effectively, and then I engage those around me in learning and expanding those methods. I passionately learn and improve myself, and then I joyously share the learning moments of my peers. My work, my love, my passion, and my career are in the people; the technology is just a context in which I work.

The context changes often, highlighting how similar the people and the desires of those people are across contexts. My peers as a C++ & .NET developer led me to technical leadership and imparting a systemic perception to the people I’m with. My teams during architecture and project leadership roles inspired a need for broader, more abstract communication and guidance. Working in a large consultancy enabled a split in the nature of my sharing and behavior as I coach both client teams and inspire change within my organization. This continual shift across layers exposed me to a number of risk environments, regulatory frameworks, process environments, management structures, technical platforms, and architectural approaches. These differences offer challenges even as they teach me how to see the consistent patterns within our industries.

Hence, my strengths: I learn, and I teach.

Thank you.

[1] My wife just pointed out a brilliant observation: why do we tend to call it a personal biography, when it’s almost always an autobiography?

[2] I recently found myself describing my current project. After doing what essentially amounted to a technology and market brief I realized (and was challenged on) how empty-sounding that was to somebody who wasn’t involved with the value. With a moment’s reflection I was able to express my work in terms of the child-like joy of the first snowflakes experienced by a team member fresh from India, the rekindled passion in the eyes of an experienced, cynical senior engineer due to the new approaches and technologies, the transformation from “resource (aka machine)” to “person” made by a team member, the appreciation in a peer’s voice when I transformed his need to write a multiple-page requirements document to an agreement with the client to share two bullet points and two photos of the whiteboard instead. This is the work I do, the technology is just context.

[3] I’d like to thank the individuals who provided their thoughts and opinions on the early drafts of this. Several of the better turns of phrase are due to their time and energy.

Posted by willeke | 0 Comments

Accessing web API’s from Silverlight

One of the ongoing struggles with Silverlight development involves the crossdomain.xml and clientaccesspolicy.xml security files. They are there for a very good reason, and shouldn’t be circumvented in violation of the website owners’ licenses.

Now, however, I have a different sort of problem. The final application is going to be hosted on the same server as the (HTTP Get-based) web service, and thus I don’t need any sort of crossdomain files… in production. Unfortunately, I do need them for development because Silverlight will be running from my local machine and will see the services as remote. How do I deal with this? I don’t have access to the root folder on the server, only the area where my content will be stored. I don’t want to have to publish for every round of UI testing as a tweak and evolve my services. Mocks will only get me so far in ensuring end-to-end capability, and I need to test the fiddly bits of the API and parsing code against the real data.

After quite a bit of fruitless searching for proxy servers, intercepts, etc, I remembered that Fiddler2 actually has a pretty strong rules engine. A bit of browsing in their cookbook page and I realized how easy it would be. Insert the following into the rules file (Hit Ctrl-R to edit) and now I can access the services via Silverlight from my computer without hurting the overall security of the application on either the client or server, nor do I have to write a custom proxy. All I have to do is fire up Fiddler when I want to run and test.

if (oSession.url=="some.domain.com/clientaccesspolicy.xml")
{
    oSession.url = "localhost/clientaccesspolicy.xml";
}

Posted by willeke | 0 Comments

A Community of Thinkers

I am a member of a community of thinkers.

I believe that communities exist as homes for professionals to learn, teach, and reflect on their work.

I challenge each community in the software industry to:

  • reflect and honor the practitioners who make its existence possible;
  • provide an excellent experience for its members;
  • support the excellent experience its members provide for their clients and colleagues in all aspects of their professional interactions;
  • exemplify, as a body, the professional and humane behavior of its members;
  • engage and collaborate within and across communities through respectful exploration of diverse and divergent insights;
  • embrace newcomers to the community openly and to celebrate ongoing journeys; and
  • thrive on the sustained health of the community and its members through continual reflection and improvement.

I believe that leaders in each community have a responsibility to exhibit these behaviors, and that people who exhibit these behaviors will become leaders.

I am a member of a community of thinkers. If I should happen to be a catalyst more than others, I consider that a tribute to those who have inspired me.

Creative Commons License
”A community of thinkers” by Liz Keogh, Jean Tabaka and Eric Willeke is licensed under a Creative Commons Attribution-Share Alike 3.0 License.

 


This work is the output of a phenomenal session I was honored to join at the Rally offices on Friday, 4 December, 2009. Upon discovering that Liz Keogh was going to be in town, Jean Tabaka quickly and brilliantly offered space at Rally for the three of us to work together for a day. We went in with no expectations about what we would do other than a desire to offer something to the community at the completion of our day.

The day was simply amazing. Following exuberant welcomes from many wonderful people who work at Rally, including the CEO, we spent the morning allowing ourselves to diverge wildly across a huge number of topics. This brainstorming time was joined by Ryan Martens (CTO & Founder of Rally) for a couple hours of broader, industry-level discussion aided by Ryan’s broadly brilliant perspectives on software and sustainability. Throughout the afternoon we then focused on a message we would offer a community, considering a variety of different ways we may wish to influence the various organizations and communities around the agile and lean spaces. Realizing as a group that this didn’t feel right to us, we stepped back and examined the core themes that ran across the various outputs we’d created during the day and realized that one theme overwhelmed all others: community.

We realized the the common thread between Liz, Jean, and myself was that we all care very passionately and deeply about the communities of people that we meet in our travels and work. Organizations exist, in our minds, to serve those people and their interests. With this realization we very rapidly converged on the essence of our message and realized furthermore that it was to be a personal message from each of us stating our position and belief. That it aligned nicely between each of us is a wonderful thing, but was not the essence of our intent. Each of us contributed, and each of our contributions is clearly visible in the output, yet the final product is far more powerful than our individual contributions would have provided.

We have no desire for this to be a centralized rallying cry, complete with a web site and signatories. Instead, we offer this work to the communities around us. If you find it compelling, then we encourage you to take it and make it your own. Post it to your own blog, or wherever you feel appropriate. If you like the message and wish to make changes before you post it, please do so! We ask only that you respect the Creative Commons license and share any modifications you make under the same license. Please attribute the source from which you take your copy of this message and ask the same of your readers.

To all of the bloggers, conference speakers, authors, event attendees and pub-goers that make our communities alive and vibrant, thank you! In addition to the people that directly collaborated on this effort, I would like to add an extra thank you to Chris Matts for his ceaseless efforts to build communities and friendships across the world. He has inspired and catalyzed far more than we know.

Posted by willeke | 6 Comments

Call for proposals

From http://www.limitedwipsociety.org/2009/11/15/lean-software-systems-conference-2010-atlanta/

Lean Software & Systems Conference 2010 Atlanta

The first Lean Software & Systems Conference will be held in Atlanta, Georgia, USA between April 21st and 23rd 2010.

Registration and the Call for Papers is now open at atlanta2010.leanssc.org

The first 50 registrants enjoy a super early discount rate of $800 plus entry to the exclusive speaker luncheon and a special limited edition Ltd WIP Society t-shirt, sponsored by David J. Anderson & Associates.

The Call for papers closes on December 14th.

Use the Twitter search tag #lssc10 to filter tweets about the event. Follow @lssc10 on Twitter for news from the organizing team.

If you are speaking or attending the conference you might like to tell people about it by adding these buttons to your web site design. If you want to use these assets on your site just paste the HTML code provided straight into your web source code or content management system.

Posted by willeke | 2 Comments

When estimates don’t matter

This is an edited version of a post I wrote to kanbandev on 10/22/2009. The thread was started by somebody asking about work decomposition and how it relates to estimation, and asking why we have been saying that estimation doesn’t have value. Disclaimer: This is all "in my experience" and may not represent the views of anybody else.

Goals of estimation

  1. People that ask for estimates are generally looking for commitments on when something will be "done", which seems to mean "earning or saving money".
  2. Teams and people doing estimates of their own volition are generally looking for the understanding of the work that comes from estimating and breaking down the work.
  3. Teams doing estimates also use them to expose inconsistencies of understanding (i.e. planning poker)
  4. Related to #2, but teams additionally use the estimation process for finding dependencies among work, and as a more general planning tool

All of these are good goals to have and to do. However, estimation is just the mechanism we’re using to accomplish these goals. It was a reasonably effective mechanism in the right hands and a horrible one in the wrong hands.

Other mechanisms

  1. Instead of estimating, we commit to a generalized Service Level Agreement for a given class of service and just slot items into those classes. Individual items may miss, but on aggregate the commitments are pretty solid as a result
  2. Pairing & swarming are both great tools for exploring the work and sharing that understanding, especially when the customers are involved in the process
  3. The work gets done so quickly with swarming that the inconsistencies are driven out VERY quickly, and nobody works alone long enough to propagate those misunderstandings. (But, beware cult of personality)
  4. This is the expand/collapse pattern, and the work breakdown tends to occur as soon as the team starts a bigger item, the dependencies are figured out as part of the expansion, and the loosely ordered items are pulled through very quickly. Each level of expand/collapse has its own internal ordering dependencies, but these generally don't cross levels much.

This is a general and very effective behavior I’ve seen when looking at lean approaches to evolving the way we work. Instead of looking at a practice as a tool, it’s very useful to back out a level or two and look at the goals that practice was meant to accomplish and even further to the principles and values backing it. When I do this, I often find myself seeing other practices we could do (or already do) that accomplish the same goals.

Scrum is a very nicely balanced set of practices that work great in the proper context because they collectively cover most of the goals that we need to cover as an agile development group. My criticism of Scrum is that when it doesn’t fit the context, the perception is that you should change the context to fit Scrum rather than the other way around. The danger in changing Scrum is in failing to understand the goals of the practices. Dropping estimation is a very bad idea if you don’t have another way of making your commitment, for example. Dropping sprints is a bad idea if you don’t have inspect/adapt, commitment, delivery, etc all covered. Blindly changing is just plain stupid.

Posted by willeke | 4 Comments

Calculating Touch Time

This is a follow-on from the same conversation with Liz as the last post. We were talking about how Inkubook used branch by feature to keep our main line clean and to avoid additional complexities around the “Share code” bullet from her post:

Share code. If the teams check in before the code is finished, their scenarios will fail. If they check in examples which haven’t yet been coded, those examples will fail. This won’t be a problem if no one else is modifying the code base; however, if it’s a subset of a much larger team breaking the build can cause havoc, and the habit of keeping builds green is a good one. Try distributed version control, which will allow a team to check in on USB keys or a temporary space until the code works. (There are techniques for getting, say, Mercurial, to work alongside, say, Subversion - mostly by making each system ignore the other). You could also pass around patch files to keep the code in sync.

Inkubook used branch by feature almost exclusively. We did lose some of the benefits gained from Continuous Integration, but recognizing the principles over the mechanisms, we managed to mitigate most of the losses. The primary two tools were keeping cycle time low and thoughtfully choosing features to avoid parallel work in the same area of the application. These two practices avoided much of the integration pain we would have otherwise seen. We were lucky enough to feel the pain of disregarding these early in our flow days, and were able to learn from that lesson after two days of merge pain.

This was the point that I realized that our branches could be used as nearly perfect indicators of cycle time. We had exactly one per MMF, we created them when we started working on something, and we deleted them when something was pushed to production. That’s useful.

Even more interesting, though, is that we could use them as reasonable approximations for Touch Time! It’s always been quite a challenge to find a non-invasive way to calculate touch time on a per-feature basis. A 24 hour period with a checkin is “touched”, the same period without is “not touched”. More fine-grained than that probably isn’t valuable, and good agile developers would be checking in at least daily when they’re working on something. This would be more than sufficient for how I’d use touch time… exciting!

About touch time

Others have written quite a bit about touch time and what it means in manufacturing, design, and queuing theory. I’m not going to try and produce a comprehensive description of how it works. Instead, I’m going to talk about what I would use it for and what I would not. These are “would” because I haven’t had the data before, so it’s theory, not practice.

Before I start, I’m going to make a couple definitions. They probably do not follow standard usage, so be warned. I’m going to call efficiency “E” the ratio of Touch Time to Cycle Time (TT/CT) where the time measurements are based on 8 hour weekdays, so two weeks of steady work is 100%, regardless of weekends, holidays, etc.

First, I believe it would make a great leading edge indicator for certain risks on a given feature. If you create a branch and it sits idle for a few days (E = 0), then it means something’s blocking people from working on that feature. It could be known impediments, which are reported in the stand-up, but it could also mean that they’ve been pulled to something else and this feature is at risk of (severely) missing SLA from being resource starved.

Next, something with falling touch time ( dE/dt is negative), then something’s blocked the feature from being worked on effectively. Same reasons as above.

Finally, an aggregate of touch time across features would be useful as an indicator of churning and focus, possibly as an indirect measurement of the effectiveness of a swarming approach, and possibly as a way of tuning down WIP limits around development to the proper point.

Nicely, all of these uses could be fit into a decent dashboard and automatically generated with no changes in how developers work other than ensuring the branches are trimmed back when features are released into production (or whatever serves as your company’s “end of the line” for cycle time until you can measure meaningfully all the way to production).

The key things here that justifies even looking into this is that there are no changes to existing behavior, and that there is nothing that will point at individuals. Ideally, these measurements would only be used within the team to help find improvement opportunities, but that is a cultural aspect independent of the measurement.

Posted by willeke | 0 Comments

Multi-pair stories: a response

This post is a response to Liz’s post on Mocks, outside-in, swarming features and guesswork, specifically the bit about swarming. I was telling her how swarming tended to work on the Inkubook.com team when I was there and she asked me to make my comments public… here they are.

How we swarmed an MMF:
1.a - Eric (as architect) and Jacob (as UI/graphics guy) pair on getting the rough shape of the UI doing what it ought to - shaped right, primary interactions at least identified.

1.b - Jeff (dev) and Byron (dev) code the last bits of feature n-1.

1.c - Cathy (test) and Ken (marketing director) provide real-time acceptance of their work both at their workstation and in the pre-deploy environment.

 

2.a - Eric & Jeff start working on the next layer of collaborators down for the primary UI story, pushing sequentially through the thick client, into the service layer, and when needed pulling in Matt (DB arch, shared across teams) to help with the database scripting bits

2.b - Jacob and Byron start fleshing out the UI and getting the primary interactions working better.

2.c - Cathy finishes validation of the feature n-1 and pushes it to production with Ken's approval, then starts talking to the devs about what how she's going to test bits and provides early feedback of how things feel, letting us know where things aren’t right.

2.d – Ken works on the marketing around feature n-1 and provides early feedback to the team about how it looks and what he thinks.

 

3.a – With the first full pass complete, Eric, Bryon, Jeff, and Jacob work in various combinations to broaden out the feature, generally starting at the UI layer and pushing back towards the DB through the service layer, although we will often pause to design the DB interaction and service layer for consistency with previous work and foreknowledge of likely needs from the current MMF.

3.b – Cathy provides feedback on intermediate builds (multiple/day) while Ken gets demos of the UI at least daily, often nearly continuously during the early stages of complicated UI features.

 

4.a – When the feature’s nearly ready (based on Ken’s opinion of “market ready” and the team’s opinion of “production/quality ready”), Eric and Jacob spin off to start the next effort with Ken’s deep input.

4.b – Jeff and Bryon finish up the feature with Cathy’s help and the cycle starts anew.

 

5.! – Every week or two, James (director of IT) brings in a decent (not just pizza) lunch to celebrate how things are going.

Conversation

That’s generally how things flow, but not always, and since I’ve been gone a few months I’m sure it’s an idealized version of how things actually worked, but that’s my memory. The names and roles where what things were, but they weren’t strict by any means, and people filled the roles that were needed at a given time.

The important part from a flow perspective is that a pair gets into the feature a half-day or day ahead of the rest of the team. Thus, instead of a single “point” (the UI) preventing parallel development, we can instead create the skeleton of that first feature and then continually tie more work onto it. We rarely attempted to declare what “done” meant before starting the feature, instead starting with a vague goal and developing it in collaboration with Ken, who spoke for the broad customer base.

Please note that it took quite a long time to get to the point I described, and we tried a number of variations as team, which I speak about here. I imagine things have changed since then, as the team was generally very good about adapting the process to fit what needed done.

Posted by willeke | 1 Comments

How time flies…

I’m doing a bit of research around Inversion of Control and Dependency Injection today for work, and I’ve been continually struck by how long these concepts have been around relative to the length of my career. Martin Fowler’s early article on the topics was published in January 2004, which was AFTER his Patterns of Enterprise Application Architecture book was release. These were the materials that were hitting my desk about the time I exited my first professional engagement (three years on a very non-agile C++/COM/WTL desktop application) and started the broadening stage.

Around that time, we took the principles and practices to heart on the year-long .NET desktop application  (that arguably did more than the three year project we did previously), but the .NET language was still pretty new (just into 1.1), as were all of the frameworks around DI, so we ended up doing things more like this as a result, if I remember correctly. We were also using nUnit and feeling the design benefits of having good tests.

My point in all of this is just how not new these things are. And yet, I’m still regularly teaching people about the basics of these approaches, and finding people in our industry that are otherwise quite capable that are entirely ignorant about SOLID, DRY, DI, and many of our other basic assumptions.

I think that we, as a community [1], need to spend more time focusing on the basic of our craft. We have some prominent members who are quite effectively sharing their knowledge, yet many conversations I have at events like Agile 200x have almost a disdain for teaching those basic concepts.

Imagine a community culture where everybody teaches and mentors… I can… and I love what I see. Join me?

Posted by willeke | 0 Comments

The relationship between Agile and Lean – one man’s perspective

This is a copy of a post I wrote to leanagile on 6 Oct, 2009. I have copied it here because I feel that it explains my perspective well.

One of the things that has caused me to embrace both Agile and Lean is that they are not closed systems. Each of them (explicitly, I believe) recognizes the need for learning and self-redefinition.  As such, I tend to assume that each of them has already absorbed the best of what the other has to offer. In many cases, the two were saying the same thing using different names. In other cases, one or both holds something to be an underlying assumption (I'm thinking the role of People ) that doesn't get spoken of much, and causes confusion. The primary discussion point of value to me is in understanding how to more properly utilize the thinking patterns coming from both sources. In Lean, I find great value in the attempts to provide a scientific basis for why things work, giving me mental models to help understand future situations. Others perceive this same aspect as a negative, dehumanizing, theorist perspective. I respect that view, even though I don't agree with it.

I personally perceive that Scrum as a framework has been defined as a closed system. This turned me off on it for a long while until I see people like Tobias Mayer at work... now I question my understanding... thank you Tobias.

I personally perceive that Kanban as a framework has been defined as an open system, but is at risk of being turned into a closed system. I do not wish to see this happen.

Regarding the CAS [1] aspects of this thread:
I believe it is an incredibly valuable systems-thinking tool and perspective to evaluate what happened in a situation. As such, I believe it is also a valuable tool to predict what may happen in future situations. This puts it in the same bucket as lean, agile, and many of the other tools at our disposal. I wouldn't "Go CAS" any more than I would "Go Lean" or "Go Agile", but I will happily add them to the set of lenses I use to understand and inspire in a given situation.

I hope this perspective helps, or at inspires a bit of thought.

[1] The thread had a deep discussion of the role Complex Adaptive Systems theory could play in Lean transformations.

Posted by willeke | 0 Comments

Kanban Team beats Scrum Team!

Yesterday Karl Scotland and I were able to witness an amazing event with one of the teams here in the UK. A kanban team measurably demonstrated 5x the results of a Scrum team with comparable software experience and capabilities working towards the same goal. Not only this, the same results happened two efforts in a row! On top of all this, the kanban team was able to over-deliver continually during the effort, although we did not count this towards the final measurements.

 

Amazing evidence in favor of the way kanban teams work, right?

 

Too bad it was foosball… today we would play for money, but the Scrum team seems to have disappeared after two successive 10-2 games.

Posted by willeke | 1 Comments

Why do I sit in a cube all day?

Oh wait, I don’t, and neither does Matt Heusser. In his most recent post over at Testing at the Edge of Chaos, he devotes a section to challenging why we co-locate at all any more. As somebody who has recently shaped my life to get out of that geographical lock-down and start moving with my family to the places we want to be, I’m very interested in the lessons and perspectives of others that have created similar situations for themselves.

The situation creates a natural pull between my agilist nature wanting to be entirely located with my team and my human side that wants to be in natural settings that work for me, instead of in a sterile office environment.  Luckily, it feels like technology is coming to the rescue and allowing me to recoup some of the proximity benefits through social networking, video chat and the like, while still allowing me to live and work where I want. Unfortunately, it’s not at the point where I can just wave my hand and have a peer checking out my work in 1 second, or to where I can pick up from body language that my team’s getting frustrated and needs a disruptive event to help focus things again.

I'll be thinking about this, and maybe I’ll have answers someday. Until then, I hope to see Matt and others like him continue to write about their experiences!

Posted by willeke | 0 Comments
Filed under:

I have heard of kanban!

My friend Matt Heusser recently posted a perspective on kanban that I feel warrants a bit of discussion. I greatly respect Matt and his opinions on testing, software, and life in general. I feel that this post provides me a great opportunity to address some of the perspectives about kanban that have been expressed that don’t align well with what I perceive to be the essence of the community.

As with any two-sided argument, the reality will be somewhere in the middle and a few steps off in a third direction. I hope that the kanban community as a whole pays attention to the perception that we’re giving and focuses on communicating ALL of our values, not just those that we feel set us apart.

I have reproduced Matt’s post in its entirety below, with his permission. My comments are tagged in blue and I used blockquote on them to set them apart from Matt’s content. I have edited his work for format only, no text changes have been made.

[Edit] Matt has a number of comments showing up on his original post.


Thursday, September 17, 2009

Have you heard of KanBan?

My writing colleague, Chris McMahon, has made an attempt to be public and clear about his stance on Kanban. It's been inspiring, and I, too, would like to put my stake in the ground.

In Japan, a kanban is a little card that is used as a signal device. The idea, in manufacturing, is that teams downstream "pull" new work, instead of having work "pushed" to them, which creates bottlenecks.

A European named David Anderson took the idea and applied it to software to create Kanban Development, [ERW1] a surprisingly popular movement, to the point that it has its own user groups and conferences.

[ERW1]This greatly oversimplifies the multi-year evolution process. He actually started with Drum-buffer-rope, realized it wasn’t a good fit due to the variability, and then tried Kanban signaling. While this, unfortunately, is the name that stuck, it didn’t stop there. Instead, it went deeply into Lean Design (ala Don Reinersten) approaches (NOT MANUFACTURING) but kept the name because of the ongoing focus on Value Stream Mapping and queue management.

How did David do it? Well, first he [ERW2] was a Theory of Constraints, CMMI, and Agile-Management Guy. He went to Microsoft and worked with an internal development team, where he wrote: "From Worst to Best in 9 Months - Implementing Drum-Buffer-Rope in Microsoft's IT Department." It's interesting. You can read it for yourself, and I'll try to summarize below.

[ERW2]My understanding is that first he was a video game developer, then later he was a User Experience guy doing work on Visual State modeling where he was involved in the first FDD project, then he was an FDD guy for a while, until he realized that the CMMI was based on Deming and everybody screwed it up, then he dug deeply into Deming and Goldratt while writing a different view of the CMMI for Microsoft, where he dug deeper into Deming and focused on identifying systemic issues instead of blaming the team (authoring the XIT paper), then he took these new ideas around Kanban & Lean and used them at Corbis to great success, but failed to institutionalize the changes effectively, at which point he went independent and suddenly had a vested interest in the brand known as “Kanban”.

That's right folks; without any specific skills training, and people interaction, any changing of the office environment, he got something like a 150% increase in the number of tickets the team could handle in a month. How did we do that?

  • [ERW3] He eliminated the time the team spent planning and estimating
  • Technical staff took stories that makes sense that they were actually capable of doing (rewards well-written, well-conceived change requests)
  • They moved from a push system to a pull system
  • They made the process transparent
  • They stopped batching up User Acceptance Test and Deployed a ticket at a time
  • He got the team out of meetings

 

[ERW3]This list is accurate, but the order is misleading. “They made the process transparent” is the biggest thing, and getting political acceptance for an SLA based approach is the second biggest thing (from my memory)”

Now, the idea of Kanban for software - where we make the work visible by having a board, limit the work in progress, achieve pull, have no fixed iterations but (possibly) continuously deploy, arguably [ERW4] came out of this case study.

[ERW4]I strongly disagree, but you can argue it ;) I’d say this is a formative part of the transition from an FDD iteration perspective to a continuous perspective. The problem is that it’s the only published (or even public, possibly) experience from that time frame b/c he was building the CMMI template for Microsoft.

Personally, I have a different interpretation: That if you take a team doing CMMI 5 and PSP/TSP and /stop doing/ a lot of required practices, moving your team from 20 hours of meetings a week to three or four, throughput will go up. Further, by working on a story at a time, you'll have technical staff actually talking to each other instead of throwing work over the wall via electronic tools. This will work wonders for eliminating the "hot potato" game.[ERW5]

[ERW5]All true, and none unique to Kanban… that sounds a lot like the core point of Agile to me.

Finally, and most importantly, if you live in an environment where the customers can make as many ill-conceived change requests as they want, and you have to constantly estimate, evaluate, and shuffle the deck, then take all that away, yes, productivity will go up.

So, I agree, what Mr. Anderson did at Microsoft can work for certain kinds of projects - namely, a maintenance team working on legacy applications that are small, separate, and distinct. That way, you can test one entire 'system' at a time and deploy continuously. (This is pretty much exactly what we did with the small projects team at Priority Health, about the same time, with good results.)

Now, labeling it[ERW6] , calling it Capital-K "Kanban" and giving it out to everyone as a silver bullet to improve the process ... I am not really excited about that.

[ERW6]Here’s where I start to argue strongly. What happened at XIT is not what we call Kanban today. I don’t think he did at the time, other than possibly mentioning the scheduling mechanism.

First of all, it's universalism. "This process worked for me one time so it should work for everyone all the time."[ERW7] Just like labeling a good idea a "best practice", it's a rookie mistake.

[ERW7]Two comments here.

First, few involved people call it a process. Unfortunately, it received that label by people talking about it.

Second, I will say that applying the lean thinking mindset will work everywhere all the time, but would never say that a Kanban system will be the result of that thinking every time. Unfortunately, people that don’t understand it got excited and started calling it things its not.

But now we have the Kanban discussion list, which I have tried to be involved with. I see a lot of smart people with good ideas, but there are things about it ... something I can't put my finger on just yet. Here's what I'm struggling with:

1) There's something odd about the way this community talks. I mean, I have a master's in CIS, I study software (and manufacturing) process, one of my writing/speaking partners is a Six Sigma black-belt and process engineer, and there's something ... odd there. Why call it a "Value Stream Mapping"? [ERW8] Why not just call it "How we get from concept to cash?" Why is it that skills, training, experience, and expertise just never come up in discussions with these groups? [ERW9] Why is it that instead of talking about development or testing, we call it "workflow" or "process mapping?"[ERW10] I have an inkling on why, and I'll come back to that in number 4, but also ...

[ERW8]Because this is the terminology from our source literature. It’s a useful piece of our local vocabulary when talking amongst ourselves. I explain it in terms of “User to user” or “end to end including all business functions” typically.

[ERW9]Because we treat these as the assumption. Think Deming – we believe the system is the problem and not the people, and we assume the people will do the absolute best they can under the circumstances. It’s an implicitly assumed aspect that we ought to give a lot more time to.

[ERW10]While the people are the most important part of the system, the goal of the system is to produce value, hence focus on the flow of value and words like “value steam”. Workflow is a casual use of the same concept, and process mapping is usually only used specifically when referring to applications of that technique when we feel it’s appropriate… which is rarely (I hope)

2) It seems to me this community uses a lot of 20th century worship words. Productivity. Throughput. Optimize. Lead Time. Cycle Time. Flow. Leveling. There's nothing wrong with these words (although, if you can measure productivity at all is a different discussion.) I see these terms thrown around in a naive, cavalier way. Like "New and Improved", "Hyper-Productive" and "Best in Class", they almost guarantee attention and receptivity for an audience - management and executives[ERW11].

[ERW11]Yes, we use those words because they have a strong meaning and very specific connotation to the current generation of management and executives. It’s about effective communication, and most management I’ve worked with outside of the valley culture get “lean” terms instantly… saving us from having to spend precious face time explaining the underlying concepts. I have to use different terms when dealing with management that rose from the techie ranks… then we talk about development, testing, etc more specifically.

But does that make them right? Certification is another worship word[ERW12] . And, the day I first heard of ISQTB, at the STAREast conference in 2004, an ISTQB trainer told me literally "You can charge twice as much for training if you give away a certificate at the end of it."

[ERW12]Where does this fit in your argument against kanban? This feels directed at Scrum at the moment. While the LSSC is looking into something… I don’t know that it’s really getting much support right now within the kanban community.

Is that right?

In fact, the Cavalier way those terms are thrown around [ERW13] (compared with, say, the way you'll see metrics talked about on this blog), tells me that there are a number of possibilities, ranging from over-optimism to universalism to genuine deception. I'm not excited about any of them.

[ERW13]Have you considered that they’re not being casually thrown around, but generally (at least among the leadership of the community) being used with very specific meaning and intent based on the local language of the community?

3) Kanban works best if you start out slow and stupid. As Dave Nicolette pointed out recently, if hyper-productive means a 10x or so improvement, then the companies likely to see that kind of improvement are traveling at a snail's pace to start with. In other words, if you team is already dragged down, spending 20-40% of it's time planning, estimating, and writing stories for work, that are 6+ months out, then yes, you can see improvements with Kanban. Or, if, say, you batching up work to be release only once or twice a year then do heavy-weight trade offs through an electronic system, instead of having people talk to each other.[ERW14] But in those cases, systems thinking can lead to improvement directly, without using a label or brand[ERW15].

[ERW14]This is about agile, not about Kanban. We don’t expect people to stop doing or ignore any other techniques they learned from agile.

[ERW15]There’s two possibilities here: Having a label for a perspective and a set of practices, or having a brand around it. Are they fundamentally different?

4) What about people and skills? I don't see any of this in the Kanban literature. It's as if people are cogs that can be interchanged in some sort of machine that is stable, predictable, and repeatable. Hey - wait a minute - I've heard that before! Yesterday I saw a Kanban history post that claimed that Toyota had adapted the ideas of Frederick W. Taylor, and Kanban came out of that[ERW16].

[ERW16]This is entirely inaccurate, and should be ignored. The earliest presentations David did around Kanban (and the CMMI for that matter) were centered around Deming’s concepts. I believe there is one where he has a slide of Taylor and talks about how this single man set back manufacturing by XYZ years.

That is factually inaccurate. The Toyota Production system did not come from Taylor, it came from a number of consultants, most notably W. Edwards Deming, as an explicit rejection of the work of Taylor.

I don't have time to get into Taylor and his philosophies, but suffice to say, Taylor was an elitist who believed in separating the worker from the work - having a class of scientific managers tell the workers how to do it - and Deming believed in engaging the worker in the work.

If Kanban comes out from the philosophy of Taylor, [ERW17] then having your process designed by "experts" who don't want to deal with the fiddly-bits of requirements, development, and testing, but instead design a meta-process that turns software development into an assembly-line makes perfect sense. In that world, you might not call it "development" at all, but instead, something like "Workflow" or "Work Products." (Notice issue number one, above.)

[ERW17]See comment above… incorrect basis material invalidates this entire section.

If, however, software development is actually knowledge work, which requires the whole person to be engaged, and can be done better or worse -- well, then, hopefully, we'll use the work Taylor as either a door-stop or a cautionary tale.

5) The Kanban movement just isn't interested in discussing testing[ERW18] . I've brought the issue up several times on this list, and get a number of non-answers. That could be because the list members haven't really done much development. Or it could be that they are working on internal applications, where if you type in an invalid entry, the VP of Finance can say "use Internet Explorer Seven ONLY" or "if you want your reimbursement check, ignore the bizarre error, click the back button, and enter it correctly!" Or they could be working on very small, non-connected systems where the testing burden just isn't very high.

[ERW18]This is marginally true, because we don’t have any activist testers within the movement.

Cathy @ inkubook is one of the best testers I’ve ever worked with, and we worked continually to integrate her role with the rest of the team and up into the marketing definition of the work. Kanban doesn’t ignore testing at all, but it assume s competent testers and assumes the team will include the testers as part of the team for all quality improvement. “Testers aren’t special, but they’re not second class either”… same reason we don’t talk in detail about dev practices… they’re assumed to be done, and if not they’ll be one of the system impediments that needs to be worked through to help the team perform better.

But on a real project - a large software project - not something a pair of developers can bang out in three or six months. A project where you want end-users to pay out of pocket, fall in love, and recommend it to friend? Well, a big part of what I do is risk management, and I see continuous deployment with a simple CI suite as naive[ERW19] , perhaps even reckless.

[ERW19]Focusing on this is a logical fallacy. We say that we can (and have) done this, but not that it’s always a good idea. The aspect we focus on is on decoupling input and output cadence… it’s the freedom this enables that allowed us to achieve multiple releases a day at Inkubook for those times we needed them (and weekly when things weren’t going as well).

So I see Kanban/deploy per feature moving from limited environments where it can work to general acceptance, and in that, I see serious risk.

Note: In North America, we like our westerns - with Good Guys in white hats and bad guys with bandannas. It would be all too easy to paint the entire Kanban for SW community as "bad." In reality, the ideas are a mixed bag that can be helpful in some environments. Some members of this community are strong system thinkers that have good ideas, and can separate when an idea might work from when it might not, taking in actual feedback and adjusting. Sadly, in general, due to over-hype, I have a final concern [ERW20] ...

[ERW20]This note is appreciated, and points at the real problem. Kanban, like scrum, XP, waterfall, and every brand/label ever used has a dark side to it. People can easily point at the brand, say “I’m doing Scrum” and ignore the discipline and practices that actually make it useful.

6) Some people will actually listen to these jokers. We'll see a lot of hype about Kanban, there will be Kanban certifications, a Kanban alliance, and "Kanban conversions." There will be Kanban instructors, tutorials and lots and lots of books.

[ERW21] And, two years from now, or perhaps five or ten, a lot of companies will have a code mess all over the floor, the consultants will have moved on, and we'll be embracing a new process - perhaps the 5s process, or Kaizen, or perhaps it will be from Northern Europe.

[ERW21]I respect your opinion, although I do not appreciate your characterization.

I believe XP, Scrum, and Kanban each have contributed (and will continue to contribute) to the capability and evolution of our field. None of them are perfect on their own, and very few truly new ideas were introduced by any of them. However, the label, and the awareness created by the label, will combine to improve how we build software.

Let us all honestly hope that I am wrong.

Posted by willeke | 1 Comments
Filed under: ,

Shu Ha Ri for Kanban systems

Context

A recent discussion on the kanbandev list interested me because it really brought a focus on what we mean when we say “kanban”.

First, David Anderson posted:

On Fri, Sep 4, 2009 at 2:35 PM, netherby_uk wrote:

(#1) kanban (small k) - meaning signal card - original literal meaning is closer to "shingle" (in American), usage "to hang out your shingle". Signal cards (kanban) are used to facilitate self-organization on a shop floor. With the correct policies they can be used to enable a pull system.

(#2) virtual kanban pull system (small k), generally shortened to "kanban" for convenience - the tool, mechanism of method of using kanban (signal cards) to implement a full pull system in a value-stream. In most of the Taiichi Ohno quotes he is using "kanban" in this sense. Note this includes visualization. Generally speaking the visualizations are not the kanban(#1) but representations of the actual work as knowledge work is invisible.

(#3) Kanban (large k), a method for change management (in software engineering and knowledge work), an enabler of a Kaizen (continuous improvement) culture and process. To do continuous improvement there is a need to incorporate a number of bodies of knowledge including the full suite of Lean thinking, Theory of Constraints, Deming's Theory of Profound Knowledge, Risk Management / Option Theory, and more will doubtless be added to this list.

After some discussion, Joakim Sundén added:

On Sat, Sep 5, 2009 at 7:27 AM, Joakim Sundén wrote:

1. Kanban (or Kanban Boards) as visualization of project status that helps teams to make work self-directing. This seems to have been Kenji Hiranabes and Poppendiecks early application/understanding of kanban, see e.g. Hiranabes 2007 InfoQ article "Visualizing Agile Projects using Kanban Boards" or Poppendiecks "Implementing Lean Software Development". It is all about visualization and there is no notion of limiting WIP etc. Speaking to Hiranabe and other agile japanese developers on a study tour in Japan this spring most of them referred to kanban in this meaning although some, e.g. Hiranabe, were aware of the other meanings as well.

2. Kanban as a tool. Includes the definition above and extends it with mechanisms as pull and limiting WIP. It can be used with agile methods as well as with waterfall approaches. People who use this definition seem to think of kanban as a tool particularly (and sometimes _only_) useful in software maintenance departments, e.g., where Scrum doesn't cut it because the constant emergencies ruins the sprint planning.

3. Kanban as an application of lean thinking to software development that is somewhat different to, but not necessarily in opposition to, Poppendiecks flavor of Lean Software Development.

Echoing what David wrote in a later post on this thread, I don't recognize Joakim’s #1 at all. In fact, when I speak I generally recognize it explicitly as an antipattern because of the pain and chaos it caused the team at Inkubook (as compared to both Scrum and WIP limited pull based systems).

David and Joakim somewhat share the same perspective for their respective #2 and #3’s, so i won’t distinguish between them from here forward. I have seen these 3-level splits before and I find them not working for me because I feel that they miss an important progression. Dividing them into explicit steps loses the important aspect of transitioning between them. I responded with a ShuHaRi perspective that I feel fits the real situation better.

Shu

I don't see what we're calling kanban as having any real Shu level components at the process level. I suppose working as a member on one of these teams could be considered a Shu level behavior as you learn and copy what your team is doing. A team attempting a kanban system on a Shu-level understanding will degenerate into cargo cult and likely failure. It certainly misses the opportunity to improve itself.

Ha

Ha is the entry point for most teams. You read a bunch of different people's approaches to how kanban is being done, and you take a shot at it based on the set of practices you know. You put up the visual control board, throw some WIP limits on it, and start managing your work that way. You find some success, and you try different practices that sound useful as they are discussed on the boards. Your level of success goes up and down as you try them, and you learn.

Ri

Ri behaviors emerge when you start feeling the need for changes and see the appropriate places to make the changes. This is very similar to David's original #3 at the top of the discussion, but without the explicit statement of the bodies of knowledge involved. I do pull from all of those areas David lists, but I also pull from adult education, hospital management (a special flavour of lean), NLP, software architecture, design & patterns, physical architecture, science fiction, military history, a study of politics, and anything else that inspires me to a better solution at the time. Thus, I argue with David's #3 on semantics, not on intent. The core goal is to "achieve continuous improvement through continual application of approaches and techniques from a variety of sources".


Ha->Ri is a process of continual improvement itself, and I suspect this is why I don't see #2 and #3 as different things... I see it as an axis of progression and learning on which #2 is the starting point and #3 is one of many possible futures.

Posted by willeke | 1 Comments
Filed under: ,

Feature, and feature, and feature

Feature, and feature, and feature,

Slide in their petty pace from queue to queue,

To the last release of recorded value;

And all our builds have lighted fools

The way to techie debt. Out, out, beta users!

Code's but an indented shadow, a poor representation

That grows and flows for hours upon the screen

And then is patched no more. It is a tale

Specced by an idiot, full of sound and fury

Signifying nothing." — Manifesto (Act 5, Scene 5, lines 17-28)

Posted by willeke | 0 Comments

Wow… simply wow.

I attended Ken’s ScrumMaster (tm) course over the last two days. Possibly more on that later, but for not I want to focus on something entirely different. People are just very incredibly decent when it comes right down to it.

Ken has an absolution jar in the center of the room to catch the $1 owed for being late back to your table or for cussing in the course. Each day a charity is chosen that has a connection to somebody in the room for the money to go to afterward. On Monday, I mentioned that I ran Dan Shi Martial Arts club, and it was selected as Monday’s charity. By the end of the day the jar held $21, and I took $20 of it to deposit as an anonymous donation. Awesome idea, and thank you everybody!

Tuesday morning I thanked everybody during the morning agenda for sharing their sins with the needy, and commented that they’d sponsored a single student for a single month, which is hugely appreciated. At some point during the day, people must have talked it around, because around 3pm Ken tapped me on the shoulder and told me that the group had collectively decided to send Tuesday’s money Dan Shi’s way as well… THANK YOU!

Around 4:45 I straightened up the money because I was having problems putting my dollar in for being late back from break. I counted ~$30 at that point. At 5:15 I collected the money, and found EIGHTY THREE DOLLARS in the mug. Everybody, thank you! That is hugely significant to an unfunded organization, and we thank you very very much.

You have collectively allowed us to sponsor a child for almost half a year. Thank you.  You are all awesome, and it just reminds again that no matter how much we may disagree, argue, or bicker professionally, every single individual is first and foremost a person doing the best they can do.

Posted by willeke | 0 Comments

Feature Deduction

The problem

You have what Chris Matts calls an “Order Taker” as your business analyst. This individual is occasionally your only access to the people that actually understand what’s needed, yet they’ve been positioned as the gatekeepers of knowledge.

Consider this tactic

Combine “The 5 Why’s” and “Feature Injection” and see if you can deduce the real information that led to a specific requirement or change.

The basis

The thing is, the person the BA is talking to likely does Feature Injection, even if they don’t know they’re doing it. They’ve created their mental model (or “understanding”) of what problems this software they’ve asked for will solve. Something comes along and breaks the model (or “Doesn’t quite match what we’re doing”), and they change the model (or “submit a change request”).

If you look at the outputs of this (the delta, or the specific change), you’ll observe that they probably share a common theme or two. If you keep asking “why” on the changes, you’ll accomplish two things. You’ll be able to understand what sort of learning occurred, and the further “why’s” will either lead to better answers (less “telephone” effect) or more questions for the actual business owner. Second, you’ll probably frustrate the hell out of the order taking BA, and there’s a tiny chance they’ll learn to act differently.

Either way, you probably understand the intent of the changes better, which means you can do a better job providing value.

 

btw, please please please try and fix the organizational structure first, but if you can’t do so, then you can begin finding the right ways to work around the impediments.

Posted by willeke | 0 Comments

Using IIS7 Failure Tracing

    In the process of debugging an issue with a sample web application, I was forced to learn a bit more about IIS7's management model, and I found some very valuable information.

    The problem: the user my request was running as did not have ACL-level access to the .svc file for that web service.

    My old solution: Try random accounts before giving up and just giving access to "Everyone" for the entire web tree. (Yes, bad, but it's a sample)

    My hope: There is a way to find out via logs, console, etc what the actual user is based on the actual failure rather than looking at all security configurations and randomly trying the referenced accounts.

    What I found:

    Open IIS manager, click at the web site level, and choose "Failed Request Tracing Rules"

    clip_image001[5]

    On the right, choose "Edit Site Tracing…"

    clip_image002

    Check "Enable", and note the location of the log files (note, there are implications on production sites. I don't know what they are. Be warned.)

    clip_image003

    Now, click "Add…" on the right, and choose your settings:

    clip_image004

    clip_image005

    clip_image006

    When you finish, you'll see something like this:

    clip_image007

    At this point, you can go to your logs folder and see the XML results of any errors that match your filters:

    clip_image008

    Opening one of those applies a nice transform (freb.xsl, I assume), and we have our data:

    clip_image009

    Including my answer:

    clip_image010

    And lots of other cool information:

    clip_image011

    clip_image012

    clip_image013

    And a summary view:

    clip_image014

    Including some really useful information that I would usually try to get out of Fiddler2 because of the challenge in collecting it in some configurations:

    clip_image015

    clip_image016

    clip_image017

Posted by willeke | 0 Comments
More Posts Next page »