{"id":3747,"date":"2016-10-13T14:57:23","date_gmt":"2016-10-13T13:57:23","guid":{"rendered":"https:\/\/marvel7077.wpengine.com\/?p=3747"},"modified":"2020-11-05T15:18:40","modified_gmt":"2020-11-05T15:18:40","slug":"ooux","status":"publish","type":"post","link":"https:\/\/marvelapp.com\/blog\/ooux\/","title":{"rendered":"Object-Oriented UX"},"content":{"rendered":"<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">In June 2012, while working at CNN.com, I was tasked with designing the user experience of election night. The next five months of my life would be dedicated to that single night\u2014but success to me had nothing to do with who won. I was concerned with findability, data visualization, a shape-shifting canvas, and how the hell mouse-over flyouts were going to work on an iPhone. For the first time in history, CNN.com was releasing a responsive experience. And, for the first time in history, I was going to design a responsive experience.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">The stakes were high. Election night is like Super Bowl Sunday for CNN.com. If well executed, it\u2019s one of the highest revenue nights in a four-year cycle. To add to the pressure, we were on a tight timeline with a deadline that was not going to budge. November 6th or bust.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">Then I learned that the first development sprint kicked off in four days. Four days?! My project manager calmly told me, \u201cDon\u2019t worry. The devs only need one template for the first sprint. While they are building the first template, you can move on to the next.\u201d<\/p>\n<blockquote class=\"pageWrap pageWrap--s position-relative marginTopBottom-l breakPointM-marginTopBottom-xl\"><div class=\"blog-quote-before position-absolute bg-marvel\"><\/div><div class=\"tweet-quote blog-quote-after position-absolute bg-marvel cursor-pointer transitionDuration-l transitionProperty-all transitionTimingFunction-cv-easeOutCircular scaleUp--hover zi-weak\"><svg class=\"fill-white opacity-0 pointerEvents-none position-absolute pinCenter transitionProperty-all transitionTimingFunction-easeInOut\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"24\" height=\"20\" viewBox=\"0 0 24 20\"><path d=\"M24,2.37a9.64,9.64,0,0,1-2.83.79A5,5,0,0,0,23.34.37a9.72,9.72,0,0,1-3.13,1.23A4.86,4.86,0,0,0,16.62,0a5,5,0,0,0-4.8,6.2A13.87,13.87,0,0,1,1.67.92,5.13,5.13,0,0,0,3.19,7.67,4.81,4.81,0,0,1,1,7a5,5,0,0,0,3.95,5,4.82,4.82,0,0,1-2.22.09,4.94,4.94,0,0,0,4.6,3.51A9.72,9.72,0,0,1,0,17.73,13.69,13.69,0,0,0,7.55,20c9.14,0,14.31-7.92,14-15A10.17,10.17,0,0,0,24,2.37Z\"\/><\/svg><\/div><p class=\"blog-quote position-relative textAlign-center c-marvel\"><span class=\"blog-quote-text transitionDuration-l transitionProperty-all transitionTimingFunction-easeInOut\">\"Huh? How was I supposed to design a cog in a machine without first roughing out the design of the machine?\"<\/p><\/span><\/blockquote>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">Thinking myopically worked okay when we were designing in pages on fixed screen sizes; we could get away with quilting together pieces designed in silos. I was pretty clueless about responsive design, but I did know that we\u2019d need a clean and simple system, not pages strung together. And as all engineers and designers know, the more moving parts in a system, the more opportunities for disaster.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">So during those first four days, I did not wireframe one disconnected template. Instead, I blocked out a holistic system made of reusable, interchangeable parts. Here\u2019s what it looked like:<\/p>\n<div id=\"attachment_3748\" style=\"width: 706px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3748\" class=\"size-full wp-image-3748\" src=\"https:\/\/marvel7077.wpengine.com\/wp-content\/uploads\/2016\/10\/Proposed-election-night.jpg\" alt=\"proposed-election-night\" width=\"696\" height=\"392\" srcset=\"https:\/\/marvelapp.com\/wp-content\/uploads\/2016\/10\/Proposed-election-night.jpg 696w, https:\/\/marvelapp.com\/wp-content\/uploads\/2016\/10\/Proposed-election-night-600x338.jpg 600w\" sizes=\"auto, (max-width: 696px) 100vw, 696px\" \/><p id=\"caption-attachment-3748\" class=\"wp-caption-text\">The diagram of the proposed election night experience I first presented to the CNN.com team.<\/p><\/div>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">I presented this diagram to a conference room of stakeholders who expected to review a single \u201cfinished\u201d template. I demonstrated that I had reduced the number of components and templates compared to our 2008 design, and that the new system was simple enough to fit on one 8.5 \u00d7 11 sheet of paper! Thankfully, a critical mass of people in the room saw the value of what I presented: less stuff to build.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">The diagram I churned out in 2012 was far from perfect, mostly in that I was trying to do too much too soon. I jumped the gun on implementation, blocking out flyouts and bar graphs. I was still thinking desktop-first, worrying about <em>positioning<\/em>, as opposed to <em>prioritization<\/em>. I packed in a premature homepage, a cover sheet for the experience (which I would now design <em>last<\/em>). I took a stab at persistent top-level navigation, instead of focusing on the content modules first.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">Although imperfect, the spirit of the diagram, and the thinking behind it, hit a chord with me. It wasn\u2019t a sitemap; it showed no hierarchy. It wasn\u2019t a storyboard; it didn\u2019t block out a task flow. Instead, this diagram mapped out a system of things. And it changed the way I do UX.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">Stripping away interaction, persistent navigation, homepage, and layout, here\u2019s the diagram that I would have created then if I knew what I know now, showing a system of three objects: <a class=\"link link--blue fontWeight-4\"href=\"http:\/\/edition.cnn.com\/election\/2012\/results\/state\/TN\/\" target=\"_blank\" rel=\"noopener noreferrer\">States<\/a>, <a class=\"link link--blue fontWeight-4\"href=\"http:\/\/edition.cnn.com\/election\/2012\/results\/race\/senate\/\" target=\"_blank\" rel=\"noopener noreferrer\">Races<\/a>, and <a class=\"link link--blue fontWeight-4\"href=\"http:\/\/edition.cnn.com\/election\/2012\/results\/state\/TN\/senate\/\" target=\"_blank\" rel=\"noopener noreferrer\">State-Race Results<\/a>.<\/p>\n<div id=\"attachment_3749\" style=\"width: 706px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3749\" class=\"size-full wp-image-3749\" src=\"https:\/\/marvel7077.wpengine.com\/wp-content\/uploads\/2016\/10\/Election-night-sketch-now.png\" alt=\"election-night-sketch-if-designed-today\" width=\"696\" height=\"642\" srcset=\"https:\/\/marvelapp.com\/wp-content\/uploads\/2016\/10\/Election-night-sketch-now.png 696w, https:\/\/marvelapp.com\/wp-content\/uploads\/2016\/10\/Election-night-sketch-now-600x553.png 600w\" sizes=\"auto, (max-width: 696px) 100vw, 696px\" \/><p id=\"caption-attachment-3749\" class=\"wp-caption-text\">How I\u2019d present the election night experience if I were designing it today.<\/p><\/div>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">It worked: our responsive election night turned out to be the Super Bowl Sunday CNN executives hoped for. But we did it by the skin of our teeth, working late nights and weekends to make sure the design performed on a myriad of devices. I\u2019m not sure we could have pulled it off with a design any more complex.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">Today, I\u2019ve evolved this trial-by-fire experience into a proven, structured object-based process. In this article, I will introduce object-oriented UX, share my process of object mapping, and help you start doing it yourself.<\/p>\n<h2 class=\"pageWrap pageWrap--s marginTop-xl marginBottom-l c-black lineHeight-xl fontSize-xl fontWeight-5 breakPointM-lineHeight-xxl breakPointM-fontSize-xxl\" style=\"margin-left: auto; margin-right: auto;\">Mobile first, content first, and objects first<\/h2>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\"><em><span class=\"long-quote\">\"Always separate thinking about real-world things from the documents which describe those things. Resource before representation.\" - <a class=\"link link--blue fontWeight-4\"href=\"http:\/\/www.slideshare.net\/reduxd\/modeling-structured-content-ias13-workshop\" target=\"_blank\" rel=\"noopener noreferrer\">Mike Atherton<\/a><\/span><\/em><\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">It took me about about a year to retrain myself to truly think <a class=\"link link--blue fontWeight-4\"href=\"http:\/\/www.lukew.com\/resources\/mobile_first.asp\" target=\"_blank\" rel=\"noopener noreferrer\">mobile first<\/a>, but today, I do so even when designing desktop-only software applications. To me, mobile first simply means forced prioritization. It means think about layout later. Start with a single column \u201cdesign\u201d (also known as a list), and force yourself to prioritize content and functionality with sequential ranking.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">This approach dovetails nicely with the concept of content first: <a class=\"link link--blue fontWeight-4\"href=\"https:\/\/adactio.com\/journal\/4523\" target=\"_blank\" rel=\"noopener noreferrer\">\u201ccontent-out design\u201d as opposed to \u201ccanvas-in\u201d design<\/a>. You have to know what you\u2019re saying before you can prioritize it.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">Sometimes, this means having real-deal copy first\u2014particularly when you\u2019re working on a site with a critical mass of evergreen or instructional copy that can be organized, prioritized, analyzed, and updated before design work begins.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">But if you are working on a site that is 99 percent <em>instantiated<\/em> objects (news articles, products, campaigns, donations), there\u2019s no way to build a complete copy deck up front\u2014or ever. Instead of prioritizing actual copy, I have to think in objects.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">That\u2019s OOUX: putting object design before procedural action design, and thinking about a system through the lens of the real-world objects in a user\u2019s mental model (products, tutorials, locations), not digital-world actions (search, filter, compare, check out). We determine the actions after first defining the objects, as opposed to the traditional actions-first process that jumps straight into flows, interactions, and features.<\/p>\n<h2 class=\"pageWrap pageWrap--s marginTop-xl marginBottom-l c-black lineHeight-xl fontSize-xl fontWeight-5 breakPointM-lineHeight-xxl breakPointM-fontSize-xxl\" style=\"margin-left: auto; margin-right: auto;\">OOUX is powerful<\/h2>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">Newsflash! This is how your backend engineers work. In the \u201980s, the software engineering community began to transition from procedural languages to object-oriented languages, which have benefits like code reuse, data encapsulation, and easier software maintenance. Most programmers bring your designs to life using object-oriented languages like Java, Ruby, Python, C++ or C#.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">Engineers start their process by mapping out the objects that make up the problem domain\u2014something UXers should be doing from day one. When they look at your wireframes or prototypes, they first reverse-engineer your design to parse out the objects. They think, \u201cHow will object X talk to object Y? Will object A be made up of lots of object <em>Bs<\/em>? Which attributes will each object have? Will this class of objects inherit from that class of objects?\u201d<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">On the web, we develop object-orientedly, but still design procedurally, focusing on drill-down hierarchy or linear task flows. But there\u2019s another option. In his 1995 book, <a class=\"link link--blue fontWeight-4\"href=\"https:\/\/www.amazon.com\/Designing-Object-Oriented-Interfaces-Addison-Wesley-Technology\/dp\/080535350X\/ref=sr_1_1?s=books&amp;ie=UTF8&amp;qid=1441640610&amp;sr=1-1&amp;keywords=designing+object+oriented+user+interfaces\" target=\"_blank\" rel=\"noopener noreferrer\">Designing Object Oriented User Interfaces<\/a>, designer and engineer Dave Collins argues that basing both front-end and backend design on object-oriented principles \u201cbrings coherence to the software development process. Object-orientation reveals deep structural correspondences between the artifacts of analysis, design, and implementation.\u201d<\/p>\n<blockquote class=\"pageWrap pageWrap--s position-relative marginTopBottom-l breakPointM-marginTopBottom-xl\"><div class=\"blog-quote-before position-absolute bg-marvel\"><\/div><div class=\"tweet-quote blog-quote-after position-absolute bg-marvel cursor-pointer transitionDuration-l transitionProperty-all transitionTimingFunction-cv-easeOutCircular scaleUp--hover zi-weak\"><svg class=\"fill-white opacity-0 pointerEvents-none position-absolute pinCenter transitionProperty-all transitionTimingFunction-easeInOut\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"24\" height=\"20\" viewBox=\"0 0 24 20\"><path d=\"M24,2.37a9.64,9.64,0,0,1-2.83.79A5,5,0,0,0,23.34.37a9.72,9.72,0,0,1-3.13,1.23A4.86,4.86,0,0,0,16.62,0a5,5,0,0,0-4.8,6.2A13.87,13.87,0,0,1,1.67.92,5.13,5.13,0,0,0,3.19,7.67,4.81,4.81,0,0,1,1,7a5,5,0,0,0,3.95,5,4.82,4.82,0,0,1-2.22.09,4.94,4.94,0,0,0,4.6,3.51A9.72,9.72,0,0,1,0,17.73,13.69,13.69,0,0,0,7.55,20c9.14,0,14.31-7.92,14-15A10.17,10.17,0,0,0,24,2.37Z\"\/><\/svg><\/div><p class=\"blog-quote position-relative textAlign-center c-marvel\"><span class=\"blog-quote-text transitionDuration-l transitionProperty-all transitionTimingFunction-easeInOut\">\"Defining objects that mimic the mental model of your users provides a scaffolding for team communication.\"<\/p><\/span><\/blockquote>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">It gives you a shared language. On top of team cohesion, designing object-orientedly can also help you:<\/p>\n<ul class=\"pageWrap pageWrap--s list list--unordered marginBottom-l lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">\n<li>match your user\u2019s mental model, improving their experience<\/li>\n<li>ensure simplicity, reducing any accidental complexity due to extraneous design elements<\/li>\n<li>grow and maintain your product: objects can be iterated on without affecting the rest of the system and new objects can be gracefully folded in (as opposed to tacking on features)<\/li>\n<li>build better APIs with portable, independent objects<br \/>\nget SEO brownie points from structured content and valuable cross-linking<\/li>\n<\/ul>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">Then, there\u2019s my favorite justification: OOUX helps you bake in more-crucial-than-ever contextual navigation. In other words, it helps users get to content through content.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">Persistent navigation might be hidden, hamburgered out of sight when a user is on a small screen. But even on 17-inch monitor, the most beautiful pinned-to-the-top navigation might still get ignored. When a user visits a site for the first time, they often gravitate to the big shiny objects, using the navigation or search bar only as a backup plan. As <a class=\"link link--blue fontWeight-4\"href=\"https:\/\/www.linkedin.com\/in\/valeriejencks\" target=\"_blank\" rel=\"noopener noreferrer\">Val Jencks<\/a> neatly summed up, \u201cWe go to content on the page first. The top navigation is the fire escape.\u201d<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">If a user is reading a recipe, where might they want to go next? We should anticipate how they might want to explore based on the recipe they are reading, and not leave it up to them to peck through a hierarchical menu or come up with a search term. And we certainly should not leave them with a few \u201crelated recipes\u201d and consider our work done. They might want to see all the recipes that the chef has posted. Or maybe they want to see more recipes that use swiss chard, pivoting by ingredient?<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">If we are thinking object-orientedly, we will <em>experiment<\/em> with ways that each object might relate to other objects, looking beyond the obvious. Maybe chefs have favorite ingredients? In the object-oriented design below, a user can continually explore instances of these three objects (recipe, chef, ingredient) without ever hitting a dead end. The content is the navigation, and it\u2019s all in context.<\/p>\n<div id=\"attachment_3751\" style=\"width: 706px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3751\" class=\"size-full wp-image-3751\" src=\"https:\/\/marvel7077.wpengine.com\/wp-content\/uploads\/2016\/10\/Object-model.png\" alt=\"object-model\" width=\"696\" height=\"430\" srcset=\"https:\/\/marvelapp.com\/wp-content\/uploads\/2016\/10\/Object-model.png 696w, https:\/\/marvelapp.com\/wp-content\/uploads\/2016\/10\/Object-model-600x371.png 600w\" sizes=\"auto, (max-width: 696px) 100vw, 696px\" \/><p id=\"caption-attachment-3751\" class=\"wp-caption-text\">In this object model, recipes, chefs, and ingredients are interconnected, allowing continuous exploration.<\/p><\/div>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">If this concept feels familiar, you\u2019ve probably read about or practiced content modeling. In the past five years, many information architects (see <a class=\"link link--blue fontWeight-4\"href=\"http:\/\/www.slideshare.net\/reduxd\/modeling-structured-content-ias13-workshop\" target=\"_blank\" rel=\"noopener noreferrer\">Mike Atherton\u2019s work<\/a> ) and content strategists (see <a class=\"link link--blue fontWeight-4\"href=\"http:\/\/alistapart.com\/article\/content-modelling-a-master-skill\" target=\"_blank\" rel=\"noopener noreferrer\">Rachel Lovinger\u2019s work<\/a>) have started focusing on systems of reusable content types, and becoming more involved in the design of CMSes: the content creator, not just the end-user, is a primary user.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">In her book <a class=\"link link--blue fontWeight-4\"href=\"http:\/\/rosenfeldmedia.com\/books\/content-everywhere\/\" target=\"_blank\" rel=\"noopener noreferrer\">Content Everywhere<\/a>, Sara Wachter-Boettcher encourages us to model our content before diving into wireframes and interaction design:<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\"><em><span class=\"long-quote\">\"Content modeling gives you systematic knowledge; it allows you to see what types of content you have, which elements they include, and how they operate in a standardized way.\"<\/span><\/em><\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">Unfortunately, the art of content modeling is still unfamiliar to many UX designers, who hear \u201ccontent\u201d and assume it doesn\u2019t apply to them. This is especially true for UXers who deal with software as a service or product design: strategies involving content sometimes fall on deaf ears.<\/p>\n<h2 class=\"pageWrap pageWrap--s marginTop-xl marginBottom-l c-black lineHeight-xl fontSize-xl fontWeight-5 breakPointM-lineHeight-xxl breakPointM-fontSize-xxl\" style=\"margin-left: auto; margin-right: auto;\">Object mapping<\/h2>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">Object mapping, my process behind OOUX, is content modeling for designers who do not deal with content in the traditional sense, but still need to design systems\u2014and not just <a class=\"link link--blue fontWeight-4\"href=\"http:\/\/bradfrost.com\/blog\/post\/atomic-web-design\/\" target=\"_blank\" rel=\"noopener noreferrer\">systems of <em>implementation<\/em><\/a>. While a tight collection of reusable templates and modules is invaluable, those design patterns don\u2019t hold meaning for a user unless they\u2019re backed by a system of real-world objects that matches that user\u2019s mental model. Focus first on designing the system of real-world objects, then on designing a system of implementation to bring it all to life. This is the linchpin of all my design work, because it transforms goals into an executable system that meets those goals.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">Get out your sticky notes, grab your team, and clear some wall space\u2014I\u2019d like to walk you through my process.<\/p>\n<h3 class=\"pageWrap pageWrap--s marginTop-l marginBottom-m c-black lineHeight-xl fontSize-xl fontWeight-5\">STEP 1: EXTRACT OBJECTS FROM GOALS<\/h3>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">One of my favorite perks of object mapping is that it provides a perfect bridge from goals to design. Instead of haphazardly whiteboarding <em>A Beautiful Mind<\/em>-style, object mapping provides a neat framework to move from strategy to design. (Please continue to go all <a class=\"link link--blue fontWeight-4\"href=\"https:\/\/en.wikipedia.org\/wiki\/John_Forbes_Nash_Jr.\" target=\"_blank\" rel=\"noopener noreferrer\">John Nash<\/a> at the whiteboard, but create an object map first. It will give your wild creativity a solid foothold.)<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">As an example, let\u2019s say we are building an application to help home improvement brands connect to DIYers. After user interviews, a competitive analysis, and discussions with stakeholders, we have our brief:<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\"><em>Give DIYers an outlet to post their home improvement challenges, soliciting potential solutions from product companies (brands). DIYers get expert solutions to their challenges and brands get exposure.<\/em><\/p>\n<ul class=\"pageWrap pageWrap--s list list--unordered marginBottom-l lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">\n<li>DIYers can search and browse existing challenges, commenting on the proposed solutions.<\/li>\n<li>Brands can search and browse for open challenges that might be a good fit for one of their products.<\/li>\n<li>Brands can create solutions that feature one or more of their products.<\/li>\n<li>DIYers can close a challenge after a solution has been chosen, and later follow-up on how well the solution worked.<\/li>\n<li>Brands can create a library of solutions that can be reused on various challenges.<\/li>\n<\/ul>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">To extract the objects, we basically highlight the nouns.<\/p>\n<div id=\"attachment_3752\" style=\"width: 706px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3752\" class=\"size-full wp-image-3752\" src=\"https:\/\/marvel7077.wpengine.com\/wp-content\/uploads\/2016\/10\/Highlighting-the-nouns.jpg\" alt=\"highlighting-the-nouns\" width=\"696\" height=\"383\" srcset=\"https:\/\/marvelapp.com\/wp-content\/uploads\/2016\/10\/Highlighting-the-nouns.jpg 696w, https:\/\/marvelapp.com\/wp-content\/uploads\/2016\/10\/Highlighting-the-nouns-600x330.jpg 600w\" sizes=\"auto, (max-width: 696px) 100vw, 696px\" \/><p id=\"caption-attachment-3752\" class=\"wp-caption-text\">Highlighting the nouns in our project brief is the first step to mapping our objects.<\/p><\/div>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">Recognizing nouns is first-grade simple, but extracting objects does require some subtle art:<\/p>\n<ul class=\"pageWrap pageWrap--s list list--unordered marginBottom-l lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">\n<li>We pay special attention to nouns that keep popping up, like <em>challenge<\/em> and <em>solution<\/em>. Those will be important objects.<\/li>\n<li>We ignore the abstract noun <em>exposure<\/em>, as this describes a fluffy concept we hope will emerge from our system, not a tangible object that will be part of our system.<\/li>\n<li>We ignore <em>library<\/em> because this is simply a collection of other objects <em>(solutions)<\/em>. Watch out for words like <em>calendar<\/em>, <em>catalog<\/em>, or <em>map<\/em>. These are usually just fancy list-views of the core object: an <em>event<\/em>, <em>product<\/em>, or <em>location<\/em>, respectively. For example, most systems that deal with locations will have a single (perhaps filterable) map view. The map is a design mechanism, not an object itself.<\/li>\n<li>We infer an object from two actions: \u201ccommenting on\u201d and \u201cfollowing up.\u201d Obviously, we will need some sort of <em>comment<\/em> object.<\/li>\n<li>We note that a <em>challenge<\/em> object needs multiple states: posted, in progress, closed, and closed with feedback.<\/li>\n<\/ul>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">From this 10- to 15-minute exercise, we have the main building blocks of our system. Let\u2019s write each object on a blue sticky.<\/p>\n<div id=\"attachment_3761\" style=\"width: 706px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3761\" class=\"size-full wp-image-3761\" src=\"https:\/\/marvel7077.wpengine.com\/wp-content\/uploads\/2016\/10\/stickynotes.png\" alt=\"stickynotes\" width=\"696\" height=\"169\" srcset=\"https:\/\/marvelapp.com\/wp-content\/uploads\/2016\/10\/stickynotes.png 696w, https:\/\/marvelapp.com\/wp-content\/uploads\/2016\/10\/stickynotes-600x146.png 600w\" sizes=\"auto, (max-width: 696px) 100vw, 696px\" \/><p id=\"caption-attachment-3761\" class=\"wp-caption-text\">We write each object on its own sticky note to visualize the building blocks of our system.<\/p><\/div>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">Next, we need to define what the objects are made of.<\/p>\n<h3 class=\"pageWrap pageWrap--s marginTop-l marginBottom-m c-black lineHeight-xl fontSize-xl fontWeight-5\">STEP 2: DEFINE CORE CONTENT OF OBJECTS<\/h3>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\"><span class=\"long-quote\"><em>Content modeling requires you to simultaneously understand your goals at the highest level and get intimate with your content\u2019s most minute attributes. - Sara Wachter-Boettcher, Content Everywhere<\/em><\/span><\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">Quite. We just determined the macro building blocks of our system, and now we must determine the most granular elements of each. This activity is often reserved for eleventh-hour detailed design, but defining elements while in the medium of sticky notes is liberating\u2014when you start sketching a little later on, you can focus on more creative aspects. Also, having early conversations about what makes up each object can help you avoid moments late in the game where an important element is left off (or extraneous) and the change needs to be made across several design documents.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">Most importantly, you can have conversations with your team such as, \u201cShould DIYers be able to add their budget onto a challenge?\u201d <em>before<\/em> non-designers are looking at <a class=\"link link--blue fontWeight-4\"href=\"https:\/\/marvelapp.com\/blog\/getting-started-wireframes\/\">wireframes<\/a> or layout. This helps keep conversations focused, rather than getting stuck on something like the icon for budget.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">At this point in the process, I separate two types of elements: core content and metadata. Core content, like text and images, goes on yellow stickies. Metadata\u2014any data that a user might sort or filter on\u2014I put on red stickies.<\/p>\n<div id=\"attachment_3762\" style=\"width: 706px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3762\" class=\"size-full wp-image-3762\" src=\"https:\/\/marvel7077.wpengine.com\/wp-content\/uploads\/2016\/10\/Elements-of-each-object.png\" alt=\"elements-of-each-object\" width=\"696\" height=\"522\" srcset=\"https:\/\/marvelapp.com\/wp-content\/uploads\/2016\/10\/Elements-of-each-object.png 696w, https:\/\/marvelapp.com\/wp-content\/uploads\/2016\/10\/Elements-of-each-object-600x450.png 600w\" sizes=\"auto, (max-width: 696px) 100vw, 696px\" \/><p id=\"caption-attachment-3762\" class=\"wp-caption-text\">The granular elements of each of our objects are mapped out with additional sticky notes.<\/p><\/div>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">If your team isn\u2019t sure about a potential piece of content, write it down anyway and just add a question mark. Move on and return to it later.<\/p>\n<h3 class=\"pageWrap pageWrap--s marginTop-l marginBottom-m c-black lineHeight-xl fontSize-xl fontWeight-5\">STEP 3: NEST OBJECTS FOR CROSS-LINKING<\/h3>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">And now the system comes alive. Do a series of thought experiments for each object. Starting with one object, consider ways that each of the other objects can \u201cnest\u201d inside that given object. As you nest objects, you are defining the relationships between them, and, implicitly, the contextual navigation as well. Using blue stickies, experiment with how each object might nest its other sibling objects.<\/p>\n<div id=\"attachment_3763\" style=\"width: 706px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3763\" class=\"size-full wp-image-3763\" src=\"https:\/\/marvel7077.wpengine.com\/wp-content\/uploads\/2016\/10\/Content-objects-.png\" alt=\"content-objects\" width=\"696\" height=\"522\" srcset=\"https:\/\/marvelapp.com\/wp-content\/uploads\/2016\/10\/Content-objects-.png 696w, https:\/\/marvelapp.com\/wp-content\/uploads\/2016\/10\/Content-objects--600x450.png 600w\" sizes=\"auto, (max-width: 696px) 100vw, 696px\" \/><p id=\"caption-attachment-3763\" class=\"wp-caption-text\">We finish out the model by adding sticky notes that show how other content objects can \u201cnest\u201d within each object.<\/p><\/div>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">For example, here\u2019s how that conversation might go for our <em>challenge<\/em> object:<\/p>\n<ul class=\"pageWrap pageWrap--s list list--unordered marginBottom-l lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">\n<li>DIYer: \u201cEasy, the DIYer is the author of the challenge.\u201d<\/li>\n<li>Solution: \u201cThis is the main nested object of a challenge. We need to show all solutions posted to this challenge.\u201d<\/li>\n<li>Brand: \u201cEh, not really? Brand will be a part of the solution modules (as an author of the solution), but probably not directly nested into a challenge.\u201d<\/li>\n<li>Product: \u201cAgain, part of a solution, not directly nested. Huh. Unless DIYers can post the products they already have at home?\u201d<\/li>\n<li>Comment: \u201cHmmm. Probably relegated to solution\u2026should we keep all commenting on the solution? Or should brands and DIYers perhaps be able to post questions directly to the challenge? We need to explore this more.\u201d<\/li>\n<\/ul>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">Note that not everything is figured out. Some items, like the commenting discussion, might be best resolved during sketching\u2014but you will be intentionally exploring an identified design problem, as opposed to that problem catching you by surprise.<\/p>\n<h3 class=\"pageWrap pageWrap--s marginTop-l marginBottom-m c-black lineHeight-xl fontSize-xl fontWeight-5\">STEP 4: FORCED RANKING<\/h3>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">Ugh. This is the most diabolically difficult step. In the prior steps, it\u2019s very important that you wrote each element and nested object on separate stickies. Why? Because now we need to reorder the elements, from most to least important.<\/p>\n<div id=\"attachment_3764\" style=\"width: 706px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3764\" class=\"size-full wp-image-3764\" src=\"https:\/\/marvel7077.wpengine.com\/wp-content\/uploads\/2016\/10\/Object-model-reordered-on-priority.png\" alt=\"object-model-reordered-on-priority\" width=\"696\" height=\"522\" srcset=\"https:\/\/marvelapp.com\/wp-content\/uploads\/2016\/10\/Object-model-reordered-on-priority.png 696w, https:\/\/marvelapp.com\/wp-content\/uploads\/2016\/10\/Object-model-reordered-on-priority-600x450.png 600w\" sizes=\"auto, (max-width: 696px) 100vw, 696px\" \/><p id=\"caption-attachment-3764\" class=\"wp-caption-text\">Our object model, reordered based on how important each element is.<\/p><\/div>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">This ordered list does not necessarily provide a direct representation of what will be at the top and the bottom of the screen. In design, priority might manifest in size or color. Low-priority content might be placed at the top of the screen, but in a collapsed panel (yay, progressive disclosure!). So reassure your team that we are simply prioritizing and not <em>designing<\/em>.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">While prioritizing, imagine which elements will be most important to your users. Which bits are must-have information and which are nice-to-have? When considering metadata, think about the most important sorting and filtering mechanisms. If the default sorting will be by \u201cpopularity,\u201d then \u201cnumber of DIYers who like this\u201d will be high priority.<\/p>\n<h2 class=\"pageWrap pageWrap--s marginTop-xl marginBottom-l c-black lineHeight-xl fontSize-xl fontWeight-5 breakPointM-lineHeight-xxl breakPointM-fontSize-xxl\" style=\"margin-left: auto; margin-right: auto;\">A new foundation and framework<\/h2>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">Now you have an object-based system derived straight from goals. But keep in mind that while this activity provides a foundation for designing an <em>implementation system<\/em>, interactions, and persistent navigation, it doesn\u2019t carve any decisions in stone. It\u2019s a first draft! As you iterate, objects and elements will be introduced, eliminated, and reprioritized. Your object map provides a framework for continued conversation and collaboration: with your client, your design team, and your developers.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">OOUX is not a new end-to-end process; it\u2019s a new ingredient to add to your current process. It adds clarity, simplicity, and cohesion\u2014to how you design, and to the products you release into the world.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\"><em>Reprinted with the permission of\u00a0<a class=\"link link--blue fontWeight-4\"href=\"http:\/\/alistapart.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">A List Apart<\/a>\u00a0and the author <a class=\"link link--blue fontWeight-4\"href=\"http:\/\/alistapart.com\/article\/object-oriented-ux\" target=\"_blank\" rel=\"noopener noreferrer\">Sophia Voychehovski<\/a>.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In June 2012, while working at CNN.com, I was tasked with designing the user experience of election night. The next five months of my life would be dedicated to that single night\u2014but success to me had nothing to do with who won. I was concerned with findability, data visualization, a shape-shifting canvas, and how the hell mouse-over flyouts were going&#8230; <a class=\"link link--blue fontWeight-4\" href=\"https:\/\/marvelapp.com\/blog\/ooux\/\">Read More &#65515;<\/a><\/p>\n","protected":false},"author":48,"featured_media":3839,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[499],"tags":[],"class_list":["post-3747","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ux"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v15.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<meta name=\"description\" content=\"Lessons from designing the user experience for CNN&#039;s 2012 election night. Sophia shares her experiences and runs through object-oriented UX (OOUX).\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/marvelapp.com\/blog\/ooux\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"OOUX (Object Oriented UX) Design for CNN Election Night\" \/>\n<meta property=\"og:description\" content=\"Lessons from designing the user experience for CNN&#039;s 2012 election night. Sophia shares her experiences and runs through object-oriented UX (OOUX).\" \/>\n<meta property=\"og:url\" content=\"https:\/\/marvelapp.com\/blog\/ooux\/\" \/>\n<meta property=\"og:site_name\" content=\"Marvel Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/marvelapp\" \/>\n<meta property=\"article:published_time\" content=\"2016-10-13T13:57:23+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-11-05T15:18:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/marvelapp.com\/wp-content\/uploads\/2016\/10\/stack.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1600\" \/>\n\t<meta property=\"og:image:height\" content=\"800\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@marvelapp\" \/>\n<meta name=\"twitter:site\" content=\"@marvelapp\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\">\n\t<meta name=\"twitter:data1\" content=\"13 minutes\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https:\/\/marvelapp.com\/blog\/#organization\",\"name\":\"Marvel\",\"url\":\"https:\/\/marvelapp.com\/blog\/\",\"sameAs\":[\"https:\/\/www.facebook.com\/marvelapp\",\"https:\/\/www.instagram.com\/marvelapp\/\",\"https:\/\/www.linkedin.com\/company\/marvel-app\/\",\"https:\/\/twitter.com\/marvelapp\"],\"logo\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/marvelapp.com\/blog\/#logo\",\"inLanguage\":\"en-GB\",\"url\":\"https:\/\/marvelapp.com\/wp-content\/uploads\/2018\/06\/Logo-Light.png\",\"width\":1605,\"height\":1130,\"caption\":\"Marvel\"},\"image\":{\"@id\":\"https:\/\/marvelapp.com\/blog\/#logo\"}},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/marvelapp.com\/blog\/#website\",\"url\":\"https:\/\/marvelapp.com\/blog\/\",\"name\":\"Marvel Blog\",\"description\":\"Ideas and words on user experience, design, collaboration and more\",\"publisher\":{\"@id\":\"https:\/\/marvelapp.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/marvelapp.com\/blog\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-GB\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/marvelapp.com\/blog\/ooux\/#primaryimage\",\"inLanguage\":\"en-GB\",\"url\":\"https:\/\/marvelapp.com\/wp-content\/uploads\/2016\/10\/stack.jpg\",\"width\":1600,\"height\":800,\"caption\":\"OOUX\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/marvelapp.com\/blog\/ooux\/#webpage\",\"url\":\"https:\/\/marvelapp.com\/blog\/ooux\/\",\"name\":\"OOUX (Object Oriented UX) Design for CNN Election Night\",\"isPartOf\":{\"@id\":\"https:\/\/marvelapp.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/marvelapp.com\/blog\/ooux\/#primaryimage\"},\"datePublished\":\"2016-10-13T13:57:23+00:00\",\"dateModified\":\"2020-11-05T15:18:40+00:00\",\"description\":\"Lessons from designing the user experience for CNN's 2012 election night. Sophia shares her experiences and runs through object-oriented UX (OOUX).\",\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/marvelapp.com\/blog\/ooux\/\"]}]},{\"@type\":\"Article\",\"@id\":\"https:\/\/marvelapp.com\/blog\/ooux\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/marvelapp.com\/blog\/ooux\/#webpage\"},\"author\":{\"@id\":\"https:\/\/marvelapp.com\/blog\/#\/schema\/person\/dcf35d7632b94ce740205356f865bd19\"},\"headline\":\"Object-Oriented UX\",\"datePublished\":\"2016-10-13T13:57:23+00:00\",\"dateModified\":\"2020-11-05T15:18:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/marvelapp.com\/blog\/ooux\/#webpage\"},\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/marvelapp.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/marvelapp.com\/blog\/ooux\/#primaryimage\"},\"articleSection\":\"User Experience\",\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/marvelapp.com\/blog\/ooux\/#respond\"]}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/marvelapp.com\/blog\/#\/schema\/person\/dcf35d7632b94ce740205356f865bd19\",\"name\":\"Sophia Voychehovski\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/marvelapp.com\/blog\/#personlogo\",\"inLanguage\":\"en-GB\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/80a49de344e0a36739e4ec050cf2613e9a7d2cf6f39b3774fedcbbdcf8c9a6f0?s=96&d=mm&r=g\",\"caption\":\"Sophia Voychehovski\"},\"description\":\"UX designer, Founder of Rewired, a UX design studio in Atlanta, consulting on nonprofits, social entrepreneurs, tech startups. Follow me on Twitter.\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","_links":{"self":[{"href":"https:\/\/marvelapp.com\/blog\/wp-json\/wp\/v2\/posts\/3747","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/marvelapp.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/marvelapp.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/marvelapp.com\/blog\/wp-json\/wp\/v2\/users\/48"}],"replies":[{"embeddable":true,"href":"https:\/\/marvelapp.com\/blog\/wp-json\/wp\/v2\/comments?post=3747"}],"version-history":[{"count":0,"href":"https:\/\/marvelapp.com\/blog\/wp-json\/wp\/v2\/posts\/3747\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/marvelapp.com\/blog\/wp-json\/wp\/v2\/media\/3839"}],"wp:attachment":[{"href":"https:\/\/marvelapp.com\/blog\/wp-json\/wp\/v2\/media?parent=3747"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/marvelapp.com\/blog\/wp-json\/wp\/v2\/categories?post=3747"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/marvelapp.com\/blog\/wp-json\/wp\/v2\/tags?post=3747"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}