Digging a Hole and Covering it with Leaves — The Software Development Version
Whenever I hear the plan uttered (and in my Wall Street consulting days, I heard this a lot), that we should build an HTML (or Flash) prototype, impress the client and then fill in the back end, an unwanted image comes to mind. We're digging a hole (the missing 80% of the back end) and covering it with leaves (the HTML prototype) in the hopes that the client will fall in (impressing the client).
No, this isn't a rant about HTML, Flash or paper prototypes. Those have their place, to be sure. We use them every day in our own software development practice, but they have a short lifespan -- usually less than an iteration on the way to delivering the actual feature that it is prototyping. But when the prototype takes on a life of it's own and becomes a long-term deliverable, that's when you run into problems. What are these problems? They aren't as numerous as fall leaves, but there are plenty.
Topics: Agile Development, Prototyping
Agile Fundamentals: The Feedback Loop
When you improve a little each day, eventually big things occur. -- John Wooden
A few weeks ago I had a discussion with some colleagues on the adoption of Agile within large corporations. The consensus was that Agile was almost always adapted rather than adopted -- that is, companies exclude those practices that conflict with corporate culture, modify those that seem too impractical or wasteful, and sometimes substitute those internal practices that seem a decent and familiar substitute.
Various schools of Agile thought have different reactions to this adaptation, all negative. The XP folks particularly don't like it.
These [thirteen] practices support one another...and thus care should be taken when modifying any of them, or deciding not to include one or more of these practices in a project.
I agree that it definitely helps to follow a particular Agile approach closely in the beginning. Once you have the basics down, you can start to improvise. But it helps knowing the fundamental principle which, in my opinion, underlies all of the agile practices, no matter what the flavor. So, the first three commandments of Agile software development are:
- Feedback loop
- Feedback loop
- Feedback loop
Topics: agile, Extreme Programming, Feedback Loop
GWTUML - Just Enough UML for Wikis
Florian Mounier has spent the last six months developing GWT UML, a slick little UML diagramming tool written in, obviously, GWT. It's smooth, good looking, supports class, object and sequence diagrams. You can save your diagram as a url or export it to an SVG. You wouldn't try to do model driven development with it, but for embedding in a development wiki, this thing could rock.
You can find more information at the google code project and check out a demo here.
Hedge Fund Analytics in Flex
We just published a case study on a Hedge Fund Analytics application developed in Flex. It's an extensible Flex based platform for real time analysis of hedge fund performance data, with dynamically updating charts, graphs and sophisticated filters for cumulative performance, return distribution, alpha, beta and correlations, commissions and fees, credit and sector exposure.
The system is designed as a modular platform which can consume data services from multiple sources, and can integrate multiple custom components. Custom components were designed to conform to a standard API. Components expose standard flex component properties and events so that properties and method references could be passed. This allowed individual dashboard applications to be built, fed data and customized at run time. Take a look at a video demo or read the longer case study on the Pathfinder site.
Flare vs. Axiis
After a long time of searching for the right data visualization framework for Flash Platform, some time ago I've put my money on Flare which is based on a Java framework called Prefuse. I have been very happy with it and haven't looked back until a new framework of same purpose crossed my way - Axiis.
Before anything else said, Axiis is a brand new framework so I have to give it some credit if all the bells and whistles are not there. What intrigued me about it in the first place is that Axiis is heavily relying on Degrafa, a well proven declarative graphics framework that I have a lot of good experience with.
After looking at Axiis examples, here are my first impressions of how it stands against Flare.
Topics: axiis, data visualization, Flare, Flash Platform, Flex
Summer Software Development Internship
We're starting a software development summer internship in our Chicago office this year. If you're a college junior, senior or recent graduate who want to learn the agile/OO development ropes while developing really cool products and services and earning $20/hr per hour (you should pay for the privilege, right?), give the internship posting a look here.
Clickless Pagination - Slashdot’s Bottomless Cup of Content
I haven't visited Slashdot's site in quite some time; blame it on my desperate addiction to my iPhone RSS reader. So I somehow missed their rather interesting approach to pagination - in place of the typical "Previous/Next" navigation controls found on most blogs, Slashdot detects when the reader has scrolled to the bottom of the page and uses an Ajax pattern to simply append more stories to the page. No clicking required - just keep on reading. Try it out for yourself. The overall effect is something like a bottomless cup of diner coffee. Just as you're about to run out of content, along comes Slashdot to fill up your page.
The implementation is not without problems - the Slashdot footer contains a daily quote and several navigation links. Which no longer stay in one position long enough to read/click, leading to the worst kind of link whack-a-mole. And the visual cue that new content is loading is entirely too subtle; the first time I reached the bottom of the page I was surprised and mildly annoyed by the way the browser suddenly stopped responding to my attempts to scroll. Perhaps the most interesting issue I experienced is entirely psychological. Having new, compelling posts suddenly appear (just as I thought I had finished reading the front page) has definitely resulted in more than a few oh-my-god-it's-2 am-already moments.
I'm not sure I'd include this particular implementation of clickless pagination in one of our designs just yet. That said, I'm looking forward to exploring it a bit further - particularly for long lists like search results. With better visual notification and a reconsideration of how to use a footer, I think it could be a winner. And the idea of removing yet another clickable item from a user interface is certainly a compelling reason to see how far we can take the basic concept.
Are You Building an Application or an Antique Web Framework?
A few years ago, a friend of mine asked me to help him estimating the conversion of a client/server application to the web. He came armed with a spreadsheet of features, I came armed with Ibuprofen and a red pen.
My usual approach to estimating involves breaking down the features into things that can be implemented by a pair of developers within a two week period. I give these a complexity factor of 1-5, then run them through an empirically derived formula to come up with an estimate in terms of person-iterations. (It's actually a little more complicated than that, but this is the main effort). Getting the count and size of these mini-features right is the key aspect of this technique. His spreadsheet had almost 300 features listed, and so we settled in for a day of fun.
Continue reading »
Topics: agile, Estimating, Requirements, UXD
Pathfinder Launches Beer Hunter, A New Flex + Ruby RIA
We just launched a new rich internet application for Destinationbeer.com, called Beer Hunter. It was written in Flex and Ruby on Rails and features mapping and 150 beers from around the world. We think it's pretty cool, so check it out, and let us know what you think. One of the things I really like about it is that the design pattern can be applied anywhere you're filtering products geographically and on attributes. Coffee? Wine? Jewelry? Chocolate? Travel Books? I particularly like the way the beer list visually sorts when you change a filter and the zoom interactions on the map.
There's more information in the case study on the Pathfinder web site, Sasha has written a related post on RubyAMF and Flex from the Flex perspective , and Justin has written one on Rails, AMF and Flex from the Rails perspective.
Topics: beer, Flex, mapping, rich internet applicaiton, Ruby on Rails
Prototyping with Keynote
I've been using Keynote--Apple's version of Power Point--for at least a year now. It provides multi slide functionality with an easy to use drag and drop interface for creating objects of pretty much any kind. It also works great at any level of fidelity. I can do quick sketches during the early phase of a project, and when the time comes I can also build complete full color, pixel perfect mockups of an interface. Apple gives me more creative control over my objects with Keynote than Microsoft does with Power Point, which frustrated me to no end every time I needed to place something with precision, or build a custom shape.
Pretty much all of my design projects will include some sort of user testing. It is at this point that I must transform the wireframes I've built into a clickable prototype. Now this step can and frequently does get messy, at least the way I used to do it. I used to create my wireframes, one slide for each screen, or state--which is much more common now as RIAs take over more and more of the landscape--and then export them to PDF. I would then take that PDF document into Adobe acrobat, which has a hyperlink tool, thus allowing me to add the interactivity to the wireframes. The problem is that the workflow is slow and inefficient because the tasks involved require two different programs. As long as the wireframes themselves are perfect, I have no problem. I'm done with Keynote. However, any time I want to make a change to a wireframe, I must go back into Keynote, make the change, re-export the entire document as a PDF, take the page or pages that I've changed and, one at a time, place them into my existing hyperlinked PDF. Also, Acrobat is not great at making the process of replacing pages very usable. I frequently have to double check whether a page replacement actually worked because it's not clear during the action.
Now, instead of using acrobat to add the interactivity, I simply use Keynote, which allows my to hyperlink any object to any slide number (or, for that matter any webpage, or even another Keynote slideshow). That way I can make changes to both the underlying objects in the wireframes as well as the click-flow in the same program. Keynote will automatically embed the hyperlinks into an exported PDF as well. That way, the end user of the test needn't actually have Keynote. The whole process is much more manageable as a result, especially since my prototypes typically involve dozens of individual wireframes.
The Origins of Software Engineering Economics — You are Ron Turcotte
Between the idea / And the reality / Between the motion / And the act / Falls the Shadow. -- T. S. Elliot
We have a particular way of developing software. We practice it until we're like the Harlem Globetrotters and your software project is like the New Jersey Generals -- defenseless against our iterative, pair programming, test and user experience driven weave. We didn't just happen upon this approach haphazardly; rather, we evolved it through trial and error and shameless adaptation of other software developers' ideas. It represents our answer to a number of the critical questions of software development. Three of those questions (that you'll hear us refer to over and over again) are:
- If bugs get more expensive to fix the longer it takes to identify them, how do we catch them as quickly as possible?
- If most bugs in a mature application are caused by missing or unclear requirements, how can we close this communication gap?
- If 50%-70% of the cost of most software is spent in maintenance as opposed to the original development, is there a way to spend a little more up front to improve that ratio?
So where do these nuggets of software development wisdom come from? From a Software Engineering Classic called Software Engineering Economics by Barry Boehm. Like most of these classics, such as The Mythical Man Month, its findings and advice are widely accepted yet honored mostly in the breach. Yet its empirical findings about bugs, maintenance costs and unclear requirements still govern most of what makes the software development landscape so treacherous for product managers.
Topics: Agile Development, Secretariat, Software Development
IE8: That Sinking Feeling
When a new browser comes out, like IE8, the verdict usually rolls in over the course of a few weeks as our QA testing on various web projects bumps up against its limitations. It's too early for us to render a verdict, but the signs have not been good and continue to be negative.
The evidence continues to trickle in. Louis-Rémi Babé weighs in with his grim assessment:
- The JavaScript performance on IE8 is still lousy.
- Useful tags such as
<canvas>, <svg>, <video>are still missing. - CSS3 is minimally supported. (I agree that this is good news for web developers since we get to charge more money for all the extra effort that goes into IE8 work.)
To top it all off, Vector Markup Language (VML) is freshly broken. It's one of those sad and frustrating stories. Read up on it here and feel sorry for all of those framework developers who have to crowbar in several hacks for all of the garbage in IE8.
Data Driven Design and the Culture at Google
A peek under the hood of google's design apparatus.
In an interview with Newsweek magazine, Irene Au, User Experience Director at Google discusses her responsibilities, and in the process, reveals some telling things about the way design decisions are made at the multi-billion dollar internet company. Perhaps not surprisingly, she makes it clear that Google takes a data driven approach to interface design just as it does to everything else. The subjective opinions of art directors or visual designers don't play a key role in the design of their products. As she states, "A lot of our design decisions are really driven by cognitive psychology research that shows that, say, people online read black text against a white background much faster than white against black, or that sans serif fonts are more easily read than serif fonts online." No argument here.
But is a completely empirical approach to interface design desirable, or even realistic? Isn’t it more likely that the left brain culture at google puts greater weight on the opinions of engineers, even if they are being just as subjective? One blog commenter put it this way, regarding Au’s interview with newsweek:
Bean of the Devil: Tally-Ho CMS
Last time we came this way we looked at the misuse of a getter in the java.io.File. Not that it was wrong to have a getter in File, just that it led to misuse of that information in a UI control to determine what file encoding needed to be used to store the model.
This time we are looking at the Tally-ho CMS project. This is perhaps a more pernicious example of the shortcomings of getters and setters. We're not having to remember rules about changing state here (that's for an upcoming post), but we are exposing the implementation details and thus repeating code and making our application harder to change.
There are many places where ArticleBean is unpacked in the application. Here are just two examples.
Continue reading »
Topics: Design Patterns, OOAD, OOP, Structured Design
Week in Review
Some interesting posts from around the blogosphere:
- The GWT Plugin for Grails has been stuck in version 1.4.x of GWT for forever. Michael Galping has published a two part (one and two) series at IBM Developerworks on integrating Grails and GWT 1.5.3. Extensive, well illustrated with full source code available for download.
- InfoQ has published an interesting conversation about Ajax and COMET versus HTML Web Sockets, i.e. hacky COMET versus real bi-directional communication mechanisms between the server and browser.
- UXDesign.com has a concise summary of an Alan Cooper Interview video from 2008. User Experience Design, baby!
- David Hamill has some provocative musing on the difference between usability and user experience design. Not sure I agree with everything he has to say, but it's a question that comes up often and is worth thinking about.
- A bit older, but I just came across it: the original ScrumMaster, Jeff Sutherland, has an interesting article about ROI and incremental development. The conclusion? Incremental is better.
But seriously, we don't have enough rigorous thinking and writing about how good design and process reduces the cost of software in the long term (while perhaps increasing it in the short term).
These were some of the posts that I found valuable over the last week. Please share yours in the comments.
About Pathfinder
Follow the Blog
-
Get a monthly update on best practices for delivering successful software.
Subscribe via email
Subscribe via RSS
Categories
Topics
Archives
- July 2009
- June 2009
- May 2009
- April 2009
- March 2009
- February 2009
- January 2009
- December 2008
- November 2008
- October 2008
- September 2008
- August 2008
- July 2008
- June 2008
- May 2008
- April 2008
- March 2008
- February 2008
- January 2008
- December 2007
- November 2007
- October 2007
- September 2007
- August 2007
- July 2007
- June 2007
- May 2007
- April 2007
- March 2007
- February 2007
- January 2007
- December 2006
- November 2006
- October 2006
- September 2006
- August 2006
- July 2006
- June 2006
- May 2006
- April 2006
- March 2006
Blogroll
Recent
- Elements of Testing Style
- Aesthetics and Web Design
- Asterisk-Java Testing with Groovy
- 3 Misuses of Code Comments
- Fluently NHibernate
- Digging a Hole and Covering it with Leaves — The Software Development Version
- The Importance of User Experience - Do You Understand It in Your Bones?
- Writing Your Own Protocol With NSURLProtocol
- What’s In Your Dock: iPhone edition
- Feature Fatigue








