<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
        <title>Feltpresence.com</title>
        <link>http://feltpresence.com</link>
        <description>Ryan Singer designs user interfaces, writes code, and manages teams at 37signals.</description>
        
        
        <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/feltpresence" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="feltpresence" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
           <title>What UI really is (and how UX confuses matters)</title>
           <link>http://feltpresence.com/articles/19-what-ui-really-is-and-how-ux-confuses-matters</link>
           <guid>http://feltpresence.com/articles/19-what-ui-really-is-and-how-ux-confuses-matters</guid>
           <description><![CDATA[	<p>People mix the terms UI and UX together. UX is tricky because it doesn&#8217;t refer to any one thing. Interface design, visual styling, code performance, uptime, and feature set all contribute to the user’s “experience.” Books on UX further complicate matters by including research methods and development methodologies. All of this makes the field confusing for people who want to understand the fundamentals.</p>

	<p>That’s why I avoid teaching the term ’UX.’ It means too many things to too many different people. Instead I focus on individual skills. Once you understand the individual skills, you can assemble them into a composite system without blurring them together. For software design, the core skill among all user-facing concerns is user interface design.</p>

	<p>You can define UI very precisely. An interface is a place where two things meet: the human and the computer. The computer has functions it can perform. The human needs inputs and outputs to take advantage of those functions. The interface is the arrangement of inputs and outputs that enable people to apply the computer’s functions to create outcomes they want.</p>

	<p>Here&#8217;s a minimal example. A computer can calculate the square root of any number, like 167391. I can&#8217;t do that in my head or even on paper. In order to apply the computer’s square root function, I need inputs and outputs. The input could be an alert box with a text field and submit button. The output could be another alert box that displays the answer with a text label.</p>

<p style="text-align: center; margin-bottom: 25px;"><img src="http://feltpresence.com/images/figures/20130330-ui-example.png" alt="Core elements of a UI" /></p>

	<p>That interface offers one function. Things get more interesting when you offer multiple functions. Take an <span class="caps">ATM</span> machine as an example. First imagine an <span class="caps">ATM</span> that only dispenses cash and doesn&#8217;t show balances, take deposits or do anything else. The design task is just like the square root calculator &#8212; input and output. Now imagine you want to upgrade that <span class="caps">ATM</span> to offer both withdrawals and deposits. The new interface needs to provide a way to choose which of the two functions you want. That’s what “navigation” is.</p>

	<p>Those are the ingredients: functions, inputs, outputs, and navigation. You arrange the inputs and outputs on screens and connect them with navigation. The interface works when people can perform the function they need &#8212; when they get the square root answer, the $60 cash or the bump in their bank account.</p>

	<p>This description is tangible. You can actually point to the inputs, outputs, functions, and wiring between them and say “this is the interface.” Then you can evaluate the experience of using that interface and identify activities you could perform to improve it.</p>

	<p>You could apply visual styling to make it more aesthetically pleasing. You could research your users to find out how adequately the interface fits their needs and habits. You can do so many things.</p>

	<p>But for software makers, I recommend starting with a strong understanding of UI by itself. The fundamentals can take you very far.</p>]]></description>
           <pubDate>Sat, 30 Mar 2013 00:00:00 -0500</pubDate>
        </item>

        <item>
           <title>UI and Capability</title>
           <link>http://feltpresence.com/articles/18-ui-and-capability</link>
           <guid>http://feltpresence.com/articles/18-ui-and-capability</guid>
           <description><![CDATA[	<p>It’s easy to get overwhelmed with details when you’re designing a UI. That’s why I try to keep hold of which things “really matter” and continually come back to them. In a software tool, the important things are the capabilities you give your users.</p>

	<p>People use your product because they are trying to get somewhere. You can imagine them standing in front of a chasm with their goal on the other side. They want to do something, but they can&#8217;t do it without help. Your product is there to bridge the gap.</p>

<p style="text-align: center; margin-bottom: 25px;"><img src="http://feltpresence.com/images/figures/20121214-chasm-sketch.png" alt="The capability chasm" /></p>

	<p>Here’s a way to understand &#8220;what matters.&#8221; The person standing there really wants to get to the other side. They aren&#8217;t just flipping channels on TV or scrolling through Facebook. They opened your app because they want to accomplish something. You can either help them or not. They care.</p>

	<p>What exactly they care about depends on the domain &#8212; the world your app lives in. Maybe they care about shipping an order in time for Christmas. Or they want to document the client’s approval to avoid an argument later. Whatever it is, they didn&#8217;t come for the drop-shadows or gradients. They came for the capability.</p>

<p style="text-align: center;"><img src="http://feltpresence.com/images/figures/20121214-bridged-chasm-sketch.png" alt="Bridging the chasm with a capability" /></p>

	<p>To help somebody, a capability has to have two things. Think of it like the two handrails on the bridge. First, it has to be implemented on the back-end. The package has to go on the truck, the client approval has to be saved to disk.</p>

	<p>Second, the interface has to offer that implementation to the user. The user has to know it exists, be able to find it, and figure out how to operate it. Designers have a word for this: &#8220;affordance.&#8221; The interface “affords” the capability to the user.</p>

<p style="text-align: center;"><img src="http://feltpresence.com/images/figures/20121214-capability-bridge.png" alt="Implementation and affordance" /></p>

	<p>When it comes to design, thinking about the capability you are affording can help you refocus when you’re lost in details. Designing isn&#8217;t just pushing pixels around and playing with type. Ask yourself: does this change affect whether a user can discover the feature? Does it clarify how to operate it? What am I helping them do right now?</p>

	<p>I’m very conscious of whether I am affording a feature or styling it. It’s important to distinguish because they look the same from a distance.</p>

	<p>The right information has to stand out for a user to notice a feature. You use contrast, color, and size to make it pop. When you design the feature itself, proper alignment, bold phrases, and small print all contribute to clarity. You need these visual distinctions to show how the feature works and help the user see the right things.</p>

	<p>On the other hand, when you style the feature you use the same techniques for a  different purpose. Color, weight, and proportion all create an aesthetic feeling and tone. A button may be equally clear and understandable whether it’s blue or green, but you still fuss over the decision.</p>

	<p>Affording a capability and styling it are both important. But it’s essential to know which one you are doing at a given time. Style is a matter of taste. Capability and clarity are not. They are more objective. That person standing at the edge of the chasm cares more about accomplishing their task than the details of the decor.</p>

	<p>Styling also consumes time differently. Since the definition of success is a matter of taste, you can&#8217;t incrementally measure progress. You can circle around on styling for a long time without increasing the capability for your customer.</p>

	<p>This is why I do very little styling at the front of a project. I’m not religious about it &#8212; I do some rough styling to feel good about what I’m working on. But I don&#8217;t allow myself to linger or circle around it. I prefer to play with styling later in the project after I know that the capability is complete in its two main aspects.</p>

	<p>This is the framework I use when I design products. The core of the product is its capabilities. Capabilities are the things that customers care about and depend on you for. Capabilities are afforded by the interface. The interface reveals them, explains them, makes them possible. And finally the capabilities are implemented in code so something tangible happens when users operate that interface.</p>

	<p>Knowing which capability you are building and whether you are implementing, affording, or styling it enables you to maintain focus. Be conscious of the feature you are working on and what it lacks to carry users over the gap. Check yourself when you make visual decisions. Are you trying to reveal the feature? To explain how it works? Is the problem artistic or does it hinder users from reaching their goal?</p>

	<p>Design isn&#8217;t a sea of pixels and code isn&#8217;t a tangle of functions. The more you see how each piece of design and code supports a specific capability, the easier it is to find order in the chaos of product development. In the end nothing is more satisfying than seeing users standing on the other side of the chasm and thanking you for it.</p>

<p style="font-size: 12px; margin-top: 40px;">Chasm sketch inspired by Bob and Chris at the <a href="http://www.therewiredgroup.com/">Re-Wired Group</a>. Thanks to Bob Moesta, Jason Zimdars, Jonas Downey and Nathan Barry for feedback on a draft.</p>]]></description>
           <pubDate>Fri, 14 Dec 2012 00:00:00 -0600</pubDate>
        </item>

        <item>
           <title>Keeping the goal in sight while designing component flows</title>
           <link>http://feltpresence.com/articles/17-keeping-the-goal-in-sight-while-designing-component-flows</link>
           <guid>http://feltpresence.com/articles/17-keeping-the-goal-in-sight-while-designing-component-flows</guid>
           <description><![CDATA[	<p>The other day I wanted to sign in to a video site to watch a lecture by Clayton Christensen. The bumpy experience I had provided a good lesson in designing user flows.</p>

	<p>The site requires you to authenticate in order to watch any of the videos they host. The brand looked familiar and I thought I might already have an account. I tried to sign in with my usual username and password combinations, but they didn&#8217;t work. Then I tried to create a new account to get access to the site. When I filled out the new account form, the site gave me an error: &#8220;That email address is already in use. Please enter a different email address.”</p>

	<p>It turns out I did have an account already, but now I was stuck in an error state on the account creation form. I was highly motivated to see the video, so I mucked around with the back button, found the authentication screen again, looked for a “forgot password?” function, waited for the email and eventually got it. I doubt a high percentage of users would have gone through such a hassle to follow a video recommendation on Twitter.</p>

	<p>This is an interesting case because it shows how user goals can be in conflict with the implicit goals of an implementation. The app assumed my goal was to create a new account. When I didn&#8217;t meet the criteria for new accounts (a unique email address) I was told I couldn&#8217;t proceed. But in reality I didn&#8217;t care about creating a new account. I was just trying to get in so I could watch Clay’s lecture video.</p>

	<p>This is a product design topic. What is the user trying to do, and how can you help them do it?</p>

	<p>The product brought me to a dead-end on the create account form because it assumed that the only thing that mattered was creating an account. The error state was narrowly limited to account creation while my actual goal was to get into the site and watch the video.</p>

	<p>When I run into problems like these, I ask myself: how did this happen? Could I be making a similar mistake in my own apps? Instead of a clumsy design, I view it as an opportunity to learn something.</p>

	<p>This kind of mistake is one that we make all the time. It happens when we focus too much on getting the components right and forget about what the user is really trying to do in the first place.</p>

	<p>It’s easy to see how it happens. Someone on the business side decides the site should require people to create accounts to see the content. Therefore “user authentication” becomes a requirement on the designers’ and developers’ plates. Everybody knows how to do user authentication. You need a few key screens: new account, log in, recover password, etc. Somebody with a manager hat divides the work. New-account is a scope. Log-in is a scope. Recover-password is a scope.</p>

	<p>Now it’s somebody’s job to implement the new-account scope. What are the boundaries of this chunk of work? Everybody knows, let’s say, that to create a new account you need a new account form, error states, a success state, and an email notification. In addition you have requirements about what kind of information you need to collect and whether things like non-unique email addresses are allowed. Given this set of boundaries and requirements, the person responsible for the new account process builds a solution.</p>

	<p>Their solution looks like this:</p>

	<p><a target="_blank" href="http://feltpresence.com/images/figures/20082012-original_flow.png" class="image"><img src="http://feltpresence.com/images/figures/20082012-original_flow-thumb.png" alt="Account creation flow" /></a><br />
<small>The account creation process in <a href="http://37signals.com/svn/posts/1926-a-shorthand-for-designing-ui-flows">flow shorthand</a>. States are above the bar, actions are below the bar. Click to enlarge.</small><br />
￼<br />
It covers all the cases for account creation and it perfectly respects the requirements. Somebody with a manager hat agrees that it checks all the boxes, and the team moves on.</p>

	<p>What could be wrong with this? Actually this is all a nice process. The problem happened in the very beginning. As soon as a team breaks a problem like user authentication into component pieces &#8211; like create account, sign in, recover password &#8211; it easily starts to mistake those pieces of implementation with user goals. People tasked with a component forget that nobody cares about creating an account just for the sake of the account. They start imagining a user driven to create an account. Real users live in a larger context. They’re trying to do something more interesting like watch a Clayton Christensen video.</p>

	<p>That’s why it&#8217;s important for product people not to fall into the trap of designing and reviewing components in isolation. Yes you need to divide a problem into component pieces, build the pieces, and evaluate them individually. But you don&#8217;t stop there. After you divide and conquer you have to reintegrate and review. </p>

	<p>How do we integrate the components back into a context for review? Ask the question: “What is the user trying to do here?” The job the user has in mind is the best integration point because the user’s mind doesn&#8217;t tidily follow the boundaries of implementation.</p>

	<p>Let’s apply this to the example problem. Say we have a fixed requirement that all users on the video site must have a unique email address. What do we do if somebody tries to create an account with an email address that is already taken?</p>

	<p>From the perspective of the component alone, the goal is to make new accounts per the validation rules. A programmer will naturally see a non-unique email as an impediment to creating an account and interpret the resulting state as failure. From there it’s logical to respond to the user with an error. “Sorry, it didn&#8217;t work.&#8221;</p>

	<p>From the user’s standpoint, the job is different. They are trying to watch a video. They are only creating an account because it seems necessary to reach their goal. From this perspective, if their email address is already in use, this is good news. They already have an account! We can offer them a link to confirm via email that they own the email address. When they click a verification link in the email we can immediately take them to the video they were trying to watch in the first place. No detective work or back buttons necessary. That’s a better design.</p>

<p style="margin-bottom: 25px;"><a target="_blank" href="http://feltpresence.com/images/figures/20082012-improved_flow.png" class="image"><img src="http://feltpresence.com/images/figures/20082012-improved_flow-thumb.png" alt="Improved account creation flow" /></a>￼<br />

<small>The improved account creation process with an exception for existing email addresses in <a href="http://37signals.com/svn/posts/1926-a-shorthand-for-designing-ui-flows">flow shorthand</a>. States are above the bar, actions are below the bar. Click to enlarge.</small></p>

	<p>This shows how the same process can be designed in two different ways depending on whether your view is confined to the edges of components or widened to the scope of the user’s job. Insights like these come when we step back from the individual components and look at the larger process in which the components participate.</p>

	<p>This is not an argument against divide-and-conquer. We still need that. This is a reminder that whatever component we build, we should step back again and again and ask ourselves the question: What is the user really trying to do here?</p>]]></description>
           <pubDate>Mon, 20 Aug 2012 00:00:00 -0500</pubDate>
        </item>

        <item>
           <title>Managing product development by integrating around concerns</title>
           <link>http://feltpresence.com/articles/16-managing-product-development-by-integrating-around-concerns</link>
           <guid>http://feltpresence.com/articles/16-managing-product-development-by-integrating-around-concerns</guid>
           <description><![CDATA[	<p>I’ve been asked to explain my approach to managing product development. This topic applies to individual designers and programmers as much as managers. The goal is not to take what we already do and do it faster or more efficiently. The goal is to have more information and flexibility in our process so we can make better decisions and better products.</p>

	<p>If you build the same product over and over, this article is probably not for you. I work on new things and I never know how long it will take or what will work and what won&#8217;t. Therefore I design my approach for dealing with unknowns.</p>

	<p>When I start designing and developing a product, it doesn&#8217;t exist yet. There are a lot of intentions and expectations and aims, but nothing to ship to users. And while the product doesn&#8217;t exist yet, there are hundreds of individual points I can imagine should be addressed. Take for example a product for managing conferences. I know there should be an event setup process, a registration form, a check-in process, payment processing, ways to apply credits and discounts, and more. All of these things are contingencies waiting to be proved out by a real design and real implementation.</p>

	<p>Each of these broad areas of concern is itself made up of many smaller contingencies. The registration form contains specific fields, validation rules, error states, browser compatibility, art direction, and more. Then down to the programming, all of the elements should be implemented with well-factored functions that reliably perform their roles and allow for easy change and maintenance.</p>

	<p>If you take all these levels of contingencies across all the areas of concerns you have a lot to account for in a product that doesn&#8217;t exist. And that doesn&#8217;t even touch on interconnections and dependencies between concerns.</p>

	<p>So how do we manage all this? I like to imagine this mass of contingencies as an unmapped terrain. The terrain is everything needed to solve the customer’s problem, and my responsibility is to map and explore the whole thing. In order to know what has been explored and settled and what is still wilderness, I want to have some areas defined on the map.</p>

<p style="text-align: center;"><img src="http://feltpresence.com/images/figures/04172012-mapped_concerns.png" alt="Mapped concerns" /></p>

	<p>The illustrations are just to show how I visualize them. In practice, I track these areas in plain list form.</p>

<p style="text-align: center;"><img src="http://feltpresence.com/images/figures/04172012-list_of_concerns.png" alt="List of concerns" /></p>

	<p>After I have a lay of the land, the next step is to determine what to work on first, second, third etc. Not every concern in the product provides equal value to the customer. Some parts are core to the problem. Without them the app has no purpose. Others are necessary but have nothing to do with the domain, like user-authentication. As I look at these different areas on the map, I ask myself three important questions:</p>

<ol>
<li>How valuable is this, from the perspective of the customer&#8217;s problem?</li>
<li>How necessary is this, from nice-to-have to must-have?</li>
<li>How far do I have to take it? How good should this particular piece be in order to call it ”done” and move on?</li>
</ol>

	<p>It’s crucially important to understand: all parts of the product do not have equal value. Designers and programmers have a tendency to make everything they work on as good as possible. Once you go beyond a baseline standard of quality, this tendency can lead you to over-deliver on features that don&#8217;t matter at the expense of more important features. (See my article on <a href="http://feltpresence.com/articles/9-what-happens-to-user-experience-in-a-minimum-viable-product">user experience in a minimum viable product</a>.)</p>

	<p>In order to get moving on the product, I will do a rough ranking to determine which areas are most important per the three questions above. This is what Getting Real calls finding the <a href="http://gettingreal.37signals.com/ch09_Epicenter_Design.php">epicenter</a>.</p>

	<p>A good way to think about this is: which parts of the app will teach me the most about the problem by working on them? This is the exact opposite of what programmers often do when they build the &#8220;knowns&#8221; first, like user-authentication, before they dig into the hairier domain-specific features.</p>

	<p>The end result of this ranking is something like a heat map that reflects my assumptions about where the value is in the product.</p>

<p style="text-align: center;"><img src="http://feltpresence.com/images/figures/04172012-heat_map.png" alt="Where the value is" /></p>

	<p>I don&#8217;t care about ranking every single area. The point is to identify the top few things I need to focus on first. After I hit the top items, I can repeat the ranking process and find the next most important thing, cycling like that until everything is done.</p>

	<p>In this case, customers for the conference management product get the most value out of the online registration form and payment processing. They basically hire the product to allow attendees to sign up online and pay. A close second to that are reports on the registrations so far. Customers use those to figure out how big the venue should be and how many sandwiches to order for lunch. Beyond that, it’s necessary to provide things like user authentication and account management, but these are secondary to the domain-specific areas. Finally there are some nice-to-haves like data export which would be fine to ship without.</p>

	<p>Now it&#8217;s time to do some work. Say we are starting with the registration form, the most important item. The interface design comes first because I want the design to drive the decision tree, not programmer convenience. As I pull out my pen and paper to sketch the UI, I realize there is still a lot to figure out.</p>

	<p>The registration form is itself a cluster of contingencies. There is more to the flow than just a form. What happens on success? What happens on failure? Are there email templates involved? If I don&#8217;t note these things, I won&#8217;t be sure to hit them all. In order to get a clear view of all the pieces, I repeat the same mapping exercise from before but scoped to the registration form area. It&#8217;s a recursive process.</p>

<p style="text-align: center;"><img src="http://feltpresence.com/images/figures/04172012-recursive_map.png" alt="Map of the registration form concern" /></p>

	<p>Now the concerns are low-level enough to design. I start designing the form, first sketching the different states and then implementing static mocks and templates. Soon I’m far enough to bring a programmer in. This is when the real ”management” begins.</p>

	<p>The natural approach most people take at this point is to divide the work by role. They create a ”design” todo list and a ”programming” todo list. </p>

<p style="text-align: center;"><img src="http://feltpresence.com/images/figures/04172012-todos_by_role.png" alt="Todos by role" /></p>

	<p>The problem with this approach is nobody can glance at these two lists and absorb a ”state of the world” from them. They don&#8217;t correspond to a map.</p>

	<p>Here is the same todo list refactored to show areas of concern instead of division of roles:</p>

<p style="text-align: center;"><img src="http://feltpresence.com/images/figures/04172012-todos_by_concern.png" alt="Todos by concern" /></p>

	<p>When I look at lists like this I can see exactly how each aspect of the registration form is coming along. Whenever a list is finished, it shows a piece of the product is ready to review and mark ”done.” It feels great to know one part of the product has no remaining contingencies. It’s ready to go.</p>

	<p>Marking one piece ”done” is powerful because it requires design, programming, support and review to integrate around a specific point in the product. When the programmer has questions about the design all the forces and constraints are fresh in the designer’s mind. Likewise when QA or support raise an issue, the programmers don&#8217;t have to pull out their archeological tools. The code is still fresh and programmers can anticipate exactly where to look to improve the issue. When all parties are present it gives reviewers the maximum possible leverage because all aspects of the team are available and prepared to act on feedback.</p>

	<p>These benefits are the same whether you work alone, with another person, or a larger team. The prize is productive focus and the steady, gradual transformation of contingencies into settled facts. As you shift focus from one area to the next you can conquer and resolve territories on the map. It feels great to check off whole globs of contingencies and wipe them off your mental plate.</p>

<p style="text-align: center;"><img src="http://feltpresence.com/images/figures/04172012-small_multiples.png" alt="Progress over time" /></p>

	<p>At any given time, I want to ask ”where are we?” and see something like this map reflected in the project&#8217;s todo lists. I want to know what is done, what&#8217;s not done, which aspects are ”solved” and which are still open. Grouping the hundreds of low-level contingencies into higher-order units of concern has enabled me to keep this clear view on all the substantial projects I’ve managed over the past few years.</p>

	<p>This article touched on a number of important points:</p>

<ul>
<li>View undeveloped parts of the product as contingencies, not truths.</li>
<li>Bundle contingencies into areas of concern so you have a mental map of the main pieces of the product.</li>
<li>Consciously judge the value of each area, with regard to how necessary it is and also how domain-specific it is. Don&#8217;t be fooled by focusing on &#8220;necessary&#8221; things that don&#8217;t differentiate, like user authentication.</li>
<li>Areas of concern are themselves bundles of contingencies, and you can recursively apply the same analysis to find where the value is and what needs to be done.</li>
<li>Tracking work by role doesn&#8217;t show progress. Group tasks by concern so checking off a set of contingencies means you have covered all aspects of one piece of the product and you can move on.</li>
<li>Integrating all roles around one piece of work allows everyone to keep the problem in context while feedback, pushback and new insights arise.</li>
<li>A healthy development process is a steady, gradual transformation of unproved contingencies  into settled facts.</li>
<li>The goal is a clear head focused on outstanding unknowns. The manager should be able to ask &#8220;where are we?&#8221; at a high-level at a given moment and see what is done, what is not, what&#8217;s in process, what is open, what is satisfactory and what isn&#8217;t.</li>
</ul>

	<p>Since this post covers so much ground in summary form, I would be happy to elaborate on specific points. Please share your thoughts or questions in the comments below or via Twitter at <a href="http://twitter.com/rjs">@rjs</a>.</p>]]></description>
           <pubDate>Tue, 17 Apr 2012 00:00:00 -0500</pubDate>
        </item>

        <item>
           <title>Understanding design patterns in your everyday work</title>
           <link>http://feltpresence.com/articles/15-understanding-design-patterns-in-your-everyday-work</link>
           <guid>http://feltpresence.com/articles/15-understanding-design-patterns-in-your-everyday-work</guid>
           <description><![CDATA[	<p>The concept of design ”patterns&#8221; is widely misunderstood. I want to give you a solid understanding of what patterns really are and how they reflect what designers already do every day.</p>

	<p>What is the misunderstanding? First, in the 90s the idea of “design patterns” became popular in the software world, and mentioning the term brings specific, enshrined programming techniques to mind (eg. Strategy Pattern, Decorator Pattern). Later some UI people tried to create pattern libraries, but they focused on collecting examples and formalizing their presentation instead of explaining what a pattern really is and how it plays into daily design work.</p>

	<p>A pattern is a simple thing, and you already use patterns every day when you design. You&#8217;re thinking about a problem and all of a sudden a solution pops into your head. &#8220;Aha. I could put those things in a list.&#8221; &#8220;I&#8217;ll float that link on the right side of the header.&#8221; &#8220;I&#8217;ll write that in a bold headline, and put the details in a smaller line underneath.&#8221;</p>

	<p>A pattern doesn&#8217;t need to have a name, and it doesn&#8217;t have to come from a book. A pattern is some design trick that is lying around in your head, and when the right problem rises up in front of your nose, the pattern pops into your mind as a solution. You know the feeling, right?</p>

	<p>Here are a few off-hand examples from my own mental library:</p>

<p style="margin: 35px 0 20px 0;"><img src="http://feltpresence.com/images/figures/03262012-example_patterns.png" alt="Example Patterns" /></p>

	<p>You can probably fill a few pages with your own favorite patterns. They are as simple as this.</p>

	<p>But there is also more to the story. Why is a certain pattern appropriate in <i>this</i> situation and not in <i>that</i> situation? What dictates a pattern’s fitness to a given problem? To answer that, think of each pattern as more than a possible solution in your bag of tricks. Each pattern is also a definition of a problem.</p>

	<p>Let me show you what I mean. Here’s a pattern I use all the time:</p>

<p style="text-align: center;"><img src="http://feltpresence.com/images/figures/03262012-primary_secondary_pattern.png" alt="Example Patterns" /></p>

	<p>In practice it often looks like these:</p>

<p style="text-align: center;"><img src="http://feltpresence.com/images/figures/03262012-concrete_examples.png" alt="Concrete examples" /></p>

	<p>That’s what the pattern looks like and how I think of it. The ”problem” side of the pattern is made up of these forces:</p>

	<ul>
		<li>The user is in a process where they have uncommitted state (eg. they composed a comment on a blog but haven&#8217;t posted it yet.)</li>
		<li>Most users who reach this state will want to commit what they did and move forward.</li>
		<li>Some users, fewer than the others, will reach this state and decide they do not want to commit and move forward.</li>
		<li>Users who do not want to continue aren’t satisfied with getting up and walking away from the screen. They want to clear out the uncommitted state or do something else in the app.</li>
		<li>Users on the majority forward-moving path would be negatively impacted if they clicked on the wrong action.</li>
	</ul>

	<p>These forces are the context that I had in my mind when I first used this design. Later, when I encountered those same set of forces again, I recalled the solution that I came up with earlier and how well it fit. A large button with a smaller adjacent link came to mind, it again fit the bill, and again reinforced the pattern.</p>

	<p>This happens over and over as we design. Patterns entrench themselves in our mental library through this process of encountering a situation, designing a solution, recognizing the same situation again, and recalling and applying the earlier solution.</p>

	<p>The forces don’t have to be explicit. I never wrote them down before this post. But being aware of the forces makes it possible to critically analyze why you are making a specific design choice and how well that choice fits with the situation.</p>

	<p>Taking patterns off the pedestal and noticing them in your everyday work is empowering.  You don’t have to think about whether a pattern is a ”real” pattern or not. A pattern doesn&#8217;t need to be written in a collection or formalized to be part of your design toolbox. Then once you start to notice your own common patterns, you can begin to analyze the forces behind them. When you are aware of the forces that motivate your decisions, you can be conscious of whether you are designing by habit (“this is what I always do here&#8230;”) or whether you are actually applying the most fitting solution to the problem at hand.</p>

	<p>References:</p>

	<ol>
		<li>On the interplay of forces and design solutions: <a href="http://www.amazon.com/Notes-Synthesis-Form-Harvard-Paperbacks/dp/0674627512/ref=sr_1_1?ie=UTF8&qid=1332784466&sr=8-1">Notes on the Synthesis of Form</a> (Amazon)</li>
		<li>My talk on the design process as the resolution of conflicting forces: <a href="http://vimeo.com/10875362">http://vimeo.com/10875362</a></li>
		<li>Christopher Alexander’s original book on patterns: <a href="http://www.amazon.com/Pattern-Language-Buildings-Construction-Environmental/dp/0195019199">A Pattern Language</a> (Amazon)</li>
	</ol>]]></description>
           <pubDate>Mon, 26 Mar 2012 00:00:00 -0500</pubDate>
        </item>

        <item>
           <title>Advice for product managers</title>
           <link>http://feltpresence.com/articles/14-advice-for-product-managers</link>
           <guid>http://feltpresence.com/articles/14-advice-for-product-managers</guid>
           <description><![CDATA[	<p>I received an email the other day from a fellow asking for help defining a product management &#8220;philosophy&#8221; or &#8220;process&#8221; at his company. I wasn&#8217;t sure I would be able to help, but once I started typing a lot of information came out. </p>

	<p>I&#8217;m reposting my response here in case it&#8217;s useful to other software product managers who are trying to define their role and improve their process.</p>

	<p><strong>What is product management?</strong></p>

	<p>&#8220;Managing the product&#8221; means deciding what we do to the product and then making it happen.</p>

	<p>When you unpack that, it involves strategy (what is important to do?), resources (how much time can we spend on it?), managing development (what do we need to build in order to do it?), managing experience (how will it look and work, how does it integrate into what we already have?). And all of it with regard to the bottom line of the business. Given a strategy, resources we have, a user experience bar to uphold &#8212; given all that, what can we do and why is it worth doing?</p>

	<p><strong>Defining units of work</strong></p>

	<p>In order to manage this, we have to be able to break our ideas and efforts down into manageable projects. I try to find ways to define any effort in a &lt; 2 week chunk. If there&#8217;s truly a lot to do, like a complicated new feature or a big change, I&#8217;ll try to break up the work into orthogonal or serial pieces that can be done in separate &lt; 2 week chunks.</p>

	<p>A core skill with defining units of work is being able to understand dependency in the design and code. What can we change without affecting other things? What can we change that creates the improvement we want while staying isolated within known boundaries?</p>

	<p>In other words, you don&#8217;t want to start working on something and realize it opens cans of worms and affects everything else. You have to be able to draw a line around what you are doing and say &#8220;we will change this but not that.&#8221; For this, it is very helpful if you can think like a programmer. This is a good programmer&#8217;s expertise &#8212; the interdependence and interfaces between parts. If you aren&#8217;t a programmer, have a programmer with you when you try to define chunks of work so you can be secure about the boundaries on the code side.</p>

	<p><strong>Deciding what to do</strong></p>

	<p>I try to lead every decision with user experience. What is the user-facing situation we want to change? Or if the motivation isn&#8217;t because of a user benefit, but a pure business reason &#8212; what is the impact on the user, and how can we align incentives so this at minimum makes sense to the user? This is critical.</p>

	<p>The other thing is &#8230; often in software the thing we <strong>think</strong> we want to do isn&#8217;t actually the right thing. We have to imagine what we want, or stakeholders imagine what they want, and then it all sounds good &#8212; until you actually build it and try it. So it is critical to be skeptical of your own ideas and lead with design. Mock ups, stub prototypes, etc, that give you some first-hand experience of what it&#8217;s like to use the new thing.</p>

	<p><strong>Design &amp; development process</strong></p>

	<p>How can design lead the process? On my teams designers go as far as they can to build real working templates against a mock back-end and then the programmers connect the dots behind the scenes. This way we have the maximum confidence about what we are building before investing programmer time.</p>

	<p>Once the process is started, and programmers are implementing, we don&#8217;t bite off too much at once. We want to design one thing, implement it, and then see it in action. The design -&gt; program -&gt; review cycle is critical and it works best when it is a small and tight cycle. </p>

	<p>Throughout the design -&gt; program -&gt; review cycle, it&#8217;s important to focus on <em>flows</em> not individual screens. No interface or piece of software is in a vacuum. People got to it from somewhere else, trying to do something. And after they do it, they go somewhere else. The more you can think of terms of <a href="http://feltpresence.com/articles/13-thinking-of-interfaces-as-sets-of-jobs">sequences of action</a> instead of static elements, the better. A flow is a better review target than an element or screen.</p>

	<p>On my projects, programmers and designers work on the same code-base. Both have the app running locally on their machines. This is critical in my view.</p>

	<p>One more point on development process. While design leads, they aren&#8217;t immune to feedback from development. If the programmers say something is hard or annoying, that should be a factor weighing in the design decision. It&#8217;s not a hierarchy with design purely on top. Rather it&#8217;s a <a href="http://www.quora.com/Internet-Startups/Should-I-focus-on-a-good-user-experience-or-push-something-out-quick/answer/Ryan-Singer">path-dependent process</a>, where the two alternate feedback, but it <em>starts</em> with design and the final evaluation is on the side of customer experience.</p>

	<p><strong>Communication and management</strong></p>

	<p>I like to create a Basecamp project for each iteration. I cluster the tasks around reviewable targets. By &#8220;reviewable target&#8221; I mean, if we checked off all these things on the list, it would bring us to a point where we can evaluate the result. </p>

	<p>For example, if you had a list of &#8220;programming&#8221; todos and a list of &#8220;design&#8221; todos, you never know when you are at a point for review. But if on the other hand you had one todo list for &#8220;signup form&#8221;, and it needed both design and implementation, when the items are all checked you can load the signup form and evaluate whether the work was done well or not, and where to go next.</p>

	<p>I&#8217;ve had good success with a daily status message, where each person posts at the end of the day anything important that they accomplished. It is async, so you don&#8217;t waste time on a status meeting. And it gives a sense of accomplishment/celebration at the end of the day.</p>

	<p><strong>&#8220;Done&#8221;</strong></p>

	<p>One of the best words you can internalize is &#8220;<a href="http://en.wikipedia.org/wiki/Satisficing">satisfice</a>&#8220; &#8212; in other words, &#8220;done enough&#8221; given a certain goal. There is no absolute measure of &#8220;done.&#8221; It&#8217;s up to you to decide, because all projects can go on forever. The best way to determine when you are done is to again lead with design, where the function of design is to reach a solution to a problem. When the problem is no longer a big enough problem to matter, you are done.</p>

	<p>Like when you have a headache. If you don&#8217;t take enough painkiller, it doesn&#8217;t get better. But if you take too much, not only is the headache gone, but you&#8217;ve gone past that and you&#8217;re floating up in the clouds. It&#8217;s easy to keep improving on something past the point of customer value.</p>

	<p>I hope this overview touches on the many sides of product management and gives you a sense of the major themes that lead to good results.</p>]]></description>
           <pubDate>Tue, 20 Mar 2012 00:00:00 -0500</pubDate>
        </item>

        <item>
           <title>Thinking of interfaces as sets of jobs</title>
           <link>http://feltpresence.com/articles/13-thinking-of-interfaces-as-sets-of-jobs</link>
           <guid>http://feltpresence.com/articles/13-thinking-of-interfaces-as-sets-of-jobs</guid>
           <description><![CDATA[	<p>What is at the core of an interface design? I think of the design not as a collection of screens or buttons or pixels, but as a collection of jobs that the user wants to do. In this article I want to give you a feeling for how to think of interfaces as made up of jobs, each with a beginning, middle and end.</p>

	<p>Shifting our focus from visual concerns like pixels and proportions to the jobs an interface should do helps us articulate the function of each element on screen. We can differentiate elements that make the possibility of a job known and offer the means of performing it. For example a button that says “Post a message” is the entry point for that job. We can further identify elements involved with intermediate steps of a job, or that indicate a job was completed, or suggest other jobs that the user might want to perform next.</p>

<p style="margin: 20px 0 20px -121px;"><img src="http://feltpresence.com/images/figures/11292011-single_jobs.png" alt="Concrete and abstract jobs" /></p>

	<p>We can think about whether a job is performed in one stroke (“delete the file”) or if it requires intermediate steps or extra information to be completed (“rename the file”). In the former case, the action will be immediately followed by elements on the screen that communicate that the job has finished and what the result was. In the case of intermediate steps, elements on the screen communicate whatever further work should  be done in order to perform the job. For example a print dialog asks which of two available printers to use. It could also be that no further information is needed, but the job cannot be completed instantly, and so the interface communicates to the user an intermediate state where the software is working via a spinner.</p>

	<p><strong>Break jobs up into beginning, middle and end</strong></p>

	<p>From all of these examples we can see generally that jobs may have a beginning, a middle, and an end. This is a useful segmentation. It gives the designer a way to think at the same time about what the user is trying to do and what the interface should look like at each phase of the job. Thus ’jobs’ as units of design extend in the dimension of the screen as pixels and also extend through the dimension of time as processes. They are more fundamental than both.</p>

	<p>Having understood jobs as processes that simultaneously  specify user intentions and screen elements, it becomes possible to describe the design problem in an interesting way. We can distinguish two classes of design problems, a simpler one and a more complicated one. First are those problems where we know exactly what job the user is trying to perform, at what time, and under what conditions. Second, and more complicated, are those where we know a set of possible jobs the user might want to perform, but we don&#8217;t actually know which particular job they want among that set.</p>

	<p><strong>A one-job interface</strong></p>

	<p>An example of the simple one-job case is a machine for paying a parking garage ticket by credit card. There is one possible sequence of steps (we can imagine such a simple version), and every user who approaches the interface approaches it with the exact same intention: to transform an unpaid ticket into a paid ticket so they may be allowed to leave the garage. A designer making an interface for this machine basically has an optimization problem: how to take users from point A to point B with maximum clarity and the fewest points of friction possible.</p>

	<p><strong>Many jobs on the same screen</strong></p>

	<p>To understand the second kind of problem where a set of jobs is known but not which particular job, consider a smartphone home screen. When the user unlocks their phone, what are they trying to do? They might want to make a phone call, or check for new emails, write a text message, search for an address, or many other things. In a case like this the designer’s problem is to design not only the individual jobs, but also a portal of job possibilities. Many alternate jobs are presented as potential processes that have not yet begun. The user identifies these possibilities and uses affordances in the interface to enter into one of them. They tap &#8216;Mail&#8217;, wait while the software checks for new messages over the network, and then see a handful of messages appear. Beginning, middle and end. Having checked for mail and found new messages, the user again rests at a portal of possibilities. Would they like to read one of the messages? To mark one as spam? To compose a new message? To check a different mail account? Or leave the Mail app and do something else entirely?</p>

	<p><strong>First order and second order job problems</strong></p>

	<p><img src="http://feltpresence.com/images/figures/11292011-four_beginnings.png" alt="Multiple jobs" style="float: right; margin: 20px 0 20px 20px" /></p>

<p style="margin-right: 200px;">If you’re technically minded, you could call these “first order” and “second order” design problems. On the first order, we’re designing one job so that the beginning, middle, and end are all clear and frictionless. On the second order, we offer multiple job options at once. We’re not only designing individual job flows but also figuring out how multiple jobs can share space on the same screen, how the jobs are related, where users will look to find one versus another, which job a user will want to perform after the present one is finished and so on.</p>

	<p><img src="http://feltpresence.com/images/figures/11292011-multiple_jobs.png" alt="Four beginnings" style="float: left; margin: 30px 0 20px 0" /></p>

<p style="margin-left: 192px;">A web designer might consider these second-order problems “navigation” problems, but that makes it too easy to fall into unconscious patterns. We often assume that “navigation” is a necessary ingredient because we don&#8217;t understand the fundamental problems of offering and relating jobs to the user. As a result we fall back without thinking on patterns like tabs, nav bars, and collections of links. Focusing on the jobs and their beginning, middle and end helps us to think about what the interface really needs to do for the user instead of which patterns are the most worn and comfortable in our hand.</p>

	<p><strong>Putting jobs to work</strong></p>

	<p>How do these ideas apply to everyday work? On the first order, focusing on jobs helps us to identify each element in an interface as part of a process. We can ask of each element not only “why is this here?” but also “how did the user get here?” and “what will come next?” Is each element a stumbling block or a smooth step on the way? Looking for the beginning, middle and end of each process helps us remember to set clear expectations, remove friction from flows, and show clear results and effects when the job is done.</p>

	<p>On the second order, we can become sensitive to priority and hierarchy in an interface by looking at how jobs coexist and compete on the same screen. Four links treated equally suggest the designer could only call even 25% odds on the job you want to perform. On the other hand a big button with a small link below makes a statement about which job the designer thinks you want to do (or what they wish you would do in the case of a checkout process.)</p>

	<p>As interface designers, it’s important that we not only put buttons and text together, but that we put them in the right place, at the right size, in the right moment at the right time. These decisions are only partly visual and partly artistic. At their core should be an understanding of what jobs the interface fulfills and how those jobs intertwine in both the product and the users’ lives.</p>

	<p>&#8212;</p>

<p style="font-size: 0.9em;">Related: <a href="https://peepcode.com/products/ryan-singer-ux">Part One of my PeepCode video</a> includes a number of segments where I talk to Geoffrey about the beginning, middle and end of each task. You might like to check it out for real life examples of jobs in the design process.</p>]]></description>
           <pubDate>Tue, 29 Nov 2011 00:00:00 -0600</pubDate>
        </item>

        <item>
           <title>Watch me sketch and code a UI from scratch on PeepCode</title>
           <link>http://feltpresence.com/articles/12-watch-me-sketch-and-code-a-ui-from-scratch-on-peepcode</link>
           <guid>http://feltpresence.com/articles/12-watch-me-sketch-and-code-a-ui-from-scratch-on-peepcode</guid>
           <description><![CDATA[	<p>Last month the folks from PeepCode visited the 37signals office and asked to record my design process. Geoffrey told me not to prepare anything. He said he&#8217;d show up with a sample problem and simply record whatever I did with it. The result is two 75-minute videos (<a href="https://peepcode.com/products/ryan-singer-ux">Part One</a>, <a href="http://peepcode.com/products/ryan-singer-ii">Part Two</a>) that show my thought process step-by-step, starting with paper sketches and then moving on to <span class="caps">HTML</span>/CSS.</p>

	<p>The hard thing about demonstrating design is the sample problem. The problem should be simple enough that the details don&#8217;t bog down the audience, but complicated enough that you run into real-life conflicts and constraints.</p>

	<p>Fortunately Geoffrey picked a really good sample domain. He asked me to design a UI for picking the top five finishers out of 200 participants in a pro bicycling race. The task was rich and interesting enough that we spent the first 75 minutes purely sketching and analyzing the approach.</p>

	<p>The first video, <a href="https://peepcode.com/products/ryan-singer-ux">Part One</a>, covers the sketching process. A lot of good material came out of this section, including:</p>

<ul>
<li>How to tackle a UI problem by dividing it into tasks that each have a beginning, middle and end</li>
<li>How to use sketching as a response to uncertainty, and when to stop sketching and move on to <span class="caps">HTML</span></li>
<li>How to focus on the most natural solution so that people will intuitively grasp a design</li>
<li>How to focus your design process on conflicts and friction points, attacking them one by one until the design works</li>
</ul>

	<p>This video also gave me a chance to explain the UI design process through an analogy to software testing. Kent Beck&#8217;s <a href="http://www.amazon.com/Test-Driven-Development-Kent-Beck/dp/0321146530">Test-Driven Development</a> had a huge influence on me, and I&#8217;ve always had trouble explaining the connection. In both videos I continually refer to setting up &#8220;tests&#8221; &mdash; specific things in the design that aren&#8217;t working or aren&#8217;t resolved &mdash; and then design against those tests until they &#8220;pass&#8221; (that is, until the problem goes away). This loose analogy articulates that tricky and hard-to-pin-down process where a designer continually moves their focus among pieces of a problem and along the way settles conflicts step-by-step in a constructive sequence.</p>

	<p>I think the process will be interesting to both designers and coders. Designers can compare the process to their own, while coders can use the analogies to software testing to see design as an extension of concepts they already know.</p>

	<p>In the second video, <a href="http://peepcode.com/products/ryan-singer-ii">Part Two</a>, I take the sketches and ideas from the first session and build them out in <span class="caps">HTML</span> and <span class="caps">CSS</span>. Along the way I dip in and out of Photoshop, explaining the time and place for each tool.</p>

	<p>Part Two especially focuses on getting quick results in the browser. I sketch out dom elements, give them classes to communicate their purpose, and  gradually decorate them with inline styles until the design comes together in the browser.</p>

	<p>I would prefer videos like this to be free. But Geoffrey came up with the idea and his PeepCode team did all the hard work. I just showed up one Friday morning for a couple hours of design practice. So if the material is useful to you I encourage you to support their effort and buy the videos at $12/each.</p>

	<p>Here are the links:</p>

<ol>
<li><a href="https://peepcode.com/products/ryan-singer-ux">PeepCode Play by Play: Ryan Singer Part One</a></li>
<li><a href="http://peepcode.com/products/ryan-singer-ii">PeepCode Play by Play: Ryan Singer Part Two</a></li>
</ol>

	<p>There&#8217;s also a <a href="https://peepcode.com/products/ryan-singer-ux">10 minute preview</a> on the Part One page.</p>

	<p>I hope this material is useful to you and welcome your comments here.</p>]]></description>
           <pubDate>Sun, 16 Oct 2011 00:00:00 -0500</pubDate>
        </item>

        <item>
           <title>Identifying conflicts in a UI design</title>
           <link>http://feltpresence.com/articles/10-identifying-conflicts-in-a-ui-design</link>
           <guid>http://feltpresence.com/articles/10-identifying-conflicts-in-a-ui-design</guid>
           <description><![CDATA[	<p>When I&#8217;m working on a UI design I look for things that are wrong. I have to do that because there’s no checklist of things that are &#8216;right&#8217; that make a perfect product. You can&#8217;t check a requirements list and say “Yep, everything&#8217;s there!” and conclude that you made a good design. You have to look at the design itself and hunt around for problems: things that cause friction, things that aren&#8217;t clear, things that take too long, things that break expectations.</p>

	<p>These conflicts are the heart of design. If we could just pile features one on top of the other, we wouldn’t have to do design. Design is what you do when piling elements onto each other doesn&#8217;t work. It’s the process of identifying and resolving conflicts.</p>

	<p>There are three main areas of conflict that I look for when I’m working on a design:</p>

	<p><strong>1. The Domain</strong></p>

	<p>The first area of conflict is in the so-called “domain.” The domain is your encyclopedia of knowledge about what the user wants to do and how they see the world. Suppose you’re designing a product for a hotel front desk. What is the first thing the check-in staff cares about when a guest arrives? What kind of information does the staff need to record before the hotel can release the room? What words does the staff use to talk about their job? What do the words “booking,” “reservation” or “customer” mean to them? When I&#8217;m diagnosing a problem in an interface I always check my domain understanding first. If the screen isn&#8217;t trying to solve the right problem for the user or if it&#8217;s not speaking to them in their language, the other fixes below won&#8217;t help.</p>

	<p><strong>2. The Eyes and Brain</strong></p>

	<p>A second area of conflict is with the users eyes and brain. Regardless of which domain you are working in, the eyes have certain ways of scanning the screen,  responding to contrast, interpreting spatial relations and so on. Words are easy to see at the start of a line but hard to find in the middle of a paragraph. A bright red button is easy to spot and a tiny grey footnote easy to ignore. It’s not enough for the right features to be included in the screen&#8217;s layout; they have to be presented in the right way so they jump out and make sense to the user&#8217;s eye and brain.</p>

	<p><strong>3. The Implementation</strong></p>

	<p>The third area of conflict is the implementation. Our choices in the design determine whether it’ll be easy or difficult to build, how it will perform, and how the feature can change over time. A giant high-rez background image might be beautiful, but it may also take too long to load. Setting privacy permissions on records and mixing them in a combined view might be good from the interface point of view but slow to query and difficult to cache. Network latency, browser version, and your choice of programming language can all introduce conflicts at the implementation level.</p>

	<p>These three areas &#8212; the domain, the eye/brain, and the implementation &#8212; intertwine with each other. A single element may have conflicts in one area or all three at the same time. Much of the work designing interfaces involves teasing apart these conflicts in order to solve the right problem. Is the action correct, but it&#8217;s too hard to find? That&#8217;s a conflict with the eye/brain. Is the screen clear and simple but it doesn&#8217;t show the right information? That&#8217;s a conflict with the domain. Does it take too long to get feedback from a common action? That might be an implementation problem.</p>

	<p>Try to see if these distinctions help you to untangle the conflicts the next time you are working on an interface. I&#8217;d be curious to hear if they are useful for you.</p>]]></description>
           <pubDate>Fri, 09 Sep 2011 00:00:00 -0500</pubDate>
        </item>

        <item>
           <title>What happens to user experience in a minimum viable product?</title>
           <link>http://feltpresence.com/articles/9-what-happens-to-user-experience-in-a-minimum-viable-product</link>
           <guid>http://feltpresence.com/articles/9-what-happens-to-user-experience-in-a-minimum-viable-product</guid>
           <description><![CDATA[	<p>I gave a talk at <a href="http://www.meetup.com/Refresh-Chicago/events/15970783/">Refresh Chicago</a> last week, and afterwards a fellow came up to me with a question. He does UI on a team of mostly engineers, and the engineers are big fans of the &#8220;Minimum Viable Product&#8221; concept. <span class="caps">MVP</span>, if you aren&#8217;t familiar, is an idea from the Lean Startup scene. In a nutshell, it means to do as little as possible so you can learn if you did the right thing or not. The fellow who approached me after the talk was having a problem with <span class="caps">MVP</span>. It seemed like their product suffered from bad experience holes. Their team was trying to do the minimum possible to ship, but their definition of minimum didn&#8217;t include things like a smooth way to reset your password. Things like password-reset were &#8220;never important enough&#8221;, so they languished as swamps of bad experience among the dry hills of minimally viable features.</p>

	<p>Does the minimum-viable approach lead to gaps in the user experience? It doesn&#8217;t have to. There&#8217;s a distinction to make: The set of features you choose to build is one thing. The level you choose to execute at is another. You can decide whether or not to include a feature like &#8216;reset password&#8217;. But if you decide to do it, you should live up to a basic standard of execution on the experience side.</p>

	<p>Features can be different sizes with more or less complexity, but the quality of experience should be constant across all features. That constant quality of experience is what gives your customers trust. It demonstrates to them that whatever you build, you build well.</p>

	<p>I like to <a href="http://www.feltpresence.com/articles/5-visualizing-a-products-ui-and-code-layers">visualize software</a>. Here&#8217;s an intuition that works for me. Feature complexity is like surface area and quality of execution is like height.</p>

<p style="text-align: center;"><img src="http://feltpresence.com/images/figures/06262011-features_as_surface_area.png" alt="Features as surface area and execution quality as height" /></p>

	<p>I want a base level of quality execution across all features. Whenever I commit to building or expanding a feature, I&#8217;m committing to a baseline of effort on the user experience. That way feature complexity &#8212; scope &#8212; is always the cost multiplier, not user experience. There aren&#8217;t debates about experience or how far to take it. The user experience simply has to be up to base standard in order to ship, no matter how trimmed down the feature is.</p>

	<p>Minimum viable products are about learning what you need to build. They are matters of surface area. Whatever minimal feature set you decide to build, you can decide to build it properly. That commitment to quality at every step is the way to keep customers with you as you work upward from minimally viable to featureful and beyond.</p>]]></description>
           <pubDate>Sun, 26 Jun 2011 00:00:00 -0500</pubDate>
        </item>
    </channel>
</rss>
