ตอนที่ 1 เทียบการพัฒนาโปรแกรมกับอาหาร

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

นาย John เปรียบเทียบ application กับอาหารสองแบบ คือ

fast food

ประสบการณ์ที่ได้จาก Fast Food

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

Dining

ประสบการณ์ที่ได้จาก Fine Dining

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

การออกแบบโปรแกรม ก็ไม่ต่างจากการทำอาหารขึ้นอยู่กับว่าเราต้องการเขียนโปรแกรมแบบ fast food หรือโปรแกรม Fine Dining ทั้งสองแบบก็มี business model ที่ไม่เหมือนกัน แต่ถ้าเราต้องการสร้างโปรแกรมที่ดี ให้กับกลุ่มเป้าหมายของเรา สิ่งที่เราต้องการคือการออกแบบ

main menu

john แบ่งสิ่งที่ต้องคิดตอนที่ออกแบบโปรแกรมเป็น 5 อย่าง

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

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

ผมจะมีเว้นวรรคมากหน่อย เพราะน่าจะมีหลายคนที่อ่านด้วย browser ที่ไม่ตัดคำภาษาไทย ถ้าเห็นว่าอันไหนไม่เหมาะสมก็แก้ไขกันได้เลยนะครับ

ย้าย Codenone

ประกาศย้าย Codenone ไปใช้ Forum ของ Blognone แทนครับ ตามไปตั้งกระทู้ต่อได้ที่ Codenone Forum (รายละเอียดอ่านจากกระทู้ ย้าย Codenone ไปรวมกับ Blognone)

กระทู้เก่าๆ จะย้ายตามไปในภายหลัง ตอนนี้ปิดการโพสต์กระทู้ไว้ เหลือไว้เฉพาะอ้างอิงเท่านั้น