ข้ามไปที่เนื้อหา

4. โมเดลต้นทุน#

หน้านี้คือ หัวใจของทั้งระบบ — ต้องตกลงตัวเลขและวิธีคิดในหน้านี้ให้จบ ก่อน เขียนโค้ดบรรทัดแรก

4.1 หลักการ#

ต้นทุนของบริษัทซอฟต์แวร์ = เวลาคน

ค่าเซิร์ฟเวอร์ ค่า license ค่าออฟฟิศ รวมกันยังน้อยกว่าเงินเดือนมาก ดังนั้นถ้ารู้ว่า ใคร ใช้เวลาเท่าไหร่ กับโครงการไหน ก็รู้ต้นทุนโครงการ ทุกอย่างที่เหลือคือรายละเอียดของการปันส่วน

4.2 ต้นทุนต่อชั่วโมงของพนักงาน (Cost Rate)#

ต้นทุนพนักงานต่อเดือน = เงินเดือน
                       + ประกันสังคมส่วนนายจ้าง
                       + สวัสดิการ (ประกัน · ค่าเดินทาง · อุปกรณ์เฉลี่ย)
                       + โบนัสเฉลี่ยต่อเดือน

cost_rate (บาท/ชม.)   = ต้นทุนพนักงานต่อเดือน ÷ ชั่วโมงทำงานมาตรฐานต่อเดือน

ชั่วโมงทำงานมาตรฐานต่อเดือน ให้กำหนดเป็นค่าคงที่ทั้งบริษัท เช่น 168 ชม. (8 ชม. × 21 วัน) อย่าคิดตามจำนวนวันทำงานจริงของแต่ละเดือน เพราะจะทำให้ต้นทุนของงานเดียวกันเดือนกุมภาพันธ์แพงกว่าเดือนมีนาคมโดยไม่มีเหตุผลทางธุรกิจ

กติกาสำคัญ: cost_rate ต้องเก็บเป็นประวัติ

เมื่อขึ้นเงินเดือน ต้นทุนของงานที่ทำไปแล้วต้องไม่เปลี่ยน ระบบจึงเก็บ cost_rate แบบมีวันที่เริ่มมีผล (effective_from) และตอนคำนวณจะใช้ rate ที่มีผล ณ วันที่ลงเวลา เสมอ ไม่ใช่ rate ปัจจุบัน

4.3 ค่าล่วงเวลา (OT)#

ต้นทุน OT = ชั่วโมง OT × cost_rate × ตัวคูณ

กรณี ตัวคูณโดยประมาณ
OT นอกเวลาทำงานปกติ ในวันทำงาน 1.5
ทำงานในวันหยุด (ลูกจ้างรายเดือนที่ได้ค่าจ้างวันหยุดอยู่แล้ว) +1.0
OT ในวันหยุด (เกินเวลาทำงานปกติของวันหยุด) 3.0

ต้องยืนยันก่อนใช้จริง

ตัวเลขข้างต้นอ้างอิงหลักกฎหมายคุ้มครองแรงงานโดยทั่วไป ให้ HR และฝ่ายบัญชียืนยันตัวคูณที่บริษัทใช้จริง ก่อนฝังลงระบบ ระบบจะเก็บตัวคูณเป็น ค่าตั้งค่า (config) ที่แก้ได้ ไม่ hard-code ในโค้ด

4.4 ค่าใช้จ่ายส่วนกลาง (Overhead)#

ค่าเช่าออฟฟิศ · license เครื่องมือ · ค่าเซิร์ฟเวอร์ · เงินเดือนทีมบริหาร ฯลฯ ไม่ได้ผูกกับโครงการใดโครงการหนึ่ง แต่ต้องถูกปันส่วนไม่งั้นต้นทุนจะดูถูกกว่าความจริง

วิธีที่แนะนำ — Overhead Uplift % (ง่ายที่สุด และแม่นพอสำหรับการตัดสินใจ)

overhead_rate = ค่าใช้จ่ายส่วนกลางต่อเดือน ÷ ต้นทุนเงินเดือนทีมที่ทำงานลูกค้าต่อเดือน

ต้นทุนโครงการ = Σ (ชั่วโมง × cost_rate × ตัวคูณ) × (1 + overhead_rate)

ตั้งค่า overhead_rate ปีละครั้ง ทบทวนทุกไตรมาส เก็บเป็นค่าที่มีประวัติเช่นเดียวกับ cost_rate

4.5 ฝั่งรายได้ — ลูกค้าสองแบบคิดคนละวิธี#

flowchart LR
    R["Retainer<br/>X บาท/เดือน"] --> C["ลูกค้า LSM99"]
    C --> P1["โครงการ A"]
    C --> P2["โครงการ B"]
    C --> P3["โครงการ C"]
    C --> P4["งาน Support"]
    P1 --> H1["ชั่วโมง → ต้นทุน"]
    P2 --> H2["ชั่วโมง → ต้นทุน"]
    P3 --> H3["ชั่วโมง → ต้นทุน"]
    P4 --> H4["ชั่วโมง → ต้นทุน"]
    H1 --> M["กำไร = X − ต้นทุนรวม<br/>วัดที่ระดับลูกค้าเท่านั้น"]
    H2 --> M
    H3 --> M
    H4 --> M
  • ห้ามปั้นรายได้ต่อโครงการ — ไม่มีอยู่จริง ปั้นแล้วรายงานจะหลอกตัวเอง
  • ✅ วัด กำไรที่ระดับลูกค้า: retainer − ต้นทุนรวมทุกโครงการของ LSM99
  • ✅ วัด สัดส่วนการใช้ทรัพยากร: โครงการแต่ละตัวกินกี่ % ของชั่วโมงทั้งหมด → นี่คือข้อมูลที่เอาไปเจรจาขอบเขต/ราคาปีถัดไปได้ตรง ๆ
  • รายได้ผูกกับสัญญา/งานได้โดยตรง
  • วัด กำไรรายโครงการ ได้เต็มรูปแบบ: มูลค่างาน − ต้นทุน
  • เทียบ ชั่วโมงที่ประเมินไว้ vs ชั่วโมงจริง เพื่อปรับความแม่นของการตั้งราคาครั้งถัดไป

4.6 ตัวเลขที่ผู้บริหารต้องเห็น#

ตัวชี้วัด สูตร บอกอะไร
ต้นทุนรายโครงการ Σ (ชม. × rate × ตัวคูณ) × (1 + overhead) โครงการไหนแพงจริง
กำไรรายลูกค้า รายได้ − ต้นทุนรวม บริษัทได้เท่าไหร่จากลูกค้ารายนี้
Effective rate retainer ÷ ชั่วโมงรวมที่ทุ่มให้ลูกค้า ได้เงินเฉลี่ยชั่วโมงละเท่าไหร่ — เทียบกับ cost_rate เฉลี่ยแล้วเห็นกำไรทันที
สัดส่วนชั่วโมง ชม.โครงการ ÷ ชม.รวมของลูกค้า โครงการไหนกิน retainer ไปเท่าไหร่
Support vs Dev ชม. kind=support ÷ ชม.ทั้งหมด ถ้าสูงขึ้นเรื่อย ๆ = ระบบเดิมมีปัญหาสะสม
OT Ratio ชม. OT ÷ ชม.ทั้งหมด (รายโครงการ) สัญญาณขอบเขตงานบานปลาย หรือคนไม่พอ
Utilization ชม. งานลูกค้า ÷ ชม. ที่ทำงานได้ ทีมแน่นเกินไปหรือว่างเกินไป

ถ้าเลือกดูได้แค่ตัวเดียว ให้ดู Effective rate

มันบีบทุกอย่างเหลือคำถามเดียว: "ชั่วโมงที่เราขายให้ LSM99 ได้เงินมากกว่าต้นทุนของเราหรือเปล่า"

4.7 ตัวอย่างการคำนวณ#

ตัวอย่างสมมติ — ตัวเลขไม่ใช่ของจริง ใช้เพื่อแสดงวิธีคิดเท่านั้น

สมมติ rate card

คน ต้นทุน/เดือน cost_rate (÷168)
Dev A (senior) 60,000 357 บาท/ชม.
Dev B 40,000 238 บาท/ชม.
Designer C 35,000 208 บาท/ชม.

overhead_rate = 25% · ตัวคูณ OT วันทำงาน = 1.5

ชั่วโมงที่ลงในเดือนสิงหาคม — โครงการ "ระบบสมาชิก LSM99"

คน ชม. ปกติ ชม. OT ต้นทุนก่อน overhead
Dev A 80 10 80×357 + 10×357×1.5 = 33,915
Dev B 120 0 120×238 = 28,560
Designer C 40 0 40×208 = 8,320
รวม 70,795

ต้นทุนโครงการ = 70,795 × 1.25 = 88,494 บาท


ระดับลูกค้า — สมมติเดือนนี้ LSM99 จ่าย retainer 500,000 บาท และทีมลงชั่วโมงให้ LSM99 รวมทุกโครงการ 1,100 ชม. ต้นทุนรวม 380,000 บาท

ตัวชี้วัด ค่า
กำไร 500,000 − 380,000 = 120,000 บาท (24%)
Effective rate 500,000 ÷ 1,100 = 455 บาท/ชม.
ต้นทุนเฉลี่ยจริง 380,000 ÷ 1,100 = 345 บาท/ชม.
โครงการ "ระบบสมาชิก" กิน retainer 250 ชม. ÷ 1,100 = 23%

→ บทสนทนาที่เกิดขึ้นได้ทันทีในที่ประชุม: "ระบบสมาชิกกินไปเกือบหนึ่งในสี่ของ retainer ทั้งก้อน — ปีหน้าควรแยกคิดเงินต่างหาก หรือจำกัดขอบเขตลง"

4.8 สิ่งที่ต้องตกลงให้จบก่อนเริ่ม Phase 1#

  • [ ] ชั่วโมงทำงานมาตรฐานต่อเดือน (แนะนำ 168)
  • [ ] cost_rate ของพนักงานทุกคน (ทำร่วมกับฝ่ายบัญชี)
  • [ ] รายการค่าใช้จ่ายส่วนกลางต่อเดือน → คำนวณ overhead_rate
  • [ ] ตัวคูณ OT ที่บริษัทใช้จริง (ยืนยันกับ HR)
  • [ ] มูลค่า retainer ของ LSM99 ต่อเดือน
  • [ ] รายชื่อโครงการย่อยของ LSM99 ทั้งหมดที่ทีมดูแลอยู่จริง พร้อม BA เจ้าของ
  • [ ] เงื่อนไขสัญญาของคุณตั้ม