June 24, 2006

Users vs. Developers

Trolling Chris Pirillo wants some.

He he! Well someone’s got to stand up and school the boy!

I admire people like Winer (who’s link I followed over there). I like the notion of “users and developers partying together”. I think developers have a responsibility to give the users good things. And that developers can’t know what these good things are without paying attention to users.

But the idea that development is a commodity - which is essentially what he's saying here -, that it’s like the water supply which can be turned on or off or piped-around at the will of the user, is wrong, wrong, wrong.

The reason is, that good software creation, like any other creative activity, requires a deep knowledge of the nature and constraints of the medium. You can’t invent the transistor without a profound understanding of physics. Nor write a great novel without being a master of your own language. Nor a great painter without knowing paint. Nor invent radio or television or the computer without a background in the relevant science.

Without knowing your material you’ll never see the statue in the block of marble. Never have intuitions about the possibilities that the medium holds. Users can, at best, offer advice for incremental improvements : “I want something like X but with these annoyances fixed.”

But that’s never going to give you radical new things. There are no great innovations in software that have been driven by user demand. (Name one!) They all come from geeks who knew what software looks like from the inside, who saw something in the computer and said “hey! I could make it do that, too. Kewl!”

Users and developers have common enemies : dinosaur software companies, companies who like to specify and buy software which they hope will impose particular work-practices on their employees, market-forces which require cutting-corners to get the product out of the door today rather than get it right.

Let’s work (and party) together to fight that.

But the other … don’t fool yourself. Users have been dreaming of getting rid of developers, like, forever. They never succeed.

Every time the users abandon us, we go away and create yet more cool stuff, on our own, for ourselves.

And eventually the users come crawling back, because they want more of our pure, raw innovation, rather than more of the stale old fluff which is all that they and the marketing people (who "understand real users better than those disfunctional geeks") are able to come up with by themselves.

Update : MP3 of Pirillo's presentation at BloggerCon. Yawn! ;-)


Mark Schraad said...

Headstrong is good. Myopic is not. Designers and programmmers need to lead, but armed with an understanding of the user based upon reeal rsearch. The 'I know what they need", heuristic egocentric mindset must go away.

A tech support person I know fequently tells the ap developers about execution problems and the developers typical response is "the customer is using the application wrong." I am soryy, but that is NOT an acceptable perspective. The customer can not by definition use the application wrong.

Composing said...

Yep. I agree that developers ought (out of more than self-interest) to be responsible to users. We developers have so much power in the world today that we do have a responsibility not to develop things that make other people's lives worse.

But at the same time, I'm kind of bored by people who think that the reason software is difficult to use is some deliberate conspiracy by developers. Or worse, that developers are too "stupid" to know what users want.

No. Software is one of the most complex systems built by human-kind. What you want the computer to do for you is complicated. Sure, if you want to do the same stereotypical things as fifty-million other people, then it's easy enough to add a wizard or a special button that does just that thing.

But more likely what you want is subtly different from what every other user wants. And no developer can be expected to forsee every application. Sometimes we should have a right to expect a little intelligence, understanding and adaptability from the user.

Composing said...

"The 'I know what they need", heuristic egocentric mindset must go away."

Frankly, no one knows what is needed. But at least developers and designers have the ability to guess what might be needed.

Whereas, it's a sad truism, but it *is* true, that users only know what they want when they see what they don't want. (And I speak as a user of many things.)

John Powers said...

"But the idea that development is a commodity - which is essentially what he's saying here -, that it’s like the water supply which can be turned on or off or piped-around at the will of the user, is wrong, wrong, wrong."

Yes, yes, yes, I agree very much coming from a perspective as a very dumb user. Setting up the discussion as "users vs. developers" sets it a situation of slinging arrows and defensive armor, precisely the sort of discussion not needed. Dialog nonetheless is very important; one reason I so look forward to your posts here.

My thinking is too often scrambled. Here's and example how that happens: I opened up this post right after reading John Robb's Weblog. Robb's Global Guerrillas theories remind me is that technology has consequences.

One reason, among many, for not seeing development as a commodity is understanding that software can be used for various nefarious ends. Such uses are not entirely predictable, but surely developers are better at predicting security implications of the tools they develop than users are.

The problem with: "users come crawling back, because they want more of our pure, raw innovation" is technology has consequences--it ain't so pure.

From a user's perspective, development as commodity is wrong, because development will have unintended negative consequences resulting from the community of users. Security issues are not the sole responsibility of developers. As a dumb user, I know I've got to become smarter.

Both developers and users incur responsibility with new technologies. Adversative posturing inhibit the kinds of dialogs necessary for limiting security problems emerging from new developments.

How to bridge the divide between users and developers isn't so clear, but it seems clear to me that bridges are needed.

haltse said...

"The customer can not by definition use the application wrong."

I have to disagree with this point it's not a valid definition, or there's further definition required to make this usable in itself.A user that is trying to carry out an illogical, and often impossible action , can use the application incorrectly. It's not possible to restate every assumption,account for each user's mental model,every stage in a program.

It's not a binary problem and treating it as devs or the users have access to the solution is as limiting as the charge being levelled against devs that "know what they need"

Phil Jones hit the nail right on the head with regards to users not knowing "art" but knowing what they like. To date all the user comments I receive are to recreate features they've seen elsewhere , to work like product x , if the solution already exists you have to wonder why they are not using it.

NullCorpus said...

The pace of evolution on the web is remarkably slow, considering how talented all these developers are.

Developers operate under constraints they do not see, being bound to various frameworks and standards and restricting mental constructs.

In any mix of developers, i would toss in an Artist or two to keep their vision on the future.

Baiss Eric Magnusson said...

As a developer, for about 40 years, I would agee whole-heartedly that writing good software is as difficult as can be imagined.
What to me, seems to be the number one item holding back progress on the web, is the lack of a vector graphics standard.