A List Apart

Menu
Issue № 359

The best digital products are human—in content and in design. Learn to keep it real with product discovery and fluff-free content.

Usable yet Useless: Why Every Business Needs Product Discovery

by Rian van der Merwe · 5 Comments

Brasília is a remarkable, bizarre city. An architectural gem built to be Brazil’s “shiny citadel,” it’s now known as a violent, crime-ridden, and congested city—because the architects who designed it weren’t thinking about the millions of people who would live there. This myopia echoes across today’s web landscape as well, where we see monuments erected not for their users, but for the people who built them—and the VCs who are scouting them. But it doesn’t have to be that way. Rian van der Merwe shows us how to discover before we build.

Being Real Builds Trust

by Steph Hay · 28 Comments

Tons of products and services are the best, easiest, simplest, smartest things ever. They also all increase profits, decrease costs, and save you time. And as a result, they all sound the same. These kinds of qualifiers overrun our content because we’re constantly looking around at what everyone else is doing, rather than being honest about who we are. But trust inspires confidence, and it’s confidence that compels decision-making. Steph Hay shows us how to win customers by being real with our content.

More from A List Apart

Columnists

Matt Griffin on How We Work

Pricing the Web

If you plan to bill your clients, you need a method for putting a price on what you do. The variables are always money, time, and scope of work, but the way they relate to each other can bring different client motivations to the foreground and fit different agency needs.

From the Blog

Driving Phantom from Grunt

For this example, we're going to build a Grunt task that takes a screen shot of the pages we're building (similar to Wraith, but far less advanced). There are multiple parts to make this work, so let's break it down. First, we will write a PhantomJS script that renders each page. Second, we make a NodeJS function that calls this script. Finally, we make a GruntJS task that calls that Node function. Fun!