User first! 前端的最後一塊拼圖

168
Maxis Kao | Oct. 26, 2016 > User First! 前端的最後塊拼圖

Transcript of User first! 前端的最後一塊拼圖

Page 1: User first! 前端的最後一塊拼圖

Maxis Kao | Oct. 26, 2016

> User First! 前端的最後⼀一塊拼圖

Page 2: User first! 前端的最後一塊拼圖

Maxis Kao

➔ Software Engineer at Yahoo

➔ Top Hack of Yahoo TW/JP Joint Hackday

➔ Winner of Yahoo Bot Challenge

Page 3: User first! 前端的最後一塊拼圖
Page 4: User first! 前端的最後一塊拼圖
Page 5: User first! 前端的最後一塊拼圖

前端⼯工程師的最後⼀一塊拼圖

Page 6: User first! 前端的最後一塊拼圖
Page 7: User first! 前端的最後一塊拼圖

• Development

• 優化開發環境 無料提升戰⾾鬥⼒力 (Oct. 19)

• Front-End

• 2016 前端⼯工程技術巡禮 (Aug. 10)

• Web Page Performance Optimization (Aug. 31)

• 2016 前端潮玩意兒 (Oct. 12)

• User Experience

• Data Driven UI Design (Aug. 24)

• Web Knowledge

• Backend

Page 8: User first! 前端的最後一塊拼圖

“科技始終來⾃自於⼈人性”

UX

Page 9: User first! 前端的最後一塊拼圖

傻傻分不清UI & UX

Page 10: User first! 前端的最後一塊拼圖

網路上

• What is the difference between UX and UI designer?

• What’s the difference between UI and UX?

• What type of education is needed to work professionally in UI/UX?

• UI vs UX: what’s the difference?

• The Difference Between UX and UI Design

Page 11: User first! 前端的最後一塊拼圖

• 使⽤用者介⾯面設計師-Game UI/UX

• UI/UX 使⽤用者介⾯面設計師

• UI/UX designer(使⽤用者經驗/介⾯面設計師)

• 使⽤用者經驗設計師 UX Designer

• 使⽤用者介⾯面設計師

求職

Page 12: User first! 前端的最後一塊拼圖
Page 13: User first! 前端的最後一塊拼圖

• UX Makes Interfaces Useful

• UI Makes Interfaces Beautiful

Page 14: User first! 前端的最後一塊拼圖

• UX Helps Users Accomplish Goals

• UI Makes Emotional Connections

Page 15: User first! 前端的最後一塊拼圖

• UX Design Is Done First

• UI Design Is Done Second

Page 16: User first! 前端的最後一塊拼圖

• UX Design Is Done First

• UI Design Is Done Second

Page 17: User first! 前端的最後一塊拼圖

• UX Is Employed Across Products, Interfaces And Services

• UI Only Pertains To Interfaces

Page 18: User first! 前端的最後一塊拼圖

• VD 把⼥女⽣生⾐衣服做得很漂亮

• UI 把⼥女⽣生⾐衣服層次穿搭的很潮

• UX “這位正妹是賽⾞車⼿手,給我蓬蓬裙幹嘛?”

Page 19: User first! 前端的最後一塊拼圖

⼼心路歷程UI & UX

Page 20: User first! 前端的最後一塊拼圖

⿊黑暗時期拜神祭天

Page 21: User first! 前端的最後一塊拼圖

⿊黑暗時期

• 卯起來找神器,想⼀一次殺到終極 BOSS

• “10 個平⾯面設計⽅方法讓你的作品創意⼗十⾜足”

• 瞻仰 Dribbble / Pinterest 上⼤大神作品

Page 22: User first! 前端的最後一塊拼圖

城堡時代⼈人類⽂文明的重要分⽔水嶺

Page 23: User first! 前端的最後一塊拼圖

城堡時代

• 擁 HTML / CSS ⾃自重

• 跟 F2E 溝通

• 從 prototype 到 real code

Page 24: User first! 前端的最後一塊拼圖

撞牆期⽂文藝復興,哲學反思

Page 25: User first! 前端的最後一塊拼圖

視覺之外回到⼈人本

Page 26: User first! 前端的最後一塊拼圖

> Stay focused“10 Usability Heuristics for User Interface Design”

Page 27: User first! 前端的最後一塊拼圖

潮.貳零壹陸UI & UX

Page 28: User first! 前端的最後一塊拼圖

RWD

Page 29: User first! 前端的最後一塊拼圖

Rear Wheel Drive

Page 30: User first! 前端的最後一塊拼圖

Responsive Web Design⾃自適應 / 響應式 網⾴頁設計

Page 31: User first! 前端的最後一塊拼圖
Page 32: User first! 前端的最後一塊拼圖
Page 33: User first! 前端的最後一塊拼圖
Page 34: User first! 前端的最後一塊拼圖

FLAT DESIGN

Page 35: User first! 前端的最後一塊拼圖

Q : “什麼是⾮非扁平? ”

Page 36: User first! 前端的最後一塊拼圖
Page 37: User first! 前端的最後一塊拼圖
Page 38: User first! 前端的最後一塊拼圖
Page 39: User first! 前端的最後一塊拼圖
Page 40: User first! 前端的最後一塊拼圖

2006 2016

Page 41: User first! 前端的最後一塊拼圖

2006 2016

Page 42: User first! 前端的最後一塊拼圖

回到設計的本質

Page 43: User first! 前端的最後一塊拼圖

colorn. ⾊色彩

Page 44: User first! 前端的最後一塊拼圖
Page 45: User first! 前端的最後一塊拼圖
Page 46: User first! 前端的最後一塊拼圖
Page 47: User first! 前端的最後一塊拼圖

Color Harmonies• Analogous

• Monochromatic

• Triad

• Complementary

• Compound

• Shades

Page 48: User first! 前端的最後一塊拼圖
Page 49: User first! 前端的最後一塊拼圖

fontn. 字體

Page 50: User first! 前端的最後一塊拼圖
Page 51: User first! 前端的最後一塊拼圖
Page 52: User first! 前端的最後一塊拼圖
Page 53: User first! 前端的最後一塊拼圖
Page 54: User first! 前端的最後一塊拼圖

Avenir Book Britannic Bold

Title Body

Page 55: User first! 前端的最後一塊拼圖

LOUIS VUITTON

LOUIS VUITTONComic Sans

Futura

Page 56: User first! 前端的最後一塊拼圖

MICROINTERACTIONS

Page 57: User first! 前端的最後一塊拼圖

Feature & Detail

Page 58: User first! 前端的最後一塊拼圖

Dan Saffer

Page 59: User first! 前端的最後一塊拼圖

It's All In The Detail魔⻤⿁鬼藏在細節裡

Page 60: User first! 前端的最後一塊拼圖

• Communicate feedback or the result of an action.

• Accomplish an individual task.

• Enhance the sense of direct manipulation.

• Help users visualize the results of their actions and prevent errors.

Details, for what?

Page 61: User first! 前端的最後一塊拼圖

7 個魔⻤⿁鬼1. System status

2. Highlight Changes

3. Keep Context

4. Non-Standard Layouts

5. Calls to Action

6. Visualize Input

7. Tutorials come alive

Page 62: User first! 前端的最後一塊拼圖

– Jakob Nielsen

“keep your user informed about what is going on”

1. System status

Page 63: User first! 前端的最後一塊拼圖
Page 64: User first! 前端的最後一塊拼圖

“Animation will attract their attention and not let users overlook what you think is important”

2. Highlight Changes

Page 65: User first! 前端的最後一塊拼圖
Page 66: User first! 前端的最後一塊拼圖

“keep clear navigation between different pages”

3. Keep Context

Page 67: User first! 前端的最後一塊拼圖
Page 68: User first! 前端的最後一塊拼圖

“interact with uncommon layouts without unnecessary confusion”

4. Non-Standard Layouts

Page 69: User first! 前端的最後一塊拼圖
Page 70: User first! 前端的最後一塊拼圖

“keep on browsing, like, or share content, just because it’s attractive and they don’t want to leave”

5. Call to Action

Page 71: User first! 前端的最後一塊拼圖
Page 72: User first! 前端的最後一塊拼圖

“turn boring process into something special”

6. Visualize Input

Page 73: User first! 前端的最後一塊拼圖
Page 74: User first! 前端的最後一塊拼圖

“highlighting basic features for further usage”

7. Tutorials come alive!

Page 75: User first! 前端的最後一塊拼圖
Page 76: User first! 前端的最後一塊拼圖

UI & UX 先別急著打開軟體

Page 77: User first! 前端的最後一塊拼圖
Page 78: User first! 前端的最後一塊拼圖
Page 79: User first! 前端的最後一塊拼圖

設計流程

Page 80: User first! 前端的最後一塊拼圖
Page 81: User first! 前端的最後一塊拼圖

idea

sketch

wireframe

mockup

prototype

Page 82: User first! 前端的最後一塊拼圖

idea

sketch

wireframe

mockup

prototype

Page 83: User first! 前端的最後一塊拼圖

idea

sketch

wireframe

mockup

prototype

Page 84: User first! 前端的最後一塊拼圖

idea

sketch

wireframe

mockup

prototype

Page 85: User first! 前端的最後一塊拼圖

idea

sketch

wireframe

mockup

prototype

Page 86: User first! 前端的最後一塊拼圖

product

Page 87: User first! 前端的最後一塊拼圖

Fidelity擬真度

Page 88: User first! 前端的最後一塊拼圖

idea

sketch

wireframe

mockup

prototype

Low

Medium

High

Fidelity

Page 89: User first! 前端的最後一塊拼圖
Page 90: User first! 前端的最後一塊拼圖
Page 92: User first! 前端的最後一塊拼圖

framer.js

Page 93: User first! 前端的最後一塊拼圖
Page 94: User first! 前端的最後一塊拼圖

– Maxis Kao, 2015 #程序猿⿎鼓勵師

“使⽤用者都是暴⺠民”

Page 95: User first! 前端的最後一塊拼圖

Chat Bot

Page 96: User first! 前端的最後一塊拼圖
Page 97: User first! 前端的最後一塊拼圖
Page 98: User first! 前端的最後一塊拼圖
Page 99: User first! 前端的最後一塊拼圖
Page 100: User first! 前端的最後一塊拼圖
Page 101: User first! 前端的最後一塊拼圖
Page 102: User first! 前端的最後一塊拼圖
Page 103: User first! 前端的最後一塊拼圖
Page 104: User first! 前端的最後一塊拼圖
Page 105: User first! 前端的最後一塊拼圖
Page 106: User first! 前端的最後一塊拼圖
Page 107: User first! 前端的最後一塊拼圖
Page 108: User first! 前端的最後一塊拼圖
Page 109: User first! 前端的最後一塊拼圖
Page 110: User first! 前端的最後一塊拼圖
Page 111: User first! 前端的最後一塊拼圖
Page 112: User first! 前端的最後一塊拼圖
Page 113: User first! 前端的最後一塊拼圖

BUT悲劇還是發⽣生了

Page 114: User first! 前端的最後一塊拼圖
Page 115: User first! 前端的最後一塊拼圖

#UserFirst

Page 116: User first! 前端的最後一塊拼圖

“You've got to start with the customer experience and work backwards to the technology.”

- Steve Jobs

Page 117: User first! 前端的最後一塊拼圖

– Dan North, 2003

“Behavior-driven Development”

Page 118: User first! 前端的最後一塊拼圖

常⾒見問題

• 客⼾戶 要的功能沒 開發

• 開發 的功能不是 客⼾戶 要的

• 客⼾戶 和 ⼯工程師 雞同鴨講

Page 119: User first! 前端的最後一塊拼圖

‣ 業務:我要⼀一個計算機

1 + 1 = 2

100 + 5 = 105

99 + 1234 = 1333

12.6 + 5 = 18 // 做⽣生意的很喜歡四捨五⼊入

‣ ⼯工程師:簡單,我⾺馬上給你!

Page 120: User first! 前端的最後一塊拼圖

User story• As a X - the person (or role) who will benefit

• I want Y - some feature

• so that Z - the benefit or value of the feature

Page 121: User first! 前端的最後一塊拼圖

Acceptance Criteria• Given some initial context (the givens),

• When an event occurs,

• Then ensure some outcomes.

Page 122: User first! 前端的最後一塊拼圖

A BDD example1. Feature:  Greeting  

2.    

3.    Scenario:  Say  Hello  World  

4.        Given  I  have  an  application  “Hello”  

5.        When  I  ask  it  to  say  hi  

6.        Then  I  receive  “Hi,  there!”.

Page 123: User first! 前端的最後一塊拼圖

client developers

Page 124: User first! 前端的最後一塊拼圖

client developers

BDD

Page 125: User first! 前端的最後一塊拼圖

CucumberA tool for running automated tests written in plain language

Page 126: User first! 前端的最後一塊拼圖

.jsCucumberA tool for running automated tests written in plain language

$  npm  install  cucumber

Page 127: User first! 前端的最後一塊拼圖

‣ 業務:我要⼀一個計算機

1 + 1 = 2

100 + 5 = 105

99 + 1234 = 1333

12.6 + 5 = 18 // 做⽣生意的很喜歡四捨五⼊入

‣ ⼯工程師:簡單,我⾺馬上給你!

Page 128: User first! 前端的最後一塊拼圖
Page 129: User first! 前端的最後一塊拼圖
Page 130: User first! 前端的最後一塊拼圖
Page 131: User first! 前端的最後一塊拼圖
Page 132: User first! 前端的最後一塊拼圖
Page 133: User first! 前端的最後一塊拼圖

“不管你選擇哪⼀一條路”

Knowledge

Page 134: User first! 前端的最後一塊拼圖

– 朱⽴立倫, 2014 & 2015

“做好,做滿”

Page 135: User first! 前端的最後一塊拼圖

Maintainable千古流芳

Page 136: User first! 前端的最後一塊拼圖

打開編輯器

Page 137: User first! 前端的最後一塊拼圖

Nicholas C. Zakas

Page 138: User first! 前端的最後一塊拼圖
Page 139: User first! 前端的最後一塊拼圖

Maintainable codeshould works for 5 years without having to rewrite

- Nicholas C. Zakas

Page 140: User first! 前端的最後一塊拼圖

Who cares?• 公司

• 同事

• 未來的⾃自⼰己

Page 141: User first! 前端的最後一塊拼圖

maintainability• 直觀 • 理解 • 修改 • 擴充 • 除錯 • 測試

Page 142: User first! 前端的最後一塊拼圖

- C.A.R. Hoare

Page 143: User first! 前端的最後一塊拼圖

Code Conventions

• Code Style

• Programming Practice

Page 144: User first! 前端的最後一塊拼圖

Code Style• Formatting

• Comments

• Statement & Expression

• Variables, Functions, and Operators

✓ Linting tools: JSLint / JSHint / ESLint

Page 145: User first! 前端的最後一塊拼圖

Programming Practice1. Loose Coupling of UI Layers

2. Avoid Globals

3. Event Handling

4. Separate Configuration from Code

5. Don’t Modify Objects You Don’t Own

6. Browser Detection

Page 146: User first! 前端的最後一塊拼圖

1. Loose Coupling of UI Layers

• html / css / javascript 各司其職

• templating: handlebar / {{ mustache }}

Page 147: User first! 前端的最後一塊拼圖

2. Avoid Globals

• Naming Collisions

• Code Fragility

• Difficulty Testing    function  sayColor()  {            alert(color);  

   }

Page 148: User first! 前端的最後一塊拼圖

3. Event Handling

• Separate Application Logic

• Don’t Pass the Event Object Around

   var  handleClick  =  function(event)  {                showPopup(event);      }      addListener(element,  "click",  function(event)  {              app.handleClick(event);      }

Page 149: User first! 前端的最後一塊拼圖

4. Separate Configuration from Code

• Separate configuration data from code.

   function  validate(value)  {                if  (!value)  {                      location.href  =  "/errors/invalid.php";              };      }

Page 150: User first! 前端的最後一塊拼圖

• Don’t override methods.

• Don’t add new methods.

• Don’t remove existing methods.

5. Don’t Modify Objects You Don’t Own

Page 151: User first! 前端的最後一塊拼圖

6. Browser Detection

• Avoid Feature Inference

• Avoid Browser Inference    if  (document.getElementsByTagName)  {  //  DOM              element  =  document.getElementById;      };  

   if  (document.all)  {  //  IE              id  =  document.uniqueID;      };

Page 152: User first! 前端的最後一塊拼圖

Design Patterns嚴以律⼰己

Page 153: User first! 前端的最後一塊拼圖

SEO把網站放在五叉路⼝口

Page 154: User first! 前端的最後一塊拼圖

User Logs數字會說話

Page 155: User first! 前端的最後一塊拼圖
Page 156: User first! 前端的最後一塊拼圖

全世界最瘋狂的是新加坡

Page 157: User first! 前端的最後一塊拼圖

台灣全世界第⼗十⼀一瘋狂

Page 158: User first! 前端的最後一塊拼圖

短短三個⽉月就沒⼈人在玩了

Page 159: User first! 前端的最後一塊拼圖

台灣⼀一個⽉月就退燒

Page 160: User first! 前端的最後一塊拼圖

相關的 query 都是作弊程式

Page 161: User first! 前端的最後一塊拼圖

後端前端

Page 162: User first! 前端的最後一塊拼圖

前端開發的五⼤大挑戰

• Compatibility - 兼容性

• Interaction - 交互的複雜度

• Maintainability - 程式可維護性

• Performance - 性能

• Personal development - 個⼈人成⻑⾧長 - 張克軍 @ ⾖豆瓣前端⼯工程師

Page 163: User first! 前端的最後一塊拼圖

⼀一秒鐘幾⼗十萬上下

Backend

Page 164: User first! 前端的最後一塊拼圖

• Scalability - 規模

• Security - 安全

• Performance - 效率

• Availability - 穩定

後端開發的四⼤大課題

Page 165: User first! 前端的最後一塊拼圖

下⼀一個⾥里程碑

Fullstack

Page 166: User first! 前端的最後一塊拼圖

Thanks :P

Page 167: User first! 前端的最後一塊拼圖

Q / A

Page 168: User first! 前端的最後一塊拼圖