fbpx

Design Thinking กับ Programmer (ตอนที่ 1)

ทำไม Programmer จำเป็นต้องรู้เรื่อง Design Thinking? มันเกี่ยวอะไรกับการทำงานของเราหล่ะ ?

มีคนเขียนเรื่อง Design Thinking ไปในหลายๆ แง่มุม แต่ว่าในส่วนที่เกี่ยวกับ Design Thinking และ Programmer ผมยังไม่ค่อยเห็น และคาดว่าน่าจะยังไม่มีคนเขียน

เลยมาลองขยายความให้ดูว่ามันสำคัญไฉน แล้วทำไมชาว Programmer อย่างเราๆ ถึงจะต้องไปใส่ใจอะไรที่เกี่ยวกับ Design ด้วย?? เพราะส่วนใหญ่เราไม่ถนัดด้าน Design อยู่แล้วเนอะ

แต่จะบอกว่าจริงๆ แล้ว Design Thinking แทบจะมีความเกี่ยวข้องกับคำว่า Design หรือส่วนที่เป็นสิ่งสวยๆ งามๆ (เช่น อย่างที่เรารู้กันคือ การ Design Website หรือการ Design Mobile App) ค่อนข้างน้อย ถึงน้อยที่สุดเลยทีเดียว

 

Design Thinking คืออะไรนะ ?

 

ขอยกคำนิยามจากที่นี่ โดย Design Thinking คือ “กระบวนการคิดที่ใช้การทำความเข้าใจในปัญหาต่างๆ อย่างลึกซึ้ง โดยเอาผู้ใช้เป็นศูนย์กลาง และนำเอาความคิดสร้างสรรค์และมุมมองจากคนหลายๆ สายมาสร้างไอเดีย แนวทางการแก้ไข และนำเอาแนวทางต่างๆ นั่นมาทดสอบและพัฒนา เพื่อให้ได้แนวทางหรือนวัตกรรมที่ตอบโจทย์กับผู้ใช้และสถานการณ์นั้นๆ”

แต่ถ้าหลายๆ คนอ่านแล้วยังงงๆ ผมขอสรุปแบบสั้นๆ ที่ผมคิดว่าน่าจะเข้าใจง่ายคือ “Design Thinking คือกระบวนการคิดแบบเป็นระบบโดยอาศัยหลักการของนักออกแบบ เพื่อที่จะแก้ปัญหาอะไรสักอย่างโดยที่สนับสนุนให้เกิดการคิดนอกกรอบ

ให้ลองสังเกตคำที่ผมขีดเส้นใต้เอาไว้นะครับ จากนี้ไป จะแยกออกเป็น 2 บท คือ หลักการของ Design Thinking กับ Programmer และ ขั้นตอนของ Design Thinking กับการทำงาน Software

 

1. หลักการของ Design Thinking กับ Programmer

จากนิยามที่ผมให้ด้านบน ถ้าเรามอง Keyword ที่ขีดเส้นใต้จะมีด้วยกัน 3 Keyword คือ

1.1. คิดแบบเป็นระบบ (Systematic Thinking)

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

เราลองสมมุติเหตการณ์กันดู และเหตการณ์นี้ จะเอามาใช้กับทั้งบทความนะครับ

สมมุติว่า เราเป็น Programmer ที่ทำงานอยู่กับบริษัทรับทำ Software (Software House) แล้วหัวหน้าเราบอกให้ทำ Mobile App สำหรับ ไว้ขายดู course online และสามารถซื้อขาย Course Online ได้ (คล้ายๆ กับเว็บ http://course.digitalskill.org ) แต่ว่าสามารถซื้อขาย Course ได้ด้วยนั่นเอง

ถ้าเรามีการคิดแบบเป็นระบบ เราก็จะมองเริ่มจาก ภาพใหญ่ ก่อน ก็คือ ระบบนี้ หลักๆ คือ course online ที่สามารถ ซื้อขายได้ โดยผู้ที่ซื้อขายเสร็จสามารถเข้ามาดู Course online และเรียนรู้ได้เรื่อยๆ

และการคิดแบบเป็นระบบ จะช่วยให้เราแบ่งภาพย่อยๆ ออกมาได้ว่า เป้น

  • ต้องมีหน้าเรียกดูรายการ Course ทั้งหมด
  • ต้องมีหน้าดูรายละเอียดของ Course
  • ต้องมีหน้าสั่งซื้อ Course
  • ต้องมีหน้าจ่ายเงิน
  • ต้องมีหน้า Edit Profile
  • และหน้าอื่นๆ ที่ไม่ขอกล่าวถึง

นี่คือเป็นแค่ขั้นตอนแรกเท่านั้น

1.2. แก้ปํญหา (Problem Solving)

ทีนี่ พอเราจะเริ่มแก้ปัญหา เราก็จะรู้แล้ว ว่าแทนที่จะมองภาพใหญ่เป็นระบบใหญ่ๆ เราก็จะลองเริ่มแก้ปัญหาที่ละหน้าๆ ก่อน เช่น อ้างอิงจากด้านบน เราก็จะแตกปัญหาย่อยๆ ออกมาเป็นการ Coding แต่ละหน้าคือ

  • หน้าเรียกดูรายการ Course ทั้งหมด
  • หน้าดูรายละเอียดของ Course
  • หน้าสั่งซื้อ Course
  • หน้าจ่ายเงิน
  • หน้า Edit Profile

ทีนี้ แต่ละหน้าเราจะแก้ปัญหายังไงดีหล่ะ ?

เรามาลองดูกันดีกว่า ว่าแต่ละหน้าเราจะต้องทำงานอะไรบ้างให้เสร็จ (ต้องแก้ปัญหาย่อยๆ อะไรบ้าง)

  • หน้าเรียกดูรายการ Course ทั้งหมด
    • แสดงรายการ Course ทั้งหมด ส่วนที่เป้น HTML (Front end)
    • ดึงข้อมูลจาก Database ออกมา
    • Database ที่เก็บ Course จะต้อง Design ยังไง
    • การดึงข้อมูล จะดึงยังไง เช่น พ่นออกมาเป็น json แล้ว Frontend ไปเรียนใช้ หรือใช้พวก Code แล้วพ่น object ออกมาไป render เลย
    • CSS จะใช้เทคนิคอะไร เช่น SASS หรือ CSS
    • CSS จะใช้ naming กันยังไง
    • บลาๆ บลาๆ อีกราวๆ 20 กว่างาน
  • หน้าอื่นๆ ขอละไว้นะครับ เดี่ยวจะยาวๆ เกินไป

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

1.3. การคิดนอกกรอบ (Lateral Thinking หรือ Thinking Out of the box)

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

  • หน้าเรียกดูรายการ Course ทั้งหมด
    • framework และภาษาในปัจจุบันที่ใช้ คือใช้ PHP, Laravel และ AngularJS ถ้าเรายึดติดกับกรอบเดิมเราก็ใช้เทคนิคเดิมๆ ไป ใช้ ภาษาเดิมๆ framework เดิมๆ หรือถ้าเราคิดนอกกรอบ ก็อาจจะลองใช้อะไรใหม่ๆ เช่น ใช้ Python ไปเลย หรือ NodeJS ไปเลย – แต่เดี๋ยวก่อน มันจะออกนอกกรอบไปป่าว เปลี่ยนภาษาเลยเหรอ ** ดังนั้น สิ่งที่ตามมาของการคิดนอกกรอบคือ “ต้องมีการวิเคราะห์ถึงข้อดี ข้อเสีย ของทุก Solution ให้ครบ แล้วมีหลักฐานลองรับเท่านั้น” ดังนั้น จากนี้ไป ถ้าจะทำอะไรใหม่ๆ ต้องลองวิเคราะห์ให้หมด เช่น ถ้าใช้ Python กับ Django จะทำให้ run ได้เร็วขึ้น 2 เท่า ประหยัดค่า Server ได้ 2.5 เท่า แต่ใช้เวลาในการพัฒนามากขึ้นจากเดิม จาก 2 เดือน เป็น 4 เดือน 

แล้วพอวิเคราะห์ข้อดีข้อเสียเสร็จ จะทำยังไงต่อหล่ะ??

มันก็กะกลับไปเชื่อมโยงกับการเข้าใจ Design Thinking ในด้านของขั้นตอนการทำงานทั้ง 5 ข้อ ดังรุปล่าง ซึ่ง มันคือข้อ 1 ที่บอกว่า Emphatize หรือการเข้าใจลูกค้า (หัวหน้าเรานั่นเอง) ว่าจากข้อดีข้อเสียนี้ เค้าคิดว่าอย่างไร และจะเลือกทางไหน

 

ตอน 2 เราจะมาต่อกันว่า ขั้นตอน 5 ขั้นตอนของ Design Thinking ดังรูปด้านบน มันจะสัมพันธ์อะไรกับ Programmer กันหล่ะ

 

ใครสนใจด้าน Design Thinking สามารถมาเรียนกันได้ ในราคา Early Bird เพียง 149 บาท (ลด 50% จากราคาเต็ม 299 บาท) (ถึงเที่ยงคืน วันที่ 24 มีนาคม) ดูรายละเอียดและสมัครเลย ที่นี่ 

 

Leave a Reply