Design for Reducing Noises
เพราะผมไม่อยากข้อมูลมากมายแบบนี้ … ข้อมูลที่โดยพื้นฐานแล้วคือ “สิ่งเดียวกัน”
- โทรศัพท์มือถือรุ่น AAA8
- โทรศัพท์มือถือรุ่น AAA8 — แก้ไขครั้งที่หนึ่ง
- โทรศัพท์รุ่น AAA8 — แก้ไขล่าสุด
- มือถือรุ่น AAA8 — แก้ไขรอการรีวิว
- มือถือรุ่น AAA8 — โปรโมชั่นเดือนเมษายน
- AAA8 — มาสเตอร์
- AAA8 — Version1.1
ฉันควรเลือกอันไหน? อันไหนคืออันที่ถูกต้อง? อันไหนคืออันที่อัพเดทล่าสุด? … ฉันไม่รู้ เมื่อผู้ใช้ไม่รู้เมื่อผู้ใช้ไม่แน่ใจก็มีโอกาสสูงที่ความผิดพลาดจะเกิดขึ้นตามมา
เราไม่อยากได้แบบนั้น ผมไม่อยากให้มันเป็นแบบนั้น … เพื่อให้ผู้ใช้ทำงานง่ายผมถึงต้องยอมทำงานยากด้วยการใส่วงจรชีวิต (Life Cycle) เข้าไป
ผู้ใช้ควรเห็นข้อมูลที่ถูกต้องที่ใหม่ที่สุดเพียงชุดเดียวเสมอ
นั่นคือเป้าหมายของผมครับ … กรองสิ่งรบกวน (Noises) ออกไปให้ได้มากที่สุด
Life Cycle
วงจรชีวิตมีสี่ขั้นตอน
- DRAFT — ข้อมูลชุดแรกที่ถูกสร้างขึ้นมา … อาจจะโดยแอดมินของระบบ เป็นข้อมูลที่ยังไม่เรียบร้อยยังไม่เป็นทางการ ผู้ใช้ยังไม่เห็นและยังใช้งานไม่ได้
- ACTIVE — เมื่อพร้อมข้อมูลจะถูกทำให้เป็นทางการ ใช้งานได้จริง เป็นข้อมูลชุดเดียวที่ผู้ใช้จะเห็นในระบบ
- DEACTIVATED — เมื่อข้อมูลนี้ไม่ควรถูกแสดงให้ผู้ใช้เห็นอีกต่อไปก็ซ่อนมันไว้ ไม่ได้ลบทิ้ง ถ้าอยากให้มันกลับมาโผล่บนหน้าจออีกครั้งก็กลับไปแอคทีฟมัน
- HISTORICAL — ข้อมูลที่เป็นอดีตเมื่อมีการแก้ไขเพิ่มเติม คิดซะว่ามันเป็นเวอร์ชั่นเก่า
แต่การมีแค่วงจรชีวิตไม่ได้ช่วยให้ผมบรรลุเป้าหมาย ผมต้องการเชื่อมโยงกันของพวกมันด้วย … เวิร์คโฟลนั่นเอง
Activate and Edit
- เริ่มต้นการสร้างข้อมูลขึ้นมาในสถานะดราฟ เมื่อพร้อมก็ทำให้มันเป็นแอคทีฟพร้อมทั้งลบข้อมูลดราฟชุดแรกทิ้งไป (จริงๆก็แค่เปลี่ยนแฟลกในดาต้าเบสเอง)
- การแก้ไขจะทำโดยการสร้างข้อมูลชุดใหม่ขึ้นมาในสถานะดราฟโดยยังเก็บข้อมูลที่แอคทีฟไว้ ผู้ใช้ยังคงเห็นและทำงานกับข้อมูลที่แอคทีฟล่าสุดได้เสมอ
- เมื่อมีการแอคทิเวทครั้งที่สอง ข้อมูลที่แก้ไขไว้ก็จะถูกแสดงให้ผู้ใช้เห็นและใช้งานได้ปกติ ในเวลาเดียวกันข้อมูลที่เป็นแอคทีฟชุดแรกก็จะถูกผลักให้เป็นข้อมูลอดีตโดยอัตโนมัติโดยไม่ลบทิ้ง … ทั้งนี้เพราะมันมีทรานแซคชั่นบางชุดที่เชื่อมโยงมาหาข้อมูลเก่าชุดนี้ (TRX1 — TRX3) ที่เราต้องการเก็บการอ้างอิงเอาไว้
- สำคัญที่ว่าข้อมูลแต่ละชุดจะมีดราฟได้เพียงชุดเดียว เพื่อป้องกันปัญหาที่แอดมินแก้ไขข้อมูลหลายชุดจนไม่รู้อันไหนเป็นอันไหน และมีโอกาสที่จะแอคทิเวทผิดตัว
- อ้อ … ที่สำคัญมากอีกข้อคือไม่อนุญาตให้แก้ไขชื่อของข้อมูลนะครับ ไม่งั้นก็จะกลับไปเละเทะเหมือนข้างบน
Deactivate
- ถ้าไม่อยากให้มีการเรียกใช้ข้อมูลชุดนี้แล้วก็เปลี่ยนจากแอคทีฟเปลี่ยนเป็นดีแอคทีฟได้ ทรานแซคชั่นไหนที่ผูกไว้ก่อนหน้าก็ยังคงอยู่เหมือนเดิมไม่เปลี่ยน … ถ้าอยากได้ข้อมูลนี้คืนมาก็แค่แอคทีฟมันอีกรอบ
- เพื่อเป็นการป้องกันความสับสน ข้อมูลที่อยู่ในสถานดีแอคทีฟไม่สามารถแก้ไขได้ ไม่งั้นจะเจอสถานการณ์ที่ว่ามีดราฟที่เกิดจากเวอร์ชั่นดีแอคทีฟอยู่ถ้าแอดมินเกิดอารมณ์ดีไปแอคทีฟมันขึ้นมาแล้วก็สร้างดราฟมาอีกตัวก็มั่วไปหมดเพราะข้อมูลวิ่งกันคนละสายแล้ว
ตอนออกแบบระบบไม่ได้คิดถึงเรื่องนี้หรอกครับ จนลองเล่นลองเทสจริงถึงได้รู้ว่ามันจะมีปัญหาเรื่องข้อมูลที่ไม่จำเป็นและไม่ถูกต้องถูกแสดงผลขึ้นมาบนหน้าจอ การที่ช่วยให้ผู้ใช้เห็นข้อมูลชื่อเดียวชื่อเดิมซึ่งเป็นข้อมูลที่ใหม่สุดเสมอจะช่วยลดความผิดพลาดในการทำงานลงได้มาก
ลูกค้าอยากทราบข้อมูลโปรโมชั่นปัจจุบันของโทรศัพท์มือถือเครื่องนี้ … ผู้ใช้ก็แค่เลือกรุ่นที่ต้องการแล้วจบเลยไม่ต้องมาควานหาข้อมูลด้วยการดูวันที่ที่แก้ไขล่าสุด
อีคอมเมิร์ส, ระบบการให้คะแนน, ระบบเซอร์เวย์, ระบบอินเวนทอรี่ … ผมว่าแนวคิดนี้ก็ประยุกต์ใช้ได้กับหลายสถานการณ์นะ :)
คิดและเขียนคือสิ่งที่ผมชอบ แบ่งปันคือสิ่งที่ผมรัก เพราะแบบนี้ทุกวันผมเขียนเพื่อถ่ายทอดเรื่องราวจากชีวิตจริง จากประสบการณ์ จากแนวคิด จากอนาคตที่ดีผมมองเห็น และทุกอย่างที่ผมประยุกต์ใช้เพื่อสร้างให้อินเท็นติกเป็นบ้านที่น่าอยู่ บ้านที่เป็นจุดเริ่มต้นของการเปลี่ยนแปลงเล็กๆที่สร้างความแตกต่างในสังคมได้ — มันน่าภูมิใจที่ผมรู้ว่า … ไม่ใช่มีแค่ผมคนเดียวที่อยากเห็นการพัฒนา :)
Inthentic On Facebook | Inthentic On Twitter | Inthentic On Instagram