A purely aspirational litany.
Imagine a medium…
Whose essence is pure thought.
That is constructed purely from the arrangement of logic and intention.
That is completely invisible.
That is insanely complex.
That is composed of millions of extremely simple components arranged in fantastically complex ways.
That unlike things built from atoms, it has “behavior” in addition to function.
That doesn’t have to obey the laws of physics.
That is perfectly flexible.
That is utterly changeable.
That can be individualized for every single customer.
Imagine a factory…
Where you can manufacture an infinite number of products instantly.
Where there is no variable cost.
No cost of materials.
No cost of warehousing.
No labor cost to build.
No cost of materials transportation.
No materials waste.
Where the cost of building the first manufacturing proof is the sum total of all construction costs.
Where there is no factory at all.
Imagine a distribution network…
That imposes no cost of shipping.
That allows any user to instantly get your product on their computer.
That allows your product to be centrally upgraded and maintained for essentially no cost.
Where there is no shipping department at all.
Imagine an age…
An age of information.
Where businesses win because of their mastery of information.
Where the imperatives of the industrial age are insignificant.
Where successful businesses play by the new rules of the new age.
And the obsolete rules of the industrial age gather much-deserved dust.
Imagine a company…
That is founded to understand and exploit this fabulous medium.
That believes that long-term success comes from making products that users take delight in.
That understands the fundamental economics of the information age are different from those of the industrial age.
That understands very few customers are impatient for early delivery of bad software .
Where the Dilbert comics tacked to cubicle walls are not ironic self-references.
Imagine a process…
That doesn’t promise things that it knows can never be true.
That gives everyone the time, resources, and respect they need to get their job done well.
That doesn’t lie to itself.
That doesn’t lie to customers, to employees, to stockholders.
Imagine a product plan…
That is clear enough to prevent catastrophes.
That every stakeholder has full access to.
That every stakeholder understands and agrees to.
That describes in detail every aspect of product’s behavior.
That recognizes the truths of the software construction process.
Imagine a schedule…
That reflects the actual time to build, and not the wishful thinking of premature product release.
That is established only after everyone knows precisely what will be created.
That is established only after everyone has had time to verify the schedule is achievable.
That gives designers enough time to envision and describe the product and its behavior.
That gives engineers enough time to find and solve all of the technical problems.
That gives programmers enough time to write the code to their highest personal standards.
That gives everyone enough time to make necessary changes and adjustments to assure the highest possible user satisfaction.
Imagine a product…
That does the right thing.
That adds flexibility to the user’s actions, instead of enforcing rigidity.
That hides technical minutiae, instead of amplifying it.
That models information like humans do, and not like digital computers do.
That works hard to take care of its user, instead of vice versa.
That never issues error messages because it never lets the user make a mistake.
That never corrects the user or forces their behavior.
That never demands user confirmation.
That can undo anything the user has done, at any time.
That can be upgraded for no cost.
Imagine a business orientation…
That recognizes it will be doing whatever it does for a long time.
That is committed to long term success.
That recognizes long-term success cannot be achieved by short-term goals.
That understands relentlessly doing their best for their customers is the quickest and surest route to success, both sooner and later.
That acknowledges the overwhelming abundance of proof that first-to-market thinking conveys only insignificant advantage, if any, while at ruinous long-term cost.
Imagine a corporate management attitude…
That understands if you proceed with only a vague idea of what it is you are creating, it will take much longer to construct, cost much more money, be of much lower quality, be more vulnerable to competition, require more expensive marketing, and have a shorter profitable lifespan .
That admits that managing by feature list and deadline is not really managing at all.
Who understands that shipping late is only a bad thing if you don’t understand why you are shipping late.
That recognizes when programmers work without supervision it guarantees big problems.
Imagine an investor…
Who is not afraid.
Who recognizes how much easier it is to guide companies that have long-term strategy instead of just short-term tactics.
Who values long term payback.
Imagine a philosophy of product management…
That understands that comprehending the product reveals the deadline, and not vice versa.
That remembers best-to-market usually trumps first-to-market .
Google was released after AltaVista.
Apple was released after DOS.
Microsoft Word was released after WordStar and WordPerfect.
Microsoft Excel was released after Lotus 1–2–3.
Lotus 1–2–3 was released after VisiCalc.
Amazon was released after VirtualMoes.
Safeway.com was released after Webvan.com.
Imagine a business plan…
That establishes practical methods for measuring success over the long term.
That recognizes long-term costs are generated by short-term revenue.
That understands a company is built only once, and its culture and values are permanent.
Starting a company is like baking a cake: if you leave out the sugar, you cannot add it in later.
A company that races for short-term advantage by sacrificing respect for customers, users, employees, courage and honesty, will never regain those attributes.
Imagine an executive…
Who is not afraid of programmers.
Who is not ignorant of software issues.
Who listens to programmers, engineers, and interaction designers.
Who recognizes whatever business the company is in, in the information age, it’s in the software business.
Who recognizes how difficult it is to manage software.
So understands how vital the need is for an effective management infrastructure.
And who knows the trick isn’t in managing technology, but in managing people who are technology workers.
Who recognizes the personality differences between businesspeople and programmers.
That businesspeople are external and humanistic and very competitive .
That programmers are internal and logical and very competitive.
Who recognizes software construction is a scary business, yet does not take counsel of his or her fears.
Imagine a marketing person…
Who knows product marketing and product design are two very different disciplines.
Who understands market segments are rarely the same as user segments.
Imagine a salesperson…
Who recognizes complaining customers need to be helped, but that this does not qualify them to be software designers.
Imagine a work environment…
Founded on trust that has been earned over time.
Where the programmers trust the executives.
Where the executives trust the programmers.
Where the programmers trust the interaction designers.
Because the programmers know from experience that the designers make their job easier and their products better.
Imagine an IT department…
Whose success was measured in terms of employee loyalty, and not in terms of network throughput.
Imagine a customer base…
That doesn’t expect mistreatment.
That is accessible, and not hidden behind jealous managers with their hidden agendas.
That is so confident that you are not guessing, they do not feel the need to help you design your product.
Imagine a return to craftsmanship…
Where it is recognized that software construction is a craft, and craft is noble.
That in pre-industrial times, craft was revered.
That the industrial age devalued craft.
That the industrial age is over, and in the information age craft and crafters are once again ascendent.
And today the many crafts of software creation are once again highly respected.
Where it is known that every aspect of software creation is craft, in the most respectful interpretation of that term.
Creating software is neither art, nor science, nor labor, nor management.
Software creation is a hands-on activity; it is collaborative, and cannot be delegated the way manufacturing can.
Where programmers, designers, and engineers take pride in their individual achievements.
Paraphrasing Mark Twain:
“Your true programmer cares nothing about anything on earth but the code, and his pride in his occupation surpasses the pride of kings.”
Imagine a manager who recognizes role of craft…
Who has the journeymen train the apprentices.
Who has the master craftsmen set the standards.
Who measures their crafter’s abilities in practical terms, and not in academic terms.
Who guards against any craft becoming subservient to any other.
Who encourages their crafters to perform their craft to the height of their ability.
Who knows that craftspeople can become lost in their craft, and need a supervisor to keep them aimed.
Who establishes the role of “Programming Supervisor” to supply their crafters with sufficient guidance to apply their craft in the most productive and appropriate way.
Imagine a programming supervisor…
Who is a former programmer.
Who’s job is to grease the wheels for the programmers.
Who’s job is to assure that the programmers stay focused and on-task.
Who the programmers can talk candidly with when they have a problem or foresee difficult issues.
Who assures that the programmers have the resources they need, when they need them.
Who understands that separating user interface from software construction and design dooms both.
Who facilitates the deep and constant collaboration between interaction designers, engineers, and programmers.
Imagine a code base…
That is never valued more highly than the people who built it.
That is as disposable as a desk lamp or computer.
That is stable because it was built correctly from the beginning.
That is retired with respect when it has outlived its usefulness.
Imagine an interaction design process…
That is rational, rigorous, defensible, understandable, and effective.
That serves the user’s goals instead of obeying the user’s pathology.
That uncovers real answers instead of parroting “truths-by-repeated-assertion.”
That synthesizes solutions from the confluence of people, purpose, and technology.
And recognizes that none of those considerations can be omitted or allowed to dominate any other.
That technology and people without purpose is art.
That purpose and people without technology is psychology.
That purpose and technology without people is engineering.
That determines the form and behavior of software before construction begins.
That enlightens the design process with real insight.
That doesn’t rely on opinions or personal preferences.
That has powerful empirical tools for determining the behavior, goals, and needs of users.
That is rigorous in documenting and communicating users behavior, goals, and needs to everyone involved in the software construction process.
That recognizes the large and growing body of scientific evidence that proves users are utterly incapable of sensing or expressing their behavior, goals, and needs, or of evaluating the fitness of any proposed solution.
Imagine an interaction design phase…
Where the designer is given time to explore ideas.
Where senior executives understand that the designer’s work is more important than finance, marketing and operations put together.
Where the programmers work closely with the interaction designers building small proof-of-concept projects to test hypotheses.
Where the designer is responsible for designing every aspect of the system that comes in contact with human users.
Where the finished interaction design solution is clearly communicated to all stakeholders with detailed, written form-and-behavior specifications.
Imagine a product whose behavior…
Makes users giggle with pleasure.
Never seems to be hiding things.
The only unexpected thing it does is to exceed your expectations.
Never makes users feel stupid.
Lets users stop apologizing for failing when they use the product.
Lets users productivity soar.
Lets the user easily achieve and even exceed the goals of the business .
Reduces software training costs to insignificant.
Reduces employee turnover to insignificant.
Makes the product’s most powerful and effective marketing tool its fanatically loyal users.
Makes users actually want to buy and use your product.
Even willing to purchase it with their own money.
Imagine an interaction designer…
Who has ultimate decision authority over everything in the product that comes in contact with the user.
Who is a “non-coding programmer”.
Who loves the human side of software products.
Who knows how to do field research, gathering valuable intelligence and insight into how users do their jobs and what motivates them.
Who knows what matters with programming, even if they aren’t a programmer.
Who is sincerely interested in what the programmers do.
Who works closely with the programmers and engineers during the design phase to assure that design decisions are technically correct and appropriate.
Who never asks programmers to do anything impractical or technically infeasible.
Whose professional title is Interaction Designer, and not User Interface Designer, or Programmer, or User Experience Designer, or Human Factors Professional, or Usability Professional, or Product Manager.
Imagine a usability professional…
Whose work isn’t ignored because it fits into a larger product design plan.
Whose empirical tests are tightly focused, practical, and mostly performed during the interaction design phase, before programming begins.
Imagine a prototype…
That gets thrown away.
Imagine an engineer…
Who focuses exclusively on technology.
Who gets to spend all of their time solving difficult technical problems.
Who is given the time and resources they need to solve tough technical problems.
Who isn’t forced to write production code or design user interfaces.
Whose professional title is Engineer, and not designer.
Who has ultimate decision authority over technical issues.
Imagine a product manager…
Who doesn’t guess.
Who understands that keeping programmers in a constant state of agitation about the schedule is counterproductive.
Who doesn’t attempt to tell programmers what to do.
Who understands that their role is not to be the overseer’s whip hand.
Who’s personal success is tied to the long-term success of the product.
Who recognizes that the weakest management tools are deadlines and feature lists.
Who recognizes that reacting to the competition is an abdication of market leadership.
Who recognizes that doing things the same way the competition does them makes it harder to compete with them.
Who recognizes that the way Microsoft builds software isn’t the only way to build software .
Who isn’t afraid of the competition.
Who isn’t afraid of programmers.
Imagine a programmer…
Who knows that he or she can be honest with managers.
Who is sincerely asked for honest estimates, and who is given sufficient time to verify those estimates.
Who isn’t frustrated at their job.
Who isn’t cynical and fatalistic about management.
Who doesn’t have to tolerate boneheaded decisions made by people whose primary rationale is fear.
Who doesn’t have to resort to passive-aggressive tactics to avoid disaster.
Who finds their daily work to be ethically clean and morally satisfying and who really believes that the program they are writing will delight users.
Who truly believes that the program they are writing will make the user’s job easier in addition to merely making the user’s company more productive.
Who is proud to be a highly skilled, highly paid, highly respected craftsperson.
Whose professional title is Programmer, and not Engineer, and not Designer.
I’m committed to bringing this vision into reality.
I’m betting my professional career on it.
I originally presented this talk at the Software Developers Forum in Palo Alto CA on 5 Dec 2002. I was very active with this professional organization during the 1980s and 1990s, serving on their Board of Directors, running conferences, and founding one of their largest special interest groups. When they asked me to give a presentation I began work on a conventional talk (the PowerPoint wreckage is still on my hard disk), but it just never clicked. Then I realized that these were my people. They knew me. They trusted me. And I knew that they would accept a talk that was…not normal. I started by imagining the future I’d like to see, and the talk just wrote itself.