Collaboration: At the Extremities of Extreme
Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.
The content has been bookmarked!
There was an error bookmarking this content! Please retry.
Posted by Abel Avram on Jul 21, 2009
In a presentation called Ten Ways to Ensure RIA Failure, Anthony Franco, president of EffectiveUI, gives 10 pieces of advice to those who want their RIA project to fail. Gerd Waloszek, SAP AG, wrote 18 Golden Rules for Bad User Interfaces.
These are the 10 pieces of anti-advice given by Franco explaining why they should be avoided and what should be done instead:
Following are Waloszek’s 18 golden rules along with some negative examples that should not be followed:
- Keep The Users Busy Doing Unnecessary Work - Let users enter data into fields only to tell them afterwards that they cannot enter data there (e.g. an application lets you enter data on holidays or weekends and tells you afterwards that you cannot work on those days).
- DO NOT OBEY Standards - Do not place menu items into the categories and locations they typically belong to (e.g. place "Save" in the "Edit Menu").
- Make It Slow - There are nearly unlimited possibilities of making software slow. For example, you can include long lasting checks or roundtrips after each user input. Or you can force users through long chains of dialog boxes.
- Use Abbreviations Wherever Possible, Particularly Where There Would Be Space Enough For The Complete Term - Use "dat." instead of "date," "TolKy" instead of "Tolerance Key," "NxOb" instead of "Next Object," and many more...
- Educate Users In Technical Language - Always send URLs as UTF-8 (requires restart) (advanced settings in MS Internet Explorer)
- Hide Important And Often-Used Functionality From The Users' View - Hide important functions in menus where users would never expect them.
- Make Your Application Mouse-Only – Do Not Offer Any Keyboard Shortcuts
- Make Using Your Application A Real Challenge - Do not warn users if actions can have severe consequences.
- Keep Away From End Users - Many end users have many opinions, you have one. That's far easier and faster to implement.
- Spread The Message Of Bad Examples And Live It - Just follow any of the other golden rules on this page, that's a perfect start.
- Take Great Care In Setting Bad Defaults: Contrary To The Users' Expectations, Disastrous, Annoying, Useless – It's Up To You - Set default options in Web forms so that users get unwanted newsletters or offers, have their addresses distributed, etc.
- Destroy The Work Context After Each System Reaction - Deselect selected screen elements after a system reaction (e.g. a round trip).
- Leave Out Functionality That Would Make The Users' Life Easier – Let Them Do It The Hard (Cumbersome) Way - When users want to add items to a list, allow them to add items at the end of the list only and let them then move the items to the correct position. That is, do not offer additional functionality for inserting items at their target locations. To add some spice, introduce spurious errors that return items to the bottom when users have already moved them half-way up.
- Do Not Let Users Interrupt Time-Consuming And/Or Resource-Hungry Processes - Start a backup or indexing process while users are not aware of it. Make this process hard to cancel, that is, let it ignore the users' mouse clicks and key presses.
- Make It Illogical - Label a button that will only prepare an operation so that users believe that it will already do the operation. Here is a real-word example: In many e-mail applications, the Forward button does not actually forward an e-mail but prepares it only for forwarding (because, for example, the recipient has still to be provided).
- Add A System Crash From Time To Time Or Let Applications Simply Freeze - Let editors or edit fields freeze at unforeseeable intervals so that users will not fall into the habit of saving their work frequently, which would unnecessarily waste valuable system resources.
- Block User Input As Often And Long As Possible - Page loading is also an appropriate event for blocking user input. Users may chat with their room mates, read the newspaper, or simply stare at the empty screen during that time.
- Block User Input Even If It's Not Necessary - Blocking user input in an image browser while it updates the thumbnail images is a good example of this –there is absolutely no reason why users should not be able to scroll, select images, or initiate an action.
Are there other “good” advices on how to fail a RIA project, ones that should be avoided at all costs?
Improve Java Garbage Collection, Runtime Execution, and JVM visibility with Zing
Agile Practices to Improve Project Management Organization (PMO) Effectiveness
Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.
Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).
Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.
Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.
One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.
InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.
Alex Papadimoulis discusses ugly code, where it comes from, how to avoid it, and how to get rid of it.
John Davies examines Visa’s architecture and shows how enterprises have architected complex integrations incorporating Hadoop, memcached, Ruby on Rails, and others to deliver innovative solutions.
2 comments
Watch Thread Reply