Accessibility is all about ensuring that as few people as possible are excluded from access to and use of digital systems, the Internet particularly.
There are moral, legal and business reasons for thinking about accessibility, so that people with different technology and different kinds of disability are not excluded. This means considering, when designing:
- People with a visual impairment
- People who are blind
- People with a physical disability
- People with a hearing impairment
- People who are colour blind
- People with a cognitive impairment, e.g. dyslexia
- People with varying levels of literacy
There are many guidelines on accessibility. The Web Accessibility Initiative is a good, authoritative place to start.
Affinity diagramming is a very simple but powerful technique for grouping (and understanding) information. It is a way to identify, analyse and synthesize meaning from a large, unstructured body of data. A good example might be to organise the results of a brainstorming session, or the conclusion of a contextual enquiry, when you may have hundreds or even thousands of individual notes.
The technique consists simply of writing down items - concepts, facts, ideas, dimensions, descriptions and so on - on Post It notes (or similar sticky paper things) and physically sticking them next to each other to form natural groupings.
Although this can be done electronically for very small sets of data (using a word processor or spreadsheet program), it is mostly always better to work with paper.
Affinity diagramming is, above all else, a simple technique. Its explanatory power derives from its very visual nature, i.e. the more similar two items are, the closer together their Post It notes are.
In the context of production methodology, affinity diagramming comes into its own during Definition, when you are trying to create a solution and there is a large amount of unstructured data.
The concept of affordance was coined by the seminal psychologist James Gibson in The Ecological Approach to Visual Perception, and introduced to the HCI community by Donald Norman in his 1988 The Psychology of Everyday Things.
According to Norman an affordance is the design aspect of an object that suggests how the object should be used. Or, putting it another way, affordance refers to the fact that the physical characteristics of an object or an environment influence the function of that object or environment.
This property of objects - a propensity for function to be influenced by physical characteristics - is called affordance (there is debate about this interpretation of the term).
When the affordance of an object or environment corresponds with its intended function, the design will function more efficiently and will be easier to use. And conversely, for the negative case. For example, a door with a handle affords pulling. But sometimes, doors with handles are designed to open only by pushing (think restaurant kitchen doors perhaps). But then the affordance of the handle conflicts with the door's function.
Whenever possible, designers should seek to create objects and environments to afford their intended function.
- Synonyms - agile methodologies; agile usability engineering
Agile is the name for a particular way of doing development. The term is most often applied to software or interactive projects (indeed, it originated in a software development context).
Most agile methods attempt to minimize risk by developing software in short timeboxes, called iterations, which typically last one to four weeks. Each iteration is like a miniature software project of its own, and includes all of the tasks necessary to release the mini-increment of new functionality: planning, requirements analysis, design, coding, testing, and documentation. Agile methods emphasize:
- Working software as the primary measure of progress
- Real time communication, preferably face-to-face, over written documents
- Active user involvement is imperative
- The team must be empowered to make decisions
- Requirements evolve but the timescale is fixed
- Capture requirements at a high level
- Develop small, incremental releases - and iterate
- Focus on frequent delivery of products
- Complete each feature before moving on to the next
- Apply the 80/20 rule - nothing is ever built right first time
- Testing is integrated throughout the project lifecycle - test early and often
- A collaborative & cooperative approach between all stakeholders is essential
Agile usability engineering
- Synonyms - agile methodologies; agile usability engineering
Agile usability engineering is a concept to describe a combination of methods and practices inspired by "agile" development methodologies and usability engineering.
Detailed always up-to-date documentation and models
Cards and hand-drawn abstract models. Travel light. Communicate rather than document
Detailed, complex, high-fidelity prototypes
Sketchy, simple, functional prototypes
Develop and prove concepts with user feedback. Iterate.
Courage. Design for needs rather than expectations. Retrieve design from models rather than continuous user feedback.
Time-consuming usability evaluations, workshops with intense stakeholder integration
Fast usability inspections. No need to evaluate if models are right.
An algorithm is a specific set of instructions or steps that can always be guaranteed to lead to the same goal or objective.
"Algorithm" should be contrasted with "heuristic". Like an algorithm, a heuristic is a set of instructions or steps. But unlike an algorithm, a heuristic is not always guaranteed to lead to the same goal.
Algorithms are common in programming. In important ways, a computer program is nothing more than a set of algorithms all stacked up together. Heuristics are more common in the real world of people and uncertainty. Much of what people do is "governed" by heuristics (learned from experience and inferred from incomplete knowledge) rather than algorithms.
The term for situations where forward progress on a project or programme of effort is hampered by an inability (or unwillingness) to move beyond analysis (qua definition, requirements capture, etc) to synthesis and the generation of solutions.
The term for the desired propensity of interative applications to anticipate the user's wants and needs.
This is something obviously designed in by the application designer. The principle being that the designer should not expct the user to search for or gather information or evoke necessary tools. By contrast, the application should bring to the user all the information and tools needed for each step of the process.
- Synonyms - pit-fall; garden-path solution
An anti-pattern is the opposite of a (interaction) design-pattern. It's a commonly (re)-invented poor quality solution to a problem. Two examples of anti-pattern are:
- Interface bloat (from interface design) - Interface bloat refers to the practise of making an interface so powerful and feature rich that it is in actual fact difficult to use
- God object (from programming practise) - a God object is a code module that knows or does too much