Welcome to WebmasterWorld Guest from 184.108.40.206
Forum Moderators: ergophobe
However, when I want to cut open a box or have dinner, I usually leave the CyberTool in my pocket and use a kitchen steak knife.
What does this have to do with Web Design? I'll tell you.
A lot of the work I do involves adapting existing open source projects to integrate into my sites. I seldom use them "as is." I try first to use their customization options ("skins," CSS, etc.). If that won't give me what I need, then I directly edit the base code.
Probably the foremost goal in my mind is USABILITY. Not always accessibility (It depends on the site. Accessibility is not a principal goal for our corporate wiki, but it is for the NPO sites I do). No matter what type of site it is, or who will use it, the site must be USABLE.
Lately, I've been looking at these CMS, Wiki, Gallery systems etc., and shaking my head.
They are truly ambitious and well-designed works. However, they are becoming so beholden to flexibility and adaptability that they are rapidly becoming completely unusable by normal people.
For example, I just chucked aside WebCalendar for iCalendar. WebCalendar is wonderful. It has all kinds of options for customization, user levels, custom headers, multiple formats, etc. Their code validates (a rare thing with CMS code).
But it is a space shuttle cockpit. It is so complex to use that there was NO WAY I could foist that on my users. iCalendar does not have a lot of the features I need, and their code quality is pretty bad, but I can hack the code to give me what I need, and users don't have to worry about the complexity. In fact, it's already done. It took me two days. I estimate a couple more days to refine the administration.
I did the same thing with our wiki. I eschewed a couple of commercial options, as well as MediaWiki for a relatively little-known one that is far simpler to use and customize.
I also adapted Gallery 2 for my personal site, but that is probably the most complex CMS I've ever seen in my life. It was designed by a Google engineer, and is a real masterpiece of engineering. However, it is so complex that I can't recommend it as a solution to many users.
WordPress I like. I adapted that to my site, and it works well. It is a blog system, and doesn't try to be much else. It does blogs very well, and has become a de facto standard for many blogs.
This is not a case of bad engineering or anything like that. It is an issue of excessive complexity at the user level.
I remember when PHP Nuke became so popular. All these sites suddenly popped up with the "French windows" designs, in which the side columns contained dozens of controls and status blocks. I would have to think for several seconds before figuring out where to click or scroll.
I find that user customization is pretty much useless in most cases. For community sites like MySpace (see my comment below) or this site, people invest a great deal, so they are willing to work on customizing their environment. However, for things like store sites and blogs, I find that I have little interest in spending any time tweaking my environment, especially since the one thing I'd like most -removal of ads, is never an option.
Speaking of ads, many sites that carry advertising have gone far overboard. I guess they make money, but they are becoming unusable at quite a pace. I have removed quite a few sites from my bookmarks list lately because they mix their content with their ads so intimately that I can't extract useful information from them any more (a pet peeve of mine is the habit many sites are developing of displaying their ads in the same font and style as their content, and mixing them into the content, so you get confused. I guess the idea is to make you click on the ad by mistake. I don't consider it particularly ethical to deliberately mislead users that way, but that's just me).
I was recently invited to join a group on MySpace by a friend, so I signed up an account.
MySpace is very popular, but I can't believe that people can use that interface. I can't argue with their success, but I don't plan on participating on it in a regular manner. I will not go into a deconstruction of the interface (That would require a book). I am certainly not filling out my profile completely. That information must be a marketer's wet dream.
Usually, the best way to support usability is to present a concise, focused interface. By "concise," I don't necessarily mean "non-complex." I mean presenting only the content that is necessary to meet the mission of the site.
This means that the NUMBER ONE tool to creating a usable site is to have clear mission for that site. There are dozens of books out there that discuss ways to achieve this (use cases, paper prototypes, fictional users, etc.). I know this from rather bitter personal experience. I have participated in creating sites and software with muddy missions.
There's a fairly classic graphic design technique, in which you remove elements of an illustration until the composition breaks, then put back the last element. I do this all the time for CSS design, and I am starting to use it for my basic layouts and designs as well. So far, the response has been very good.
So, I keep my CyberTool with me all the time, and often use it, but it's no substitute for a steak knife.
[edited by: cmarshall at 4:56 pm (utc) on Jan. 20, 2007]
Once upon a time, in a kingdom not far from here, a king summoned two of his advisors for a test. He showed them both a shiny metal box with two slots in the top, a control knob, and a lever. "What do you think this is?"
One advisor, an engineer, answered first. "It is a toaster," he said. The king asked, "How would you design an embedded computer for it?" The engineer replied, "Using a four-bit microcontroller, I would write a simple program that reads the darkness knob and quantizes its position to one of 16 shades of darkness, from snow white to coal black. The program would use that darkness level as the index to a 16-element table of initial timer values. Then it would turn on the heating elements and start the timer with the initial value selected from the table. At the end of the time delay, it would turn off the heat and pop up the toast. Come back next week, and I'll show you a working prototype."
The second advisor, a computer scientist, immediately recognized the danger of such short-sighted thinking. He said, "Toasters don't just turn bread into toast, they are also used to warm frozen waffles. What you see before you is really a breakfast food cooker. As the subjects of your kingdom become more sophisticated, they will demand more capabilities. They will need a breakfast food cooker that can also cook sausage, fry bacon, and make scrambled eggs. A toaster that only makes toast will soon be obsolete. If we don't look to the future, we will have to completely redesign the toaster in just a few years."
"With this in mind, we can formulate a more intelligent solution to the problem. First, create a class of breakfast foods. Specialize this class into subclasses: grains, pork, and poultry. The specialization process should be repeated with grains divided into toast, muffins, pancakes, and waffles; pork divided into sausage, links, and bacon; and poultry divided into scrambled eggs, hard-boiled eggs, poached eggs, fried eggs, and various omelet classes."
"The ham and cheese omelet class is worth special attention because it must inherit characteristics from the pork, dairy, and poultry classes. Thus, we see that the problem cannot be properly solved without multiple inheritance. At run time, the program must create the proper object and send a message to the object that says, 'Cook yourself.' The semantics of this message depend, of course, on the kind of object, so they have a different meaning to a piece of toast than to scrambled eggs."
"Reviewing the process so far, we see that the analysis phase has revealed that the primary requirement is to cook any kind of breakfast food. In the design phase, we have discovered some derived requirements. Specifically, we need an object-oriented language with multiple inheritance. Of course, users don't want the eggs to get cold while the bacon is frying, so concurrent processing is required, too."
"We must not forget the user interface. The lever that lowers the food lacks versatility, and the darkness knob is confusing. Users won't buy the product unless it has a user-friendly, graphical interface. When the breakfast cooker is plugged in, users should see a cowboy boot on the screen. Users click on it, and the message 'Booting UNIX v. 8.3' appears on the screen. (UNIX 8.3 should be out by the time the product gets to the market.) Users can pull down a menu and click on the foods they want to cook."
"Having made the wise decision of specifying the software first in the design phase, all that remains is to pick an adequate hardware platform for the implementation phase. An Intel 80386 with 8MB of memory, a 30MB hard disk, and a VGA monitor should be sufficient. If you select a multitasking, object oriented language that supports multiple inheritance and has a built-in GUI, writing the program will be a snap. (Imagine the difficulty we would have had if we had foolishly allowed a hardware-first design strategy to lock us into a four-bit microcontroller!)."
The king had the computer scientist thrown in the moat, and they all lived happily ever after.
However, the CMS that tries to be everything for everybody often has the multi-purpose tool problem that you've mentioned. TYPO3 CMS comes to mind right away. You can indeed use it for anything, but it's difficult to install or understand the array of options.
The problems I have with it is that it took me AGES to figure out how to skin it properly. I can't imagine too many regular Web designers being able to work it out (I'm a C++ programmer, so a lot of the concepts were familiar to me). I also find it to be pretty darn slow. Everything goes through multiple levels, then it spits out a heck of a lot of code.
WordPress is kewl. I like it.