Friday, August 11, 2006

How important is the UI?

ช่วงอาทิตย์ที่ผ่านมานี้ คงไม่มีอะไรน่าตื่นเต้นไปกว่างาน WWDC '06 ซึ่งมีทั้งการเปิดตัวผลิตภัณฑ์ใหม่อย่าง Mac Pro และการเปิดเผย features บางประการของ Mac OS X 10.5 หรือ Leopard แล้วก็แน่นอนว่าหลังจากที่หลายๆ คนได้ดู Keynote ของป๋า Jobs ไปแล้วก็มีอาการหมั่นไส้ไปตามๆ กัน เรื่องลอกหรือไม่ลอก โดยเหตุผลหลักๆ ก็คือป๋ากัดเค้า (ที่คุณก็รู้ว่าใคร) ซะจนเหวอะไปหมด แต่พอมาคิดดูจริงๆ แล้วมันก็ไม่ได้ต่างไปจากคนที่ป๋ากัดซักเท่าไหร่ หลายๆ features ที่บอกออกมาว่าใหม่หรือว่า innovative นั้น เอาเข้าจริงมันเป็นหลักการหรือความคิดที่มีคนทำกันมาเป็นเวลานานแล้ว เช่น Spaces ที่มีมานานมากแล้วใน X11 (Virtual desktop ใน KDE ที่ผมใช้อยู่รวมกับ Kompose ทำได้เหมือนกับใน Mac ทุกประการ) หรือ Time Machine โดยหลักการก็เหมือนๆ กับโปรแกรมอย่าง OpenVMS หรือแม้แต่ Volume Shadow Copy ของไมโครซอฟต์เอง เพียงแต่เอามาทำเป็นเหล้าเก่าในขวดใหม่ เสริมเติมแต่งส่วนติดต่อกับผู้ใช้เพื่อให้ดูดีและใช้ง่าย แน่นอนว่าสิ่งเหล่านี้มันคงไม่ถูกใจ Geek ผู้ซึ่งมีประสบการณ์การใช้งานในระดับที่อย่างน้อยๆ ก็ทำงานกับ CLI มานานรวมทั้งเขียน script หรือเขียนโปรแกรมเป็น แต่มันคงเป็นอะไรที่แปลกใหม่รวมทั้งมี usability สูงสำหรับผู้ใช้หน้าใหม่ หรือแม้แต่คนที่ใช้งานมานานแต่ไม่มีความรู้เรื่องระบบเลย...

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

ผมเองเคยเจอการใช้งานหลายๆ โปรแกรมที่การออกแบบการติดต่อกับผู้ใช้นั้น ไม่สามารถสร้างความเข้าใจและความสะดวกในการใช้งานได้เลย ยกตัวอย่างเช่น ชุดโปรแกรม Office ทั้งหลาย ที่เล่นเอา features สำหรับอำนวยความสะดวกไปซ่อนซะลึกเชียว แถมมีปุ่มไอคอนและแถบเครื่องมือเต็มหน้าจอไปหมดจนเลือกไม่ถูก -_-' (มันถึงต้องปรับปรุง interface ในรุ่น 2007 ไง แค่นี้ก็คุ้มแล้ว ไม่ต้องเพิ่ม features อีกหรอก) หรือการใช้งานโปรแกรมเฉพาะทางหลายๆ โปรแกรม ตัวอย่างเช่น ที่ทำงานของ Boss จะมีโปรแกรมสำหรับทำ Image processing อยู่เพื่อทำการวิเคราะห์จำนวนเซลล์ หรือสารต่างๆ ภายในเซลล์ที่ได้ทำการย้อมสีพิเศษเอาไว้ ตัวโปรแกรมนั้นใช้ยากเป็นบ้า ไอคอนไม่ได้สื่อความหมายอะไรเลย แถมยังมีการปรับค่าต่างๆ ที่ไม่รู้ว่าคืออะไรอีกบาน เสียเวลาคลำว่ามันใช้ยังไงไปค่อนข้างนาน (~2 ชั่วโมง สำหรับผมรวมเวลาอ่านคู่มือด้วย ถ้าเป็นคนอื่นสงสัยใบ้กิน) คือคนที่ Lab นี่แบบว่า ทำอะไรก็จะทำแล้วก็สอนต่อๆ กันมา ไม่ค่อยอ่านคู่มือ (คล้ายๆ คนไทยเลยหว่ะ) ถ้าอะไรมาใหม่มากๆ ทำไม่เหมือนเดิมจะเกิดอาการใบ้แดก ดังนั้นการเป็น Scientist ก็ไม่ได้หมายความว่าเขาจะต้องเป็น Computer scientist ไปด้วย

กลับมาเรื่อง Apple ในเรื่องนี้ผมว่าถ้าไม่ได้คำนึงกันถึง features ที่เรียกว่าหลายอันนอกจากไม่ใหม่แล้วยังลอกเค้าอีกบานหรือเอาของเก่ามารวมๆ กันแล้วเรียกว่าใหม่ (ขอกัดหน่อย) ผมว่า Apple ทำการตอบโจทย์เรื่องส่วนติดต่อผู้ใช้ได้ดีมาก คือ การออกแบบส่วนติดต่อผู้ใช้โดยคำนึงถึงความเป็น "มนุษย์" มากกว่า Geek มีความเข้าใจว่าควรจะเพิ่มอะไรเข้าไปหรือตัดอะไรออกเพื่อลดความสับสนในการใช้งาน ยกตัวอย่างเรื่อง Time machine ที่ถ้าเป็นซอฟต์แวร์สำหรับทำ volume backup ที่เห็นกันอยู่ทั่วไป หลายตัวยังใช้ CLI อยู่ ในขณะที่บางตัวจะเปิดการทำงานก็ยากแล้ว ถ้าไม่มีกำลังภายในที่จะทำหรืออยากศึกษาก็ไม่ต้องใช้กันละ แต่สำหรับ Time machine แค่ "just set it up and forget it" การตั้งค่าที่ดูๆ ก็ง่ายดีแถมเวลาเรียก restore ก็มี interface ที่เข้าใจง่าย คือ ปัจจุบันอยู่หน้าสุด แล้วอดีตก็อยู่ไกลออกไป มันดู make sense ดี หรือ Spaces ที่ดูแล้วไม่มีอะไรใหม่ แต่เมื่อเอามารวมกับการเคลื่อนไหวและการ drag n drop มันทำให้ดูน่าใช้ขึ้นจม (KDE + Kompose ก็ทำได้ ยืนยันว่ามัน drag n drop ได้ด้วย) ซึ่งผมไม่เคยคิดเรื่องนี้มาก่อน แต่พอคุณ iMenn กลับมาตอบ ผมก็ว่า เออ สำหรับบางคนเนี่ย การเคลื่อนไหวแบบ eye candy มันก็จำเป็นในการเข้าใจว่าตอนนี้เราอยู่ที่ไหนแฮะ


Time machine browser จาก Apple

ผมเคยคุยกับเพื่อนที่ทำปริญญาเอกทางด้าน computing เขาก็ว่า สิ่งสำคัญที่สุดในการเขียนโปรแกรมก็คือการทำให้มันทำงานได้ถูกต้อง bug น้อยที่สุด รวมทั้งต้อง optimise ให้มันทำงานได้ประสิทธิภาพสูงสุดด้วย ผมถามเรื่อง UI แล้วเขาก็บอกว่า เรื่อง UI นั้นเรียนแค่ไม่กี่ชั่วโมงแล้วใครๆ ก็ออกแบบ UI ได้ โอเคผมเห็นด้วยในส่วนของ backend แต่ผมก็เห็นว่าการออกแบบ UI นั้นไม่ได้มีความสำคัญยิ่งหย่อนไปกว่ากันเลยถ้าหากว่าต้องการทำโปรแกรมขายน่ะ ถึงแม้ว่าคุณจะเขียนโปรแกรมที่ทำงานได้ถูกต้องมากที่สุด เร็วที่สุด แต่ถ้าอินเทอร์เฟสมันดูงี่เง่า ก็แทบจะไม่มีประโยชน์ เพราะคน(ธรรมดา)ไม่รู้ว่าจะใช้งานมันอย่างไร (ประสบการณ์ตรงในเรื่องการใช้งานโปรแกรมสำหรับการตรวจโรคอันนึงที่ไม่ใช่ HospitalOS กับ HOSxP มันมีอินเทอร์เฟสดูยุ่งมากในการใช้งาน หมอส่วนมากรวมทั้งผมด้วยเลยตัดสินใจว่าเขียน OPD card กับใบสั่งยาแบบเก่าดีกว่า...)

ปล. นอกจากเรื่องของโปรแกรมแล้ว เรื่องการออกแบบหน้าเว็บก็สำคัญไม่แพ้กัน หลายๆ ครั้งที่ Boss ต้องการจะให้หลายๆ คนที่คุยด้วยไปดาวน์โหลดโปรแกรมบางตัว (ส่วนมากเป็น IM กับ freeware) แล้วก็หันมาถามผม ผมก็บอกหน้าหลักของเว็บไป Boss บอกว่า "เอาหน้าดาวน์โหลดมาเลย บอกหน้าหลักไปไม่มีใครหาเจอหรอก" ซึ่งผมก็สงสัยว่ามันเป็นเพราะว่า คนดูเว็บอ่านภาษาอังกฤษไม่ออก หรือว่าเว็บมันออกแบบซ่อนเอาไว้แบบงี่เง่ากันแน่ หุหุ

8 comments:

ม่อน said...

เขียนบน OPD card ก็น่าสงสารพยาบาลที่ต้องมานั่งคีย์ให้หมอนะ

DrRider said...

ตอนนั้นยังไม่ได้ใช้เต็มรูปแบบหรอก ยังไงก็ต้อง print มาเก็บไว้ใน OPD card อยู่ดี ที่ต้องคีย์จริงๆ มีแค่ Diagnosis ตาม ICD-10, DRG และก็รายงานแยกกลุ่มโรคของกระทรวงแค่นั้น (ก็ปวดหัวแล้ว)

iMenn said...

ตามมาคอมเม้นต์ว่า เมื่อก่อนผมเขียนโปรแกรมกับเพื่อนเป็นกลุ่ม Freelance ผมดูเรื่อง UI อย่างเดียว เวลาเสนองานลูกค้า พอเค้าเห็น UI ดูน่าจะเข้าใจง่าย เค้าก็ซื้องานง่ายครับ แล้วยังนินทาเจ้าอื่นให้ฟังด้วยว่า "ผมฟังเค้าเสนอตั้งนาน ยังไม่รู้จะกดปุ่มไหนเลย"

อาจจะดูโม้ไปนิด แต่ประสบการณ์ที่ผ่านมาของผม บอกผมว่างานในไทยสวนใหญ่ไม่มี Software Requirement ที่ยากนัก ไอ้ที่ยากคือ คนมันไม่ค่อยจะยอมมาใช้กันซะที ผมเลยซีเรียสเรื่อง UI มากกว่าชาวบ้านเค้าหน่อยน่ะครับ ยิ่งอ่าน Blog ของคุณ apirak นี่ยิ่งใช่เลย

DrRider said...

iMenn:

ผมก็คิดว่าไม่โม้หรอกครับ คนส่วนใหญ่เป็นงั้นจริงๆ ถ้าความเคยชินมันเกิดขึ้นแล้ว และสิ่งใหม่มันไม่สามารถทำให้เข้าใจหรือมี usability ดีกว่าเก่า ถึงแม้มันจะมี feature ดีกว่าเห็นๆ แต่ก็ขอใช้ของเก่าดีกว่า (ดูตัวอย่างที่ผมเขียนไว้ข้างบนได้ตอนนั้นก็อยากเขียนโปรแกรม สำหรับจัดการ IT ในโรงพยาบาลขึ้นมาเองจริงๆ นะ แต่ยังโง่อยู่ไม่รู้ว่าทำไง)

จริงๆ ผมก็เป็นคนที่ชอบดูหน้าตาของ OS ต่างๆ นะ มันดูแล้วมีความสุขไงไม่รู้ ดูแล้วก็เปรียบเทียบว่า อันไหนสวย อันไหนดูดี อันไหนมีความน่าใช้งานมากกว่า

ม่อน said...

ตอนที่ผมทำอยู่โรงบาลก็เคยคิดจะเขียนโดยอิง Database ของ
โปรแกรม His ซึ่งผมเห็นโครงสร้างของ Database His แล้ว
เขาออกแบบได้ยอดเยี่ยมจริงๆ ก็แค่ผมเขียน หน้าตาโปรแกรม
ใส่ไปใหม่ แต่ทำไปทำมา ก็ไม่ได้ทำงานที่โรงบาลแล้ว
หมอ อยากเขียน ด้วยภาษาอะไรละ

DrRider said...

ม่อน:

ตอนนี้กำลังสนใจ python อย่างแรง

ม่อน said...

โหย ในรถไฟอย่างแรง

ผมยังไม่เคยเห็น จริงๆ ว่า python เขียน Database ได้
ซึ่งมันอาจจะมี แต่ผมไม่เคยเห็นนะ

apirak said...

ตอนนี้รวม link ของบทความ โปรแกรมที่ดีเริ่มที่การออกแบบ ไว้ที่ http://www.thaimacdev.com/?q=node/116 นะครับ