About Us – Harder Software

“The hardest single part of building a software system is deciding precisely what to build.”— Fred Brooks

Good IT and software involves much more than programming or code.  This site is a resource for often-neglected aspects of software development: requirements, usability, project management, and other “hard” aspects of software and information technology. The aim is to provide insight and share ideas to create better, more usable systems.

Checklist: Understanding User Environments

Users do not operate in a vacuum. Here is a checklist for understanding the end-user ecology – the environments that influence the way the users interact with the system.

Factors for In-Depth Understanding of User Community and Environments

Inputs: User Task list, User Roles list, User Community Sketch

Identify typical user characteristics of each major user type:
o   Age range, gender
o   Education level
o   Occupation, full or part-time
o   Socioeconomic – income/finances, lifestyle
o   Cultural/ethnic background, languages spoken and proficiency
o   Geographic region, urban/suburban/rural
o   Domain knowledge or subject-matter expertise level
o   Experience using the current system and/or similar systems
o   Formal Training on the system, how much, how long ago
o   Objectives for the system – why are they personally using it?
o   Technology skill and comfort level
o   Overall concerns and attitudes toward the current system or competitors
o   Handicap accessibility needs – 508, low vision, color-blindness, assistive technologies
o   Prioritize: Which of these user characteristics are most important/influential?
o   Ask: Would the clients like to change any of these, to attract different users?

Identify the user environments for the main user tasks
o   Interruptions, time spent to return and resume
o   Work pattern – several times daily, once a month, once a year, abandon after start
o   Gateways to system – from Internet search, desktop icon, bookmarked start page, hyperlink or deep bookmark
o   Social context – supervisor approval? information from users outside the system?
o   Using at work, home, school, outdoors, leisure, combination?
o   Special environments – Classified, low-connectivity, battlefield, in-store
o   Access to other external systems – e.g., ability to check personal email
o   User control over environment – access restrictions, attitudes
o   Prioritize: Which of these environmental characteristics are most important/influential?

With all this information, the following requirements artifacts can be created.

Outputs:
o   Annotated User Role description
o   Annotated User Task requirements
o   Persona representing each major user group – User Profiles or Stereotypes
o   User Stories or Storyboards describing how user characteristics affect tasks

End-User Ecology: Overlooked Success Factors

You know what your system is supposed to do, and who the target users are, but knowing the context of the end-user operations can be just as important. End-User Ecology looks at the relationships between people and applications in the context of their operating environments. In this blog post, I will list common environmental factors that are easy to forget, but can make all the difference between a barely functional system, and one that is truly successful!

Interruptions: Rarely are your users only doing one thing at a time. For mobile applications, a user can be interrupted by a phone call or text at any moment. A mobile application must instantly save its state and data, and every screen should be intuitive enough to let the user resume at any point. For business applications, users might be using the application while also answering phone calls, interacting with people at their desk, responding to emails, squeezing in time between meetings, and handling countless other distractions. If a task takes more than a couple minutes, a designer cannot assume it will continue in one continuous stream. You should plan for interruption as the norm, not the exception.

Work Patterns: How frequently are your users doing each task? Do they repeat a task several times a day, once every few months, or do they do it once and never again? Frequent users will benefit from shortcuts and accelerators that let them complete tasks quickly. For less frequent users, more guidance may be needed. Users conducting longer-term, episodic tasks might need to gather a lot of different information in between uses, and complete the tasks in segments, over several weeks or months. Some users might also compose responses in another tool, such as Microsoft Word, and then paste it into the application. The system should accommodate these users too.

Gateways to the System: Is the user clicking on a search engine result? Accessing a bookmark? Navigating a menu? Clicking a hyperlink or a deep bookmark? Maybe they’re launching an icon from a virtual desktop or their mobile device. Knowing how a user initiates a task can help determine the necessary level of guidance. For example, people who search a Web site’s content might land deep within the site, far from any headers. Navigation aids such as breadcrumbs, and local navigation links, can be signposts to help them find their way. Applications that always have the same start point can have dashboards or workspaces that let the user easily respond to tasks needing their attention.

Social Context: Many times, a user needs to interact with others outside the system – researching information or obtaining approvals from other people who never use the system directly. Even a beautifully designed system may still need to export reports to standard formats such as Microsoft Word or Excel, to allow external stakeholders to view the information. Their input may have little to do with the actual software, but their needs are still critical to the overall success of the business process.

Special Environments: Does the user need to upload information to a classified network, via an appointment set weeks in advance? Are they on a mobile device with low bandwidth or unreliable connectivity? Maybe they’re on rugged terrain with sun glare or sand stinging their eyes. These factors all affect the task design. Special environments might also offer benefits. Perhaps the user is in a store looking for bargains, and might respond to a coupon. Or a user is at a conference, wanting to connect with others who share their interests. Good task design can take advantage of these factors.

Device Limitations and Features: Small touch-screen devices can be difficult for entering text, but high-resolution screens can showcase content for user consumption. Mobile phones have tiny screens, but they have geolocation features and social information in the user’s Contacts. Computer workstations have large screens, keyboards, and mice that allow for easy double-clicking and right-clicking. Rather than trying to use all of a device’s special features, it’s helpful to focus on one or two to avoid overwhelming a user. And of course, only use features that truly support the task functionality.

Channels Outside the System: Any interaction that depends on an external system needs careful scrutiny, to make sure that it’s reasonable to expect the user will have access. For example, if a password can only be reset by sending an email, realize that some users cannot check their personal email from work. Mobile devices often do not have easy access to printers. The tradeoffs also need to consider other factors, such as security and reliability. If another system is not reliable, don’t make yours depend on it.

Other “X-Factors”: There are always other, unexpected factors that affect a project’s success. No matter how talented the analysts and architects are, or how well-informed the clients and subject-matter experts are, the end users always have some surprises. The only way to discover these factors is to get direct input from people who will be using your system; the earlier, the better. Also, since users may say they would do one thing but actually do another, try to see them working in their natural environment. Field studies can offer unexpected insights. Early usability testing with prototypes can yield enormous benefits – and help put things into perspective. Maybe you were worried about something that doesn’t bother the users.

Once you have thought about all these factors, list and prioritize them. Which are most important? Did the users mention any “pain points” where your system could help? Are there any factors that can be mitigated? Likely, some factors will only matter to one or two user types. Take a hard look at the tasks. Listen to the users, and try to address the things they are concerned about.

There’s much more to a successful system than merely meeting requirements. Understanding the users’ ecology can make all the difference.

This post originally appeared on Segue Technologies corporate blog.  Special thanks to Matt Kelley for editing and suggesting the term “X-factor.”

Information Architecture: Organize content for navigation and usability

Summary: Effective websites have good content that is well-organized, so people can navigate intuitively and find what they need. Information Architecture is a proven, structured approach to organizing, identifying, and presenting content for users. Good architecture improves usability and lets websites meet their business goals.

Information Architecture is the science of organizing, labeling, and presenting content for users. For Web sites, the main considerations are navigation to support browsing, and labels to support search and findability.

Morville and Rosenfeld[1] define three considerations for website architecture: Context, Content, and Users.

  • Business Context – refers to the organization’s goals and objectives for the site. Business Context also covers funding, deadlines, politics, and project resources – human and technical.
  • Content -this is all the “stuff” that goes into a website. When evaluating potential content, consider what is current, appropriate, useful, and relevant. What formats are used? How much content is there? Who maintains it? Is any new content needed? Is metadata needed? (Metadata can be used for semantic – adding meaning and making content more findable, or for administrative reasons -permissions etc.)
  • Users – Who is the target audience? What are the goals, behaviors, demographics, and environments where they will use the site? What are the key user tasks the site needs to support; one-time quick use, or in-depth research?

These considerations all affect the structure of the site. A fourth, lesser consideration is the technology. What support is needed for operating systems or browsers? What are the available content management systems (CMS), libraries or plug-ins? What are the target connection speeds and devices? Also, when are updates for the technologies scheduled for release?

In some respects, websites can be thought of as content-delivery applications. The line between web application and website gets blurrier every day. The same research methods (on context, content, and users) are useful for both an application and a website. In traditional application development, application designers and systems analysts create workflows for performing specific functions. Similarly, website architects craft navigational paths for browsing. The benefit of good Information Architecture is that it organizes content in a way that makes sense to the user.

Website visitors bring pre-existing notions for look and function, based on other websites they have used. Diverging from “standards” can confuse users, limit the effectiveness of the site, and degrade the user experience. Ultimately, the users determine the site’s success as they interact with the functionality and content, so effective information architecture considers the user’s mental models in site design and layout. One way to do this is to use patterns similar to real-world processes. For example, users put items they wish to purchase into a virtual shopping cart and then proceed to “check out”, just as they would in a physical store. When business goals call for a radically different site, with an unfamiliar mental model, design and effectiveness must be proven and refined through in-depth user testing.

Browsing is the preferred way of presenting information to the user. Users navigate along pre-designed paths (hyperlinks, menus, breadcrumbs). Larger, more complex sites might need specialized “guides” – lists of links organized by audience or topic, or simple site maps. The key to effective browsing is to test and revise the design with actual users. Card sorting and other tools help the website architect create structure, labels, and categories that speak the users’ language and follow their mental models. The goal is to match the user’s expectations, and group the information in ways that make logical sense. Browsing tools can include hierarchies (tree structures), or polyhierarchies – where the same item can fall into more than one category and at different places within the hierarchy. Large e-commerce sites can use collaborative filtering (i.e. customers who bought this also liked…). Finally, it helps to have different levels of navigation for “global” (across the site), “mid-level”, and “local” options for finding related content at the same level in the hierarchy.

Unlike applications, websites also have search considerations. Public-facing websites are at the mercy of outside search engines, which may send users directly to a page deep within a site. It also can be difficult to control the results produced by internal site search engines, particularly since users typically write ineffective search queries. For internal search engines, managing the number and type of results is also challenging. In search, there’s always a tradeoff between precision (fewer, more focused results, with the chance of missing something) and Recall (with more results, and more comprehensive, but with extra stuff the user doesn’t want).

The goal of search is to encourage the user to go back to browsing, creating a better user experience. Especially when coming from an outside search engine, users will be “parachuting in” many levels deep and can easily be lost far down in the hierarchy. Effective navigation aids such as breadcrumbs and local navigation guides can support browsing after accessing a search result. In addition, Global navigation (main menus) should always be present.

Several techniques can improve Search. Type-ahead, where the Search “suggests” words or auto-completes entries, can help the user. Most internal search engines provide some way to use a thesaurus for synonyms and common search terms or phrases, correcting misspellings, using a controlled vocabulary (“notebook” when the user says “laptop”), and translating jargon or acronyms. Preferred results can be featured at the top of the search results list. For large sites, it helps to provide additional search options for limited-scope, local search (e.g., within only tech support). The search results page should be rich, not just a list of links. The best way to improve search is to regularly review the search logs to see the search terms that were used, then test them to ensure the results make sense from a user perspective and match the business context.

Finally, an effective Information Architecture will make it easy to maintain the website and its content. On a dynamic website, the content can change frequently. In order to avoid outdated content, there should be a way to easily remove results from search-engine indexing. Also, the business context for the website might change; different goals for the site, or new products and services to offer. With the change in business context, the business might also want to attract a different user community. By providing effective structure, it is easier to organize new content and keep a constant vigilance for maintaining the website.

In summary, Information Architecture is a holistic approach to structuring and organizing a website that is based on business context, content, and user needs. The goal is to build websites where people can effectively navigate and actually find what they need. Good Information Architecture helps a site continue to succeed long after the initial launch.

[1] Information Architecture for the World Wide Web, 3rd Ed., by Peter Morville & Louis Rosenfeld, ©2007 O’Reilly Media, page 25.

This post originally appeared on the Segue Technologies corporate blog.