ภาพจาก 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/
ขอบคุณสำหรับเรื่องดีๆที่แบ่งปันกันครับ
prototype ผมก็ทำนะครับ แต่ลูกค้าก็ชอบแก้งานในตอนใกล้จบอยู่ดี เซ็ง…
เห็นด้วยครับว่าในเมืองไทยยังขาด “ระบบ” ที่ดี ไม่ใช่เฉพาะแค่ในการทำงาน แต่รวมถึงระบบต่างๆ ในสิ่งแวดล้อม ในสังคมของเราด้วย ไล่ตั้งแต่การบริหารประเทศ การเมือง ระบบราชการ การทำงาน แม้จะในองค์กรใหญ่ๆ ก็ตามที ฯลฯ
ซึ่งผมว่าถ้าทุกภาคส่วนของเรามี “ระบบ” ที่ดี ก็น่าจะช่วยอะไรๆ ง่ายขึ้น รวดเร็วขึ้นครับ
วกกลับมาเรื่องการทำงาน นอกจากระบบที่ดีแล้ว ผมว่าผู้คนที่เกี่ยวข้องในการทำงานยังต้องมีความรู้เกี่ยวกับระบบนั้นๆ บ้าง ไม่ว่าจะเป็น
– Project Manager
– Project Team
– Project Stakeholders
– Project Sponsor
เพราะถ้าฝ่ายใดฝ่ายหนึ่งไม่เข้าใจ “ระบบ” ก็จะไม่สนใจอะไรทั้งนั้น ขอให้สิ่งที่ต้องการสำเร็จเป็นพอ แต่เขาจะไม่เข้าใจว่ามันจะไปกระทบกระเทือนคนอื่นๆ หรือฝ่ายอื่นๆ อย่างไร
ซึ่งการอธิบายให้ผู้คนเหล่านั้นเข้าใจ (และยอมทำตาม) ระบบการทำงานเป็นสิ่งที่ยากยิ่งนัก ยากมากๆ บางทีเสียเวลาอธิบายให้ผู้คนเหล่านี้ไปมากกว่าการเซ็ตระบบซะอีก
ยกตัวอย่างง่ายๆ ผมว่าทุกคนคงเคยเจอลูกค้า (ที่ไม่เข้าใจระบบ และประมาณว่ามีเงิน มีอำนาจ) ที่พยายามเปลี่ยนแปลงนู่นเปลี่ยนแปลงนี่ ถึงแม้เราจะมีระบบไว้ควบคุมแล้วก็ตาม แต่ลูกค้าก็จะเอาให้ได้ ซึ่งการพยายามอธิบายให้ลูกค้าเข้าใจ ไม่ว่าลูกค้าจะยอมหรือไม่ยอม มันก็เสียเวลา ทำให้ตารางงานต้องกระทบกระเทือนแน่ๆ
เพราะฉะนั้นจึงไม่น่าแปลกใจที่ใน PMBOK Guide จะกล่าวถึงเรื่องการเมือง วัฒนธรรม หรือมีหัวข้อ Project Human Resource Management, Project Communication Management และ Project Risk Management อยู่ในนั้นด้วย
ผมมองไปถึงว่า บทความดีๆ แบบบทความนี้ ไม่ใช่เฉพาะคนที่ทำงานในวงการนี้เท่านั้นที่ควรจะอ่าน ควรจะรวมไปถึงทุกฝ่ายที่เกี่ยวข้องด้วย โดยเฉพาะ Project Stakeholder & Project Sponsor ครับ
ยกตัวอย่างจากในชีวิตจริง ตอนผมไปทำงานให้กับลูกค้าบางแห่ง มีปัญหาว่าลูกค้าไม่เข้าใจกระบวนการ Software Develeopment เลย แม้กระทั่ง IT PM ของเขาก็ตามที
เพราะฉะนั้นปัญหาก็เลยมาตกที่ผม ที่ต้องแก้ปัญหาระหว่าง VP ของลูกค้า ที่เป็น Project Sponsor กับ IT PM (ทั้งๆ ที่อยู่บริษัทเดียวกันแท้ๆ) ให้เข้าใจตรงกัน รวมถึงต้องคอยให้ไอเดียว่าระบบการทำงานควรเป็นอย่างไร
ผมยังบอกน้องๆ ในทีมเลยว่า PM ย่อมาจาก Political Management
Ha..Ha 😀
ขอบคุณ สำหรับความรู้ดีๆครับ(กำลังเรียนเรื่องนี้อยู่)
อาจจะเอาแบ่งปันให้คนอื่นด้วยนาคับ
prototype มีความสำคัญก็จริงครับ ปัจจุบันขั้นตอนหรือกระบวนการประดิษฐ์ prototype นั้นก็แทบจะเป็นขั้นตอนทั้งหมดของงานไปแล้วด้วยซ้ำ เพราะก่อนที่จะมีต้นแบบ ก็มีซอฟแวร์หลายๆอย่างที่สามารถผลิตผลงานจำลองออกมาเป็นภาพที่สมจริงก่อนที่จะตัดสินใจสร้าง prototype ทั้งนี้เองก็ขึ้นอยู่กับความสามารถของคนตัดสินใจเองนั่นแหละที่จะยอมรับได้มากน้อยแค่ไหน เพราะ prototype ก็ไม่ใช่ข้อสรุปสุดท้ายของคอนเซป แต่จะแสดงให้เห็นถึงปัญหาและข้อแก้ไขที่ควรมี
prototype เป็นเครื่องมือที่สัมผัสได้ถึงลักษณะที่คล้ายจริงมากที่สุด และอาจจะเป็นตัวช่วยสุดท้ายที่จะทำให้ตัดสินใจได้ง่ายขึ้น สื่อสารตกลงกันง่ายขึ้น