Why is building a website so hard?

I’ve been working in tech startups for the last couple of years and have been up close and personal with what it takes to get something designed, built and onto the internet.

During the consulting parts of my career I’ve helped build plenty websites for clients. But it’s a whole different thing when you are in-house and personally responsible for whether the site is delivering results. I’ve found that as soon as you’re responsible for the actual business results, your whole mindset changes. Personally, I’ve found that all of a sudden usability and simplicity become more important than aesthetics.

I’ve always been fascinated by how things that seem like a nice easy website project can become complex, stressful and expensive. It’s not just the normal “things take longer than you expect” effect from project management. Something more profound is going on when building digital products. There are several interesting issues that cause website projects to be harder than you’d expect:

1. Unknowable scope

You never really know in advance what you actually need a website to do. Even the best planning, user experience mapping and project scoping won’t capture all the possible things that users may want to do on your site or all the features that you may want to put in front of your users. In the world of construction and engineering they have a concept called a “change order” these are supposed to track changes to the scope, but in software development, it’s possible that the scope isn’t even known in the first place.

Mitigation: Taking an iterative approach based on lean startup, agile development and design thinking can help bite off small chucks to work on.

Code

2. Hidden dead-ends

A dead-end gremlin is when you get 90% of the way down the path with implementing a part of a system, only to find that there is an absolute block based on a requirement that the tool or module you’ve chosen can’t deliver. Often these gremlins show up as hidden systems that depend on each other to do something seemingly simple like send an automated email.

Email marketing and payment processing are the worst areas for dead-ends because everything sounds simple from the outside, but the reality of actually making it work can be very hard with multiple systems depending on each other.

Mitigation: Being as clear as possible about the mandatory requirements in advance can help, but the best solution is to find ways to prototype the idea so that you can test whether everything hangs together properly.

3. A beautiful unique snowflake

In the world of marketing and branding, it’s tempting to want to make everything unique, different and beautiful. This is a great way to create a unique brand, but it can be a terrible way to create a website. Good web design prioritises functionality and effectiveness over looks.

Ford Model T Dash

Before the 1940s, every car dashboard looked different and had different levers, dials and displays. After the 1940s, almost every dashboard from every manufacturer conformed to the same basic layout with a speedometer, rev counter and fuel gauge, which meant that any driver could drive any car without having to relearn everything from scratch. The basic design interface has stayed the same ever since because usability is more important than uniqueness.

Ford Deluxe DashStandardisation makes everything simpler for the end-user. The same is true in web design. We expect links to be blue and underlined, the scroll bar to be on the right, and the menu to be on the top (or maybe the left). Websites that break basic navigation conventions just to be different are making the medium more important than the message. It’s nice to be unique, but it’s better to be effective.

Mitigation: Using standard web development frameworks and content platforms can help make sure that a website is consistent and easy to use.

4. Testing and compatibility

Every website project that I’ve worked on started with great promises about compatibility and great intentions to test everything. In practise, too many websites don’t work on mobile phones or the wide range of browsers that are out there in the real world. Personally, I’m a fan of minimalism in web design. The less distracting fonts, animation and noise there is, then the more that the content can shine. Ironically enough, simple and minimal design is also more likely to work on a wide range of devices and browsers.

Mitigation: Make designs and code as simple as possible and don’t assume that every single person in the world uses Chrome.