Certified Scrum Master คืออะไร
Certified Scrum Master (CSM) เป็นใบรับรองวิชาชีพจาก Scrum Alliance ที่ยืนยันความรู้และทักษะในการเป็น Scrum Master ผู้ที่ได้รับ CSM จะเข้าใจหลักการ Scrum framework, บทบาทของ Scrum Master ในทีม Agile และสามารถ facilitate Scrum events ได้อย่างมีประสิทธิภาพ CSM เป็นหนึ่งใน certifications ที่ได้รับความนิยมสูงสุดในวงการ IT และ software development โดยเฉพาะในประเทศไทยที่องค์กรหลายแห่งกำลังเปลี่ยนมาใช้ Agile methodology
Scrum Framework พื้นฐาน
# scrum_basics.py — Scrum framework fundamentals
import json
class ScrumFramework:
ROLES = {
"product_owner": {
"name": "Product Owner (PO)",
"responsibility": "กำหนด product vision, จัดลำดับ backlog, maximize value",
"key_skill": "Business acumen, stakeholder management, decision making",
},
"scrum_master": {
"name": "Scrum Master (SM)",
"responsibility": "Facilitate Scrum events, remove impediments, coach team",
"key_skill": "Facilitation, coaching, servant leadership",
},
"developers": {
"name": "Developers (Dev Team)",
"responsibility": "สร้าง product increment ทุก sprint, self-organizing",
"key_skill": "Technical skills, collaboration, self-management",
},
}
EVENTS = {
"sprint": {"name": "Sprint", "timebox": "1-4 weeks (ส่วนใหญ่ 2 weeks)", "purpose": "Container event สำหรับทุก activities"},
"sprint_planning": {"name": "Sprint Planning", "timebox": "8 hours (for 1-month sprint)", "purpose": "วางแผนว่าจะทำอะไรใน sprint นี้"},
"daily_scrum": {"name": "Daily Scrum", "timebox": "15 minutes", "purpose": "Sync ทีมทุกวัน, ระบุ impediments"},
"sprint_review": {"name": "Sprint Review", "timebox": "4 hours", "purpose": "Demo increment, รับ feedback จาก stakeholders"},
"sprint_retro": {"name": "Sprint Retrospective", "timebox": "3 hours", "purpose": "ปรับปรุงกระบวนการทำงานของทีม"},
}
ARTIFACTS = {
"product_backlog": {"name": "Product Backlog", "owner": "Product Owner", "description": "Ordered list ของทุกสิ่งที่ต้องทำสำหรับ product"},
"sprint_backlog": {"name": "Sprint Backlog", "owner": "Developers", "description": "Selected items + plan สำหรับ sprint นี้"},
"increment": {"name": "Increment", "owner": "Scrum Team", "description": "Usable product ที่ Done ทุก sprint"},
}
def show_roles(self):
print("=== Scrum Roles ===\n")
for key, role in self.ROLES.items():
print(f"[{role['name']}]")
print(f" {role['responsibility']}")
print()
def show_events(self):
print("=== Scrum Events ===")
for key, event in self.EVENTS.items():
print(f" [{event['name']}] {event['timebox']} — {event['purpose']}")
def show_artifacts(self):
print(f"\n=== Scrum Artifacts ===")
for key, art in self.ARTIFACTS.items():
print(f" [{art['name']}] Owner: {art['owner']} — {art['description']}")
scrum = ScrumFramework()
scrum.show_roles()
scrum.show_events()
scrum.show_artifacts()
บทบาท Scrum Master
# scrum_master.py — Scrum Master role details
import json
class ScrumMasterRole:
RESPONSIBILITIES = {
"team_service": {
"name": "Service to the Team",
"duties": [
"Coach ทีมในเรื่อง self-management และ cross-functionality",
"Help ทีมสร้าง high-value Increments ที่ meet Definition of Done",
"Remove impediments ที่ขัดขวางความก้าวหน้าของทีม",
"ทำให้ Scrum events เกิดขึ้นและ productive ภายใน timebox",
],
},
"po_service": {
"name": "Service to the Product Owner",
"duties": [
"Help PO กำหนด Product Goal และจัดการ Product Backlog",
"Help ทีมเข้าใจ Product Backlog items ชัดเจน",
"Facilitate stakeholder collaboration",
],
},
"org_service": {
"name": "Service to the Organization",
"duties": [
"Lead, train, coach องค์กรในการ adopt Scrum",
"Plan และ advise Scrum implementations",
"Help stakeholders เข้าใจ empirical approach",
"Remove barriers ระหว่าง stakeholders และ Scrum Teams",
],
},
}
SM_VS_PM = {
"scrum_master": {
"focus": "Process + People",
"authority": "Servant leader (ไม่มี authority เหนือทีม)",
"tasks": "Facilitate, coach, remove impediments",
"success": "ทีม self-organizing และ deliver value",
},
"project_manager": {
"focus": "Scope + Timeline + Budget",
"authority": "Direct authority เหนือทีม",
"tasks": "Plan, assign, control, report",
"success": "Project เสร็จตาม scope/time/budget",
},
}
def show_responsibilities(self):
print("=== Scrum Master Responsibilities ===\n")
for key, resp in self.RESPONSIBILITIES.items():
print(f"[{resp['name']}]")
for duty in resp["duties"][:3]:
print(f" • {duty}")
print()
def show_comparison(self):
print("=== SM vs Project Manager ===")
for role, data in self.SM_VS_PM.items():
print(f" [{role}]")
for k, v in data.items():
print(f" {k}: {v}")
print()
sm = ScrumMasterRole()
sm.show_responsibilities()
sm.show_comparison()
CSM Certification Path
# csm_cert.py — CSM certification details
import json
class CSMCertification:
CERTIFICATIONS = {
"csm": {
"name": "CSM (Certified ScrumMaster)",
"provider": "Scrum Alliance",
"prerequisite": "ไม่มี (เหมาะสำหรับเริ่มต้น)",
"training": "16 hours live training กับ Certified Scrum Trainer (CST)",
"exam": "50 questions, 37 ถูก (74%), 60 minutes, online",
"cost": "~$500-1,500 USD (รวม training)",
"renewal": "ทุก 2 ปี ($100 + 20 SEUs)",
"level": "Foundation",
},
"a_csm": {
"name": "A-CSM (Advanced Certified ScrumMaster)",
"provider": "Scrum Alliance",
"prerequisite": "CSM + 1 ปี experience",
"training": "16 hours live training",
"exam": "ไม่มี exam (assessment-based)",
"cost": "~$800-1,500 USD",
"renewal": "ทุก 2 ปี",
"level": "Advanced",
},
"psm": {
"name": "PSM I (Professional Scrum Master)",
"provider": "Scrum.org",
"prerequisite": "ไม่มี (สอบได้เลย ไม่ต้อง training)",
"training": "Optional (แนะนำ self-study)",
"exam": "80 questions, 68 ถูก (85%), 60 minutes, online",
"cost": "$150 USD (exam only)",
"renewal": "ไม่ต้อง renew (lifetime)",
"level": "Foundation",
},
}
COMPARISON = {
"csm_vs_psm": {
"csm": "ต้อง training, exam ง่ายกว่า, ต้อง renew, community focus",
"psm": "ไม่ต้อง training, exam ยากกว่า, lifetime, self-study friendly",
"recommendation": "CSM: เรียนรู้ดี, มี community | PSM: ประหยัด, prove knowledge",
},
}
def show_certs(self):
print("=== Scrum Certifications ===\n")
for key, cert in self.CERTIFICATIONS.items():
print(f"[{cert['name']}] — {cert['provider']}")
print(f" Prerequisite: {cert['prerequisite']}")
print(f" Training: {cert['training']}")
print(f" Exam: {cert['exam']}")
print(f" Cost: {cert['cost']}")
print()
def show_comparison(self):
print("=== CSM vs PSM ===")
for key, data in self.COMPARISON.items():
for cert, desc in data.items():
print(f" [{cert}] {desc}")
cert = CSMCertification()
cert.show_certs()
cert.show_comparison()
เตรียมสอบ CSM
# exam_prep.py — CSM exam preparation
import json
import random
class CSMExamPrep:
TOPICS = {
"scrum_theory": {
"name": "Scrum Theory (Empiricism)",
"weight": "~20%",
"key_concepts": ["Transparency", "Inspection", "Adaptation", "Scrum Values (5)"],
},
"scrum_team": {
"name": "Scrum Team",
"weight": "~25%",
"key_concepts": ["Roles & responsibilities", "Self-managing teams", "Cross-functional", "Team size (< 10)"],
},
"scrum_events": {
"name": "Scrum Events",
"weight": "~25%",
"key_concepts": ["Sprint", "Planning", "Daily Scrum", "Review", "Retrospective", "Timeboxes"],
},
"scrum_artifacts": {
"name": "Scrum Artifacts & Commitments",
"weight": "~20%",
"key_concepts": ["Product Backlog → Product Goal", "Sprint Backlog → Sprint Goal", "Increment → Definition of Done"],
},
"sm_role": {
"name": "Scrum Master Role",
"weight": "~10%",
"key_concepts": ["Servant leadership", "Facilitation", "Coaching", "Removing impediments"],
},
}
SAMPLE_QUESTIONS = [
{"q": "ใครเป็นคนตัดสินใจว่าจะทำอะไรใน Sprint?", "a": "Developers (ไม่ใช่ SM หรือ PO)", "topic": "Scrum Team"},
{"q": "Daily Scrum ใครเป็นคน run?", "a": "Developers (SM facilitate ถ้าจำเป็น)", "topic": "Events"},
{"q": "Product Backlog ใครเป็น accountable?", "a": "Product Owner (คนเดียว)", "topic": "Artifacts"},
{"q": "Sprint Retrospective ควรทำเมื่อไหร่?", "a": "หลัง Sprint Review ก่อน Sprint Planning ถัดไป", "topic": "Events"},
{"q": "Scrum Master เป็น manager ของทีมไหม?", "a": "ไม่ — เป็น servant leader ไม่ใช่ manager", "topic": "SM Role"},
]
def show_topics(self):
print("=== Exam Topics ===\n")
for key, topic in self.TOPICS.items():
print(f"[{topic['name']}] Weight: {topic['weight']}")
print(f" Key: {', '.join(topic['key_concepts'][:3])}")
print()
def show_questions(self):
print("=== Sample Questions ===\n")
for i, q in enumerate(self.SAMPLE_QUESTIONS[:4], 1):
print(f" Q{i}: {q['q']}")
print(f" A: {q['a']}")
print()
def study_plan(self):
print("=== Study Plan (2 สัปดาห์) ===")
plan = [
"Week 1: อ่าน Scrum Guide 2020 (3 รอบ), เข้า training course",
"Week 1: จด key concepts, ทำ flashcards",
"Week 2: ทำ mock exams (Scrum Alliance, Mikhail Lapshin)",
"Week 2: ทบทวน topics ที่อ่อน, สอบจริง",
]
for step in plan:
print(f" • {step}")
prep = CSMExamPrep()
prep.show_topics()
prep.show_questions()
prep.study_plan()
CSM ในประเทศไทย
# csm_thailand.py — CSM in Thailand
import json
import random
class CSMThailand:
MARKET = {
"demand": "สูงขึ้นเรื่อยๆ — องค์กรใหญ่เปลี่ยนมา Agile (ธนาคาร, telco, e-commerce)",
"salary_range": {
"scrum_master_junior": "40,000-60,000 บาท/เดือน",
"scrum_master_mid": "60,000-100,000 บาท/เดือน",
"scrum_master_senior": "100,000-150,000 บาท/เดือน",
"agile_coach": "120,000-200,000+ บาท/เดือน",
},
"industries": ["Banking/Finance", "Telecom", "E-commerce", "Insurance", "Government IT"],
"training_providers": [
"Certified Scrum Trainers (CSTs) ในไทย",
"Agile Thailand community",
"Online training (international CSTs)",
],
}
CAREER_PATH = {
"entry": {"role": "Scrum Master (1 team)", "cert": "CSM / PSM I", "exp": "0-2 years"},
"mid": {"role": "Senior Scrum Master (2-3 teams)", "cert": "A-CSM / PSM II", "exp": "2-5 years"},
"senior": {"role": "Agile Coach / RTE", "cert": "CSP-SM / SAFe SPC", "exp": "5-10 years"},
"leadership": {"role": "Head of Agile / Transformation Lead", "cert": "CEC / CTC", "exp": "10+ years"},
}
def show_market(self):
print("=== CSM Market in Thailand ===\n")
print(f" Demand: {self.MARKET['demand']}")
print(f"\n Salary Range:")
for role, salary in self.MARKET["salary_range"].items():
print(f" {role}: {salary}")
print(f"\n Industries: {', '.join(self.MARKET['industries'][:4])}")
def show_career(self):
print(f"\n=== Career Path ===")
for level, data in self.CAREER_PATH.items():
print(f" [{level}] {data['role']} | Cert: {data['cert']} | Exp: {data['exp']}")
th = CSMThailand()
th.show_market()
th.show_career()
FAQ - คำถามที่พบบ่อย
Q: CSM สอบยากไหม?
A: ไม่ยากมาก pass rate สูง (> 90%) เพราะต้องเข้า training ก่อน Exam: 50 ข้อ ต้องได้ 37 ข้อ (74%) เวลา 60 นาที เทียบกับ PSM I (85% pass threshold) CSM ง่ายกว่า เตรียมตัว: อ่าน Scrum Guide + เข้า training + ทำ mock exam
Q: CSM กับ PSM อันไหนดีกว่า?
A: CSM (Scrum Alliance): ต้อง training, community ใหญ่, ต้อง renew ทุก 2 ปี PSM (Scrum.org): ไม่ต้อง training, exam ยากกว่า, lifetime, ราคาถูกกว่า ในไทย: CSM popular กว่า (employer recognition) ต่างประเทศ: PSM ได้รับการยอมรับเท่าเทียม แนะนำ: ถ้ามีงบ → CSM (ได้ training + community) ถ้าประหยัด → PSM I ($150)
Q: ไม่มีพื้นฐาน IT สอบ CSM ได้ไหม?
A: ได้ CSM ไม่ต้องมี technical background Scrum ใช้ได้กับทุก domain ไม่เฉพาะ IT แต่ส่วนใหญ่ใช้ใน software development การเข้าใจ software development lifecycle จะช่วยได้มาก หลายคนจาก business, marketing, HR ก็สอบ CSM ผ่าน
Q: เงินเดือน Scrum Master ในไทยเท่าไหร่?
A: Junior SM: 40,000-60,000 บาท Mid SM: 60,000-100,000 บาท Senior SM: 100,000-150,000 บาท Agile Coach: 120,000-200,000+ บาท ปัจจัย: ขนาดองค์กร, อุตสาหกรรม (banking สูงกว่า), จำนวน certifications, ประสบการณ์ SM + technical background = เงินเดือนสูงกว่า SM อย่างเดียว
