Seven deadly sins of software systems, which in 2011 it is a shame not to notice

    I myself, as an interface designer and programmer, on the one hand see problems, and on the other I understand that they cannot be solved with one wave of my hand, and in many cases there are objective reasons for the compromise. But I propose not to chew on the snot, but to collect the will into a fist and together stride into a bright future. After all, who, if not us?

    So sins:
    1. Slowness
    2. Blocking interaction
    3. Inappropriate restrictions
    4. Inconvenience
    5. Non-independence
    6. Forgetfulness
    7. Pride

    Of course, there are much more problems, but these are selected taking into account fashion trends and what the mainstream is gradually aware of. Under the cat more:

    1. Slowness

    • You ask Acklispe to install the maven plugin and it will fulfill your request within half an hour.
    • You start Photoshop and have time to read a couple of blog entries.
    Programs should work fast. Now it’s already clear how much speed is a feature. Users leave even slow web pages. And when the program does the work out of the blue - this is a guaranteed separation for life. And most importantly - the interface always, no matter what happens, should respond to user actions. Otherwise, the program is declared dead.

    2. Blocking interaction

    • You press the commit button in svn, and until it leaves completely and completely, nobody will let you go anywhere.
    • You apply a complex filter to the image and must wait until it is fully calculated before you can click on anything.
    In the general case, while the program is doing something (even for nothing), it makes you wait "just in case", you never know what will ruin it. The apotheosis of this sin is modal windows - the program does nothing , but does not leave anywhere. The recipe is simple - work in the background, but it’s more difficult to apply.

    A positive example: Final Cut Pro X , which, in its tenth version, has acquired background rendering of materials. You should see a standing ovation at the presentation of this feature.

    3. Inappropriate restrictions

    • Description cannot be longer than 1000 characters.
    • The category name cannot contain spaces.
    • You must join a blog to read a post from it.
    In general, one person jabbed a finger at the sky and gave birth to restrictions. Also calls it "thought of use cases." The best restrictions are those that are not. We are not saving bytes on floppy disks in the  21st century. It’s time to get used to the fact that instead of “vasya_poopkin” I can log in to the much more beautiful “Vasily Pupkin”. If you can make, say, a description of a product of any length (and he can) - do it, do not have to guess that most likely no one will need more than 1000. You will never guess.

    4. Inconsistency

    • First of all, in a text editor, you change the font and enable autosave.
    • First of all, in the browser, you remove the unnecessary panels and enable the saving of passwords.
    In the general case, the program in the initial configuration is inconvenient / unpleasant / unusable. People are used to the fact that you first need to get into the settings. But this does not mean that it is good. In the shops do not sell shovels, which first need to be reforged. You do not change the handle of the hammer immediately after purchase. A program is the same tool, and it is the seller’s responsibility (read the developer) to make it immediately usable. By the way, if you think about it, then 50..90% of the settings can be thrown out as unnecessary.

    A good example: iA Writer , a text editor without a settings panel.

    5. Non-independence

    • I can not create a project, the folder already exists (empty).
    • Your repository needs compactification. Launch her!
    • I can not start the search, the contents of the file system has changed, click "update".
    • Among your one hundred thousand and five hundred files, one protected one was discovered, so far I will stop, what should I do ???
    In the general case, the program does not do something simple and expects an obvious command from the user. Worse if the task is frequent, or if it occurs during a long process, when a person is not nearby. The user, of course, will get used to everything, but a little intellect and determination would not hurt the programs. Usually, programs have plenty of free time between user interactions, and it would be nice to do something useful at this time (index / update / check / swap), which will speed up subsequent interaction.

    A positive example: Safari browser itself decompresses the archives and mounts the images immediately after loading. Google Chrome itself downloads and installs updates without a single window.

    6. Forgetfulness

    • You have not provided an address, please fill out this form again.
    • Save document? - Not. - Ok, deleted it. - Although wait ...
    • You tell the finder to show the files in a list, and the next time he shows them the thumbnails again.
    • You select one layer, but after some time, the objects are again created on another.
    • You adjust the size of the window, and the next time you start the program forgets it.
    In general, I should not take any additional actions so that what I enter (in any form - information, settings, window configuration, screen brightness) is preserved. Misters programmers need to lift an ass from a chair and go and make it so. This is the default behavior, damn it!

    A positive example: Indesign TsS5 even after the fall rises exactly in the place where you finished, regardless of whether you were saved or not.

    7. Pride

    • The update was successful! (Avast, voice!)
    • I have not started yet, but here's my splashscreen across and stealing focus.
    • Hello dear friend! I know you launched me to do something, but I have an update here, go better download it.
    • And I’m a small camera control program, and I’m afraid that you will never see me, so here’s my browser toolbar, tray icon, autostart with splash screen, start page and default search.
    • You have not cleaned your desktop for 60 days ...
    In general, the program considers itself the center of the universe and worries the user about any event so that he scratches her ear, downloads the update, and even informs him that everything is going well (!). Programs blink in the taskbar, jump in the dock, pop their icons (I look at you, adobe reader), they constantly demand something from you (brazenly, right?). As a result, if you did not boot into the system for six months, then a dozen of some dumb windows will block your path, and all you had to do was to pick up the file, for example. Still, a computer for a person or a person for a computer? Sometimes it seems to me that my answer is different from the opinion of most developers.

    Bonus

    Seven examples of enchanting stupidity from the collection of the author.
    1. Slowness. You ask Windows to enter samba and wait first half an hour for her to ask you for a password, then for another half an hour she will “try to join” the neighboring computer. It feels like the border guard took your passport from you and secretly went for lunch.
    2. Blocking interaction. The entire browser modal alert / http basic auth form is such that you cannot switch to another tab to copy the password.
    3. Inappropriate restrictions. What should I do if the name given to me at birth does not satisfy the criteria of this nameless analyst?
    4. Out of tune. All weather sites that do not even try to determine the IP city.
    5. Lack of independence. Enter a phone number without spaces or special characters.
    6. Forgetfulness. Save the document you wrote 7 hours? Well no? Oops
    7. Pride. Windows Vista: update installed, are you here? Ok, there’s no one for 10 minutes, I nail everything and reboot. “Hey dude, did they turn off the electricity?”


    If someone thought the ideas expressed here are at least a little interesting, I recommend continuing reading here:
    • Donald Norman Design of industrial products / The Design of Everyday Things. About that in general for problems with things, who is to blame for it and who should solve it.
    • Jeff Ruskin. Interface (full text posted). About how computers could already work if Microsoft listened to smart people too. Familiar with this book is funny to watch how ideas and principles from it are slowly dragged into the modern world by Apple, and then by everyone else.
    • Alan Cooper. About the interface / About Face 3 . A very large and very thorough work, disassembling modern interfaces completely and offering adequate solutions to many problems. For example, half of the OS X Lion release was at least predicted here :)

    Also popular now: