ถ้าคุณเป็นคนชอบประดิษฐ์นู้น สร้างนี่ ซ่อมอันนี้ ปรับปรุงอันนั้น สมมติว่าสองอาทิตย์ คุณทำมันขึ้นมา 1 ชิ้น ปีหนึ่งคุณจะมีอะไรแบบนี้ให้ทำไม่น้อยกว่า 26 ชิ้น และ แน่นอนคุณไม่มีวันจำมันได้หรอก ว่าคุณทำมันขึ้นมาได้ยังไง
ผมเจอปัญหานี้บ่อยมาก เพราะผมทำนู้นนี่นั่นปีหนึ่ง ผมว่าไม่น่าจะต่ำกว่า 40 ชิ้น ปัญหาที่เจอเลย คือผมจำไม่ได้ว่าผมทำอันนี้มาได้ยังไง รายละเอียดที่ซ้บซ้อนของมันเกิดขึ้นจากอะไร หรือ มันใช้ชิ้นส่วนอะไรบ้าง น็อต หรือ สกรูที่ใช้ไปมันขนาดเท่าไหร่ ยาวเท่าไหร่กันนะ
อีกประเด็นที่สำคัญ คือผมจำไม่ได้เลยว่าแต่ละโปรเจ็คที่ผมทำ ผมใช้เงินไปเท่าไหร่ ถึงแม้มันจะไม่เยอะต่อโปรเจ็ค อาจจะไม่กี่ร้อยบาท แต่พอหลายโปรเจ็คที่ทำ หรือ บางครั้งโปรเจ็คเดียวนี้แหละ อาจจะมีการแก้ไข ซื้อมาแล้วใช้ได้ หรือ ผลิตชิ้นส่วนมาแล้วต้องทิ้งเพราะไม่ได้เสปค รายการพวกนี้ล้วนเป็นรายการที่ต้องจ่ายเงินไปแล้วทั้งสิ้น แต่ไม่เคยเอามาคำนวณได้เลย เชื่อว่าถ้าเอามารวมกันมูลค่ามันก็ไม่น้อยเลยละครับ
ประเด็นเหล่านี้จึงเป็นประเด็นสำคัญ ที่ผมคิดว่าถึงเวลาแล้ว ที่ผมต้องทำอะไรสักอย่างเพื่อมาจัดการเรื่องพวกนี้ ก่อนที่มันจะยุ่งเหยิงเกินจะแก้ไข
วางแผนกันก่อน
หลังจากลองหาข้อมูลดูว่า ในโรงงาน หรือ ธุรกิจที่เขาต้องมีการผลิต เขามีการจัดการเรื่องแบบนี้กันยังไงบ้าง ผมได้พูดคุยกับเพื่อนหลายคนที่ทำโรงงาน หรือ ทำงานในด้านนี้ ทุกคนแนะนำให้ลองไปหาข้อมูลเรื่อง BOM (Bill of materials) ดู เพราะคิดว่าน่าจะตอบโจทย์
BOM คือ รายการวัสดุ เป็นเอกสารที่จะบอกว่า สมมติเราต้องผลิตโต๊ะขึ้นมา 1 ตัว ใน BOM จะบอกเราว่า เราต้องผลิตอะไรขึ้นมาก่อนบ้าง หรือ ต้องเตรียมอะไรบ้าง จำนวนเท่าไหร่ เพื่อให้เกิดเป็นโต๊ะตามที่เราต้องการ
หลังจากลองศึกษาเรื่องนี้ดูอย่างละเอียดแล้ว ก็พบว่ามันน่าจะตอบโจทย์กับสิ่งที่ผมต้องการ แต่ใน BOM มันยังไม่ได้มีส่วนที่ควบคุมรายการวัสดุที่ผมไม่สามารถผลิตเองได้ หรือ รายการวัสดุ อุปกรณ์ ที่ผมต้องทำการสั่งซื้อเพิ่มนั่นเอง บางโปรเจ็คที่มีขนาดใหญ่มาก ผมมีรายการที่ต้องซื้อเพิ่มมากกว่า 100 รายการ
แน่นอน พอมันไม่มีการจัดการเรื่องนี้ให้ดี ทำให้บางรายการซื้อไม่ครบ และ บางรายการผมก็ทำการซื้อซ้ำโดยไม่จำเป็น เสียทั้งเวลา และ เงินเป็นอย่างยิ่ง
ผมจึงคิดว่าถ้าผมสร้าง BOM ขึ้นมาใช้งานแล้ว ก็น่าจะต้องทำเรื่องระบบ PO (Purchase Order) หรือ รายการสั่งซื้อเพิ่มเข้ามาด้วยอีก function หนึ่ง เพื่อควบคุมติดตามการสั่งซื้อวัสดุ เช่น เราซื้ออะไรไปบ้าง หรือ คอยเช็คย้อนหลังว่าเราเคยซื้อของนี้จาก vendor ไหน และ ซื้อไปเมื่อไหร่ ราคาเท่าไหร่
โดยสรุป ผมสามารถตอบตัวเองได้ว่า ใน 1 โปรเจ็คที่ผมทำจะต้องออกเอกสารสองตัวเสมอ นั่นก็คือ BOM เพื่อบอกว่าโปรเจ็คนี่เราจะใช้วัสดุอะไรไปบ้าง และ PO เพื่อใช้จัดการรายการวัสดุที่ผมยังไม่มี
เริ่มต้นกัน
ตัดสินใจอยู่หลายอย่างว่าใน Version แรกจะใช้เครื่องมือไหนดี ความตั้งใจแรกผมอยากทำเป็น web application ให้ดี เป็นเรื่องเป็นราวไปเลย แต่ติดว่าถ้าทำแบบนั้นต้องใช้เวลาเป็นเดือนแน่นอนกว่าจะจบ เลยสรุปว่า google sheets น่าจะเหมาะสุด เพราะถ้าว่าโครงสร้างดีๆ ในอนาคตก็สามารถเอามาเป็น web application ได้ไม่ยาก
ก่อนที่จะไปขึ้นใน google sheets ผมวางผังโครงสร้างของระบบไว้ง่ายๆ แบบนี้ก่อนครับ ไม่เชิงว่าเป็นการออกแบบฐานข้อมูลเสียทีเดียว แต่ถือว่าผมเอา concept จากหลักการนั้นมาก็แล้วกันครับ

จากแผนภาพข้างบน ผมจะได้ทั้งหมด 8 ตาราง ซึ่งใน google sheets เราจะใช้ 1 แผ่นงาน เท่ากับ 1 ตารางในภาพนะครับ โดยใน 8 แผ่นงานนี้ จะแบ่งออกเป็น แผ่นงานเป็น database และ แผ่นงานที่เป็น interface หรือ front-end ก็ได้ครับ โดยผมจะอธิบายหน้าที่มันไปทีละแผ่นงาน ดังนี้ครับ
1. PROJECT อันนี้เป็นแผ่นงานสำคัญสุด ทุกอย่างจะต้องเริ่มต้นจากตรงนี้ครับ เพราะแผ่นงานนี้จะเป็นการลงทะเบียน project ว่าเราทำ project อะไรอยู่
- project number จะเป็นการเขียนคำสั่งให้ generate ขึ้นมาครับ โดยจะมี format ดังนี้ “ปี+เดือน+sequence (3 หลัก) ” จะออกมาเป็นแบบนี้ครับ “2406001” ถือเป็น primary key ก็ได้ครับ
- คอลัมน์อื่นๆ ในตารางนี้จะเป็นค่าที่เรากรอก ไปตามชื่อคอลัมน์ปกติเลยครับ
2. PARTS อันนี้คือ ฐานข้อมูลรายการอะไหล่ทั้งหมด เป็นความสำคัญลำดับที่ 2 ของทั้งหมดเลย โดยจะมีจุดที่น่าสนใจดัง
- sequence จะเป็นการสร้างขึ้นอัตโนมัติโดยอิงจาก project number หากมีเลข project number อยู่แล้ว จะทำการนับทั้งหมดในแผ่นงานว่ามีทั้งหมดกี่รายการ และ จะเทำการบวก 1 เพิ่มไปอีกเรื่อยๆ หากไม่มี ก็จะเริ่มต้นที่ 1 ใหม่ โดยมี format โดยจะรันเป็นสามหลัก เริ่มจาก 001
- pasts number เป็น primary key อีก 1 ตัว ที่เขียนคำสั่งให้ระบบสร้างขึ้น โดยการเอา project number มารวมกับ sequence โดยมี format ดังนี้ “project number + “-” + sequence” จะออกมาแบบนี้ครับ “2406001-001”
- กรณีที่เป็นรายการอะไหล่ที่ใช้ร่วมกันในหลาย project เราสามารถ กำหนดค่า prefix แทนเลข project number ได้ตามต้องการ
- parts type จะเป็น dropdown list ที่ดึงรายการมาจากแผ่นงาน config อีกทีหนึ่งครับ
- คอลัมน์อื่นๆ ในตารางนี้จะเป็นค่าที่เรากรอก ไปตามชื่อคอลัมน์ปกติเลยครับ
3. CONFIG แผ่นงานนี้เอาไว้ใส่ค่าประจำต่างๆ ที่ให้แผ่นงานอื่นเรียกใช้ครับ
4. BOM DETAIL แผ่นงานนี้เป็นรายละเอียดในใบ BOM ครับ หลักการแผ่นนี้จะอ้างอิงค่าสองค่า ได้แก่ project number และ parts number โดยเราจะสั่งให้ ไปดึงค่าสินค้าจากแผ่นงาน รายการสินค้า โดยอ้างอิงจากรหัสสินค้า หรือ parts number ครับ จากนั้นก็ใส่ข้อมูลไปตามคอลัมน์ปกติได้เลยครับ
ข้อสังเกตุคือ ใน 1 Project เราจะออก BOM แค่ใบเดียวครับ เพราะฉะนั้น เราจึงใช้เลข project number มาเป็นเลข BOM number ไปเลย
5. PO LIST แผ่นงานนี้จะเป็นการเก็บข้อมูลใบ PO หลักการจะคล้ายๆ กับแผ่นงาน project ที่ต้อง PO LIST แยกออกมา เพราะว่า ใน 1 project เราสามารถมีการสั่งซื้อได้มากกว่า 1 ครั้ง เช่น การสั่งของจาก vendor มากกว่าหนึ่งเจ้า เป็นต้น
- ในแผ่นงานนี้ก็จะมีคอลัมน์ sequence เช่นกันครับ แต่จะมี format แค่ 00 โดยจะเริ่ม จาก 01 นั่นหมายความว่า 1 project เราจะออกใบสั่งซื้อได้ไม่เกิน 99 ใบครับ (ก็ถือว่าเยอะมากแล้วสำหรับ personal project)
- PO NUMBER เกิดจาก project number + sequence โดยมี format แบบนี้ครับ “PO+projectnumber+”-“+sequence” จะได้ PO2406001-01 เป็นต้น
6. PO DETAIL หน้านี้จะเป็นการใส่รายละเอียดสินค้าที่ต้องการสั่งซื้อ โดยการกรอก parts number โดยเราจะสั่งให้ ไปดึงค่าสินค้าจากแผ่นงาน รายการสินค้า โดยอ้างอิงจากรหัสสินค้า หรือ parts number ครับ จากนั้นก็ใส่ข้อมูลไปตามคอลัมน์ปกติได้เลยครับ
ทั้ง 6 ข้อผมจะถือว่าเป็นส่วนของฐานข้อมูลนะครับ โดยปกติเราจะใช้งานบ่อยๆ ที่ 2 แผ่นงานที่เหลือ ครับ นั่นก็คือ
7. BOM แผ่นงานนี้เป็นแบบฟอร์มออกใบ BOM โดยเราจะกรอกแค่เลข project number แล้วเขียนคำสั่งให้ไปดึงข้อมูลทุกอย่างมาแสดงผล แบบในภาพครับ

8. PO แผ่นงานนี้เป็นแบบฟอร์มออกใบ PO โดยเราจะกรอกแค่เลข PO number แล้วเขียนคำสั่งให้ไปดึงข้อมูลทุกอย่างมาแสดงผล แบบในภาพครับ

หลังจากนั้นเราสามารถสั่งพิมพ์เอกสารทั้งสองอย่างนี้ไปใช้งานได้ตามความเหมาะสมเลยครับ
การใช้งานจริง
ระบบที่ต้องการ การบันทึกแบบนี้ และ มีผู้ใช้งานคนเดียวคือเจ้าของโครงการ นอกจากการมีระบบมาใช้งานแล้ว สำหรับผม มันคือแนวปฏิบัติในการทำงานอย่างหนึ่ง
โดยเราจะต้องตั้งกติกา และ รูปแบบการทำงานให้ชัดเจน เช่น เมื่อคุณจะเริ่ม Project ใหม่ อะไรคือสิ่งแรกที่คุณต้องทำ และ การจบโปรเจคของคุณจะเป็นแบบไหน เช่นของผม เมื่่อผมหาข้อมูล หรือ เจอสิ่งที่น่าสนใจจะทำ ผมจะเริ่มจากการบันทึกโปรเจคไปไหน ระบบที่ผมเขียน แล้วเพิ่ม parts number เข้าไป
จากนั้นก็เริ่มกรอก BOM พอเรากรอก BOM ไป เราจะเริ่มรู้แล้วว่ารายการไหนขาด รายการไหนมี stock ส่วนที่ขาดเราก็ไปเปิด PO
ซึ่งมันดีมาก เพราะมันทำให้ผมสามารถกลับมาเห็นรายละเอียดของทุก project ที่กำลังทำอยู่ (In progress) โดยเฉพาะอย่างยิ่งถ้าเรามี project ที่กำลังกำเนินการอยูสัก 3-5 project หากเราไม่มีบันทึก หรือ รายการที่เหมาะสม เราจะไม่มีทางจำได้เลยว่า project นั้นติดปัญหาอะไร เรากำลังรอของอะไรที่ project นี้นะ ซึ่งระบบที่ผมทำนี่สามารถช่วยเหลือเรื่องพวกนี้ได้ทั้งหมด
อันที่จริงแล้ว ผมยังมีการบันทึก project ในอีกรูปขั้นตอนหนึ่งก่อนผมจะจบ project นั่นคือการบอกเล่าขั้นตอนการทำ ซึ่งผมจะเราอย่างละเอียดไว้แล้วใน “Why I made this website? ผมสร้างเว็บนี้เพื่อ?” สามารถไปอ่านกันได้
ส่วนท่าจบโปรเจคของผมคือการ “ตอกเลข” ครับ จริงๆ ความหมายมันคือการติดรหัส project number โดยจะใช้เครื่องพิมพ์ label ของ brother ที่เป็นเทป และ ใช้เทปสีใส แล้วไปติดไว้ที่ชิ้นงาน หรือ อะไรก็ตามแต่ เพราะสุดท้ายผมจะสามารถสืบย้อนทุกอย่างกลับมาได้จาก project number นั้น ไม่ว่าจะเป็นของทั้งหมดที่ใช้ วันที่เริ่มสร้าง reference หรืออะไรก็ตามแต่


การต่อยอด
จากโครงสร้างที่ผมวางไว้ หากวันหนึ่งผมต้องขยับขยาย หรือ อยากใช้เครื่องมือที่ดีกว่า เช่น มีทีมเข้ามาช่วยงาน หรือ ปัจจัยใดๆ โครงสร้างที่ผมวางไว้สามารถ convert เป็น sql ได้อย่างไม่ยากเย็น และ ถึงตอนนั้นผมก็สามารถไปใช้งานกับรูปแบบใดก็ได้ ตามที่ผมต้องการ
ขอบคุณ และ สวัสดีครับ
คิม
Employee / Son / Father / Husband / and a little of everything in between