If interaction design is considered only at the end, software is driven by engineering design, of which users are rightly unaware, rather than by representations with which they interact. -- Gillian Crampton Smith and Philip Tabor, in Bringing Design to Software, edited by Terry Winograd, 1996
We encounter the deep questions of design when we recognize that in designing tools we are designing ways of being. -- Winograd and Flores, 1986, p. xi.
[...] mastery resides not in the master but in the organization of the community of practice of which the master is part. -- Lave and Wenger, 1991, p. 94
Tuesday, 25 August 2009
Some relevant quotes
Friday, 14 August 2009
Coopers vision of agile
"Lots of ivory tower software experts cheerfully follow their own muse, but in the world of business, the dreams of money-makers are usually in conflict with the dreams of geeks.
In the business world, software developers have always been the whipping boy. In commerce, the delivered-software never matched the envisioned-software, and the technologists got the blame. Executives have always been unhappy about their inability to effectively direct and exploit software development. The only tool that seemed to get results for managers was to keep programmers on a ridiculously short leash by allocating resources in tiny increments. The results weren’t good, but they tended to prevent colossal disasters, which was, apparently, good enough for business.
Over many years, in self defense, programmers increasingly hunkered down to protect themselves. They aggressively lowered the expectations of their managers. They tried to commit to the least possible performance to avoid blame. All they really accomplished was to avoid good performance.
Nobody was really very happy with that situation, but it was good enough to provide most programmers with a decent living and some self-respect.
But many programmers are more ambitious than that, and most of them are used to higher levels of achievement than just “good enough”. All of that mediocrity has generated a lot of frustration for many programmers. Extreme programming was one method whereby developers could force business people to view the consequences of their decisions.
Extreme programming showed developers that there was power in self-determination, and in reaction to all that old defensive stuff, many programmers have finally said “Enough is enough”. They emerged from their bunkers to become proactive in *guiding* the development process rather than just doing what they were told (and then getting blamed for the failure that results). And agile is the mechanism they used.
I’ve long been an advocate of such technological-craftsman-self-determination. It’s just that I advocated it via the “interaction design” point of view. Therefore, agilists and I are on the exact same wavelength.
Now, there are some agile programmers who think that they are dealing with *technical* issues rather than social ones. If you ask me (no one ever seems to actually ask me), these people are trying to take TWO steps backward: they don’t want to return to the hunker-down phase, so they want to reinstate its ivory tower antecedent, that small-world-coding-happy-place that existed before software went big time. That place has never existed in the commercial world.
To my mind, agile means taking responsibility for making a good product. Even if you used test-driven-development, pair-programming, retrospectives, stand-ups and all of the detritus of “agile” but then built a product that nobody liked or wanted, then it wasn’t agile.
One of the responsibilities of software development is to assure that the right product is being created, and then to create it in the right way. The only way to accomplish this is to apply the best practices of programming, design, and all of the other associated disciplines and crafts. *TRUE* agile means integrating these crafts into a joyful, unified, productive whole."
Wednesday, 15 July 2009
Values in Software Design Practice
A really useful post from Autodesek on the values required for software design practice, this I feel links in with the values outlined out in the IE.
Values in Software Design Practice
by John Schrag on July 10, 2009
Every user experience (UX) designer who practices in a corporate setting knows the breathless whirlwind that is modern business. We designers manage relationships with developers, business managers, and customers, and still have a full-time production role researching, designing and validating features and interactions. We rarely have enough time to do everything we should, and therefore have to carefully choose where to spend our time and resources. Some designers don't even have the luxury of such choice, and instead are tasked with specific deliverables, which are sometimes not the best use of their time. In the face of this industry-wide problem, it's no surprise that dysfunctional design practices can arise and even become so common that they are seen as normal, or at least inevitable. But I don't believe they are.
In 2001, a group of software developers, development managers, and consultants created the Agile Manifesto, a document that outlined a set of simple values that they believed were the foundation of good development practices. What is interesting about this document is that it makes no reference to specific practices or buzzwords -- instead, it outlines principles and values against which any particular practice can be evaluated.
In the same spirit, my co-workers and I spent several hours considering the question of UX design practice. We weren't considering the question of what makes good design; there are innumerable books on that topic. We were considering the question of what separates a healthy, effective design practice from the horror stories we hear about when talking to others in the industry. We came up with two lists; the first list (below) talks about doing certain actions in the right order. Reading the list, these orderings may sound obvious, but they are by no means standard practice:
Setting Goals before Taking Action
Understand Problems before Generating Solutions
Designing before Writing Design Documents
Validating Designs before Investing in Code
Steak before SizzleThe second list is one of relative values. While all of the items on both sides of this list have value, we value the items on the left more than the items on the right:
We Value:
Validated Data over Expert Opinion
Quality of Data over Ease of Data Collection
Complete Workflows over Long Feature Lists
Achieving Results over Writing Reports
Collaborative Design over Design by Referendum or Design by Fiat
Ease of Use over Ease of Coding
Well-designed Critical and Common Workflows over Complete Coverage of Every Possible WorkflowOf course, a few words in a list doesn't capture these ideas all that well. In future blog posts, I'm going to talk about each of these items in more depth, show examples and talk about what can be done to keep your design practice healthy, even in the face of the whirlwind.
