{"action":"created","comment":{"url":"https://api.github.com/repos/okta/okta.github.io/pulls/comments/181192704","pull_request_review_id":111754805,"id":181192704,"diff_hunk":"@@ -0,0 +1,103 @@\n+---\n+layout: blog_post\n+title: \"How to Expand Your UX to a New Audience\"\n+author: adahl\n+tags: [design, okta, ux, process]\n+tweets:\n+  - \"How do you expand your UX to a new audience? Here's how we did it at Okta.\"\n+  - \"Designing for different types of users is hard. Here’s how to take it step by step.\"\n+  - \"What's going on inside the minds of your designers? Take a peek at how one of ours worked through a project.\"\n+---\n+\n+\n+As your business grows, you’ll probably reach a point where you need to grow your audience as well. Not just acquire more customers in your target segment, but expand to more segments and new types of customers. How do you adapt your product to your new audience? How do you avoid a \"least common denominator\" solution that isn’t great for anyone?\n+\n+At Okta, we faced these questions when [the Stormpath team joined](https://www.okta.com/blog/2017/03/stormpath-welcome-to-Okta/) the company last year. The Okta Identity Cloud is a complex enterprise platform that was designed for IT administrators who manage employee identity. As a product designer who joined Okta from Stormpath, I faced a big challenge. How could we ensure a great experience for an additional audience: developers building customer identity into their apps?\n+\n+I had previous experience pivoting to different audiences at other startups, where we kept the core product while replacing who it was for. But at Okta, this wasn’t a pivot: we needed to provide great experiences for multiple audiences with very different perspectives and use cases. And we needed to solve this as new hires on a team going through big changes.\n+\n+\n+## Set Expectations Within Your Design Team\n+\n+**Get buy-in from your team, and support from management.** This is a big project.\n+\n+While Okta’s executives had clearly made this a priority, I was worried that individual team members might see us as outsiders or resist doing things differently. Thankfully, everyone was open to new ideas and focused on delivering the best experience for our users.\n+\n+The designer working on developer experience before me, Shawn, gave a great handoff and encouraged me to find my own paths.\n+\n+> \"In design, there are usually multiple ways to tackle a problem, and it can constrain the new person's creativity and problem solving if they need to run with the decisions made before them. I think our best work, and ultimately the best solution for our users, comes out when designers have the freedom to explore and try many solutions.\" –Shawn Gupta, Product Design Architect at Okta\n+\n+With an open road ahead of you, adding a new audience can feel a lot like starting over. You have to [figure out what to build](https://www.invisionapp.com/blog/how-do-you-decide-what-to-build/): what does your audience need?\n+\n+But it’s different than doing it from scratch. **Don’t throw out the good stuff.** Your team learned a lot building for your existing audience, and you had good reasons behind what was designed before. Be prepared to investigate which of those reasons are also relevant to the new audience. If nothing you’ve done still makes sense, do you have the right audience?\n+\n+\n+## Understand Your Audience\n+\n+**Research, research, research.** Application developers were a different audience for Okta, so our design team had already started user interviews and usability testing before I arrived. The team that joined from Stormpath had a lot of institutional knowledge, but it wasn’t well-documented.\n+\n+One of my first activities was to codify and consolidate everything we knew about our audience into our team wiki. Segments, personas, use cases, success criteria, peer companies – it’s all in one place for anyone in the company to reference.  I maintain this documentation today as a living document and guiding star.\n+\n+\n+## Analyze What Exists Today\n+\n+**Survey your current landscape.** What’s the experience currently like? \n+\n+We did an inventory of all current features, and documented all the touchpoints where developers would interact with Okta. This is more than just UIs – for us it includes email campaigns, technical documentation, even how people sign up and pay.\n+\n+What features are missing? What needs to change for your new audience? How is their mental model different?\n+\n+Crucially, **what can be the same for both audiences?** If it ain’t broke, don’t fix it. When flagging a problem for our new audience, we also evaluated if our existing audience would benefit from improvements in that area.\n+\n+\n+## Explore and Execute\n+\n+Now you’ve identified problems you need to solve. It might be a lot, but take them one at a time. **What are different ways you could solve these challenges?**\n+\n+A big challenge for us was to decide on an overall architecture. Could we evolve a single experience to work for both audiences? Or would we need to develop completely separate products optimized for each audience? There was no clear answer, but a lot of tradeoffs.\n+\n+From a user perspective, we ultimately decided to fork into two separate products. IT customers continue use our existing admin UI, while developers sign in to a [new developer console](https://developer.okta.com/blog/2017/09/25/all-new-developer-console). The flows, information architecture, and branding are designed to serve each audience’s specific needs. But under the hood, both products are in a single codebase and share many components and views.\n+\n+With a core architecture decided, it’s time to go to work. While special concerns will keep coming up, it’s mostly your normal design process. **Make sure to stay agile**, and not get stalled in the search for something perfect. We needed to move very quickly, so our goal was to ideate and converge with a bias toward velocity.\n+\n+{% img blog/how-to-expand-your-ux-to-a-new-audience/dribbble-dev-dashboard-exploration.png alt:\"Okta's dev dashboard exploration\" %}{: .center-image }\n+\n+*([Some of our exploration](https://dribbble.com/shots/3805509-Okta-Developer-Dashboard-Exploration) for a new developer dashboard.)*\n+\n+\n+## Validate Your New UX\n+\n+**Don’t forget to keep researching.** Are the decisions you’re making actually going to work?\n+\n+Even though we were moving fast, we made sure to test our hypotheses. Through moderated usability tests with an Invision prototype, we got real feedback from potential customers before we shipped. We learned some things were really successful, and other things weren’t.\n+\n+Based on what we learned, we made a number of changes before our first release. Other problems needed more time to dig in deeper, so we documented additional issues to improve upon later.\n+\n+\n+## Ship It!\n+\n+To keep the feedback cycle going, ship as soon as you can. Maybe that’s a small beta, or maybe it’s a big release. In our case, we were privileged to have a major conference demo.\n+\n+> \"I wasn’t expecting applause just for showing the developer dashboard, but","path":"_source/_posts/2018-04-12-how-to-expand-your-ux-to-a-new-audience.md","position":81,"original_position":81,"commit_id":"60032dc3640f7cbd5438bd3a273c68ab23b012e7","original_commit_id":"60032dc3640f7cbd5438bd3a273c68ab23b012e7","user":{"login":"mraible","id":17892,"avatar_url":"https://avatars3.githubusercontent.com/u/17892?v=4","gravatar_id":"","url":"https://api.github.com/users/mraible","html_url":"https://github.com/mraible","followers_url":"https://api.github.com/users/mraible/followers","following_url":"https://api.github.com/users/mraible/following{/other_user}","gists_url":"https://api.github.com/users/mraible/gists{/gist_id}","starred_url":"https://api.github.com/users/mraible/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mraible/subscriptions","organizations_url":"https://api.github.com/users/mraible/orgs","repos_url":"https://api.github.com/users/mraible/repos","events_url":"https://api.github.com/users/mraible/events{/privacy}","received_events_url":"https://api.github.com/users/mraible/received_events","type":"User","site_admin":false},"body":"mdash recommended","created_at":"2018-04-12T19:15:13Z","updated_at":"2018-04-12T19:16:32Z","html_url":"https://github.com/okta/okta.github.io/pull/1953#discussion_r181192704","pull_request_url":"https://api.github.com/repos/okta/okta.github.io/pulls/1953","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/okta/okta.github.io/pulls/comments/181192704"},"html":{"href":"https://github.com/okta/okta.github.io/pull/1953#discussion_r181192704"},"pull_request":{"href":"https://api.github.com/repos/okta/okta.github.io/pulls/1953"}}},"pull_request":{"url":"https://api.github.com/repos/okta/okta.github.io/pulls/1953","id":181292301,"html_url":"https://github.com/okta/okta.github.io/pull/1953","diff_url":"https://github.com/okta/okta.github.io/pull/1953.diff","patch_url":"https://github.com/okta/okta.github.io/pull/1953.patch","issue_url":"https://api.github.com/repos/okta/okta.github.io/issues/1953","number":1953,"state":"open","locked":false,"title":"Adding New Article","user":{"login":"rdegges","id":90247,"avatar_url":"https://avatars2.githubusercontent.com/u/90247?v=4","gravatar_id":"","url":"https://api.github.com/users/rdegges","html_url":"https://github.com/rdegges","followers_url":"https://api.github.com/users/rdegges/followers","following_url":"https://api.github.com/users/rdegges/following{/other_user}","gists_url":"https://api.github.com/users/rdegges/gists{/gist_id}","starred_url":"https://api.github.com/users/rdegges/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rdegges/subscriptions","organizations_url":"https://api.github.com/users/rdegges/orgs","repos_url":"https://api.github.com/users/rdegges/repos","events_url":"https://api.github.com/users/rdegges/events{/privacy}","received_events_url":"https://api.github.com/users/rdegges/received_events","type":"User","site_admin":false},"body":"Can someone please sanity check this PR and merge it ASAP? We're trying to launch this article today. Ping @mraible ","created_at":"2018-04-12T18:45:26Z","updated_at":"2018-04-12T19:16:32Z","closed_at":null,"merged_at":null,"merge_commit_sha":"b7274dc7af80eca78d6d15e7dcf08e48b07b9eed","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/okta/okta.github.io/pulls/1953/commits","review_comments_url":"https://api.github.com/repos/okta/okta.github.io/pulls/1953/comments","review_comment_url":"https://api.github.com/repos/okta/okta.github.io/pulls/comments{/number}","comments_url":"https://api.github.com/repos/okta/okta.github.io/issues/1953/comments","statuses_url":"https://api.github.com/repos/okta/okta.github.io/statuses/60032dc3640f7cbd5438bd3a273c68ab23b012e7","head":{"label":"okta:new-article","ref":"new-article","sha":"60032dc3640f7cbd5438bd3a273c68ab23b012e7","user":{"login":"okta","id":362460,"avatar_url":"https://avatars1.githubusercontent.com/u/362460?v=4","gravatar_id":"","url":"https://api.github.com/users/okta","html_url":"https://github.com/okta","followers_url":"https://api.github.com/users/okta/followers","following_url":"https://api.github.com/users/okta/following{/other_user}","gists_url":"https://api.github.com/users/okta/gists{/gist_id}","starred_url":"https://api.github.com/users/okta/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/okta/subscriptions","organizations_url":"https://api.github.com/users/okta/orgs","repos_url":"https://api.github.com/users/okta/repos","events_url":"https://api.github.com/users/okta/events{/privacy}","received_events_url":"https://api.github.com/users/okta/received_events","type":"Organization","site_admin":false},"repo":{"id":10953058,"name":"okta.github.io","full_name":"okta/okta.github.io","owner":{"login":"okta","id":362460,"avatar_url":"https://avatars1.githubusercontent.com/u/362460?v=4","gravatar_id":"","url":"https://api.github.com/users/okta","html_url":"https://github.com/okta","followers_url":"https://api.github.com/users/okta/followers","following_url":"https://api.github.com/users/okta/following{/other_user}","gists_url":"https://api.github.com/users/okta/gists{/gist_id}","starred_url":"https://api.github.com/users/okta/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/okta/subscriptions","organizations_url":"https://api.github.com/users/okta/orgs","repos_url":"https://api.github.com/users/okta/repos","events_url":"https://api.github.com/users/okta/events{/privacy}","received_events_url":"https://api.github.com/users/okta/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/okta/okta.github.io","description":"Okta Identity Platform API Docs and Developer Home","fork":false,"url":"https://api.github.com/repos/okta/okta.github.io","forks_url":"https://api.github.com/repos/okta/okta.github.io/forks","keys_url":"https://api.github.com/repos/okta/okta.github.io/keys{/key_id}","collaborators_url":"https://api.github.com/repos/okta/okta.github.io/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/okta/okta.github.io/teams","hooks_url":"https://api.github.com/repos/okta/okta.github.io/hooks","issue_events_url":"https://api.github.com/repos/okta/okta.github.io/issues/events{/number}","events_url":"https://api.github.com/repos/okta/okta.github.io/events","assignees_url":"https://api.github.com/repos/okta/okta.github.io/assignees{/user}","branches_url":"https://api.github.com/repos/okta/okta.github.io/branches{/branch}","tags_url":"https://api.github.com/repos/okta/okta.github.io/tags","blobs_url":"https://api.github.com/repos/okta/okta.github.io/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/okta/okta.github.io/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/okta/okta.github.io/git/refs{/sha}","trees_url":"https://api.github.com/repos/okta/okta.github.io/git/trees{/sha}","statuses_url":"https://api.github.com/repos/okta/okta.github.io/statuses/{sha}","languages_url":"https://api.github.com/repos/okta/okta.github.io/languages","stargazers_url":"https://api.github.com/repos/okta/okta.github.io/stargazers","contributors_url":"https://api.github.com/repos/okta/okta.github.io/contributors","subscribers_url":"https://api.github.com/repos/okta/okta.github.io/subscribers","subscription_url":"https://api.github.com/repos/okta/okta.github.io/subscription","commits_url":"https://api.github.com/repos/okta/okta.github.io/commits{/sha}","git_commits_url":"https://api.github.com/repos/okta/okta.github.io/git/commits{/sha}","comments_url":"https://api.github.com/repos/okta/okta.github.io/comments{/number}","issue_comment_url":"https://api.github.com/repos/okta/okta.github.io/issues/comments{/number}","contents_url":"https://api.github.com/repos/okta/okta.github.io/contents/{+path}","compare_url":"https://api.github.com/repos/okta/okta.github.io/compare/{base}...{head}","merges_url":"https://api.github.com/repos/okta/okta.github.io/merges","archive_url":"https://api.github.com/repos/okta/okta.github.io/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/okta/okta.github.io/downloads","issues_url":"https://api.github.com/repos/okta/okta.github.io/issues{/number}","pulls_url":"https://api.github.com/repos/okta/okta.github.io/pulls{/number}","milestones_url":"https://api.github.com/repos/okta/okta.github.io/milestones{/number}","notifications_url":"https://api.github.com/repos/okta/okta.github.io/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/okta/okta.github.io/labels{/name}","releases_url":"https://api.github.com/repos/okta/okta.github.io/releases{/id}","deployments_url":"https://api.github.com/repos/okta/okta.github.io/deployments","created_at":"2013-06-25T23:22:38Z","updated_at":"2018-04-12T18:56:38Z","pushed_at":"2018-04-12T19:12:14Z","git_url":"git://github.com/okta/okta.github.io.git","ssh_url":"git@github.com:okta/okta.github.io.git","clone_url":"https://github.com/okta/okta.github.io.git","svn_url":"https://github.com/okta/okta.github.io","homepage":"http://developer.okta.com/","size":278108,"stargazers_count":40,"watchers_count":40,"language":"HTML","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":114,"mirror_url":null,"archived":false,"open_issues_count":25,"license":null,"forks":114,"open_issues":25,"watchers":40,"default_branch":"source"}},"base":{"label":"okta:source","ref":"source","sha":"85a1f1f83ac2da8467ad0b9e5374baccc04963fd","user":{"login":"okta","id":362460,"avatar_url":"https://avatars1.githubusercontent.com/u/362460?v=4","gravatar_id":"","url":"https://api.github.com/users/okta","html_url":"https://github.com/okta","followers_url":"https://api.github.com/users/okta/followers","following_url":"https://api.github.com/users/okta/following{/other_user}","gists_url":"https://api.github.com/users/okta/gists{/gist_id}","starred_url":"https://api.github.com/users/okta/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/okta/subscriptions","organizations_url":"https://api.github.com/users/okta/orgs","repos_url":"https://api.github.com/users/okta/repos","events_url":"https://api.github.com/users/okta/events{/privacy}","received_events_url":"https://api.github.com/users/okta/received_events","type":"Organization","site_admin":false},"repo":{"id":10953058,"name":"okta.github.io","full_name":"okta/okta.github.io","owner":{"login":"okta","id":362460,"avatar_url":"https://avatars1.githubusercontent.com/u/362460?v=4","gravatar_id":"","url":"https://api.github.com/users/okta","html_url":"https://github.com/okta","followers_url":"https://api.github.com/users/okta/followers","following_url":"https://api.github.com/users/okta/following{/other_user}","gists_url":"https://api.github.com/users/okta/gists{/gist_id}","starred_url":"https://api.github.com/users/okta/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/okta/subscriptions","organizations_url":"https://api.github.com/users/okta/orgs","repos_url":"https://api.github.com/users/okta/repos","events_url":"https://api.github.com/users/okta/events{/privacy}","received_events_url":"https://api.github.com/users/okta/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/okta/okta.github.io","description":"Okta Identity Platform API Docs and Developer Home","fork":false,"url":"https://api.github.com/repos/okta/okta.github.io","forks_url":"https://api.github.com/repos/okta/okta.github.io/forks","keys_url":"https://api.github.com/repos/okta/okta.github.io/keys{/key_id}","collaborators_url":"https://api.github.com/repos/okta/okta.github.io/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/okta/okta.github.io/teams","hooks_url":"https://api.github.com/repos/okta/okta.github.io/hooks","issue_events_url":"https://api.github.com/repos/okta/okta.github.io/issues/events{/number}","events_url":"https://api.github.com/repos/okta/okta.github.io/events","assignees_url":"https://api.github.com/repos/okta/okta.github.io/assignees{/user}","branches_url":"https://api.github.com/repos/okta/okta.github.io/branches{/branch}","tags_url":"https://api.github.com/repos/okta/okta.github.io/tags","blobs_url":"https://api.github.com/repos/okta/okta.github.io/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/okta/okta.github.io/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/okta/okta.github.io/git/refs{/sha}","trees_url":"https://api.github.com/repos/okta/okta.github.io/git/trees{/sha}","statuses_url":"https://api.github.com/repos/okta/okta.github.io/statuses/{sha}","languages_url":"https://api.github.com/repos/okta/okta.github.io/languages","stargazers_url":"https://api.github.com/repos/okta/okta.github.io/stargazers","contributors_url":"https://api.github.com/repos/okta/okta.github.io/contributors","subscribers_url":"https://api.github.com/repos/okta/okta.github.io/subscribers","subscription_url":"https://api.github.com/repos/okta/okta.github.io/subscription","commits_url":"https://api.github.com/repos/okta/okta.github.io/commits{/sha}","git_commits_url":"https://api.github.com/repos/okta/okta.github.io/git/commits{/sha}","comments_url":"https://api.github.com/repos/okta/okta.github.io/comments{/number}","issue_comment_url":"https://api.github.com/repos/okta/okta.github.io/issues/comments{/number}","contents_url":"https://api.github.com/repos/okta/okta.github.io/contents/{+path}","compare_url":"https://api.github.com/repos/okta/okta.github.io/compare/{base}...{head}","merges_url":"https://api.github.com/repos/okta/okta.github.io/merges","archive_url":"https://api.github.com/repos/okta/okta.github.io/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/okta/okta.github.io/downloads","issues_url":"https://api.github.com/repos/okta/okta.github.io/issues{/number}","pulls_url":"https://api.github.com/repos/okta/okta.github.io/pulls{/number}","milestones_url":"https://api.github.com/repos/okta/okta.github.io/milestones{/number}","notifications_url":"https://api.github.com/repos/okta/okta.github.io/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/okta/okta.github.io/labels{/name}","releases_url":"https://api.github.com/repos/okta/okta.github.io/releases{/id}","deployments_url":"https://api.github.com/repos/okta/okta.github.io/deployments","created_at":"2013-06-25T23:22:38Z","updated_at":"2018-04-12T18:56:38Z","pushed_at":"2018-04-12T19:12:14Z","git_url":"git://github.com/okta/okta.github.io.git","ssh_url":"git@github.com:okta/okta.github.io.git","clone_url":"https://github.com/okta/okta.github.io.git","svn_url":"https://github.com/okta/okta.github.io","homepage":"http://developer.okta.com/","size":278108,"stargazers_count":40,"watchers_count":40,"language":"HTML","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":114,"mirror_url":null,"archived":false,"open_issues_count":25,"license":null,"forks":114,"open_issues":25,"watchers":40,"default_branch":"source"}},"_links":{"self":{"href":"https://api.github.com/repos/okta/okta.github.io/pulls/1953"},"html":{"href":"https://github.com/okta/okta.github.io/pull/1953"},"issue":{"href":"https://api.github.com/repos/okta/okta.github.io/issues/1953"},"comments":{"href":"https://api.github.com/repos/okta/okta.github.io/issues/1953/comments"},"review_comments":{"href":"https://api.github.com/repos/okta/okta.github.io/pulls/1953/comments"},"review_comment":{"href":"https://api.github.com/repos/okta/okta.github.io/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/okta/okta.github.io/pulls/1953/commits"},"statuses":{"href":"https://api.github.com/repos/okta/okta.github.io/statuses/60032dc3640f7cbd5438bd3a273c68ab23b012e7"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"mraible"}}