ข้อที่ 1 You need to put a very high value on simplicity.
เราต้องทำให้ความ Simple ของเรามีคุณค่ามากที่สุด เหมือนที่เราชอบถามกันว่า Simple enough? (เรียบง่ายพอหรือยัง) มันไม่ใช่คำถามว่า ตัดออกให้เหลือน้อยพอหรือยัง แต่เป็นการถามว่าเราใส่คุณค่าให้กับความ Simple พอหรือยัง แต่รู้หรือเปล่าว่า ความ Simple มาเป็นอันดับสอง สิ่งสำคัญแรกคือให้การออกแบบของเรามีประสิทธิภาพมากที่สุด หรือประหยัดงบประมาณให้มากที่สุด ถ้าการออกแบบขอเราสามารถ Simple ได้ด้วยก็จะดีมากๆ ตราบเท่าที่ความ simple ของเราไม่ได้ไปทำลายคุณค่าของงานออกแบบของเรา เราจะไม่แลกความ Simple กับเป้าหมายของงาน ถ้าความ Simple ทำให้สูญเสียคุณค่าเหล่านั้น ยอมที่จะเสีย Simplicity เสียดีกว่า
ข้อที่ 2 You must be determind to seek simplicity.
คุณจะต้องกระตุ้นตัวเองและคนรอบข้างให้เห็นความสำคัญของการทำให้อะไรๆ Simple แต่ก็ไม่ใช่แค่รู้สึกดีว่าสิ่งรอบตัวดู Simple แต่จะต้องกระตือรือร้นที่จะเปลี่ยนแปลงด้วย (ต้องรู้สึกว่า Simplicity ไม่ใช่แค่สิ่งที่ดูหรูหราเกินไป แต่มันอยู่ได้กับทุกอย่าง) ดังนั้นเพื่อผลักดันให้เกิดความ Simple เราต้องให้ความพยายามนั้นออกมาจากความตั้งใจของตัวเราเอง (ชนิดที่รับไม่ได้กับอะไรที่มันดู Complicate) และมันจะเป็นไปได้ยากถ้ามีเราบ้าอยู่คนเดียว คนที่อยู่รอบๆ เรา สิ่งแวดล้อมของเราก็มีผลอย่างยิ่ง ดังนั้นมันเลยจำเป็นที่องค์กรใดๆ ที่ต้องการให้เกิดวัฒนธรรมของ Simplicity จะต้องทุ่มเทเวลา พลังความคิด ความพยายามในการออกแบบ และ งบประมาณ ในการทำให้อะไรก็ตาม simple คนมักชอบที่จะได้ Simplicity โดยไม่เสียเงิน แต่ไม่มี Simplicity ใดๆ ที่ได้มาฟรีๆ โดยไม่ลงทุน
เราต้องเข้าใจอย่างถ่องแท้ในเรื่องที่เรากำลังจะทำ ต้องเขาใจว่าอะไรคือคุณค่าของงาน ต้องเข้าใจชัดๆ ว่าอะไรเป็นเหตุผลให้คนอื่นๆ เข้ามาใช้งานระบบของเรา ถ้าเราต้องการรู้เราจะต้องเข้าใจในคุณลักษณะของงานและ กระบวนการทำงานของมันเป็นอย่างดี ถ้าเราไม่เข้าใจงานของเราเมื่อไรสิ่งที่เราทำจะกลายเป็นพยายามทำให้มัน ง่าย (Simplistic) แทนที่จะเป็น เรียบง่าย (Simple) เชื่อเถอะว่าความเรียบง่ายมาจากความเข้าใจที่ถ่องแท้
มันสำคัญที่การออกแบบ แม้ว่าการวิเคราะห์สิ่งที่จะทำ จะเป็นเรื่องสำคัญของการสร้างความเรียบง่าย แต่สุดท้ายแล้วมันก็อยู่ที่การออกแบบอยู่ดี ในขั้นตอนของการออกแบบเราต้องใช้ทั้ง ความคิดสร้างสรรค์ และ Lateral Thinking (คิดนอกกรอบ) พึงระลึกว่าการออกแบบนั้นไม่มีทางออกที่ดีที่สุด มันสำคัญที่เราต้องออกแบบให้ได้หลากหลายมากที่สุด (ทั้ง Alternatives และ Possivility) แล้วเลือกมาเพียงหนึ่ง
เค้าว่า Idea แรกมักจะห่างไกลคำว่าดีที่สุด นั่นคือเหตุผลว่าทำไมเราต้องคิดแล้วคิดอีกเพื่อเพิ่มทางเลือกให้มากที่สุด การที่จะคิดทางเลือกใหม่ๆ ต้องอาศัยความกล้าหาญมากครับ ไม่เช่นนั้นเราก็จะยืดติดกับทางเลือกเดิมๆ ไปตลอดแถมยังคอยหาเหตุผลมาสนับสนุนทางเลือกของตัวเองมากขึ้นเรื่อยๆ การจะตัดทิ้งบางทีต้องตัดเรื่องตัวเราของเรา (ใช้หลักพุทธซะหน่อย) ลองดูตัวอย่างของ Google
รูปที่ 3.1 หน้าเว็บไซต์ Google แบบเก่า
รูปที่ 3.2 หน้าเว็บไซต์ Google แบบใหม่
ลองคิดดูว่าทีมงาน Google ต้องใช้ความกล้าขนาดไหนที่ตัดช่อง Search ออก
หลายคนออกแบบแล้ววนกลับมาที่เดิม แสดงว่าเรายังกล้าหาญไม่พอ
ข้อที่ 5 You need to challenge and discard existing elements.
เราต้องกล้าที่จะตัดสินใจให้สิ่งใดยังคงอยู่ หรือสิ่งใดที่ควรจะตัดออก เพราะระบบ และกระบวนการมักจะโตขึ้นเรื่อยๆ ซับซ้อนมากขึ้นเรื่อยๆ บางอย่างที่เคยเป็นที่ต้องการ ปัจจุบันอาจจะไม่ต้องการแล้วก็ได้ อะไรก็ตามที่ไม่สามารถตัดสินใจได้ให้เลือกกำจัดไว้ก่อน ยิ่งถ้าเราเอามันไว้ด้วยเหตุผลว่าผู้ใช้คุ้นเคยก็ควรให้ผู้ใช้ได้ปรับตัวซะที
ข้อที่ 6 You need to be prepared to start over again.
มันง่ายกว่าถ้าจะปรับปรุงจากของเดิมที่มีอยู่แล้ว แต่บางครั้งเราก็ต้องการคิดใหม่ทำใหม่ตั้งแต่ต้น เมื่อเราเข้าใจระบบเป็นอย่างดีแล้ว ก็กำหนดแนวทางการพัฒนาใหม่ โดยทิ้งระบบที่มีอยู่แล้วไปซะ ทำแบบนี้ค่อนข้างยาก สิ้นเปลือง และไม่ค่อยได้รับการยอมรับ แต่เราต้องแสดงให้เห็นว่าระบบใหม่มีประโยชน์อย่างไร และแสดงให้เห็นว่าการปรับปรุงของเก่านั้นไม่มีทางได้รับประโยชน์เท่ากันไม่จำเป็นต้องออกแบบใหม่ทั้งระบบเสมอไป เราอาจออกแบบใหม่เฉพาะส่วนก็ได้
“Modify if you can - start afresh if you can not”
ผมว่าการออกแบบใหม่ต้องใช้ความกล้าหาญมากมายทีเดียวครับ มันจะเจ็บปวดถ้าต้องทิ้งสิ่งที่ตัวเองคิดมาและมักจะวนกลับมาหาของเดิมเสมอ เราสามารถพึ่งพาความคิดของคนอื่นเพื่อให้เราหลุดจากกรอบความคิดของตัวเราเอง เช่นผมออกแบบระบบ Mail อยู่แล้วพยายามพัฒนาคิดใหม่ทำใหม่ แต่สุดท้ายผมก็วนกลับมาที่ระบบเดิม แต่หลังจากที่เห็นโปรแกรม Mail Client ของ Apple ผมก็สำนึกว่ามีรูปแบบที่ดีกว่า และสามารถคิดออกนอกกรอบของระบบ Mail เดิมได้ (สิ่งที่ต้องการจากระบบอื่น คือความเชื่อ และความกล้าที่จะคิดว่ามีอะไรที่ดีกว่าจริงๆ)
ข้อที่ 7 You need to use concepts.
การมี Concept (กรอบความคิด, ความคิดรวบยอด) เป็นสิ่งมนุษย์ใช้ในการทำให้โลกนี้ยุ่งยากน้อยลง ถ้าเราไม่ใช้ Concept การทำงานของเราก็จะลงรายละเอียดมากเกินไป มันเป็นไปไม่ได้ที่เราจะคิดให้แตกต่างโดยดูแต่รายละเอียด เราต้องย้อนกลับมาดู Concept แล้วมองหาหนทางที่แตกต่างไปตาม Concept ที่วางไว้ การกำหนด Concept เป็นก้าวแรกที่ทำให้เราได้แนวทางและจุดประสงค์ เมื่อเรามีสิ่งนี้เราก็สามารถมี Idea โดนๆ และสามารถลงรายละเอียดได้อย่างถูกต้อง จำไว้ว่าเราควรกำหนดเป้าหมายของ Concept ให้เป็นเรื่องทั่วไป ไม่ต้องชัดเจนมาก เพราะนี่เป็นวิธีที่เราใช้สร้าง Concept
“Concepts are the human mind's way of simplifying the world around.”
Concept เป็นสิ่งที่มนุษย์ใช้ทำให้โลกดูง่ายขึ้น ในกลุ่มของคนที่เป็นนักออกแบบคงจะเห็นความสำคัญของ Concept กันอยู่แล้ว แต่ในกลุ่มของนักพัฒนาผู้เขียนอยากบอกว่าจะทำอะไรก็ควรมี Concept เหมือนกัน และเราต้องสร้างมันขึ้นมาตั้งแต่แรกไม่อย่างนั้นผลงานคงไม่ออกมา Simple อย่างที่เราคาดหวังไว้
ข้อที่ 8 You may need to break things down into smaller units.
แน่นอนว่าส่วนงานที่มีขนาดเล็กจะมีความเรียบง่ายมากกว่าส่วนงานที่มีขนาดใหญ่ เพราะฝ่ายที่มีขนาดเล็กจะจัดตั้งเพื่อให้รองรับเป้าหมายขนาดใหญ่ โดยแนวคิดนี้ทำให้เกิดการคิดแบบไม่รวมศูนย์ (Decentralization) และแนวคิดในการหาตัวแทน (Delegation) ซึ่งทำให้การทำสามารถเจาะลึกเป็นส่วนเล็กๆ ไม่จำเป็นต้องเข้าใจทั้งหมดในคราวเดียว ระบบที่ซับซ้อนสามารถทำงานได้ดีเมื่อมีการแยกเป็นระบบย่อยๆ โดยให้แต่ละส่วนย่อยๆ มีการจัดการที่เรียบง่าย และพร้อมที่จะทำงานกับระบบอื่นๆ (เหมือนการทำงานของเซลล์เล็กๆ ในร่างกายเรา) เวลาออกแบบโปรแกรมใหญ่ๆ ผู้เขียนมักจิตนาการถึงการทำงานร่วมกับของโปรแกรม Address book, Calendar และ Mail (บน Mac OS X) ที่แต่ละโปรแกรมสามารถแยกกันพัฒนาได้ แต่ยังคงทำงานประสานกันได้อย่างดี (หลายคนอาจจะไม่รู้ว่าเราลากคนใน Address book มาในใน iCal ได้เลย)
แต่พอหนังสือเล่มนี้ Mention ถึงการทำงานของแต่ละเซลล์ในร่างกาย ผู้เขียนว่าตัวอย่างนี้ดูดีกว่ามาก มันดูธรรมชาติและเป็นในแบบที่น่าจะเป็นและเราสามารถนำมาประยุกต์ใช้ในการเขียนโปรแกรมได้อย่างดี พอพูดถึงตรงนี้ก็ทำให้อยากออกแบบโปรแกรมที่ไม่เหมือนมนุษย์เขียนขึ้นมา แต่เหมือนกับมันเกิดขึ้นมาเองตามธรรมชาติ ถ้าทำได้คงเป็นจุดสุดยอดของนักออกแบบโปรแกรมแน่นอน
ข้อที่ 9 You need to be prepared to trade off other values for simplicities.
ระบบที่พยายามรองรับทุกอย่าง มักจะซับซ้อนมากๆ บางครั้งเราต้องชั่งน้ำหนักระหว่างความสมบูรณ์แบบเพื่อแลกกับความเรียบง่าย บางครั้งเราแก้ปัญหาโดยการเก็บระบบของเราให้เรียบง่ายไว้ แล้วเปิดอีกระบบขึ้นมาเพื่อแก้ปัญหาพิเศษๆ โดยเฉพาะ เรารู้กันดีว่าความผิดพลาดเป็นสิ่งที่รับไม่ได้ บางครั้งเราต้องแลกความสมบูรณ์กับความเรียบง่ายในทางปฏิบัติ ความเรียบง่ายคือสิ่งสำคัญที่เราต้องการจริงๆ บางครั้งเราจำเป็นต้องละทิ้งสิ่งสำคัญอื่นๆ เพื่อให้เกิดความเรียบง่าย ซึ่งลำดับในการตัดสินใจจำเป็นต้องอาศัยความเข้าใจ คุณค่าของแต่ละงาน และการลำดับความสำคัญ มันเป็นไปไม่ได้ที่จะได้ทุกอย่าง ดังนั้นเราต้องให้น้ำหนักของคุณค่าในตัวเลือกที่เราคิดแตกออกมา อย่างรอบคอบที่สุด
“If simplicity is a real value then you must be prepared to trade off other real values in order to gain simplicity”
ถ้าเราให้ความสำคัญกับความเรียบง่าย ก็ต้องทำใจแลกอย่างอื่นเพื่อให้ได้ความเรียบง่ายมา สำหรับตัวผู้เขียนเองคิดว่านี่เป็นโจทย์ที่ทำใจได้ยากมาก โดยเฉพาะตอนที่คุยกับลูกค้า เพราะลูกค้าต้องการทุกอย่างและยากที่เค้าจะแลกสิ่งเหล่านั้นกับความเรียบง่าย ดังนั้นหลายครั้งที่ผู้เขียนบอกตัวเองว่า "สิ่งที่ลูกค้ารู้ไม่ใช่ Requirement แต่ลูกค้ารู้ Need" เราเอาสิ่งที่เค้าขาดไม่ได้ (need) ออกมาก่อน แล้วสร้างสิ่งที่เค้าต้องการออกมา (Requirement)"
ข้อที่ 10 You need to know for whose sake the simplicity is being designed.
ความเรียบง่ายที่เรากำลังจะออกแบบนั้น ทำมาเพื่อผู้ใช้ของระบบ (ลูกค้า) หรือว่าทำมาเพื่อผู้ดูแลระบบ (owners) ?
ความเรียบง่ายนั้นๆ ทำมาเพื่อกระบวนการทำงาน หรือทำมาเพื่อการบำรุงรักษา?
ความเรียบง่ายนั้นๆ ทำมาเพื่อการใช้งาน หรือทำมาเพื่อประหยัดงบประมาณ?
การทำให้ระบบของเราเรียบง่ายนั้น อาจจะหมายถึงการทำให้ผู้ใช้ใช้งานได้ง่ายขึ้น แต่เป็นระบบที่ซับซ้อนสำหรับผู้ดูแลระบบ มันจะได้อย่างเสียอย่างเสมอ ใครกันแน่ที่ควรจะได้ประโยชน์จากการทำให้ระบบเรียบง่าย ถ้าไม่มีใครได้ประโยชน์จากงานนี้ ก็ต้องหาให้ได้ว่าจะมีใครที่จะได้ประโยชน์
“For whose sake is the simplicity being designed? Who is going to benefit from the simplicity?”
เป็นเรื่องลำบากมากโดยเฉพาะตอนที่คนจ่ายเงินกับคนที่จะได้ประโยชน์ไม่ใช่คนเดียวกัน ตรงนี้ก็อยู่ที่ศิลปะการเจรจาของ Project Manager หรือ System Analyst หรือถ้าเป็นง่านโฆษณาก็ต้องเป็น Account Executive ใครอยู่ใกล้ลูกค้ามากที่สุดก็รับผิดชอบเรื่องนี้หนักหน่อย
๒ ความคิดเห็น:
แนวคิด Simplicity เป็นอะไรที่เหมือนจะง่ายแต่ไม่ง่ายเลย ..
เมื่อก่อนใช้ทฤษฏี K.I.S.S. (Keep It Simply Stupid : ทำมันให้ง่ายเหี้ยๆ ) เหมือนกัน แต่เพิ่งจะได้มาอ่านบทความเกี่ยวกับ แนวคิดของ Simplicity ที่เป็นเชิงทฤษฏีก็คราวนี้แหละ
จิงๆเรื่องของ simplicity สามารถนำมาประยุกต์เข้ากับชีวิตทั้งชีวิตของคนเราได้เลย ทั้งในแบบ มหภาค และ จุลภาค (ยืมศัพท์เศรษฐศาตร์มาใช้ละกัน)เป็นประโยชน์ในแง่ของแนวคิดเป็นอย่างยิ่ง และ แนะนำให้อ่านอย่างพินิจพิเคราะห์เพื่อนำไปปรับใช้
simplicity เป็นองค์ประกอบหนึ่งในการใช้ชีวิตแบบพอเพียงด้วยคับ :)
simplicity หรอ ... สำหรับจิ๊บนะ พูดง่ายแต่ทำจริงๆมันยากอ่ะ เพราะพอมัน simple ปุ๊ป มันจะรู้สึกไม่พอ รู้สึกว่าอะไรหายไป .. แต่พอใส่ไปครบ แม่ง รกไปอีกละ - -'
แสดงความคิดเห็น