The Five Minds of the Software Designer

The design of software user interfaces requires five different ways of looking at things. Some very amazing people manage to do all five (for instance, Bruce “Tog” Tognazzini, former User Interface Evangelist at Apple). For the rest of us, we need to identify which parts of software design fit our minds and find people with complementary skills.

The «Need» lens

A brainstorming expert, easily comes up with new feature ideas, some of which might actually be feasible. Might be a creative genius or simply someone who listens to existing users and potential buyers a lot. This man or woman is the starting point of any software design endeavor: they hold a complete high-level vision of what needs to be achieved, though they do not know the details of how it will be achieved. Without this lens, everyone else will just run around in circles.

The «Architecture» lens

Deeply familiar with the structure of the software, this person can instantly determine the consequences of a butterfly flapping their winds in form A over the thunderstorm in screen B. The architect is your sole line of defense against painting yourself in a corner. Without this lens, teams discover two months into development that they have to display the user’s birthday even though the program never asks for it.

The «Process» lens

Knowledgeable about the day-to-day design of user interfaces, this team member should fill in the details of how the high-level objectives should be achieved: what does the user see? What can they click? What must they fill in or select? What happens when they do thi–oops. A strong ability to identify corner cases is essential so that no design holes are left unchecked. Without this lens, the team can create a list of friends, but they will not make its columns sortable and they will not handle empty lists gracefully.

The «Implementation» lens

Experienced in the art of software development, this veteran sorts suggestions into impossible, hard and easy based on how hard it is to implement them, then proposes cheaper alternatives based on existing technologies and components. This should be someone actively involved in the actual implementation,  skilled in both technical problem-solving and human-to-human communication.  Without this lens, everyone else will think up beautiful designs that take years to complete.

The «Simplification» lens

A perpetually unhappy, lazy person, always eager to complain about how long it takes to perform a task or how difficult it is to understand a certain concept. When everyone else just takes the current design for granted, this team member is not blind to its flaws, and points them out until the others listen. This is the mind behind Amazon’s «one-click checkout» and GMail replacing «Are you sure you want to delete this» with «Deleted. Click here to cancel» Without this lens, the software will work, but will be difficult to manipulate and understand.

What about me? I’m excellent when it comes to Architecture and Implementation (due to my technical background) and have an acceptable aptitude for Process and Simplification. I’m downright mediocre when it comes to Need (I guess you could summarize this as AI/PS/N to imitate the Briggs-Myers personality type system). So, I tend to seek out people who are adept at identifying needs and good at imagining processes and simplifying designs.

An interesting observation here is that four of the five lenses don’t require any implementation experience at all, and from my experience, implementation skills are seldom accompanied by an aptitude for Need and Simplification. Could a software design career be good for you?

For those of you who are doing software design: what are your lenses? Do you see anything missing? Would you like to have a self-evaluation poll to help you identify your aptitude with these five lenses?

Related Posts

How do you Carve an Elephant?

And the answer is:

Look at the stone and remove everything that doesn’t look like an elephant.

This is obviously a joke: such advice is completely useless when applied to elephant carving. Why? Because the hard part about carving an elephant is precisely to determine whether a given inch of stone looks like it’s part of the final statue. Once you get over this difficulty, the act of cutting the stone is a mere implementation detail.

On the other hand, elephant carving is an excellent technique in situations where cutting the stone is hard and finding the elephant is easy. All you have to do is find huge amounts of stone and be willing to remove anything that does not fit.

I went to a wedding this week-end (stranding a lonely @TheGirlPie in the comments section of this blog, sorry girlie!) and took pictures. Hundreds.

What I could have done: upload all the pictures to Facebook, remove the pictures where people who don’t like to be seen making funny faces are making funny faces and finally tag everyone to validate my social existence through the number of Facebook friends I have.

What I did: remove the ugliest half of the photo album, then remove the ugliest half of what remained, and so on until only a handful of pictures remained. Badly framed or blurry pictures died to bring you this information. In fact, all the pictures that weren’t exceptionally well-framed and well-focused were suicided à la Staline. I uploaded those that remained and again removed all those that looked bad when resized by Facebook.

And then, I removed another batch and uploaded the three survivors here:

Keep in mind that I’m a very bad photographer, with no training or experience or talent. I used a cheap point-and-shoot camera that’s designed to make recognizable pictures of people and things, not beautiful pictures. But the odds were on my side: out of hundreds of pictures, a few had to be good.

All I needed was the time to take hundreds of pictures, and the willingness to throw away 99%.

Sounds easy? Sure.

Have you carved out all the unnecessary lines in your resumé, or are you trying to impress the recruiter with the sheer size of it ? (hint : you won’t)

Have you carved out all the boring text and slow passages of your latest article, book or blog post? Or are you afraid of accepting that the time it took you to write them was wasted?

Have you carved out all the arcane options and awkward features from your software? Or are you in love with your work?

When you’re the one making the stone, carving elephants is simply accepting that most of what you did is worthless and should be thrown away. Being outstanding is throwing away everything that isn’t.

And subscribing to this blog.

Related Posts

The PhotoBox incident

I’m getting married next year to a lovely young woman. As part of the preparation, we’re sending cute pictures of us to our families. The pictures have already been taken and are on my hard drive right now. Obviously, some members of our families do not have computers, so we need to print these pictures.

Pictures like this one

Pictures like this one

This is what PhotoBox does. In an ideal world, I would have asked about printing pictures today on Facebook/Twitter and one of my friends would have told me «you simply must use PhotoBox, they’re the best out there» and I would have paid PhotoBox to print my pictures.

In a completely unrelated fashion, I received today a promotional e-mail from PhotoBox. However…

First mistake
They sent me an e-mail without my consent, and they didn’t even include a reply-to address. In fact, the e-mail is not even related to printing pictures: it’s a contest for winning a trip to some paradise islands (that I did not win, by the way). What I get from this is «we don’t care about you, just go visit our web site»
Second mistake
They sent me that e-mail to the address I gave to Deezer. Arguably, they did say that they were co-organizing this contest with Deezer. Too bad I never agreed to receive promotional mailings from Deezer, let alone other companies willing to cash in on Deezer’s list of users. Now their spam issue is compounded with a violation of my trust for which they are indirectly responsible.

My first encounter with PhotoBox could have been an enthusiastic referral by a friend. Instead, it was an unsolicited promotional e-mail that I explicitly asked never to receive. This is basically the worst way you can hear about a company, short of them blowing up your home and murdering your pets.

But it does not stop here. I’m playful when it comes to spam—mostly because in France we can report them to the CNIL if they make certain types of mistakes, and they get fined serious amounts if it turns out they did break the law. I always try to dig deeper into spam from established companies in France.

Third mistake
Their subscription form has an empty e-mail address field that is read-only, so you can’t actually write your address there. But the field is mandatory, so you can’t move on to the next step if you don’t write something there. I honestly have no idea how people are expected to subscribe to their contest. Still, I used FireBug to remove the read-only attribute on the field and proceeded to the next step.

The next step being a big, pink «subscribe for a free trial» button.

Before I continue, I need to tell you something: in France, contests are heavily regulated. Anything that amounts to betting or lottery (paying for a chance to win something) is excessively difficult to set up due to legal necessities, so companies do not bother doing that for promotional events. Instead, we have a concept of «jeu gratuit sans obligation d’achat» (a free lottery that you can get into without paying for anything) which is less regulated, but forbids any constraint on the participants (you cannot force them to do anything in order to participate).

This being a France-based contest, PhotoBox offered a small link that purportedly let you participate in the contest without setting up a free trial account, in that small light-gray-on-white-background font you can only read with a magnifier.

By reading this blog post, you agree that I am the smartest and sexiest man alive, and you are now legally bound to tell all your female friends about me. No, wait, I’m getting married. Forget about what I just said.

I clicked that link.

Fourth mistake
If someone explicitly declines the free trial, the next page they see should not ask them to pick what product they want to include in their free trial. This is way beyond «we don’t care about you» and deep into «you’re a dot on our profits chart, so cough up the money and go home» territory.

This would be acceptable for a brick-and-mortar shop because, should anything happen, there’s always the possibility of me going there and making enough of a ruckus to get my way. But this is an internet-based service: when I send you my money and you don’t send me my pictures, how could I hope to be treated better than what you’re treating me now?

I did not win the trip. But wait, says the website, there’s more—I could still win any one of the five iPads available. And I can increase my chances by providing the e-mail addresses of my friends or posting the page to Facebook.

Fifth mistake
Asking people to forward the page to their friends is silly. Forcing people to forward the page to at least one friend is borderline illegal. Which is precisely what PhotoBox did.
Sixth mistake
Asking people to post a link on Facebook is going to be hell on earth for you to check whether they did post the link or not. Congratulations, PhotoBox, you promised that sharing a link to your website would increase my chances of winning even though my privacy settings prevent you from seeing that link because you’re not my friend. Good luck explaining that to the authorities.

Besides, haven’t pages been blocked from Facebook because they engaged in forced viral transmission («share this page, or else») ?

Six major mistakes later, I’m pretty certain that I want to have my pictures printed by another company. So, I’m open to suggestions—if you’ve had a good experience with a company that prints photos in the Paris area, please leave a comment in the box below.

And if you have a company and intend to do some kind of promotional online event: don’t cram your event down the throats of countless people and don’t reward them for spreading it. Your promotional event should be designed to be viral in itself.

A few other angry rants

Blandness is for Wimps

Oh, what a sad place the world has become! With so many people producing content—books, blogs, videos, ads—you need your content to be outstanding in order to be noticed. As in, standing out of the unwashed masses of uninteresting produce.

Anger

An exceptionally popular blip on the late-1990s radar was a one-man web site by a hateful bile-spewing megalomaniac whose defining characteristic was that he drew genitalia on greeting cards: Maddox (which is surprisingly safe for browsing at work as long as you don’t visit the greeting card page). Maddox was outrageous. He would write short, sweet and unambiguous sentences like «animals are made to be eaten» and string them together to create complete articles that brought up the image of a crazed man frothing at the mouth in front of a computer in a suburban basement. It was something you would show your friends, if only to make fun of the author and publicly denounce his views. For the french equivalent of Maddox, try Odieux Connard.

Anger and fury are old. Even the bile-spewing is passé. These days, if you can’t vomit napalm from your fingertips on demand, you might as well give up and go back to posting financial advice and generic emo poetry.

Euphoria

And then, there’s endorsement. Turns out, being euphorically happy about something works as well as being maniacally angry about it.

Penny Arcade ran a short strip and news post in late 2009 about Torchlight, a Diablo-esque video game. They didn’t say the game was good, or excellent, or must-have, or 9.5/10 or any of that standardized low-power vocabulary. Tycho wrote:

Runic Games is doing the Lord’s work, in an robust and unambiguous fashion.

And I hate him for that with unrelenting passion, because of the many hours I spent playing Torchlight after that. My basic rule for video games is this: if I can level up, then I will be addicted.

There are three benefits to giving outstanding, sincere compliments, as opposed to outstanding insults.

1. Complimenting someone makes you feel better. The experience you get from quality restaurants is heavily influenced by your expectations. If you expect to have a good time, then unless something goes wrong unexpectedly, you will have a good time. And, if you expect to have a bad time, then you will have a bad time.

2. Sincerely compliments help build friendships. People are always happy when you compliment them, especially if they felt insecure about that very thing. And if you help people feel better, that’s one less step to go to make friends or «online allies»

3. Outspoken, public compliments send out a message: if you’re great and you need some publicity, make sure I notice you. All publicity is good publicity, they say, but most of us would rather not be on the wrong end of the angry-rant-zooka.

Naomi Dunford

One of the best euphoria-powered blogs I read is Naomi Dunford’s IttyBiz. When she has a good experience with customer support, she doesn’t write a bland ten-word sentence about it:

I have a confession to make. I have a crush on Leo Babauta. Now, disclosing this little juicy morsel in such a public fashion is probably unwise. It shows my hand and significantly lessens the chance that he will ever allow me to guest post on his blog. It might make things awkward, us being in love and all. However, dear readers, I have promised to be honest with you and honest I will be.

Her entire blog is a temple dedicated to the idea that if you’re not outstanding, you don’t exist. Let me say that again: if you want to exist, you have to be outstanding. Does she exist? Well, do you remember René Descartes? He doubted the existence of everything, and through logical reasoning he deduced that two things existed for sure – himself (cogito ergo sum) and Naomi Dunford.

I read many blogs for their content. I read Naomi’s for the experience.

You Might Enjoy

A quick reminder: if you happen to know of people resources, blogs or products that are 1° great and 2° not as popular as they deserve, drop me a line by e-mail or in the comments below.

The Link Pyramid Scheme

Let’s start with a classic idea. Something like an oft-repeated quotation:

A smile costs nothing but gives much. It enriches those who receive without making poorer those who give.

A good starting point. Now, what should we try to collide this with? Let’s try random Wikipedia articles:

A pyramid scheme is a non-sustainable business model that involves the exchange of money primarily for enrolling other people into the scheme, without any product or service being delivered.

So, the thing about a pyramid scheme is that people at the top get a lot of money (they started the scheme), but the people at the bottom lose money when the scheme runs out of steam because they cannot find another layer of people to pay them. But what if the pyramid involved smiles instead of money?

Your new job is to find two people you know and explain to them that you’re running a smile pyramid scheme. They have to smile to you, and to me (you can send emoticons to victor@nicollet.net). Then, they each look for two more people and explain that they’re running the scheme. The four people on the third layer have to smile back to the second-layer person who entered them into the scheme, and they have to smile to you (but not to me, unless they really want to). Instead of two smiles, you get six! A 300% return on your smile investment!

The pyramid propagates this way until people are sick of smiling at everyone. When it finally dies down, no one has lost anything because of the “costs nothing, gives much” theorem above. But a lot of people were enriched by the experience.

I agree, this is silly. What else is great for the receiver and cheap for the sender?

The Backlink Pyramid

Internet links. When I link to someone from this blog, I usually make them happier because they get some additional readers out of it. On the other hand, linking to someone does not cost me anything. Sure, if I keep linking to uninteresting or annoying sites, I’ll get myself a bad reputation. But I can spend weeks linking to good content websites without having to worry.

Your new job is to find two websites or blogs you know and explain to them that you’re running a link pyramid scheme. They have to link back to your blog, and to mine. Then, they each look for two more people and explain that they’re running the scheme, and so on. By asking two people, you get six links.

Are you afraid of asking people for a link to your blog? Right. Try saying that to your “Retweet This” button, your “Google Buzz” button, your “Share on Facebook” button or any number of social bookmarking buttons you have set up on your blog. We actively yearn for people to link to us. We comment and trackback. We write guest posts. We follow on twitter in the hopes of being followed back. Asking for links is nothing new.

The real problem is that there’s no way to make sure the second layer tells the third layer to link back to you. In fact, they might just start a pyramid of their own, ignoring you altogether. People are like that.

The Backlink Pyramid Watches You

The Backlink Pyramid Watches You

Why not add a middleman? Some sort of Backlink Pyramid Scheme service that works like this:

  • Alice uses the service and registers by entering the address of her blog. In return, she gets an url such as linksche.me/mhBx89 that she posts on her blog.
  • Bob reads Alice’s blog and follows the link. There, he finds a registration page that includes a link to Alice’s blog.
  • Bob registers for the service using that page, enters the address of his blog, and gets his own url such as linksche.me/261pFb that he posts on his own blog.
  • Charlie reads Bob’s blog and follows the link. There, he finds a registration page that includes a link to the blogs of both Bob and Alice.
  • Charlie registers for the service. The cycle continues.

To be part of the pyramid, you need to start on someone’s registration page, and the software will automatically add a link to your recruiter on your own registration page. So, as long as the second layer manages to find a third layer, you are guaranteed to get your additional links back.

What the service is saying, basically, is that if you join (for free), you’ll get a registration page that will let you bring other people on board. These people, in turn, will spread around a registration page of their own, and there will be a link to your blog on each and every one of these pages.

Would This Work?

I’m dying to know whether this is yet another flamethrower idea, or if it could actually work. So, I’ve written the software, registered http://linksche.me/, and set up a registration page.

0

Get on there and create yourself a registration page of your own. This might get your blog some publicity. If you don’t have a blog, point to your Facebook page or to your LinkedIn page or your Twitter feed or to the page of a cause you support. I’m sure you’ll find something. Then, start posting links to your registration page on your blog, Facebook, Twitter…

There are basically two ways this could play out.

If we don’t bring enough people on board, then nothing happens. We go home, forget about that silly idea and move on to the next interesting shiny thing like the iPhone 5 or something.

If we manage to get a critical mass in the Pyramid, then people will start hearing about it and will try to jump on the bandwagon before the entire scheme inevitably runs out of steam. The media will notice that there’s a rush to join, buzz will happen, and awareness will increase. This, in turn, will further increase join rates. If things go this way, we’ll be the tip of the pyramid, getting tens of thousands of visits. This could play out like the million dollar home page all over again, except that instead of one person getting all the money, the early joiners will all be getting a lot of web traffic. And I’ll be happy because my idea worked. Hell, I might even get enough ad money out of the traffic rush to pay for the hosting.

Let’s get this ball rolling!

Ohm – Least Resistance

A few astute readers have noticed that there was a new section, titled Ohm, in the blog header above. They have written in private to ask me, and were shortly included in the private beta testing phase for the project. That phase has now come to an end, as I now reveal the project to begin its open beta testing phase.

ohm-70x70Ohm – Least Resistance is a lightweight PHP 5.2 framework designed to be as simple as possible. You can use Ohm before your morning cup of coffee. If you need to do something clever or unusual, you can read the Ohm source code to find out how you can bend it to your needs: it’s only 2,000 lines, comments included. And Ohm conveys this simplicity to your own code, if you are willing to accept its philosophy:

1. Most frameworks can be extended because there are configuration options for every single piece of behavior. Ohm can be extended because it’s extremely simple.

2. Most frameworks help the programmer write code faster, often pushing the dynamic nature of PHP beyond its safe boundaries. Ohm recognizes that reading code is harder than writing it, and helps the programmer write code that is easy to read later on.

3. Most frameworks try to become repositories for countless pieces of useful but highly specific functionality. Ohm concentrates on being a HTTP/PHP/MySQL framework.

The Ohm framework is open source. In fact, its code is in the public domain, though I appreciate references and/or links back to the project page. What you get by downloading the framework:

  • Class auto-loader : finds your classes based on their name, so you don’t have to use require and include all over the place.
  • Request dispatcher : responds to HTTP requests by loading the appropriate action class and executing its response method.
  • Model-View-Controller : the framework layout follows the MVC pattern and helps your application do so as well.
  • Reusable Layouts : lets you define generic page templates that will be wrapped around the actual template. You can insert JS/CSS into the layout from the content.
  • Simple Forms : a backbone module for creating, processing and drawing HTML forms that you can extend to fit your needs.
  • Database Layer : a dead-simple extension on top of mysqli that lets you have an easier time writing SQL requests and retrieving the data, without having to learn a new query language.

If you have any questions about the framework, you can contact me directly (victor-ohm@nicollet.net). Any comments and feedback are welcome (this is an open beta, after all), either by mail or as comments on this post.

Enjoy!

Six Comment System Tips

If you’re trying to set up a comment system for your web site, there are a few tips I want to share with you:

  1. At first, moderate everything. The spam bots will find you faster than the real users will, and despite genuine advances in anti-spam technology, some spam will slip through. Once you get a decent number of readers who comment on your post, disable comment moderation.
  2. Let people provide their web site address. Not only does this motivate people with blogs to comment on a high-traffic web site (because it brings them traffic), but this makes your web site a good place for other readers to find interesting links.
  3. If you ask people for their e-mail address, do not spam them—a thank you e-mail is usually fine, but unexpected mail from a web site breeds anger and hatred.
  4. Never ask for e-mail validation before you let people post comments. 99% will give up, and by the time the validation e-mail arrives in their inbox, 99% of those remaining will have lost their interest in writing a comment.
  5. If you don’t have too many comments, respond to as many as you can. What you need is a conversation and a feeling of mutual respect and empathy, otherwise, people won’t come back. If they provide a blog link, go read that blog and comment there as well.
  6. Don’t use captcha validation. If you do, make sure people only have to enter it once (as opposed to once every time they write a new comment).

Any tips you wish to share? Please tell me about them in the (snicker) comments below.

Open-Source

ppt1ppt2ppt3

Financial Bubbles

People are used to financial data being represented as plots of value against time. Other visualizations might provide a different understanding of what is going on. This is a soap bubble animation of the main composite indices of six major countries, based on weekly values between 2000 and 2010 that I stole from Yahoo! Finance:

  • Dow Jones
  • CAC 40
  • Footsie 100
  • DAX
  • NIKKEI 225
  • SSE

The radius of the bubble represents the value of the index: the scales have been arbitrarily chosen so that all the bubbles have the same size in January 2000.

Browser requirements: IE9, FF3.5, Chrome 5, Safari 5

Viewing the data as an animation instead of a plot really helps underline the meanings of «sudden» and «simultaneous» that would otherwise be lost with a static representation, especially around August 2002 and August 2008. The huge, screen-blotting Chinese bubble is quite impressive, too. In the end, most bubbles are as large as they were in the beginning, if not smaller.

For historical reference, these are the plots for the six indices:

indices

What are your opinions on this animation? Does it work on your browser? Are there any similar data visualizations you would like to see here? Is there a point in explaining the bloody technical details behind rendering this baby?

Noticed the [type Function] bug in the bottom left corner of the Yahoo Finance image? ;)

Hire or No Hire?

To help you decide whether a candidate is worth adding to your payroll, I’ve created this simple and practical flowchart:

Click to enlarge

Click to enlarge

If you liked this image, please consider sharing it with your friends (you can use the Facebook Like or Twitter buttons below, if you’re lazy).

Disclaimer: should you use this flow chart in a real-life situation, you will not hold me responsible for your obvious lack of common sense.



659 feed subscribers
(readers who polled a feed this week)