Privacy-first principles: Get $10 credit today with Fathom Analytics. Find out more.

OCC’s design principles

This is a set of values and principles that guides our design approach, processes and decisions in every project. These guidelines will change over time and it is important that we revisit and update them regularly.

We work with complex data and challenging design problems. We work hard to make data usable, accurate and accessible to the users. We are proud to build quality software in terms of technology and design.

To achieve quality we follow these design principles:

  1. Meet users early and often

    We meet user needs by meeting users regularly from the beginning of the project and throughout the process. The design and features we build are led by user feedback. Everyone in the team meets users, not only designers.

    A Dose of User Research: every time we run user research, we stream back to a meeting room in the office so that anyone at OCC can observe users interacting with our products and giving feedback on our design ideas.

    Examples of activities:

    • user interviews
    • usability testing
    • ethnographic research
    • co-design workshops (stakeholders, development team and users solving a problem together)

  2. Focus on adding value, not features

    Every feature or piece of functionality we add to the system should add value for users and the business. We should spend time and effort building the features that people need and want to use. We do this by understanding the root of the problem we are trying to solve and by fully understanding user needs and business needs.

    Each delivered feature should work well and be well designed before we move on to adding the next feature.

  3. Be commercially aware

    The whole team understands what is being commissioned: we get involved in the sales process and communicate our principles and practices to the customer throughout the project.

    We take responsibility for changes in scope and estimate: we identify reasons for such changes and report changes for appropriate adjustments.

    We ensure that design services are valued: we make the design budget explicit in the contract or we agree an internal design budget.

  4. Make it inclusive and accessible

    Inclusivity and accessibility are good for everyone. Everything we build should be accessible, inclusive and responsive by default. The design should perform well in different contexts and on different platforms and be appropriate to the target user groups.

    We should aim to meet at least the WCAG AA accessibility standard and ensure our websites, mobile apps and other software are compatible with assistive technology, for example, screen readers.

  5. Test and iterate

    We are aware that our design solutions are assumptions until they are tested with real users.
    We experiment, test assumptions, learn and improve our ideas. We iterate our ideas in small steps to reduce risks of failure. Experimentation is key to innovation. We value testing with users, learning and iterating not only the systems we are building but also our design process.

    Examples of activities:

    • sprint cycles
    • validating assumptions with users through user research activities (see 1)
    • Agile retrospectives
    • prototypes
    • usability testing
    • user surveys

  6. Be consistent

    Being consistent helps with usability, efficiency and how users perceive the software (trust and professionalism). We should be consistent with our designs, the language we use on interfaces, our code and the data.

    …with design
    Modular Design helps us identify the common elements used across the system, remove unnecessary duplication of elements and allow team members to iterate the design without compromising the quality. We create design patterns and follow usability conventions that help users get familiar with the interface and navigate within the system.
    …with language
    Applying a consistent style for language usage, spelling and grammar will help give OCC output a clear and professional look. Good use of microcontent (for example, page titles, labels, headlines, navigation links) helps with usability.
    …with code
    Front-end code we produce should be modular, efficient to write, easy to maintain and easy for other developers to understand.
    …with data
    Numbers matter. Accuracy and reliability of data is important for the type of work we do. Our software must consistently provide accurate results.

  7. Make it attractive and usable

    Usable interface allows user to achieve their goals without friction. We also care about how our applications look and feel because attractive interfaces have an impact on perceived usability and users’ trust.

    The interfaces we design are used by people who work on them every day. Make the interface pleasant to look at and a delight to interact with.

  8. Be lean and efficient

    We spend our effort efficiently and remove any waste when communicating an idea, solving a problem or building the product. Our focus should be on the effectiveness of the outcome. We use our client’s budget efficiently and wisely.

    We spend effort in the most valuable areas of the product and reuse elements whenever possible by creating reusable elements and following conventions. (For example, designing a login page from scratch is a waste of effort in most cases, since login pages follow many conventions that can be used out of the box.).

  9. Collaborate

    We enjoy solving complex technical and design challenges – that’s what we are best at. To really understand the problems and to solve them effectively, we work in small multidisciplinary teams that tackle problems together and work closely with our clients.

    We build relationships and mutual trust with our clients. We listen, we understand their business, we encourage them to tell us the problems (rather than a proposed solution) and we are flexible to accommodate their needs. Our team members learn from each other, are empowered to make decisions on functionality and design and understand the value of what we’re building.

    Examples of activities:

    • work in small multidisciplinary teams (ie, designers, developers, product owner)
    • regular feedback loops with our clients
    • communicate with clients when a question arises (phone, emails)
    • Agile planning meetings
    • active listening in client meetings and asking “why?”
    • user personas and user flows