Design for Reducing Noises

Piyorot
Product Craftsmanship
2 min readMay 11, 2016

เพราะผมไม่อยากข้อมูลมากมายแบบนี้ … ข้อมูลที่โดยพื้นฐานแล้วคือ “สิ่งเดียวกัน”

  • โทรศัพท์มือถือรุ่น AAA8
  • โทรศัพท์มือถือรุ่น AAA8 — แก้ไขครั้งที่หนึ่ง
  • โทรศัพท์รุ่น AAA8 — แก้ไขล่าสุด
  • มือถือรุ่น AAA8 — แก้ไขรอการรีวิว
  • มือถือรุ่น AAA8 — โปรโมชั่นเดือนเมษายน
  • AAA8 — มาสเตอร์
  • AAA8 — Version1.1

ฉันควรเลือกอันไหน? อันไหนคืออันที่ถูกต้อง? อันไหนคืออันที่อัพเดทล่าสุด? … ฉันไม่รู้ เมื่อผู้ใช้ไม่รู้เมื่อผู้ใช้ไม่แน่ใจก็มีโอกาสสูงที่ความผิดพลาดจะเกิดขึ้นตามมา

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

ผู้ใช้ควรเห็นข้อมูลที่ถูกต้องที่ใหม่ที่สุดเพียงชุดเดียวเสมอ

นั่นคือเป้าหมายของผมครับ … กรองสิ่งรบกวน (Noises) ออกไปให้ได้มากที่สุด

Life Cycle

Data Life Cycle

วงจรชีวิตมีสี่ขั้นตอน

  1. DRAFT — ข้อมูลชุดแรกที่ถูกสร้างขึ้นมา … อาจจะโดยแอดมินของระบบ เป็นข้อมูลที่ยังไม่เรียบร้อยยังไม่เป็นทางการ ผู้ใช้ยังไม่เห็นและยังใช้งานไม่ได้
  2. ACTIVE — เมื่อพร้อมข้อมูลจะถูกทำให้เป็นทางการ ใช้งานได้จริง เป็นข้อมูลชุดเดียวที่ผู้ใช้จะเห็นในระบบ
  3. DEACTIVATED — เมื่อข้อมูลนี้ไม่ควรถูกแสดงให้ผู้ใช้เห็นอีกต่อไปก็ซ่อนมันไว้ ไม่ได้ลบทิ้ง ถ้าอยากให้มันกลับมาโผล่บนหน้าจออีกครั้งก็กลับไปแอคทีฟมัน
  4. HISTORICAL — ข้อมูลที่เป็นอดีตเมื่อมีการแก้ไขเพิ่มเติม คิดซะว่ามันเป็นเวอร์ชั่นเก่า

แต่การมีแค่วงจรชีวิตไม่ได้ช่วยให้ผมบรรลุเป้าหมาย ผมต้องการเชื่อมโยงกันของพวกมันด้วย … เวิร์คโฟลนั่นเอง

Activate, Edit, and Archive

Activate and Edit

  1. เริ่มต้นการสร้างข้อมูลขึ้นมาในสถานะดราฟ เมื่อพร้อมก็ทำให้มันเป็นแอคทีฟพร้อมทั้งลบข้อมูลดราฟชุดแรกทิ้งไป (จริงๆก็แค่เปลี่ยนแฟลกในดาต้าเบสเอง)
  2. การแก้ไขจะทำโดยการสร้างข้อมูลชุดใหม่ขึ้นมาในสถานะดราฟโดยยังเก็บข้อมูลที่แอคทีฟไว้ ผู้ใช้ยังคงเห็นและทำงานกับข้อมูลที่แอคทีฟล่าสุดได้เสมอ
  3. เมื่อมีการแอคทิเวทครั้งที่สอง ข้อมูลที่แก้ไขไว้ก็จะถูกแสดงให้ผู้ใช้เห็นและใช้งานได้ปกติ ในเวลาเดียวกันข้อมูลที่เป็นแอคทีฟชุดแรกก็จะถูกผลักให้เป็นข้อมูลอดีตโดยอัตโนมัติโดยไม่ลบทิ้ง … ทั้งนี้เพราะมันมีทรานแซคชั่นบางชุดที่เชื่อมโยงมาหาข้อมูลเก่าชุดนี้ (TRX1 — TRX3) ที่เราต้องการเก็บการอ้างอิงเอาไว้
  4. สำคัญที่ว่าข้อมูลแต่ละชุดจะมีดราฟได้เพียงชุดเดียว เพื่อป้องกันปัญหาที่แอดมินแก้ไขข้อมูลหลายชุดจนไม่รู้อันไหนเป็นอันไหน และมีโอกาสที่จะแอคทิเวทผิดตัว
  5. อ้อ … ที่สำคัญมากอีกข้อคือไม่อนุญาตให้แก้ไขชื่อของข้อมูลนะครับ ไม่งั้นก็จะกลับไปเละเทะเหมือนข้างบน
Deactivate, Activate and Draft

Deactivate

  1. ถ้าไม่อยากให้มีการเรียกใช้ข้อมูลชุดนี้แล้วก็เปลี่ยนจากแอคทีฟเปลี่ยนเป็นดีแอคทีฟได้ ทรานแซคชั่นไหนที่ผูกไว้ก่อนหน้าก็ยังคงอยู่เหมือนเดิมไม่เปลี่ยน … ถ้าอยากได้ข้อมูลนี้คืนมาก็แค่แอคทีฟมันอีกรอบ
  2. เพื่อเป็นการป้องกันความสับสน ข้อมูลที่อยู่ในสถานดีแอคทีฟไม่สามารถแก้ไขได้ ไม่งั้นจะเจอสถานการณ์ที่ว่ามีดราฟที่เกิดจากเวอร์ชั่นดีแอคทีฟอยู่ถ้าแอดมินเกิดอารมณ์ดีไปแอคทีฟมันขึ้นมาแล้วก็สร้างดราฟมาอีกตัวก็มั่วไปหมดเพราะข้อมูลวิ่งกันคนละสายแล้ว

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

ลูกค้าอยากทราบข้อมูลโปรโมชั่นปัจจุบันของโทรศัพท์มือถือเครื่องนี้ … ผู้ใช้ก็แค่เลือกรุ่นที่ต้องการแล้วจบเลยไม่ต้องมาควานหาข้อมูลด้วยการดูวันที่ที่แก้ไขล่าสุด

อีคอมเมิร์ส, ระบบการให้คะแนน, ระบบเซอร์เวย์, ระบบอินเวนทอรี่ … ผมว่าแนวคิดนี้ก็ประยุกต์ใช้ได้กับหลายสถานการณ์นะ :)

คิดและเขียนคือสิ่งที่ผมชอบ แบ่งปันคือสิ่งที่ผมรัก เพราะแบบนี้ทุกวันผมเขียนเพื่อถ่ายทอดเรื่องราวจากชีวิตจริง จากประสบการณ์ จากแนวคิด จากอนาคตที่ดีผมมองเห็น และทุกอย่างที่ผมประยุกต์ใช้เพื่อสร้างให้อินเท็นติกเป็นบ้านที่น่าอยู่ บ้านที่เป็นจุดเริ่มต้นของการเปลี่ยนแปลงเล็กๆที่สร้างความแตกต่างในสังคมได้ — มันน่าภูมิใจที่ผมรู้ว่า … ไม่ใช่มีแค่ผมคนเดียวที่อยากเห็นการพัฒนา :)

Inthentic On Facebook | Inthentic On Twitter | Inthentic On Instagram

--

--

Piyorot
Product Craftsmanship

A member of Mutrack and Inthentic. I lead, learn, and build with vision, love and care. https://piyorot.com