March 2008

Monthly Archive

We’re always on the lookout for slightly madcap events that support the developer community. Imagine our wry smiles when Tim Heuer approached us about backing the latest brainwave from Microsoft’s Developer Platform Evangelists (DPEs).The Code Trip

The Code Trip is basically a two month tour of the West Region in the U.S. where they’ll be showcasing some of the latest Microsoft technologies (like Silverlight 2.0, LINQ & IE8) at local community events.

Check out Chris Koenig’s blog, which outlines the schedule and list of destination cities pretty well. There’s also a short video piece about the whole concept on Channel 9 if you’re interested in learning more about it.

Imagine selling that business trip to your Better Half! I can only guess that the phone conversation would go something like this:

DPE: Listen, I’ve got a work trip coming up in March. It’s a big event with several folks from work.
BH: Sounds like fun…
DPE: Definitely. How does your schedule look around mid March?
BH: OK, actually…I haven’t much on then.
DPE: Excellent!
BH: How long is the trip?
DPE: Well, I’m off on March 14th.
BH: When do you get back?
DPE: Let’s see…hmmmn…it looks like I’m back in 2 months.
BH: <STUNNED SILENCE>
DPE: Hello?
BH: Is this a joke?
DPE: Eh, no…
BH: <HANGS UP>
DPE: That could have gone better….

I’m sure the brave souls on the bus are swapping in and out of the trip, but I’ve got to admit the company road trip concept is a funny one. To show our support, InnerWorkings is offering a bunch of free subscriptions to our entire learning catalog (valued at $1,500 USD). Microsoft has spiced the offer up by kicking in an XBOX 360 for selected winners in each city. You can follow their daily trials and tribulations on the Code Trip blog, which is updated regularly — what else can you do on a bus traveling thousands of miles?

By the way, be sure to check out The Code Trip itinerary if you’re based in or around Denver, CO — there’s a big launch event there tomorrow and Tim tells me that several thousand people have registered to attend. I plan to meet the team during their brief stop in San Francisco on April 3rd, provided the bus makes the long journey without mechanical failure. The Code Trip team is plotting their every coordinate with an onboard GPS unit and Virtual Earth, so you can follow their progress along every bump and turn in the road. Good luck, folks!

Add this post to: del.icio.us:Clear the Slow Lane: It's the Code Trip! digg:Clear the Slow Lane: It's the Code Trip! spurl:Clear the Slow Lane: It's the Code Trip! simpy:Clear the Slow Lane: It's the Code Trip! newsvine:Clear the Slow Lane: It's the Code Trip! blinklist:Clear the Slow Lane: It's the Code Trip! furl:Clear the Slow Lane: It's the Code Trip! reddit:Clear the Slow Lane: It's the Code Trip! Y!:Clear the Slow Lane: It's the Code Trip! google:Clear the Slow Lane: It's the Code Trip! technorati:Clear the Slow Lane: It's the Code Trip! stumbleupon:Clear the Slow Lane: It's the Code Trip! windowslive:Clear the Slow Lane: It's the Code Trip!

I get a lot of ideas on my way to the office, while on my motorbike. Perhaps Dublin’s traffic and pollution is good for my brain. Or maybe not. At one of our daily standup meetings this week, someone suggested that I should try wearing gloves and helmet at my desk :D

Add this post to: del.icio.us:How do you get your ideas? digg:How do you get your ideas? spurl:How do you get your ideas? simpy:How do you get your ideas? newsvine:How do you get your ideas? blinklist:How do you get your ideas? furl:How do you get your ideas? reddit:How do you get your ideas? Y!:How do you get your ideas? google:How do you get your ideas? technorati:How do you get your ideas? stumbleupon:How do you get your ideas? windowslive:How do you get your ideas?

As software developers, we love to delve deep into technical matters and write code that delivers value. It’s not a big secret, however, that many problems in software originate with people and not technology. In my experience, the biggest issues arise mostly due to corporate politics, lack of shared values, poor attitude, inadequate communication skills, and, lastly, faulty perceptions.

Ultimately, the way we see the world affects the way we logically reason about it.

Imagine a team of developers and a customer discussing what to do, using agile stories as their starting point. I use the term “customer” to describe the role of the domain expert who prioritizes stories and can clarify what problems a new system is supposed to resolve. Ideally, the customer knows precisely what to program and the team knows exactly how. More realistically, however, requirements evolve both as the team better appreciates the nuances of the business domain and the customer realizes the possibilities and constraints.

But what would happen if both the customer and the development team had a truly open mind and a willingness to be wrong? What solutions would they come up with if they all had a creative attitude and used a language designed to help them restructure their thoughts? I’m suggesting a catalog of practical refactorings and patterns that would add some rigor to anyone’s thinking process!

The great creativity masters can teach us very relevant lessons in this context. Edward De Bono’s “Serious Creativity” book, for example, contains lots of insights and sets the foundation of the first thinking pattern I’m going to introduce:

Extract Concept


You have identified a concrete idea that addresses a given objective.
Extract a broader concept to facilitate the creation of alternatives.

extract concept

Motivation

Extract Concept is one of the most regular techniques I use to deliberately increase my ability to generate alternatives. In fact, it is so basic that, at first glance, it might even seem too obvious. But don’t be fooled. Its mechanism taps into our human talents of abstract thinking, and it is a good step towards sharpening our creativity skills in a disciplined way.

Perhaps the most important benefit is that it forces me to look for alternatives even when I’m fairly confident that the first idea I have is good enough: I’d ask questions such as “this is a way of doing what?” and “how else can this be achieved?” This attitude is particularly important as I know that if I blindly trust my first instincts I may miss tremendous opportunities.

Alternatives must have a reference point: I’d ask “alternatives with reference to what?” A new concept becomes a fresh reference point that can somewhat change my perspective and lead to further ideas.

Mechanics

  1. Define the objective. It might be general or specific, but make sure that you are very clear about what you are focusing on!
  2. Identify one or more ideas relevant to such objective.
  3. For each of those ideas, extract a broader concept by asking: “this is a way of doing what?
  4. See how each concept can trigger further alternatives by asking: “how else can this be achieved?
  5. If applicable, find further alternatives by extracting an even broader concept (a direction) from one or more existing concepts.

Example

Extract Concept Example

  • I start defining the problem: “Provide useful help on our website”.
  • I quickly identify as many relevant ideas as I can. In this case is pretty easy to get a good few of those, but let’s pick 2 of them for simplicity sake:
    • Add “?” icon beside potentially confusing fields to open a popup dialog
    • Provide Email address
  • For each of those ideas, I extract one or more concepts:
    • Using the “?” icon, is a way of answering questions on the same page they arise
    • An email could be seen as a form of human interaction when visitors can’t find the help they need.
  • Using each concept, I can now identify more alternatives:
    • The concept “Answer questions on the same page they arise” leads me to the following ideas:
      • Use the “?” icon to inline-expand helpful hints
      • Add permanent “why?” sections beside each form section
      • Add (light-grey) instructive text directly inside each field (that disappears when the visitor clicks on a field)
      • Add help search section within page
      • Add inline validation (to show error messages within the form before the visitor has the opportunity to click the button that submits the form data
    • The concept “human interaction” helps me finding further alternatives:
      • Phone us (visitor calls us)
      • We phone you (visitor gives us his/her number, we call)
      • Forums (let visitors help themselves)
      • Chat
Add this post to: del.icio.us:Patterns of Systematic Creative Thinking: Extract Concept digg:Patterns of Systematic Creative Thinking: Extract Concept spurl:Patterns of Systematic Creative Thinking: Extract Concept simpy:Patterns of Systematic Creative Thinking: Extract Concept newsvine:Patterns of Systematic Creative Thinking: Extract Concept blinklist:Patterns of Systematic Creative Thinking: Extract Concept furl:Patterns of Systematic Creative Thinking: Extract Concept reddit:Patterns of Systematic Creative Thinking: Extract Concept Y!:Patterns of Systematic Creative Thinking: Extract Concept google:Patterns of Systematic Creative Thinking: Extract Concept technorati:Patterns of Systematic Creative Thinking: Extract Concept stumbleupon:Patterns of Systematic Creative Thinking: Extract Concept windowslive:Patterns of Systematic Creative Thinking: Extract Concept

Categories

Archives