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 เจ้าของ
- [ ] เงื่อนไขสัญญาของคุณตั้ม