ถ้าต้องการออกแบบงานขึ้นมาใหม่โดยไม่มี Best practice ควรทำอย่างไร
เป็นโจทย์ใหญ่หลายครั้งสำหรับคนทำ Tech หรือ ตำแหน่งอื่นๆ หลายครั้ง ที่ต้องออกแบบระบบขึ้นมาเองทั้งหมด ณ ตอนนั้น หรือ ต้องทำงานที่ไม่เคยมีใครทำขึ้นมา บางครั้งก็มี Best practice หรือ Use case ให้ค้นหาเพื่อเปรียบเทียบ แต่ถ้าสิ่งที่เราอยากจะตอบโจทย์ ไม่มี Best practice เราควรจะทำอย่างไร
TL;DR
ใช้กระบวนการทางวิทยาศาสตร์ในการหาคำตอบของสิ่งที่กำลังจะสร้าง กำหนดปัญหา ตั้งสมมติฐาน พิสูจน์ บันทึก สรุป เน้นการใช้ Critical thinking เข้าช่วย
1.ออกแบบการแก้ไขปัญหา
ก่อนการจะตัดสินใจจะใช้วิธีการใดๆ ในการแก้ปัญหา หลายครั้งเราอาจจะยังไม่มีวิธีการสำหรับการแก้ไขปัญหานั้นๆ
วิธีการเริ่มต้นแก้ปัญหาจะใช้ระเบียบวิจัยหรือการระเบียบการค้นคว้าทางวิทยาศาสตร์เข้ามาเป็น Framework อยู่เสมอ
เนื่องจาก Framework ดังกล่าวใช้สำหรับการค้นหาคำตอบหรือเหตุผลสำหรับเหตุการณ์ซึ่งไม่เคยมีใครศึกษา ก่อนเริ่มการทดลองใดๆ เราต้องกำหนด ปัญหา สมมติฐาน ตัวแปร ให้ชัดเจน เพื่อใช้เป็นเงื่อนไขในการทดลองนั้นๆ
2.เข้าใจเงื่อนไข
ทุกๆปัญหาย่อมต้องมีเงื่อนไขสำหรับปัญหานั้นๆ ควรกำหนดปัญหาให้ชัดเจนจากนั้นจึงกำหนดเงื่อนไขที่แตกต่างออกไป ยิ่งจำนวนของเงื่อนไขน้อย วิธีการแก้ไขปัญหาก็จะมีจำนวนมาก ทางกลับกันถ้าจำนวนของเงื่อนไขมาก วิธีการแก้ไขปัญหาก็จะมีจำนวนน้อยลง
เช่นอยากได้ระบบที่รับโหลด 10000 request/sec budget ไม่จำกัด เวลาพัฒนามีไม่จำกัด ไม่ต้องเก็บข้อมูล request ถ้าเงื่อนไขเป็นแบบนี้ก็จะได้วิธีในการสร้างระบบที่มีมากกว่า 1 วิธี
2.ไม่เข้าใจเงื่อนไข
บางครั้งการออกแบบวิธีแก้ปัญหาอาจจะไม่ใช่ผู้ตัดสินใจว่าจะใช้วิธีการไหนและไม่รู้ว่าวิธีการไหนเหมาะสมที่สุด หรือต้องกำหนดเงื่อนไขด้วยตัวเองในบางกรณี เรามีหน้าที่ต้องส่งการแก้ไขปัญหาพร้อมเงื่อนไขให้กับผู้มีอำนาจนำไปตัดสินใจ
เช่นการออกแบบระบบ A มีความเร็วในการพัฒนาที่ไวที่สุด แต่ระบบยากต่อการ maintain ระบบ B มีความเร็วในการพัฒนาช้ากว่าระบบ A แต่ระบบง่ายต่อการ maintain มากกว่าระบบ A
หรือ
การสร้างแบบสอบถามรูปแบบ A สามารถดึงดูดให้คนเข้ามาตอบแบบสอบถามได้มากที่สุด เนื่องจากคำถามน้อย ต้องการแค่ข้อมูลไม่กี่ข้อมูล แต่ข้อมูลที่ได้รับไม่สามารถนำไปใช้ทำ Personalize ส่วนบุคคล แบบสอบถามรูปแบบ B สามารถดึงดูดคนเข้ามาตอบแบบสอบถามน้อยกว่าแบบ A แต่ข้อมูลที่ได้รับสามารถนำไปใช้ทำ Personalize ส่วนบุคคลเพิ่มได้
3.อย่าลืมการวัดผลและเอกสาร
การวัดผลเป็นสิ่งสำคัญไม่ว่าในรูปแบบไหนก็ตาม หลายๆ ครั้งควรมี benchmark สิ่งที่เราแก้ไขไปนั้นถูกต้องตามจุดประสงค์ของการแก้ปัญหานั้น
และสิ่งที่สำคัญอีกหนึ่งสิ่งคือการทำเอกสารให้เป็นขั้นตอนเหมือนการเขียน paper ตีพิมพ์หรือทำวิจัยตอนป.ตรี เพื่อที่จะเผยแพร่วิธีการแก้ไขปัญหาของเรากับสาธารณะหรือห้องประชุมให้รับรู้ถึงวิธีการแก้ไขปัญหาภายใต้เงื่อนไขที่เรากำหนด
4.สุดท้าย
การออกแบบการแก้ไขปัญหาที่ดีควรเริ่มจากการมี mindset ที่ดีเกี่ยวกับการทำวิจัย เนื่องจากเราสามารถกำหนดสภาพแวดล้อม เงื่อนไข ผลการทดลอง ด้วยตัวเอง ทำให้อาจเกิด bias ขึ้นได้ง่าย