OBJECT-ORIENTED INTELLIGENCE?

Research in cognitive psychology indicates that much of cognition is based on matching context to hierarchically structured schemata (mental models), with more general schemata at the top of the hierarchy, becoming more detailed and specific going down the hierarchy. I can't help thinking how much this bears in common to polymorphism in object-oriented software design. Is software design slowly converging on cognitive models? Are there lessons here for Artificial Intelligence?

SEARCHING OR STRUCTURING?

A related point is that it seems very likely that information in our knowledge stores (long-term memory) is not stored within neat categories, but is structured fairly randomly. Our conscious minds, it seems, access information via a search procedure, and not through browsing a structured catalog. This seems particularly relevant to how information should be found within computer systems. The internet has developed from a system which was mostly based on browsing (websites were found by following links from other sites) to a system based primarily on searching (the google model). Apple and Microsoft are both hyping search as an alternative to manually created and maintained hierarchical storage for local user documents and data (though Apple seems poised to deliver Spotlight, whereas MS is now promising WinFS "after" Longhorn). Is this emerging because we want systems that work the way our minds work? Or is there perhaps an inherent logic to this solution, which promoted it in the evolution of cognition and is now surfacing in the information systems we create?

The debate about searching vs. structuring is also taking place in the realm of large websites, as information architects look for the best ways to make information accessible. Good search capabilities are essential for large sites, but browsing allows discovery and every effort should therefore be made to provide clear structure and navigation. Searching works well when you know what you're looking for; browsing works well when you're not sure exactly what you're looking for, you wish to explore, or you wish to develop an understanding of a domain by reading its structure. So I'm not advocating that websites start replacing hierarchical navigation with search. Of course, context is always the most important factor in these sorts of analyses.

WHO'S MINDING MY METADATA?

The push toward search-based local file management seems an attempt to address problems in traditional "file and folder" approaches to data management, including both built-in limitations and excessive maintenance overhead. The solutions from Apple and Microsoft leverage existing and automatically generated metadata to assist in locating information. A number of recent initiatives have begun experimenting with auto-generation of metadata; a common application involves appending GPS-derived information to digital photos at time of capture (example).

Sony is attempting to tackle the problems involved in manual definition of metadata for the Semantic web. While the W3C (more here) labors to produce standard semantic definitions, Sony has decided that the dynamic nature of information needs requires dynamic identification and definition of semantic data via an "emergent-semantic" approach. While I believe strongly in standards and support the W3C, it does seem that an emergent, interpretive, dynamic approach might be a promising solution to a challenging problem.

THE CASE FOR ENTERPRISE USABILITY

In these days of huge budgets for internally developed enterprise applications, it's often the case that little thought is given to issues of usability or interaction design. This may be due to a number of factors, including the inertia of department structures and existing development methodologies. It may be that people still think usability is too expensive to cram into already tight development budgets. However, I posit that the high costs of application development should provide additional incentive for adding usability to software development and optimizing applications for users. Look at it this way: just about the only thing which is certain, at the beginning of a software project, is that a lot of money is going to be spent. Knowing that, it seems absurd not to invest some percentage of that budget (Usability Guru Jakob Nielson recommends about 10%, though guidelines of this nature should always should be adapted to the particular project) in ensuring that development doesn't result in a product that the users despise.

Think about that a little bit. While it's easy, when thinking about a software project, to focus on the development team (after all, that's where all the money is going), it's important to remember that the purpose of enterprise software development is actually not to provide developers with work, but rather to deliver tools to the firm's employees. That's why all the money is being spent. In this light, doesn't it make sense to attempt to get the most value for the users out of the development investment?

Yes, it is true that enterprise users may not express their frustration with enterprise applications. After all, these folks are paid to do their jobs and they probably take the tools at their disposal as a given, something that simply comes with the job. They likely assume they have nothing to gain by complaining. Most people don't even realize that software could be better. They may instead say things like, "I'm not very good with computers", or "I don't like computers." What this often really means is that the software they are using has not been optimized for use by real people in the real world. Even "yeah, the application is ok" may implicitly include the assumption that software is inherently difficult to use, and this application is no worse than so many other lousy tools.

So, if people don't necessarily even realize that things could be better, then what we're giving them is good enough, right? Well, consider these factors:

So what's to be done? Design, prototype, and test ideas on users, especially at the beginning of a project, before it becomes too expensive to change course away from bad assumptions. Integrate usability and User Centered Design into project teams, throughout the project timeline. And in producing software, bear in mind the differences between things that computers do well (like comparing vast amounts of tiny details and always doing things exactly the same way) and things that people do well (like judging, assessing, synthesizing and interpreting). Software should use the strengths of the computer to support the strengths of the human, rather than forcing people to think like computers.

Take a look at what Kim Goodwin, of Cooper, has to say about integrating design for people into corporate culture in this article.

THE REALITIES OF WEB DEVELOPMENT

The web has certainly matured since it became publicly accessible in 1994. Content, presentation and interactivity have become more sophisticated. CMS systems, robust WYSIWYG editors and even blogs have enabled people to publish to the web without knowledge of markup language. Anyone who needs a simple website to serve as an "online business card" or to update the world on the family's activities can turn to the ubiquitous "nephew who does websites".

So does this mean that all the problems are solved, and that web development can now safely be marginalized? What are the issues facing serious web development today? Well, the increased maturity and sophistication of the web means that the bar has been raised; much of what had been published put on the web by untrained, inexperienced coders can now only be considered "unfortunate" in terms of design, technique and usability.

Here are a couple of challenges involved in current web development:

Finding a serious professional who can do all of these tasks well enough for a large or important project may not be easy. Typically, a team of specialists is still required. Simply put, there is still quite a bit of expertise required to do web development well.

For some thoughts on what it takes to make technology work well for people, take a look at my people & machines page.