Prioritizing Web Usability

เมื่อวันก่อนลงจาก BTS อ่อนนุชเลยเดินซื้อ DVD Spiderman 3 ที่เพิ่งออกมาตอนแรกกะรอที่มันเป็น 2 disc แต่คิดไปคิดมา เอาแค่นี้ก็น่าจะพอแล้ว แล้วก็แวะร้านการ์ตูนก่อนถึงหอไปซื้อหนังสือการ์ตูน "สายลับจับบ้านเล็ก" มาสักหน่อยนึง พลาดตอน Seasons Change ไปแล้วรอบนี้ไม่อยากพลาดอีกเลยเอามาอีกเล่ม
ส่วนวันนี้ไปเดินซื้อนาฬิกาดิจิตอลสำหรับปลุกตอนเช้าไปทำงาน แล้วหลังจากนั้นก็เลยไปลองเดิน ๆ ดูหนังสือใน fortune ได้มาเล่มนึงก็คือ "Prioritizing Web Usability" จริง ๆ เปิดเล่ม ๆ อื่น ๆ ลองอ่านดูหลายเล่ม แต่เล่มนี้โดนในที่สุดแล้ว

Prioritizing Web Usability" [Homepage]
Book by Jakob Nielsen and Hoa Loranger
New Riders Press, Berkeley CA
ISBN-10: 0-321-35031-6
ISBN-13: 978-0-321-35031-2
406 pages, heavily illustrated, in full color

DSC00169

จากที่ได้ลองอ่าน ๆ นี่ผมรู้สึกว่าโดนจริง ๆ เพราะว่าไล่ตั้งแต่นิยาม ไปจนถึงการออกแบบ และมีข้อสังเกตต่าง ๆ มากมาย จริง ๆ ผู้แต่งที่ชื่อ Jakob Nielsen เห็นได้การกล่าวขานว่าเป็น "the guru of web usability" เลยทีเดียว เลยจัดมาซะเลย ลด 20% ก็เหลือ 1,509 บาท เดี่ยวช่วงสัปดาหืนี้คงอ่านสักหน่อย

คือตอนนี้จะเห็นว่าผมหันมาศึกษาด้าน Software Architecture, Marketing และ Usability เยอะพอสมควร อ่านหนังสือพวก Business Week (ประเทศไทย) และหนังสือพิมพ์อย่างบิสซิเนสไทย พยายามเปิดโลกให้มากขึ้นกว่าแต่ก่อน พยายามมองอะไรที่มันไม่เป็น Technical มาก ๆ หลัง ๆ เริ่มเห็นว่าโปรแกรมที่ตัวเองทำขึ้นในอดีต พอกลับมานั่งใช้เอง เริ่มรู้สึกว่า "ทำไปได้ไงฟร่ะ ใช้ก็ยาก ใครมันจะใช้เนี่ย" -_-‘ ขนาดตัวเราเองยังคิดแบบนี้ ให้คนอื่นใช้คนโยนของเราทิ้งตั้งแต่เปิดหน้าแรกมาเลยแหละ ตอนนี้เลยทุ่มทุนกันพอสมควร

แต่สิ่งหนึ่งที่คนในแวดวง Com Sci บ้านเราขาดมาก ๆ คือแนวคิดด้าน usability, architecture และ tuning/opimizing/performace เนี่ยแหละ แถมหนังสือภาษาไทยส่วนใหญ่สักแต่เอาออกมา และมักไม่ได้พูดถึงเรื่องพวกนี้เลย เมื่อหลายวันก่อนเจอ พี่เดฟ ที่ fortune เนี่ยแหละ ก็ได้คำถามมาว่าหนังสือฝั่งภาษาไทยกับต่างประเทศมีอะไรแต่งต่างกัน สิ่งที่ผมตอบได้เลยคือความแน่นของเนื้อหาเชิงลึกและเนื้อหาพื้นฐานสุด ๆ พวกนิยามต่าง ๆ สิ่งที่มีมากถึงมากที่สุดคือแนวนำไปใช้ ใช้เป็นอย่างเดียว แต่ไม่รู้ว่าที่ใช้ไปมันหมายความว่ายังไง หรือเนื้อหาเชิงลึกที่ต้องใช้ทักษะด้านพื้นฐานสูง ๆ เพื่อทำให้ระบบสามารถรองรับการทำงานได้สูงสุด และหนังสือส่วนใหญ่จะเป็นพวก dummy หรือพวกเรียนเร็ว เรียนลัด กระโดดข้ามขั้นตอน กันทั้งนั้น ทำให้ส่วนใหญ่มักจะรู้ไม่ลึก และมักมองในด้านที่หนังสือสอนเยอะเกินกว่าจะแหวกแนวการทำงานออกมา สังเกตง่าย ๆ จาก source code ของ program ที่อยู่ในหนังสือนั้น มี performance ต่ำมาก ๆ คือทำงานได้ตามจุดประสงค์ แต่ไม่ได้บอกต่อไปว่าควรปรับแก้ตรงไหน และทำไม

มีอย่างที่ไหน select * from table แล้วเอามานับในตัวโปรแกรม แล้วก็จบ -_-‘ โห ถ้าข้อมูลมันมีสัก 16 ล้าน records โปรแกรมคงกินทรัพยากรหมด server หล่ะมั้งน่ะ ทำไมไม่ใช่ select count(pkey_id) from table ซะก็หมดเรื่องได้มาตัวเลขตัวเดียว จบข่าวกันไป ผมเจอ code แบบนี้บ่อยมาก ๆ มีเกือบทุกเล่มของหนังสือที่มีการสอนติดต่อกับฐานข้อมูลเสียด้วยดิ

และซ้ำร้าย คนอ่านส่วนใหญ่ก็ไม่ได้คิดตามต่อไปว่า ทำไมมันต้องทำแบบนี้ ทำอีกแบบได้ไหม แบบนั้นน่าจะดีกว่านะ เร็วกว่า อะไรแบบนี้ มีส่วนน้อยเท่านั้นที่เอามาปรับแต่งให้ระบบนั้นดีขึ้น

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

จาก Rawitat’s Blog

อ.มะนาว พาเพื่อนมาแนะนำให้รู้จักอีกคน ซึ่งพอเราเห็นกำลังนั่งอ่านหนังสือ Agile Web Dev with Rails ที่เราเคยเขียนด่าถึงด้วย ก็เลยให้ดูความแข็งแกร่งของหนังสือเล่มนั้นหน่อย ว่ามันเกรียนเทพแค่ไหน … คนที่เคยอ่านลองไปหาหน้าที่บอกวิธีการติดตั้ง Ruby บน Mac ดูนะครับ จะเห็นคนเขียนเกรียนถึงโปรแกรม DAVE (ซึ่งจริงๆ มันก็มีจริงๆ อ่ะนะ แต่ว่าไม่เกี่ยวกับผมนะ) …. แถจริงๆ เพราะว่าคนเขียนหนังสือต้นฉบับเค้าชื่อ Dave Thomas อ่ะนะ มันก็เลยมี prompt ชื่อ dave มาด้วย แบบว่า

dave> some_command_here ...

นะ เกรียนสุดๆ จริงๆ

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

กลับมาเรื่อง web usability อีกนิดนึง

จริง ๆ การออกแบบเว็บในปัจจุบันนั้น มุ่งเน้นการเข้าถึง function การทำงานให้เข้าถึงง่ายเข้าไว้ ซึ่งไม่ได้ดูที่จำนวนเพียงอย่าง ซึ่งถึงแม้ function 108|1009 แบบ Microsoft Word <= 2003 แต่ถ้ามันเข้าถึงลำบาก ก็เหมือนกับว่าไม่มีนั้นแหละ เพราะผู้ใช้ไม่ได้ถูกนำมาใช้ให้เกิดประโยชน์ หรือหามันไม่เจอนั้นเอง ผมจึงมองว่าเว็บถือเป็นตัวอย่างในการสอน usability ได้ดีมาก ๆ ในการบอกกับคนที่เรียนได้เลยว่า ควรเป็นแบบไหนกันแน่ ….

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

เหมือนกับเวลาเราอยู่กับสาวนั้นแหละ ชอบมาเก็บของเราให้เข้าที่เข้าทาง พอเราจะใช้ของเหล่านั้นทีนึง ก็หาไปเหอะ เพราะคนใช้กับคนเก็บมันคนละคนกัน -_-‘

นั้นหมายความว่า user รู้ว่าอะไรคือสิ่งที่เค้าใช้งานได้คล่องที่สุด เพราะฉะนั้น

Developer is not User.

สวัสดี ;)