raganwald
Sunday, February 27, 2005
  And this too, shall pass
Jef Raskin passed away this weekend.
The code was extraordinarily well-documented and there was a test word for every word in the program, as well as a word that ran all the tests as an automatic suite so that we could check for side-effects whenever we made a change. It is to these methods I attribute the nearly unique accomplishment of Information Appliance: a piece of commercial general-purpose software in which no bugs were ever discovered. We had the same splendid results in designing the Canon Cat.
Jef Raskin describing test driven development from 1985
Jef is generally acknowledged as the impetus behind the Macintosh project at Apple, although his vision of a truly affordable information appliance wound up being very different from the final Macintosh product that changed the world.

Andy Hertzfeld's folklore.org site lists seventeen stories about Jef's involvement in the Macintosh project, including this quote:
There's no doubt that Jef was the creator of the Macintosh project at Apple, and that his articulate vision of an exceptionally easy to use, low cost, high volume appliance computer got the ball rolling, and remained near the heart of the project long after Jef left the company. He also deserves ample credit for putting together the extraordinary initial team that created the computer, recruiting former student Bill Atkinson to Apple and then hiring amazing individuals like Burrell Smith, Bud Tribble, Joanna Hoffman and Brian Howard for the Macintosh team. But there is also no escaping the fact that the Macintosh that we know and love is very different than the computer that Jef wanted to build, so much so that he is much more like an eccentric great uncle than the Macintosh's father.
Andy Hertzfeld
Jef later turned his attention to the design of a new standard for User Interface design. Eccentric is a good word for his ideas. They are not, ahem, "popular." They do not follow the crowd.
Even when my proposals are seen as significant improvements, they are often rejected on the grounds that they are not intuitive. It is a classic Catch-22: The client wants something that is significantly superior to the competition. But if it is to be superior, it must be different. (Typically, the greater the improvement, the greater the difference.) Therefore, it cannot be intuitive, that is, familiar. What the client wants is an interface with at most marginal differences from current practice... that, somehow, makes a major improvement.
Jef Raskin
But then again, neither do any of the huge successes in this business of inventing the future. Although he disliked today's graphical user interfaces, they are proof positive of the importance of being unpopular. When the Macintosh first appeared, it was manifestly unpopular.

I was inspired by Jef's interview in "Programmers at Work" to think of software design and not just software construction. His antiestablishmentarian tone spoke to my heart. And while his recent interface designs haven't captured my imagination, I have found them to be deeply applicable to the design of distributed systems.

I hope every keyboard in heaven has leap keys.
 

Tuesday, February 15, 2005
  Presentation: Four things I've learned from my failures
...and what Agile could have done to help...

Here's the final version of the presentation I gave on February 15th at the XP/Agile Toronto Users Group: [fourthings.ppt (updated)].

Labels:

 

Reg Braithwaite


Nota Bene
A Brief History of Dangerous Ideas

Share
rewrite.rubyforge.org / ick.rubyforge.org / andand.rubyforge.org / unfold.rb / string_to_proc.rb / dsl_and_let.rb / comprehension.rb / lazy_lists.rb

Beauty
IS-STRICTLY-EQUIVALENT-TO-A / Spaghetti-Western Coding / Golf is a good program spoiled / Programming conventions as signals / Not all functions should be object methods

The Not So Big Software Design / Writing programs for people to read / Why Why Functional Programming Matters Matters / But Y would I want to do a thing like this?

Work
The single most important thing you must do to improve your programming career / The Naïve Approach to Hiring People / No Disrespect / Take control of your interview / Three tips for getting a job through a recruiter / My favourite interview question

Buy Raganwald a Coffee
If you enjoy reading my weblog, please consider buying me a Darkhorse Double Espresso, for just $3.15 Thank you!

Management
Exception Handling in Software Development / What if powerful languages and idioms only work for small teams? / Bricks / Which theory fits the evidence? / Still failing, still learning / What I’ve learned from failure

Notation
The unary ampersand in Ruby / (1..100).inject(&:+) / The challenge of teaching yourself a programming language / The significance of the meta-circular interpreter / Block-Structured Javascript / Haskell, Ruby and Infinity / Closures and Higher-Order Functions

Opinion
Why Apple is more expensive than Amazon / Why we are the biggest obstacles to our own growth / Is software the documentation of business process mistakes? / We have lost control of the apparatus / What I’ve Learned From Sales I, II, III

Whimsey
The Narcissism of Small Code Differences / Billy Martin’s Technique for Managing his Manager / Three stories about The Tao / Programming Language Stories / Why You Need a Degree to Work For BigCo

History
06/04 / 07/04 / 08/04 / 09/04 / 10/04 / 11/04 / 12/04 / 01/05 / 02/05 / 03/05 / 04/05 / 06/05 / 07/05 / 08/05 / 09/05 / 10/05 / 11/05 / 01/06 / 02/06 / 03/06 / 04/06 / 05/06 / 06/06 / 07/06 / 08/06 / 09/06 / 10/06 / 11/06 / 12/06 / 01/07 / 02/07 / 03/07 / 04/07 / 05/07 / 06/07 / 07/07 / 08/07 / 09/07 / 10/07 / 11/07 / 12/07 / 01/08 / 02/08 / 03/08 / 04/08 / 05/08 / 06/08 / 07/08 /