Software Prototyping — Throwaway Prototyping

“Nothing is particularly hard if you divide it into small jobs.” — Henry Ford

“ไม่มีงานไหนยากเกินไปถ้าเราแบ่งให้มันเล็กลง” … ประโยคนี้คือหลักการการบริหารงานของเฮนรี่ ฟอร์ด (Henry Ford) ผู้ก่อตั้งบริษัทฟอร์ดมอเตอร์และสุดยอดปรมาจารย์ด้านการบริหารและธุรกิจ ผู้ได้รับการยกย่องในฐานะหนึ่งใน CEO ที่เก่งที่สุดตลอดกาล ในเมื่อเฮนรี่สร้างสิ่งที่ยิ่งใหญ่ด้วยการทำงานชิ้นเล็กๆทีละน้อยได้ ในโลกของการพัฒนาซอฟต์แวร์เราก็ทำได้เหมือนกัน … Software Prototyping คือผู้ช่วยของเรา

Prototype แปลเป็นไทยได้ว่า “สิ่งที่เป็นต้นแบบ” เมื่อมารวมกับคำว่า Software ก็เลยกลายเป็น “ซอฟท์แวร์ต้นแบบ” ง่ายมั้ย เรื่องจริงมันก็ง่ายๆแบบนี้แหละฮะ การทำ Software Prototyping ก็คือการสร้างสิ่งที่เป็นต้นแบบ (เล็กๆ) ซึ่งเป็นแนวทางและตัวอย่างสำหรับการสร้างสิ่งที่เป็นของจริง (ใหญ่ๆ) นั่นเอง

ตัวอย่างเช่น ช่วงที่ผมเขียน Ebook เรื่อง Project Planning (นานมากแล้ว) ผมก็ใช้เทคนิคนี้นะ ก่อนอื่นผมนั่งนึกว่าอยากจะให้มีอะไรอยู่ในหนังสือเล่มนี้บ้าง คิดไปคิดมาก็เริ่มงง เริ่มมึนเพราะข้อมูลเยอะมาก จับต้นชนปลายไม่ถูก ผมเลยหยิบกระดาษมาแผ่นนึงแล้วเริ่มขีดๆเขียนๆลงไปว่า อยากให้มีเนื้อหาอะไรบ้าง จะเรียบเรียงยังไงดี อะไรมาก่อนมาหลัง … นี่แหละครับ Prototype

หลังจากได้แนวทางมาแล้ว ผมเริ่มเปิดโปรแกรม Open Office Writer (ตอนนั้นไม่ได้ใช้ Microsoft Word ) แล้วก็เริ่มเขียนเลย หน้าแรกคือ … หน้าปกครับ ความคิดเริ่มพุ่งพล่านอีกแล้ว จะวางกรอบหน้าปกยังไง? จะเอาตัวอักษรแบบไหนดีนะ? แล้วสีหละ? เมื่อคิดแล้วมองไม่เห็นภาพ ผมก็ลุยเลยครับ ลองทำจริงไปเลย ตอนนั้นหน้าปกผมมีหลายรูปแบบมาก ทำไป แก้ไป พิจารณาไปด้วยว่า อันนี้เหมาะรึยัง? พอเริ่มเห็นภาพเห็นของจริงก็ง่ายต่อการตัดสินใจ ไม่นานนัก (จริงๆก็หลายชั่วโมงนะ) ผมก็เลือกแบบได้แล้วก็เริ่มทำต่อที่สารบัญและเนื้อหา ตอนนี้หนังสือผมก็เริ่มหนาขึ้นๆ จนเสร็จ … นี่ก็ Prototype อีกแบบหนึ่ง

มองเห็นภาพนะครับ

ว่าแต่เพื่อนๆเอะใจกับคำพูดที่ผมเลือกใช้มั้ยครับ? “นี่ก็ Prototype อีกแบบหนึ่ง” เอ๊ะ แบบนี้แสดงว่า Prototype มีหลายแบบซิเนี่ยะ … ใช่เลย แบ่งได้หลายแบบแต่ที่นิยมพูดถึงและใช้กันมากมีอยู่สองแบบ

Throwaway Prototyping

ความหมายของ Prototype แบบนี้คือแบบที่ใช้แล้วทิ้ง (แบบไม่ต้องเสียดาย) หลังจากที่เราได้เรียนรู้และใช้ประโยชน์จากมันแล้ว นี่เป็นรูปแบบที่ผมเลือกใช้ตอนที่อยากรู้ว่าหนังสือของผมควรจะมีอะไรอยู่ในนั้นบ้าง ผมเลือกที่จะขีดๆเขียนๆหัวข้อ เนื้อหาที่คิดว่าควรจะมี ลองสลับเรียงหนึ่ง สอง สามไปเรื่อยจนเป็นที่พอใจ แล้วก็เริ่มเปิด Open Office Writer แล้วก็ร่างสิ่งที่อยากได้ลงในไฟล์ จากนั้นกระดาษแผ่นนั้นก็หมดความหมายสำหรับผมและหนังสือของผม

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

เทคนิคของ Throwaway Prototyping ที่เด่นๆก็เช่น ง่ายสุดเลยครับ Paper Prototyping ซึ่งเป็นการวาด/ขีด/เขียนสิ่งที่เป็นต้นแบบของงานลงในกระดาษ แล้วก็เอาให้ลูกค้าดูเพื่อสร้างความเข้าใจร่วมกันใน Requirement แต่ละตัว วิธีนี้เหมาะมากกับงานที่มีหน้าตาให้ลูกค้าจับต้องได้อย่างพวก User Interface ทั้งหลาย จากรูปผมลองออกแบบหน้าจอหนึ่งในระบบ Automatic Draft Checking ซึ่งเป็นระบบสมมติที่ใช้ในการตรวจสอบแบบโครงสร้างอาคารสำหรับกรมโยธาธิการครับ (อันนี้มั่วขึ้นมาเองนะ ฮ่าๆ)

Paper Prototyping

อีกวิธีหนึ่งที่นิยมกันก็คือ GUI Builder วิธีนี้ลึกล้ำกว่า Paper Prototyping นิดนึงโดยเป็นการสร้างหน้าตา User Interface หลอกๆขึ้นมาพร้อมกับอธิบายขั้นตอนการทำงาน (Workflow) ของระบบด้วยปุ่ม Click Dummy ปุ่มพวกนี้เมื่อกดแล้วจะพาเราไปสู่ขั้นตอนต่อไปของระบบโดยที่ไม่มีการทำงานอะไรจริงๆนะ เช่น จากรูปผมเลือกแบบที่ต้องการจะตรวจสอบแล้วก็กดปุ่ม Check Drafts มันก็จะมี Pop up ที่เป็น Progress Bar แสดงขึ้นมาโดยไม่มีการทำงานจริงนะครับ

ประโยชน์ของ GUI Builder คือมันช่วยเราตรวจสอบความเข้าใจเรื่องการทำงานโดยรวมและขั้นตอนต่างๆของระบบทั้งของลูกค้าและตัวเรา มันจะช่วยทำให้ทั้งสองฝ่ายเข้าใจตรงกันว่าระบบนั้นต้องมีหน้าตาออกมาเป็นยังไง

GUI Prototyping

ทั้งสองวิธีนี้ถือว่าเร็วและง่ายครับ โอเคหละ วิธีแรกง่ายกว่าแน่ๆ ผมใช้เวลาคิดและวาดรูปประมาณ 10 นาที สำหรับวิธีที่สองผมใช้เวลาทำ User Interface ประมาณครึ่งชั่วโมง … ถือว่าเร็วนะ

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

  1. หลังจากที่ได้ Requirement เบื้องต้นมาแล้ว เราจะเริ่มออกแบบ Prototype ตามข้อมูลที่ได้มา อาจจะวาดรูปเอาหรือสร้างหน้าจอหลอกๆขึ้นมาก็แล้วแต่ความเหมาะสม
  2. นำ Prototype ที่ได้ไปเสนอลูกค้าเพื่อเก็บข้อมูลเพิ่มเติม ข้อมูลที่เราอยากได้ก็คงมี Requirement นี้ทำงานยังไง? รูปร่างหน้าตาที่เหมาะสมเป็นไปตาม Prototype รึเปล่า? แล้วก็นอกจากนี้แล้ว มี Requirement อื่นๆอะไรอีกบ้างที่เกี่ยวข้องกับระบบ? หลายครั้งเมื่อลูกค้าเห็นหน้าตาคร่าวๆของระบบแล้ว Requirement จะเพิ่มมาอย่างน่าอัศจรรย์ครับ
  3. หลังจากได้ข้อมูลมาครบถ้วนแล้ว เราก็ปรับปรุง แก้ไข เพิ่มเติม Prototype ให้เป็นไปตามนั้นแล้วก็นำไปเสนอลูกค้าอีกรอบ เพื่อเก็บข้อมูลเพิ่มเติมครับ ทำแบบนี้ไปจนกว่าลูกค้าและเราจะตกลงกันได้ในเรื่อง Requirement ครับ
  4. เมื่อตกลงกันได้แล้ว เราก็เริ่มพัฒนาระบบจริงเลย

เราใช้ประโยชน์จาก Throwaway Prototyping ได้มากกว่าเรื่อง Requirement ผมเองเคยใช้เทคนิคนี้ในการพิสูจน์ว่าเรื่องต่างๆทำได้หรือไม่ได้ในทางเทคนิค ตอนนั้นผมเคยสงสัยว่า Web Application ที่เป็น ASP.Net เนี่ยะ มันสร้างรายงาน Excel ที่มี Line Chart อยู่ด้วยได้มั้ย? ผมรู้อยู่แล้วครับว่า Web Application ตัวที่ผมมีอยู่มันซับซ้อนมากเลย จะแก้อะไรทีค่อนข้างจะยุ่งยากและเสี่ยงต่อการทำให้ Code พัง ผมเลยเลือกที่จะสร้าง Project Web Application เล็กๆขึ้นมาเพื่อทดสอบเรื่องนี้โดยเฉพาะ วิธีนี้ง่ายและเร็วกว่าเยอะเลยครับ ไม่นานผมก็ได้ Prototype Code ขึ้นมาชุดหนึ่งที่ทำงานได้ตามต้องการเป๊ะ จากนั้นผมค่อยเริ่มประยุกต์ใช้วิธีการนี้เข้าไปใน Code จริงแล้วเจ้า Prototype ก็หมดความหมายไป

ทั้งหมดนี้คือ Throwaway Prototyping ที่ใช้ได้เรื่อยๆเพราะง่าย เร็วและราคาถูกบทความหน้าผมจะแนะนำ Prototype อีกแบบที่เหมาะกับงานที่ต่างไปจากนี้รวมถึงแนวทางที่จะใช้ประโยชน์จาก Prototype ทั้งสองแบบในการพัฒนาซอฟต์แวร์ครับ


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

The Future Has Arrived — It’s Just Not Evenly Distributed Yet, William Gibson

อนาคตอยู่ตรงนี้แล้ว เรามีหน้าที่ต้องถ่ายทอดมันออกไปให้คนอื่นได้สัมผัสสิ่งดีๆร่วมกันครับ

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.