Maximizing the utility of failure

Not specifically a “fail fast” blog post but Dave Kellog recently expressed his thoughts on the value or structuring/designing business initiatives to allow for drawing specific conclusions based on the results of the initiative.

He argues that the results of the initiative should clearly indicate whether it was a repeatable failure or a repeatable success.

Thus, my statement: if we can’t have repeatable success, then can we at least have repeatable failure?

He is describing one of the ways to maximize the utility of failure (and/or also success in this case) through critical thinking and considering the possibility of failure while still planning.

A “test” that yields inconclusive results due to the way it was structured (i.e. could have yielded conclusive results with an alternative formulation) should not be considered failing fast.

Advertisements

Interesting Monitor and Desktop Setup for Pair Programming

Finding effective monitor and desktop configurations for pair programming can be a challenge.

Pivotal Labs offers the following option in a post titled Pairing tete-a-tete .

pair programming setup

The breakthrough is having a second display that mirrors the built-in display on the iMac. The second display and both keyboards/mice are all connected to the main iMac, so it’s one Mac system that can be used by two developers in collaboration.

An example of the Agile Cloud in action

An example of the Agile Cloud.

“You can build prototypes in the time it takes to have a meeting”
Simon Willison – Open Platform launch

This is phrase which sticks in my mind from Tuesday and I make no apologies for including it in 2 blog posts in a day. It has to be said that I don’t want ever to be in a 7 hour meeting (that was roughly how long ContentTagger took to build). However it’s still quite a quick turnaround and it got some extra niceness from a couple of “watercooler” moments (although one of them may have added on a couple of hours).

I definitely have attended meetings that have lasted at least seven hours.

The prototype was built using the default Google App Engine framework, Django templates and the Python client library for OpenPlatform.

A nice combination of Google App Engine, Python, and jQuery.

Review: Balsamiq Mockups

Balsamiq Logo

Overview

Balsamiq Mockups is a cross-platform (Windows, OS X, Linux) application that is great at creating quick and dirty, back of the napkin style (in a very good way) user interface wireframes.


Example Mock-Up

The mockups created by the application are essentially electronic sketches composed of both pre-built and user constructed user interface components.

Installation

The application is capable of running as a browser based application or a standalone desktop application.

The desktop application requires the Adobe Air runtime. Since I already had installed the Air runtime on the two platforms that I tested Balsamiq Mockups (Windows XP and Mac OS X), installation simply consisted of downloading the “MockupsForDesktop.air” file and double-clicking on the downloaded file (in my case version 1.5.33) to start the installation.

Features

Before running the application for the first time I quickly perused the available online help. The online help does a good job of covering the features and functions of the tool and because it is presented in a single web page it is easy to search and print if necessary .

Within 10 minutes of using Balsamiq I felt like I’d gotten the hang of the application and had produced my first complete mockup.

If you’ve used almost any kind of a drawing tool the features of Balsalmiq will be familiar and work as expected (e.g. guides, snap to grid, grouping elements, auto-alignment options, locking regions and layering).

The pre-installed library of UI components covers a range of common scenarios. Also there are more components that the Balsamiq community has developed available for download at www.mockupstogo.net. One suggestion I have for anyone trying the application is to use the “Quick Add” feature, once discovered, I found that I used is almost exclusively to locate the components that I wanted to add to my mockup.

One interesting and positive characteristic of the mockup files themselves is that they are straightforward XML files. This opens up the oppportunity to translate the mockups into other formats.

Example Mockup XML:

<mockup version="1.0" skin="sketch" measuredW="631" measuredH="585">
  <controls>
    <control controlID="0" controlTypeID="com.balsamiq.mockups::BrowserWindow" x="43" y="18" w="588" h="567" measuredW="450" measuredH="400" zOrder="0" locked="false" isInGroup="-1">
      <controlProperties>
        <text>A%20Web%20Page%0Ahttp%3A//</text>
      </controlProperties>
    </control>
    <control controlID="1" controlTypeID="com.balsamiq.mockups::TabBar" x="66" y="105" w="550" h="392" measuredW="256" measuredH="100" zOrder="1" locked="false" isInGroup="-1">
      <controlProperties>
        <text>One%2C%20Two%2C%20Three%2C%20Four</text>
      </controlProperties>
    </control>
    <control controlID="2" controlTypeID="com.balsamiq.mockups::VideoPlayer" x="119" y="172" w="458" h="204" measuredW="300" measuredH="200" zOrder="2" locked="false" isInGroup="-1"/>
  </controls>
</mockup>

Mockups can also be exported into nice looking PNG files for inclusion into the document of your choice.

One item that would be a good addition to the product would be to add the concept of a master template where a master template would include all of the design elements that are repeated between screens (or pages). An ability to define a master template for a mockup would greatly simplify changes across a related set of mockups. Another welcome addition would be some way to organize a set related mockups together. Perhaps this could be accomplished by defining a set of container elements in the mockup XML files.

The application also has support for functioning as a Jira plugin. At work we are moving to Jira so perhaps I’ll have the opportunity to test that aspect of the product next.

Conclusion

The application is an easy to learn and easy to use tool to create user interface “sketches” that convey the essential aspects of a design without the inclusion of unnecessary detail. This is a tool that is effective for hashing out the form and function of an interface without obsessing about the look and feel.

For large scale user interface prototyping the lack of a master template is potentially limiting. Because of the usefulness this kind of a feature I wouldn’t be surprised to find out that this feature is on the radar for a future release.

The bottom line is that I’m looking forward to using this tool on future projects.

Tim Bray on the Future of the Web

An interesting interview with Tim Bray on The Future of the Web.

The topics covered are fairly wide ranging with the more interesting questions and answers in the last two thirds of the interview.

One of my favorite web frameworks Django is mentioned favorably several times.

I completely agree with his position regarding REST/WOA as being the architectural pattern that matters today.

On the topic of cloud computing Mr. Bray talks about the alignment of agile methods, open source, and cloud computing working to deliver “monetization at the point of value”. This seems to be a recurring theme.

He poses three questions concerning adoption of the cloud computing.

  1. What is the right level of abstraction for the cloud?
  2. How can one avoid vendor lock-in?
  3. How can one ensure security is handled appropriately?

Noting that the economics of cloud computing are compelling but the above questions need to be addressed.

His comments about enterprise adoption of what is currently today’s startup technology platforms is also interesting.

Manifesto for Software Craftsmanship

I’ve just signed the Manifesto for Sofware Craftsmenship after a ping from a friend.

Alan Cooper is the first person that I heard speaking of software development as primarily a craft and not as an engineering discipline.

The text of the manifesto is shown below:

As aspiring Software Craftsmen we are raising the bar of professional software development by practicing it and helping others learn the craft. Through this work we have come to value:

Not only working software,

but also well-crafted software

Not only responding to change,

but also steadily adding value

Not only individuals and interactions,

but also a community of professionals

Not only customer collaboration,

but also productive partnerships

That is, in pursuit of the items on the left we have found the items on the right to be indispensable.

It will be interesting to see how many people end up signing.