ตอนที่ 1 เทียบการพัฒนาโปรแกรมกับอาหาร
ผมชอบเรื่อง interface design มานานแล้ว ก็เลยมีเอกสารพวกนี้มากอยู่เหมือนกัน แต่เอกสารที่ชอบที่สุดคงเป็น presentation ของ John Geleynse (Manager, Software Technology Evangelist & User Experience Evangelist from Apple) เป็น presentation ที่พูดในงาน WWDC ปี 2006
นาย John เปรียบเทียบ application กับอาหารสองแบบ คือ

ประสบการณ์ที่ได้จาก Fast Food
- ใช้คนที่ไม่ใช่กุ๊ก เป็นแค่คนที่ทำอาหารได้ ส่วนเราก็จะกลายเป็นแค่คนที่กินได้ แค่ผักกับเนื้อมากๆ ก็พอ เหมือนกับโปรแกรมที่เน้นอัดโน่นนี่ลงไป ให้ทำอะไรได้มากๆ ในหน้าจอเดียว ไม่ได้
- วัตถุดิบแบบโหล สิ่งที่เค้าเน่นคือเรื่องของราคา library ต่างๆ ที่นำมาใช้ก็เลือกที่ใช้ได้ ไม่คำนึงว่าต้องดีที่สุด แค่ทำงานได้ก็พอ
- สารอาหารต่ำ หลายอย่างที่ผู้บริโภคมองไม่เห็น แต่เป็นสิ่งที่ได้มายกตัวอย่างเช่นโปรแกรม presentation บางตัวใช้งานแล้วอาจจะทำให้ผู้ใช้ ฉลาดน้อยลงก็ได้ (อยากให้ลองฟังบทความ โปรแกรมพลังจุด จาก dualgeek podcast
- กินได้ กินบ่อยๆ ก็อร่อยเอง ยิ่งใช้มานานก็จะยึดติดมากขึ้นเรื่อยๆ สุดท้ายพอใช้ได้คล่องก็รู้สึกว่าทำอะไรได้ง่าย ถึงแม้ว่าจะมีของอร่อยกว่ามา แต่ของที่เคยกินที่บ้านเกิดก็อร่อยกว่าอยู่ดี
- ไม่สวยงาม ไม่ใช่ว่าของที่ทำออกมาเร็วๆ แล้วจะไม่สวยแต่ ของที่เป็น fast food เค้าไม่สนใจความสวยงามเพราะไม่ใช่สิ่งที่เอาไปขายให้กับกลุ่มเป้าหมายของเค้า
- ไม่ดีสำหรับคุณ แน่นอนว่าโปรแกรมแบบ fast food มันกินได้ แต่ดีหรือเปล่าคงต้องคิดให้หนักนะครับ

ประสบการณ์ที่ได้จาก Fine Dining
- ใช้คนที่เป็นกุ๊กจริงๆ เค้าไม่ได้คิดแค่ให้เรากินเข้าไป แต่สิ่งที่คิดจะมากกว่านั้นทั้งรสชาติ และความรู้สึกอื่นๆ ในการบริโภค ลองนึกถึงโปรแกรมที่เราเขียนครั้งแรก กับตอนที่เราเขียนโปรแกรมนั้นอีกครั้ง หรือลองนึกถึงตอนอ่าน error ที่เขียนลวกๆ กับ error ที่เขียนดีๆ จะต่างกันมาก
- วัตถุดิบ สด ผ่านการคัดสรรค์ ของดีวัตถุดิบต้องดีด้วย โปรแกรมที่มาเป็นองค์ประกอบของโปรแกรมหลักก็ต้องดีด้วย library ต่างๆ ที่นำมาประกอบกันก็ต้องผ่านการคัดมาอย่างดี ไม่ใช่แค่ทำงานได้ แต่ต้องทำงานได้อย่างดี
- ได้สารอาหาร เวลาที่เราพัฒนาโปรแกรมนอกจากโปรแกรมจะช่วยตอบคำถามหลักของผู้ใช้แล้ว ยังต้องตอบคำถามอื่นๆ ที่ผู้ใช้ต้องการด้วย เช่นเราทำโปรแกรมเขียน CD สิ่งที่ต้องมีเพิ่มเติมเช่นสามารถตรวจดูได้ว่า CD ทำงานอยู่หรือเปล่า
- ถูกปาก ดูโปรแกรมแล้วเข้าใจ work flow ของโปรแกรมกับ workflow ของการทำงานไม่ต่างกัน
- สวยงามดึงดูดใจ แน่นอนว่าอาหาร fast food ความใสใจในความสวยงามต่างจากอาหาร fine dinning แน่ๆ
- ดีต่อสุขภาพ อย่างน้อยถ้าโปรแกรมไม่งี่เง่า คนใช้ก็ไม่หงุดหงิด
การออกแบบโปรแกรม ก็ไม่ต่างจากการทำอาหารขึ้นอยู่กับว่าเราต้องการเขียนโปรแกรมแบบ fast food หรือโปรแกรม Fine Dining ทั้งสองแบบก็มี business model ที่ไม่เหมือนกัน แต่ถ้าเราต้องการสร้างโปรแกรมที่ดี ให้กับกลุ่มเป้าหมายของเรา สิ่งที่เราต้องการคือการออกแบบ

john แบ่งสิ่งที่ต้องคิดตอนที่ออกแบบโปรแกรมเป็น 5 อย่าง
- การวางแผน ที่ต้องเข้าใจ ผู้ใช้, เข้าใจสิ่งที่โปรแกรมต้องทำ, เข้าใจตลาด, เรียงลำดับความสำคัญของตลาด
- การเห็นหน้ากันครั้งแรก สำคัญมาก การเห็นโปรแกรมครั้งแรกก็เป็นส่วนสำคัญ เราต้องดูกันตั้งแต่ packaging, การ setup โปรแกรม, การ configulation สิ่งเหล่านี้ควรจะถูกคิดไว้ตั้งแต่แรก
- พื้นฐานของระบบ รวมถึงผู้ใช้ สิ่งที่ผู้ใช้คุ้นเคยอยู่แล้ว การออกแบบที่รองรับผู้ใช้ที่ไม่สมบูรณ์ (ส่วนมากใน apple จะเตรียมไว้ให้แล้ว เราแค่ใส่ข้อมูลให้ เช่นระบบ text to speech) การทำให้รองรับได้หลายภาษา เป็นต้น
- ออกแบบให้เข้ากับ OS X ส่วนใหญ่อยู่ใน HIG แล้วเช่น การออกแบบ icon
- ประสิทธิภาพ Apple มีเครื่องมือหลายตัวเพื่อช่วยให้เราดึงศักยภาพของระบบออกมาอย่างเต็มที่ เราก็ควรที่จะใช้มัน
สำหรับรายละเอียดในแต่ละตัว ผมจะค่อยๆ เล่าผ่านทางนี้ไปเรื่อยๆ นะครับ
ผมจะมีเว้นวรรคมากหน่อย เพราะน่าจะมีหลายคนที่อ่านด้วย browser ที่ไม่ตัดคำภาษาไทย ถ้าเห็นว่าอันไหนไม่เหมาะสมก็แก้ไขกันได้เลยนะครับ