ภาพจาก http://www.iphonefaq.org

ในการพัฒนาสินค้า ระบบ โปรแกรม ซอฟต์แวร์ ใดๆ
ยิ่งมีผู้เกี่ยวข้องมาก ลูกค้ามาก ความซับซ้อนมาก ขนาดใหญ่มาก
ก็ยิ่งทำให้การพัฒนาใช้เวลามากยิ่งขึ้น

และถ้าเป็นการพัฒนาแบบที่รับ requirement มาปั๊บ สร้างเลยปุ๊บนี่
ในเวลาที่มากขึ้น(อย่างมาก)ในการพัฒนานั้น
ก็หมดไปกับการแก้สิ่งที่ไม่ตรงกับ requirement
หรือไม่มีอย่างที่กำหนด requirement ไว้
หรือตรงตาม requirement แต่ไม่ตรงใจ ไม่เมคเซนส์ในการใช้งานจริงซะนี่


ภาพจาก http://www.masterpiecemodels.com

 

ทั้งนี้ เป็นเพราะว่า ขาดขั้นตอนที่สำคัญไปหนึ่งขั้นตอนใหญ่ๆทั้งยวง
นั่นคือการวิเคราะห์ ออกแบบวางแผน และ visualise solution
ก่อนที่จะเข้าขั้นตอนลงมือลงไม้สร้างของจริง หรือ code ระบบจริง กัน

ขั้นตอนที่หายไปนี้
มีความสำคัญอย่างยิ่งยวดสามประการใหญ่ๆด้วยกัน

1. สำคัญยิ่งยวดตรงที่ มันเป็นขั้นตอนที่วิเคราะห์
ความต้องการ ความจำเป็น จากหลายๆทาง
ไม่ว่าจะทางผู้ใช้ ลูกค้า ระบบ และอื่นๆ
เช่น สมมติถ้าเรามีร้านก๋วยเตี๋ยวตามสั่ง
ลูกค้าต้องการสั่งก๋วยเตี๋ยวให้แฟนของลูกค้า
จึงสั่งเรามาว่า “ก๋วยเตี๋ยวหนึ่งชาม”
เราอาจจะออกก๋วยเตี๋ยวมาหนึ่งชามได้
แต่ก่อนที่เราจะออกก๋วยเตี๋ยวได้นั้น
เราก็ต้องรู้ว่า แฟนลูกค้าอยากกินเส้นอะไร หรืออยากกินเกาเหลา
ชอบถั่วงอกหรือเปล่า หรือชอบก๋วยเตี๋ยวน้ำตก
แล้วงบประมาณที่จะซื้อก๋วยเตี๋ยวนั่น
พอที่จะซื้อก๋วยเตี๋ยวก้ามปู หรือก๋วยเตี๋ยวจับกังธรรมดา
แล้วลูกค้าเป็นมุสลิมหรือเปล่า ถ้าเป็นมุสลิมก็ทำก๋วยเตี๋ยวหมูไม่ได้
ถ้าลูกค้าไม่ใช่มุสลิม แต่แฟนลูกค้าเป็นมุสลิม ก็ทำหมูไม่ได้เช่นกัน
ถ้าแฟนลูกค้าไม่ทานเนื้อวัว เราก็ทำก๋วยเตี๋ยวเนื้อวัวให้ไม่ได้
ถ้าแฟนลูกค้าแพ้อาหารทะเล ถึงจะมีงบกินก๋วยเตี๋ยวก้ามปูได้ แต่ก็ทำให้ไม่ได้
เหล่านี้ เป็นสิ่งสำคัญที่ต้องควรรู้ทั้งนั้น ก่อนที่จะลงมือ”ทำ” มันขึ้นมา

2. สำคัญยิ่งยวดตรงที่ มันเป็นขั้นตอนที่เมคชัวร์ว่า
สิ่งที่จะทำออกมา ได้ตอบโจทย์ความต้องการข้างบนได้อย่างครบถ้วนแล้วหรือยัง
ถ้าลูกค้าเป็นมุสลิม แฟนลูกค้านับถือเจ้าแม่กวนอิม
มีงบมากกว่าก๋วยเตี๋ยวจับกังนิดหน่อย และไม่ชอบถั่วงอก ชอบเส้นเล็ก
จะมีก๋วยเตี๋ยวอะไรให้เราทำให้ได้บ้าง
ถึงคำตอบอาจจะยังมีร้อยแปดเพราะว่าก๋วยเตี๋ยวในโลกนี้ช่างมีมากมาย
แต่เราก็ต้องเลือกคำตอบที่น่าจะเหมาะสมเพื่อตี scope ในการทำ
ตัวเลือกที่เลือกอาจจะมีทั้งเส้นเล็กไก่ฉีก เส้นเล็กผัดซีอิ๊วไก่
แล้วก็เลือกเส้นเล็กไก่ฉีกหลังจากผ่านกระบวนการการตัดสินใจจากลูกค้า
และนำเสนอรูปลักษณ์ของทั้งชามและเส้นเล็กไก่เอง
โรยผักชีต้นหอมไหม ใส่พริกไทเยอะหรือเปล่า
พร้อมทั้งตรวจสอบว่ามันตรงกับความต้องการและข้อจำกัดทุกๆอย่างแล้ว

3. สำคัญยิ่งยวดตรงที่ มันจะเป็นพิมพ์เขียว
ที่ไว้สื่อสารกับทีมงานที่ทำหน้าที่ต่างๆกันภายในโปรเจคเดียวกัน
การที่จะบอกว่าหน้านี้ มีปุ่ม submit เท่านั้นไม่พอ
ต้องระบุด้วยว่า เป็นปุ่ม submit ข้อมูลอะไร วางไว้ตรงไหน ชิดซ้ายขวากลาง
ตัวปุ่ม submit เขียนว่าอะไร มี style guide ที่ควบคุมหน้าตาของปุ่มอย่างไรบ้าง
กดปุ่ม submit นี้แล้วจะเกิดอะไรขึ้นต่อไป
กลับมาที่ก๋วยเตี๋ยว ใบสั่งที่บอกว่า ก๋วยเตี๋ยวเส้นเล็ก ไก่ฉีก ไม่งอก
ไก่ฉีกเรียงไว้หน้าก๋วยเตี๋ยวครึ่งซีกของชาม น้ำครึ่งชาม
โรยผักชี ไม่โรยต้นหอม ใส่พริกไทเหยาะเดียวหลังจากโรยผักชี
ชามสีเขียวลายดอกลาเวนเดอร์
ก็จะทำให้คนทำก๋วยเตี๋ยวรู้ว่าต้องทำก๋วยเตี๋ยวอะไร เอาชามอะไรใส่ ตกแต่งอย่างไร ใส่อะไรบ้าง
เด็กเสิร์ฟก็ได้ตรวจสอบก๋วยเตี๋ยวก่อนว่าตรงตามที่สั่งหรือไม่
เด็กล้างชามก็จะรู้ว่าต้องล้างชามสีเขียวลายดอกลาเวนเดอร์อีกหนึ่งชาม
และทำให้คนคิดตังเก็บเงินถูกว่าสั่งก๋วยเตี๋ยวอะไร ก๋วยเตี๋ยวชนิดนี้ราคาเท่าไหร่ มีพิเศษหรือเปล่า
เจ้าของร้านก็จะได้คิดค่าใช้จ่ายด้าน inventory ได้ถูกต้อง

ระหว่างขั้นตอนที่ 2 กับ 3
เราจะตรวจสอบว่า สิ่งที่เราจะทำ
ตรงกับความต้องการและตอบโจทย์ข้อจำกัดได้หรือยังนั้น
บางทีมันไม่ใช่แค่การที่เดาเอาว่าอย่างนี้แหละ ถูกแล้ว ครบถ้วนแล้ว
เพราะยิ่งโปรเจคมีความซับซ้อน มีขนาดใหญ่
ที่ไม่ได้ง่ายแบบการทำก๋วยเตี๋ยว (ไม่เกี่ยวกับว่าทำอร่อยไม่อร่อยนะ)
การที่จะ”หลุด” เวลาออกแบบโปรเจคที่ซับซ้อนนั้น ก็ยิ่งมีมาก

ซึ่งตรงนี้นี่เอง ที่ Prototype เข้ามามีบทบาท

Prototype คืออะไร
พูดแบบเป็นรูปธรรม
Prototype คือแบบจำลองของโปรเจคนั้นๆ
ใช้เพื่อการทดลองว่า งาน ระบบ หรือผลิตภัณฑ์ เวิร์คตามความต้องการหรือไม่
ถ้าพูดแบบเป็นคอนเซปท์
Prototype เป็นเครื่องมือที่จะช่วยให้เราแน่ใจกับทางที่เราจะทำ
ก่อนที่จะลงมือทำจริงๆ

ในวงการ Product Design หรือ Architecture
หรือแม้ในการทำซอฟต์แวร์ในเมืองนอก
การทำ Prototype ก่อน Real Production เป็นเรื่องธรรมดามากๆ
ถือเป็นธรรมเนียมปฏิบัติเลยก็ได้
สำหรับ Product Design
การทำ Protype จำเป็นต้องทำ
เพราะตั้งแต่การเข้าสู่กระบวนการทำแม่พิมพ์ ไปจนขึ้นไลน์ผลิต
ทุกการเปลี่ยนแปลงคือค่าใช้จ่ายหลักพัน ไปถึงหลักแสน
อีกทั้งยังเปลืองทรัพยากร ถ้าเกิดความผิดพลาดด้วย
สำหรับ Architecture
ตั้งแต่กระบวนการการตอกเสาเข็มเสาแรก
การเปลี่ยนแปลงมักจะหมายถึงเงินหลักแสน ไปถึงมากกว่าหลักล้าน
สำหรับซอฟต์แวร์
ตั้งแต่การโค้ดบรรทัดแรก
การเปลี่ยนแปลงคือเวลาที่มากขึ้น การที่ต้องรื้อโค้ด
การต้องเพิ่มทรัพยากรบุคคลเนื่องจากต้องทดแทนความล่าช้าที่เกิดขึ้น
การเปลี่ยนแปลง คือค่าใช้จ่ายหลักร้อย ไปจนถึงหลักแสน หรือหลักล้าน เช่นกัน

บางที่ หรือบางคนที่ไม่เคยทำ prototype มาก่อน
ก็อาจจะกังวลว่า การทำ prototype จะทำให้เวลาในการทำงานมากขึ้น
แต่โดยทั่วไป prototype ที่เหมาะสม
กลับทำให้การพัฒนาโปรเจคโดยรวมสั้นลง
เพราะมีความชัดเจนในการสร้างมากขึ้น บั๊กน้อยลง

Prototype สามารถทำขึ้นมากี่เวอร์ชั่นก็ได้
ยิบย่อยขนาดไหนก็ได้ และทำโดยใครก็ได้
ขึ้นอยู่กับจุดประสงค์ และความเหมาะสมกับ timeline ในการทำงาน

Prototype จะช่วยเราตรวจอะไรได้บ้าง

1. Proof of concept
ในเวลาที่ไม่แน่ใจว่า คำตอบที่เราเลือกนั้น
Prototype สามารถพิสูจน์ได้ว่า มันเวิร์กอย่างที่คิดหรือไม่
มี action อะไร หรือรายละเอียดอะไรที่เราตกหล่นลืมคิดไปหรือไม่
มันตอบคำถาม ตอบโจทย์ได้อย่างครบถ้วนหรือไม่
และยังทำให้เห็นคำตอบอื่นๆได้จาก prototype ด้วย

2. Design exploration
เว็บไซต์ หรือระบบดิจิตอล มักมีคุณสมบัติ Interactive
นั่นคือ ตอบสนองกับผู้ใช้งานได้
การมี prototype สามารถที่จะทำให้เห็นได้ชัดว่า
Interaction นั้น น่าจะเป็นไปอย่างที่กำหนด หรือลืมกำหนดไปหรือเปล่า
เช่น เมื่อกดล็อกอินปั๊บ ถ้ารหัสผ่านไม่ถูกต้อง ระบบจะขึ้นเตือนอย่างไร
ถ้ากำลังจะเช็คเอาท์ ฟังก์ชั่นไหนที่จะ disable บ้าง
ในหลายๆครั้ง prototype หรือ mock up นี้
เราก็นำไปใช้ในการทดสอบ Usability
ในหลายๆครั้ง เราสร้าง prototype สำหรับหน้าเดียวกัน หรือ section เดียวกันหลายๆแบบ
เพื่อตัดสินใจว่า จะเลือกทางไหนมาทำได้ดีที่สุด

3. Technical exploration
prototype ช่วยให้นักพัฒนาเห็นภาพ และช่วยในการคิดหาเทคนิค วิธีในการพัฒนา
ใน interaction แบบหนึ่ง หรือการแสดงผลแบบหนึ่ง
อาจจะเขียนโค้ดได้หลายวิธี เลือกใช้เทคโนโลยีได้หลายวิธี
และยังช่วยให้นักพัฒนาเข้าใจถึงเจตนาในการออกแบบโครงสร้าง และ interface
เพื่อที่จะนำไปหาทาง Support และพัฒนาให้ได้อย่างเหมาะสมที่สุด
เช่น ในการแสดงสินค้าแบบ interactive ในงานหนึ่ง
นักพัฒนาอาจจะตัดสินใจเลือกใช้ Javascript แทนที่จะเป็น Flash ก็ได้
หรือเลือกใช้ Ajax เพื่อให้การทำงานของ element ตัวอื่นภายในหน้าเดียวกัน
ยังสามารถทำงานต่อไป โดยที่ไม่ต้องถูก refresh


หน้าเขียนบล็อกของ WordPress
การแก้ไข permalink สามารถแก้ไขและบันทึกการเปลี่ยนแปลงได้
โดยที่ไม่ต้องไปกระทบ work flow ของการเขียนบล็อกทั้งหมด

 

คราวหน้า เราจะมาดูว่า
เราจะทำ prototype ในแบบใดได้บ้าง

 

บางส่วนจาก
http://www.scottberkun.com/essays/12-the-art-of-ui-prototyping/