ЁЯПл The SchoolтА║ЁЯПЕ Engineering LeadershipтА║ЁЯЧУя╕П рдзрдбрд╛ 01 тАФ Engineer рддреЗ lead: рдЖрдард╡рдбреНрдпрд╛рдЪреЗ рддрд╛рд╕ рдХреБрдареЗ рдЬрд╛рддрд╛рдд
ЁЯЦ╝я╕П See the drawing + lab ЁЯПа Course home ЁЯМ┐ Branch on GitHub тЬПя╕П View source
ЁЯЦ╝я╕П рдЖрдХреГрддреА рдЖрдгрд┐ labThe drawing + lab рдкреВрд░реНрдг рдкрд╛рдирд╛рд╡рд░ рдЙрдШрдбрд╛ тЖЧOpen full page тЖЧ

ЁЯЧУя╕П рдзрдбрд╛ 01 тАФ Engineer рддреЗ lead: рдЖрдард╡рдбреНрдпрд╛рдЪреЗ рддрд╛рд╕ рдХреБрдареЗ рдЬрд╛рддрд╛рдд

ЁЯУН рддреБрдореНрд╣реА рдЗрдереЗ рдЖрд╣рд╛рдд: 12 рдкреИрдХреА рдзрдбрд╛ 01 ┬╖ рдкреБрдвреЗ: lesson-02-one-on-ones


ЁЯУж рдпрд╛ рдмреНрд░рдБрдЪрдордзреНрдпреЗ рдХрд╛рдп рдЖрд╣реЗ

рд╣рд╛ рд╕рдВрдкреВрд░реНрдг рдХреЛрд░реНрд╕ рдПрдХрд╛рдЪ рдмрджрд▓рд╛рдмрджреНрджрд▓ рдЖрд╣реЗ: рдХрддрд░рд┐рдирд╛ рд╢рд╛рд│реЗрддрд▓реА рд╕рд░реНрд╡реЛрддреНрддрдо рдЧрдгрд┐рдд рд╢рд┐рдХреНрд╖рд┐рдХрд╛ рд╣реЛрддреА. рдЖрддрд╛ рддреА рдЧрдгрд┐рдд рд╡рд┐рднрд╛рдЧрдкреНрд░рдореБрдЦ рдЖрд╣реЗ. рддрд┐рдЪреНрдпрд╛ рдЯреАрдордордзреНрдпреЗ рджреАрдкрд┐рдХрд╛ рдЖрдгрд┐ рдРрд╢реНрд╡рд░реНрдпрд╛ рд╢рд┐рдХрд╡рддрд╛рдд, рдЖрдгрд┐ рдореАрд░рд╛ рд╡ рд▓реАрд▓рд╛ рдпрд╛ рджреЛрди рдирд╡реНрдпрд╛ рд╢рд┐рдХреНрд╖рд┐рдХрд╛рд╣реА рдЖрд╣реЗрдд. рдЙрддреНрддрдо рдзрдбрд╛ рдХрд╕рд╛ рд╢рд┐рдХрд╡рд╛рдпрдЪрд╛ рд╣реЗ рдХрддрд░рд┐рдирд╛рд▓рд╛ рдЕрдЬреВрдирд╣реА рдорд╛рд╣реАрдд рдЖрд╣реЗ тАФ рдкрдг рдЖрддрд╛ рддрд┐рдЪреЗ рдХрд╛рдо рдореНрд╣рдгрдЬреЗ рд╡рд┐рднрд╛рдЧ: рдХреЛрдг рдХрд╛рдп рд╢рд┐рдХрд╡рддреЗ, рдХреЛрдг рдЕрдбрдХрд▓реА рдЖрд╣реЗ, рдХреЛрдг рд╡рд╛рдврддреЗ рдЖрд╣реЗ, рдкрд╛рд▓рдХрд╛рдВрдирд╛ рдХрд╛рдп рд╡рдЪрди рджрд┐рд▓реЗ рд╣реЛрддреЗ. Engineering рдЪреНрдпрд╛ рднрд╛рд╖реЗрдд: рддреА engineer рдкрд╛рд╕реВрди engineering lead рдЭрд╛рд▓реА. рд╕рдВрдкреВрд░реНрдг рдХреЛрд░реНрд╕рднрд░ рддреБрдореНрд╣реА рд╡рд╛рдкрд░рд╛рд▓ рдЕрд╢рд╛ рдЦрд▒реНрдпрд╛ files:

ЁЯОТ рд╕реБрд░реВ рдХрд░рдгреНрдпрд╛рдЖрдзреА: рддреБрдореНрд╣рд╛рд▓рд╛ рдлрдХреНрдд Python 3 рд╣рд╡реЗ, рдмрд╛рдХреА рдХрд╛рд╣реА рдирд╛рд╣реА. lead/ рдордзрд▓реЗ рдкреНрд░рддреНрдпреЗрдХ model рд╡рд┐рдЪрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреЗ рд╕рд╛рдзрди рдЖрд╣реЗ, рдорд╛рдгрд╕рд╛рдВрд╕рд╛рдареАрдЪреЗ рд╕реВрддреНрд░ рдирд╛рд╣реА: рддреЗ рдПрдХ рдЧреГрд╣реАрддрдХ рд╕реНрдкрд╖реНрдЯ рджрд╛рдЦрд╡рддреЗ рдЬреЗрдгреЗрдХрд░реВрди рддреБрдореНрд╣реА рддреНрдпрд╛рд╡рд░ рд╡рд╛рдж рдШрд╛рд▓реВ рд╢рдХрддрд╛. рддреЗ рдХреЛрдгрддреНрдпрд╛рд╣реА рд╡реНрдпрдХреНрддреАрдЪреЗ рдореЛрдЬрдорд╛рдк рдХрд░рдд рдирд╛рд╣реА, рдЖрдгрд┐ рддреНрдпрд╛рдЪрд╛ рдХреЛрдгрддрд╛рд╣реА threshold рд╣рд╛ рдирд┐рдпрдо рдирд╛рд╣реА. рдЬрд┐рдереЗ рд╕рдВрд╢реЛрдзрди рдЖрд╣реЗ рддрд┐рдереЗ рдзрдбреЗ рддреНрдпрд╛рдЪрд╛ рдХрд╛рд│рдЬреАрдкреВрд░реНрд╡рдХ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддрд╛рдд; рдЬрд┐рдереЗ рдирд╛рд╣реА рддрд┐рдереЗ рддрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╕рд╛рдВрдЧрддрд╛рдд.

ЁЯзТ 5 рд╡рд░реНрд╖рд╛рдВрдЪреНрдпрд╛ рдореБрд▓рд╛рд▓рд╛ рд╕рдордЬрд╛рд╡рд▓реНрдпрд╛рд╕рд╛рд░рдЦреЗ

рдХрддрд░рд┐рдирд╛ рд╢рд┐рдХреНрд╖рд┐рдХрд╛ рд╣реЛрддреА рддреЗрд╡реНрд╣рд╛ рддрд┐рдЪрд╛ рдЖрдард╡рдбрд╛ рд╕реЛрдкрд╛ рд╣реЛрддрд╛. рд╢рд┐рдХрд╡рд╛рдпрдЪреЗ, рддрдкрд╛рд╕рд╛рдпрдЪреЗ, рдкреБрдврдЪреНрдпрд╛ рдзрдбреНрдпрд╛рдЪреЗ рдирд┐рдпреЛрдЬрди рдХрд░рд╛рдпрдЪреЗ. рд╡рд┐рдЪрд╛рд░ рдХрд░рд╛рдпрд▓рд╛ рдореЛрдареЗ рд╢рд╛рдВрдд рддрд╛рд╕. ЁЯУЪ

рдордЧ рддреА рд╡рд┐рднрд╛рдЧрдкреНрд░рдореБрдЦ рдЭрд╛рд▓реА. рдЖрддрд╛ рджрд┐рд╡рд╕рднрд░ рд▓реЛрдХ рддрд┐рдЪреНрдпрд╛ рджрд╛рд░рд╛рд╡рд░ рдареЛрдард╛рд╡рддрд╛рдд. ЁЯЪк "рдкрд░реАрдХреНрд╖реЗрдмрджреНрджрд▓ рдмреЛрд▓реВрдпрд╛ рдХрд╛?" "рд▓реАрд▓рд╛ рдЕрдбрдХрд▓реА рдЖрд╣реЗ." "рдкрд╛рд▓рдХрд╛рдВрдирд╛ meeting рд╣рд╡реА рдЖрд╣реЗ."

рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛ рдХрддрд░рд┐рдирд╛ рджреЛрдиреНрд╣реА рдХрд╛рдореЗ рдХрд░рд╛рдпрдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рддреЗ: рддрд┐рдЪреЗ рдЬреБрдиреЗ рд╕рдЧрд│реЗ рд╢рд┐рдХрд╡рдгреЗ, рдЖрдгрд┐ рд╕рдЧрд│реЗ рдирд╡реЗ рдмреЛрд▓рдгреЗ. рддреА рдЙрд╢рд┐рд░рд╛рдкрд░реНрдпрдВрдд рдерд╛рдВрдмрддреЗ. рддреА рдердХрддреЗ. рдЖрдгрд┐ рддрд░реАрд╣реА рд╡рд┐рднрд╛рдЧрд╛рдд рдЧреЛрдВрдзрд│рдЪ рд╡рд╛рдЯрддреЛ.

рдордЧ рддрд┐рдЪреНрдпрд╛ рд▓рдХреНрд╖рд╛рдд рдПрдХ рдЧреЛрд╖реНрдЯ рдпреЗрддреЗ. рддрд┐рдЪреНрдпрд╛ meetings рджрд┐рд╡рд╕рднрд░ рд╡рд┐рдЦреБрд░рд▓реЗрд▓реНрдпрд╛ рдЖрд╣реЗрдд: рдПрдХ 11 рд╡рд╛рдЬрддрд╛, рдПрдХ 2 рд╡рд╛рдЬрддрд╛, рдПрдХ 4 рд╡рд╛рдЬрддрд╛. рддреНрдпрд╛рдВрдЪреНрдпрд╛ рдордзреНрдпреЗ рдлрдХреНрдд рдЫреЛрдЯреНрдпрд╛ рдлрдЯреА рдЙрд░рддрд╛рдд тАФ рдХреЛрдгрддреНрдпрд╛рд╣реА рдЕрд╡рдШрдб рдЧреЛрд╖реНрдЯреАрд╡рд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рд╛рдпрд▓рд╛ рдЦреВрдк рд▓рд╣рд╛рди. ЁЯзй

рдореНрд╣рдгреВрди рддреА meetings рдПрдХрддреНрд░ рдХрд░рддреЗ, рджреБрдкрд╛рд░реА. Meetings рддреЗрд╡рдвреНрдпрд╛рдЪ. рдЖрддрд╛ рдкреНрд░рддреНрдпреЗрдХ рд╕рдХрд╛рд│ рдПрдХ рдореЛрдард╛ рд╢рд╛рдВрдд рддреБрдХрдбрд╛ рдЖрд╣реЗ. тШАя╕П

рдЖрдгрд┐ рддреА рдореЛрдареА рдХрд▓реНрдкрдирд╛ рд╕реНрд╡реАрдХрд╛рд░рддреЗ: рддрд┐рдЪреЗ рдХрд╛рдо рдЖрддрд╛ рддреА рд╢рд┐рдХрд╡рддреЗ рддреЗ рдзрдбреЗ рд░рд╛рд╣рд┐рд▓реЗрд▓реЗ рдирд╛рд╣реА. рддрд┐рдЪреЗ рдХрд╛рдо рдореНрд╣рдгрдЬреЗ рд╕рдВрдкреВрд░реНрдг рд╡рд┐рднрд╛рдЧ рдХрд┐рддреА рдЪрд╛рдВрдЧрд▓реЗ рд╢рд┐рдХрд╡рддреЛ.

ЁЯЧ║я╕П рдЖрдХреГрддреА

flowchart LR
    t["ЁЯУЪ teacher week<br/>meetings 5.0 h<br/>focus 30.5 h"] --> h["ЁЯПл head of maths, scattered<br/>meetings 12.5 h<br/>focus 14.5 h ┬╖ fragments 13.0 h"]
    h -->|"same meetings,<br/>moved to afternoons"| c["тШАя╕П head of maths, clustered<br/>meetings 12.5 h<br/>focus 25.0 h ┬╖ fragments 2.5 h"]
    c --> j["ЁЯОп the job is now<br/>the department's output"]

ЁЯЧ║я╕П рдХрд╛рдврд▓реЗрд▓реА рдЖрд╡реГрддреНрддреА + рдПрдХ lab: https://school-edh.pages.dev/engineering-leadership/lesson-diagrams.html#l01

тЭУ рдХрд╛рдп

ЁЯдФ рдХрд╛

рдХрд╛рд░рдг рдирд╡реНрдпрд╛ lead рд╕рд╛рдареА рд╕рд░реНрд╡рд╛рдд рдЖрдзреА рдмрджрд▓рддреЗ рддреЗ рдореНрд╣рдгрдЬреЗ calendar, рдЖрдгрд┐ рд╣реЗ рдХреЛрдгреА рд╕рд╛рдВрдЧрдд рдирд╛рд╣реА. Meetings рд╡рд┐рдЦреБрд░рд▓реЗрд▓реНрдпрд╛ slots рдордзреНрдпреЗ рдпреЗрддрд╛рдд. рдЕрд╡рдШрдб рд╡рд┐рдЪрд╛рд░рд╛рдЪреЗ рдХрд╛рдо (design review, hiring рдЪрд╛ рдЖрд░рд╛рдЦрдбрд╛, рдПрдЦрд╛рджрд╛ рдХрдареАрдг рд╕рдВрджреЗрд╢) рдпрд╛рд╕рд╛рдареА рдореЛрдареЗ рддреБрдХрдбреЗ рд▓рд╛рдЧрддрд╛рдд. рдирд┐рд░реНрдгрдп рдШреЗрддрд▓рд╛ рдирд╛рд╣реА рддрд░ рдЖрдард╡рдбрд╛ рдЖрдзреА рд╡рд┐рдЪрд╛рд░рдгрд╛рд░рд╛ рднрд░реВрди рдЯрд╛рдХрддреЛ. рдЖрдард╡рдбреНрдпрд╛рдХрдбреЗ data рдореНрд╣рдгреВрди рдкрд╛рд╣рдгреЗ тАФ рдкреНрд░рдХрд╛рд░рд╛рдиреБрд╕рд╛рд░ рддрд╛рд╕, focus рд╡рд┐рд░реБрджреНрдз fragments тАФ "рдореА рд╡реНрдпрд╕реНрдд рдЖрд╣реЗ" рдпрд╛рдЪреЗ рд░реВрдкрд╛рдВрддрд░ рддреБрдореНрд╣реА рдШреЗрдК рд╢рдХрддрд╛ рдЕрд╢рд╛ рдирд┐рд╡рдбреАрдВрдордзреНрдпреЗ рдХрд░рддреЗ.

ЁЯФз рдХрд╕реЗ (рдпрд╛ repo рдордзреНрдпреЗ)

lead/models.py рдордзрд▓реЗ week(meetings, min_block_h=2.0) meetings рдЪреА рдпрд╛рджреА тАФ (day, "HH:MM", minutes, kind) тАФ 09:00тАУ17:00 рдЪреНрдпрд╛ рдкрд╛рдЪ рджрд┐рд╡рд╕рд╛рдВрд╡рд░ рдЕрд░реНрдзреНрдпрд╛ рддрд╛рд╕рд╛рдЪреНрдпрд╛ slots рдордзреНрдпреЗ рдорд╛рдВрдбрддреЗ. рддреЗ рдкреНрд░рдХрд╛рд░рд╛рдиреБрд╕рд╛рд░ meeting рддрд╛рд╕, рдореЛрдХрд│реЗ рддрд╛рд╕, focus рддрд╛рд╕ (рдХрд┐рдорд╛рди min_block_h рдЪреЗ рдореЛрдХрд│реЗ рд╕рд▓рдЧ рддреБрдХрдбреЗ), focus blocks рдЪреА рд╕рдВрдЦреНрдпрд╛, рдЖрдгрд┐ fragments (рдЙрд░рд▓реЗрд▓рд╛ рдореЛрдХрд│рд╛ рд╡реЗрд│) рдкрд░рдд рджреЗрддреЗ. lead/demo.py рдордзрд▓реЗ calendar() рддреАрди рдЖрдард╡рдбреНрдпрд╛рдВрдЪреА рддреБрд▓рдирд╛ рдХрд░рддреЗ: рд╢рд┐рдХреНрд╖рд┐рдХрд╛ рдореНрд╣рдгреВрди рдХрддрд░рд┐рдирд╛, рд╡рд┐рдЦреБрд░рд▓реЗрд▓реНрдпрд╛ meetings рдЕрд╕рд▓реЗрд▓реА рдирд╡реА рд╡рд┐рднрд╛рдЧрдкреНрд░рдореБрдЦ, рдЖрдгрд┐ рддреНрдпрд╛рдЪ meetings рджреБрдкрд╛рд░реА рдПрдХрддреНрд░ рдХреЗрд▓реЗрд▓реА рд╡рд┐рднрд╛рдЧрдкреНрд░рдореБрдЦ. рд╣реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреЗ рд╕рд╛рдзрди рдЖрд╣реЗ, рдорд╛рдгрд╕рд╛рдВрд╕рд╛рдареАрдЪреЗ рд╕реВрддреНрд░ рдирд╛рд╣реА: рдЦрд▒реНрдпрд╛ рдЖрдард╡рдбреНрдпрд╛рдВрдордзреНрдпреЗ рдкреНрд░рд╡рд╛рд╕, рд╡реНрдпрддреНрдпрдп рдЖрдгрд┐ chat messages рдЕрд╕рддрд╛рдд рдЬреЗ model рд▓рд╛ рджрд┐рд╕рдд рдирд╛рд╣реАрдд.

ЁЯзк рдХрд░реВрди рдкрд╛рд╣рд╛

python3 lead/demo.py calendar
python3 - <<'EOF'
import sys; sys.path.insert(0, "lead"); from models import week
days = ("Mon", "Tue", "Wed", "Thu", "Fri")
daily = [(d, "09:30", 30, "standup") for d in days]
cals = {"no meetings at all": [],
        "daily standup at 09:30": daily,
        "standup moved to 12:30": [(d, "12:30", 30, "standup") for d in days],
        "09:30 standup + a 1:1 at 11:00 daily": daily + [(d, "11:00", 30, "1:1") for d in days],
        "09:30 standup + a 1:1 at 10:00 daily": daily + [(d, "10:00", 30, "1:1") for d in days]}
for label, cal in cals.items():
    w = week(cal)
    print(f"{label:<37} meetings {w['meetings']:>4.1f} h ┬╖ focus {w['focus']:>4.1f} h ┬╖ fragments {w['fragments']:>4.1f} h")
lead = daily + [(d, "11:00", 30, "1:1") for d in days] + [(d, "14:00", 60, "sync") for d in days]
for block in (1.0, 2.0, 3.0):
    w = week(lead, min_block_h=block)
    print(f"a scattered lead week, focus needs {block:.0f} h+ тЖТ focus {w['focus']:>4.1f} h in {w['blocks']:>2} blocks")
EOF
python3 lead/test_lead.py

тЬЕ рддрдкрд╛рд╕рд╛ тАФ рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд╛рдп рджрд┐рд╕рд╛рдпрд▓рд╛ рд╣рд╡реЗ

calendar рдЕрд╕реЗ print рдХрд░рддреЗ:

   as a teacher (engineer)      meetings  5.0 h ┬╖ free 35.0 h ┬╖ focus 30.5 h in  6 blocks ┬╖ fragments  4.5 h
   as head of maths, scattered  meetings 12.5 h ┬╖ free 27.5 h ┬╖ focus 14.5 h in  6 blocks ┬╖ fragments 13.0 h
   as head of maths, clustered  meetings 12.5 h ┬╖ free 27.5 h ┬╖ focus 25.0 h in 10 blocks ┬╖ fragments  2.5 h
   the lead's meetings by kind: standup 2.5 h ┬╖ 1:1 2.5 h ┬╖ planning 1 h ┬╖ hiring 2 h ┬╖ sync 1 h ┬╖ review 2 h ┬╖ roadmap 1.5 h

рддреБрдордЪрд╛ snippet рдЕрд╕реЗ print рдХрд░рддреЛ:

no meetings at all                    meetings  0.0 h ┬╖ focus 40.0 h ┬╖ fragments  0.0 h
daily standup at 09:30                meetings  2.5 h ┬╖ focus 35.0 h ┬╖ fragments  2.5 h
standup moved to 12:30                meetings  2.5 h ┬╖ focus 37.5 h ┬╖ fragments  0.0 h
09:30 standup + a 1:1 at 11:00 daily  meetings  5.0 h ┬╖ focus 27.5 h ┬╖ fragments  7.5 h
09:30 standup + a 1:1 at 10:00 daily  meetings  5.0 h ┬╖ focus 32.5 h ┬╖ fragments  2.5 h
a scattered lead week, focus needs 1 h+ тЖТ focus 27.5 h in 15 blocks
a scattered lead week, focus needs 2 h+ тЖТ focus 22.5 h in 10 blocks
a scattered lead week, focus needs 3 h+ тЖТ focus  0.0 h in  0 blocks

Tests рд╢реЗрд╡рдЯреА 12/12 passed рджрд╛рдЦрд╡рддрд╛рдд.

ЁЯПБ рддреБрдореНрд╣реА рдЖрддреНрддрд╛рдЪ рдХрд╛рдп рд╕рд┐рджреНрдз рдХреЗрд▓реЗ

рдирд╡реНрдпрд╛ рд╡рд┐рднрд╛рдЧрдкреНрд░рдореБрдЦрд╛рдЪреНрдпрд╛ 12.5 рддрд╛рд╕ meetings рдЖрд╣реЗрдд, рдЖрдгрд┐ рдлрдХреНрдд рддреНрдпрд╛рдореБрд│реЗ рддрд┐рдЪрд╛ рдореЛрдХрд│рд╛ рд╡реЗрд│ 35 рд╡рд░реВрди 27.5 рддрд╛рд╕рд╛рдВрд╡рд░ рдпреЗрддреЛ. рдкрдг meetings рдХреБрдареЗ рдмрд╕рддрд╛рдд рд╣реЗрд╣реА рдЬрд╡рд│рдкрд╛рд╕ рддрд┐рддрдХреЗрдЪ рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ рдЖрд╣реЗ: рд╡рд┐рдЦреБрд░рд▓реЗрд▓реНрдпрд╛ рдЕрд╕рддрд╛рдирд╛ рддреНрдпрд╛ рдореЛрдХрд│реНрдпрд╛ рд╡реЗрд│рд╛рдкреИрдХреА рдлрдХреНрдд 14.5 рддрд╛рд╕ 2 рддрд╛рд╕рд╛рдВрдЪреНрдпрд╛ рддреБрдХрдбреНрдпрд╛рдВрдд рдорд┐рд│рддрд╛рдд; рджреБрдкрд╛рд░реА рдПрдХрддреНрд░ рдХреЗрд▓реНрдпрд╛рд╡рд░ рддреНрдпрд╛рдЪ meetings 25.0 рддрд╛рд╕ focus рд╕реЛрдбрддрд╛рдд. рд░реЛрдЬрдЪреА рдПрдХ 1:1 11:00 рд╡рд░реВрди 10:00 рд╡рд░ тАФ standup рдЪреНрдпрд╛ рд╢реЗрдЬрд╛рд░реА тАФ рд╣рд▓рд╡рд▓реНрдпрд╛рдиреЗ 7.5 рддрд╛рд╕рд╛рдВрдЪреЗ fragments рдкреБрдиреНрд╣рд╛ 2.5 рд╡рд░ рдпреЗрддрд╛рдд. рдЖрдгрд┐ рддреБрдордЪреНрдпрд╛ рдЕрд╡рдШрдб рдХрд╛рдорд╛рд▓рд╛ 3 рддрд╛рд╕рд╛рдВрдЪреЗ рддреБрдХрдбреЗ рд▓рд╛рдЧрдд рдЕрд╕рддреАрд▓, рддрд░ рдереЛрдбрд╛рд╕рд╛ рд╡рд┐рдЦреБрд░рд▓реЗрд▓рд╛ рдЖрдард╡рдбрд╛рд╣реА рдПрдХрд╣реА рддреБрдХрдбрд╛ рд╕реЛрдбреВ рд╢рдХрдд рдирд╛рд╣реА.

тЪая╕П рдиреЗрд╣рдореАрдЪреНрдпрд╛ рдЪреБрдХрд╛

ЁЯПн рдкреНрд░рддреНрдпрдХреНрд╖ рд╡рд╛рдкрд░рд╛рдд

рдХрд╛рд╣реАрд╣реА рдмрджрд▓рдгреНрдпрд╛рдЖрдзреА рддреБрдордЪреНрдпрд╛ calendar рдЪрд╛ рдПрдХ рдЦрд░рд╛ рдорд╣рд┐рдирд╛ рдкрд╛рд╣рд╛. рдЕрдиреЗрдХ calendar apps .ics рдордзреНрдпреЗ export рдХрд░реВ рд╢рдХрддрд╛рдд; рдХрд╛рд╣реА рдУрд│реА рддреНрдпрд╛рдЪреЗ рдкреНрд░рдХрд╛рд░рд╛рдиреБрд╕рд╛рд░ рддрд╛рд╕рд╛рдВрдд рд░реВрдкрд╛рдВрддрд░ рдХрд░рддрд╛рдд. рдЦрд▒реНрдпрд╛ account рд╡рд░ (рддреБрдордЪреНрдпрд╛ рд╕реНрд╡рддрдГрдЪреНрдпрд╛ calendar export рд╡рд░):

grep -c "BEGIN:VEVENT" my-calendar.ics          # how many meetings last month

рдордЧ рдПрдХ рдЫреЛрдЯреА calendar policy рд▓рд┐рд╣рд╛ рдЖрдгрд┐ рдЯреАрдорд╕реЛрдмрдд share рдХрд░рд╛:

Katrina's week (head of maths)
- Mornings MonтАУThu 10:00тАУ13:00: focus time. Pull me out for incidents and people problems only.
- 1:1s: Mon and Tue afternoons, same slot every week.
- Office hours: Wed 15:00тАУ16:00, no agenda needed.
- If you need a decision from me, write it down first (lesson 11) тАФ I answer within a day.

рдЕрдиреЗрдХ рдЯреАрдореНрд╕ рд╕рдЧрд│реНрдпрд╛рдВрд╕рд╛рдареА meeting-free blocks рд╡рд░рд╣реА рд╕рд╣рдорддреА рдХрд░рддрд╛рдд (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, meeting рдирд╕рд▓реЗрд▓реА рдПрдХ рджреБрдкрд╛рд░). рдпрд╛рдЪрд╛ рдиреЗрдордХрд╛ рдХрд┐рддреА рдлрд╛рдпрджрд╛ рд╣реЛрддреЛ рдпрд╛рдЪреЗ рдкреБрд░рд╛рд╡реЗ рдорд┐рд╢реНрд░ рдЖрд╣реЗрдд рдЖрдгрд┐ рдмрд╣реБрддреЗрдХ рд╕реНрд╡рддрдГ рд╕рд╛рдВрдЧрд┐рддрд▓реЗрд▓реЗ рдЖрд╣реЗрдд, рдореНрд╣рдгреВрди рдпрд╛рд▓рд╛ рдкреНрд░рдпреЛрдЧ рд╕рдордЬрд╛: рдПрдХ рдорд╣рд┐рдирд╛ рдХрд░реВрди рдкрд╛рд╣рд╛, рдордЧ рдЯреАрдорд▓рд╛ рд╡рд┐рдЪрд╛рд░рд╛.

ЁЯПн рдкреНрд░рддреНрдпрдХреНрд╖ рд╡рд╛рдкрд░рд╛рдд рд╣реЗ рдХрд╛ рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ рдЖрд╣реЗ: рдирд╡реНрдпрд╛ lead рдЪреА рдкрд╣рд┐рд▓реА рддрд┐рдорд╛рд╣реА рддрд┐рдЪреНрдпрд╛ рд╕рд╡рдпреА рдард░рд╡рддреЗ. рддреБрдордЪреЗ рддрд╛рд╕ рдХреБрдареЗ рдЬрд╛рддрд╛рдд рддреЗ рд▓рд┐рд╣реВрди рдареЗрд╡рд╛, рдХрд╛рдп рдХрд░рдгреЗ рдерд╛рдВрдмрд╡рд╛рдпрдЪреЗ рддреЗ рдард░рд╡рд╛, рдЖрдгрд┐ рдХрд╛рд╣реА maker blocks рдЬрд╛рдгреАрд╡рдкреВрд░реНрд╡рдХ рдЬрдкрд╛ тАФ рдиреЗрддреГрддреНрд╡рд╛рдЪреЗ рд╡рд┐рдЪрд╛рд░рд╛рдЪреЗ рдХрд╛рдо рддрд┐рдереЗрдЪ рд╣реЛрддреЗ.

тПня╕П рдкреБрдвреЗ

рддреНрдпрд╛ calendar рдордзрд▓реНрдпрд╛ рд╕рд░реНрд╡рд╛рдд рдорд╣рддреНрддреНрд╡рд╛рдЪреНрдпрд╛ meetings рд▓рд╣рд╛рди рдЕрд╕рддрд╛рдд: 1:1s, рдЖрдгрд┐ рддреНрдпрд╛рдд рд╣реЛрдгрд╛рд░рд╛ feedback.

git checkout lesson-02-one-on-ones

ЁЯЧУя╕П Lesson 01 тАФ From engineer to lead: where the week's hours go

ЁЯУН You are here: Lesson 01 of 12 ┬╖ Next: lesson-02-one-on-ones


ЁЯУж What's in this branch

The one change this whole course is about: Katrina was the best maths teacher in the school. Now she is head of the maths department. Dipika and Aishwarya teach in her team, with two newer teachers, Meera and Leela. Katrina still knows how to teach a great lesson тАФ but her job is now the department: who teaches what, who is stuck, who is growing, what the parents were promised. In engineering words: she went from engineer to engineering lead. Real files you will use all the way through:

ЁЯОТ Before you start: you need Python 3 and nothing else. Every model in lead/ is a thinking tool, not a formula for people: it makes one assumption visible so you can argue with it. It does not measure a person, and none of its thresholds is a law. Where research exists the lessons name it carefully; where it does not, they say so.

ЁЯзТ Explain like I'm 5

When Katrina was a teacher, her week was simple. Teach, mark, plan the next lesson. Long quiet hours to think. ЁЯУЪ

Then she became head of the department. Now people knock on her door all day. ЁЯЪк "Can we talk about the exam?" "Leela is stuck." "The parents want a meeting."

At first Katrina tries to do both jobs: all her old teaching, plus all the new talking. She stays late. She is tired. And the department still feels messy.

Then she notices something. Her meetings are spread all over the day: one at 11, one at 2, one at 4. Between them there are only small gaps тАФ too short to think about anything hard. ЁЯзй

So she moves the meetings together, into the afternoons. The same number of meetings. Now every morning is one long quiet block. тШАя╕П

And she accepts the big idea: her work is no longer the lessons she teaches. Her work is how well the whole department teaches.

ЁЯЧ║я╕П Diagram

flowchart LR
    t["ЁЯУЪ teacher week<br/>meetings 5.0 h<br/>focus 30.5 h"] --> h["ЁЯПл head of maths, scattered<br/>meetings 12.5 h<br/>focus 14.5 h ┬╖ fragments 13.0 h"]
    h -->|"same meetings,<br/>moved to afternoons"| c["тШАя╕П head of maths, clustered<br/>meetings 12.5 h<br/>focus 25.0 h ┬╖ fragments 2.5 h"]
    c --> j["ЁЯОп the job is now<br/>the department's output"]

ЁЯЧ║я╕П Drawn version + a lab: https://school-edh.pages.dev/engineering-leadership/lesson-diagrams.html#l01

тЭУ What

ЁЯдФ Why

Because the first thing that changes for a new lead is the calendar, and nobody tells you. Meetings arrive in scattered slots. The hard thinking work (a design review, a hiring plan, a difficult message) needs long blocks. Without a decision, the week is filled by whoever asks first. Looking at the week as data тАФ hours by kind, focus vs fragments тАФ turns "I am busy" into choices you can make.

ЁЯФз How (in this repo)

week(meetings, min_block_h=2.0) in lead/models.py lays a list of meetings тАФ (day, "HH:MM", minutes, kind) тАФ onto five days of 09:00тАУ17:00 in half-hour slots. It returns meeting hours by kind, free hours, focus hours (free runs of at least min_block_h), the number of focus blocks, and fragments (the rest of the free time). calendar() in lead/demo.py compares three weeks: Katrina as a teacher, as a new head with scattered meetings, and as a head with the same meetings clustered into the afternoons. This is a thinking tool, not a formula for people: real weeks have travel, interruptions and chat messages that the model does not see.

ЁЯзк Try it

python3 lead/demo.py calendar
python3 - <<'EOF'
import sys; sys.path.insert(0, "lead"); from models import week
days = ("Mon", "Tue", "Wed", "Thu", "Fri")
daily = [(d, "09:30", 30, "standup") for d in days]
cals = {"no meetings at all": [],
        "daily standup at 09:30": daily,
        "standup moved to 12:30": [(d, "12:30", 30, "standup") for d in days],
        "09:30 standup + a 1:1 at 11:00 daily": daily + [(d, "11:00", 30, "1:1") for d in days],
        "09:30 standup + a 1:1 at 10:00 daily": daily + [(d, "10:00", 30, "1:1") for d in days]}
for label, cal in cals.items():
    w = week(cal)
    print(f"{label:<37} meetings {w['meetings']:>4.1f} h ┬╖ focus {w['focus']:>4.1f} h ┬╖ fragments {w['fragments']:>4.1f} h")
lead = daily + [(d, "11:00", 30, "1:1") for d in days] + [(d, "14:00", 60, "sync") for d in days]
for block in (1.0, 2.0, 3.0):
    w = week(lead, min_block_h=block)
    print(f"a scattered lead week, focus needs {block:.0f} h+ тЖТ focus {w['focus']:>4.1f} h in {w['blocks']:>2} blocks")
EOF
python3 lead/test_lead.py

тЬЕ Verify тАФ what you should see

calendar prints:

   as a teacher (engineer)      meetings  5.0 h ┬╖ free 35.0 h ┬╖ focus 30.5 h in  6 blocks ┬╖ fragments  4.5 h
   as head of maths, scattered  meetings 12.5 h ┬╖ free 27.5 h ┬╖ focus 14.5 h in  6 blocks ┬╖ fragments 13.0 h
   as head of maths, clustered  meetings 12.5 h ┬╖ free 27.5 h ┬╖ focus 25.0 h in 10 blocks ┬╖ fragments  2.5 h
   the lead's meetings by kind: standup 2.5 h ┬╖ 1:1 2.5 h ┬╖ planning 1 h ┬╖ hiring 2 h ┬╖ sync 1 h ┬╖ review 2 h ┬╖ roadmap 1.5 h

Your snippet prints:

no meetings at all                    meetings  0.0 h ┬╖ focus 40.0 h ┬╖ fragments  0.0 h
daily standup at 09:30                meetings  2.5 h ┬╖ focus 35.0 h ┬╖ fragments  2.5 h
standup moved to 12:30                meetings  2.5 h ┬╖ focus 37.5 h ┬╖ fragments  0.0 h
09:30 standup + a 1:1 at 11:00 daily  meetings  5.0 h ┬╖ focus 27.5 h ┬╖ fragments  7.5 h
09:30 standup + a 1:1 at 10:00 daily  meetings  5.0 h ┬╖ focus 32.5 h ┬╖ fragments  2.5 h
a scattered lead week, focus needs 1 h+ тЖТ focus 27.5 h in 15 blocks
a scattered lead week, focus needs 2 h+ тЖТ focus 22.5 h in 10 blocks
a scattered lead week, focus needs 3 h+ тЖТ focus  0.0 h in  0 blocks

The tests end with 12/12 passed.

ЁЯПБ What you just proved

The new head has 12.5 hours of meetings, and that alone cuts her free time from 35 to 27.5 hours. But where the meetings sit matters almost as much: scattered, only 14.5 hours of that free time comes in 2-hour blocks; clustered in the afternoons, the same meetings leave 25.0 hours of focus. Moving one daily 1:1 from 11:00 to 10:00 тАФ next to the standup тАФ turns 7.5 hours of fragments back into 2.5. And if your hard work needs 3-hour blocks, a lightly scattered week can leave none.

тЪая╕П Common mistakes

ЁЯПн In production

Look at a real month of your calendar before you change anything. Many calendar apps can export to .ics; a few lines turn that into hours per kind. On a real account (your own calendar export):

grep -c "BEGIN:VEVENT" my-calendar.ics          # how many meetings last month

Then write a short calendar policy and share it with the team:

Katrina's week (head of maths)
- Mornings MonтАУThu 10:00тАУ13:00: focus time. Pull me out for incidents and people problems only.
- 1:1s: Mon and Tue afternoons, same slot every week.
- Office hours: Wed 15:00тАУ16:00, no agenda needed.
- If you need a decision from me, write it down first (lesson 11) тАФ I answer within a day.

Many teams also agree on meeting-free blocks for everyone (a no-meeting afternoon, for example). Evidence on exactly how much this helps is mixed and mostly self-reported, so treat it as an experiment: try it for a month, then ask the team.

ЁЯПн Why this matters in production: a new lead's first quarter decides her habits. Write down where your hours go, decide what you will stop doing, and protect a few maker blocks on purpose тАФ they are where the thinking work of leading happens.

тПня╕П Next

The most important meetings in that calendar are the small ones: 1:1s, and the feedback that happens in them.

git checkout lesson-02-one-on-ones
тЖР Course homeall lessonsNext тЖТone on ones

This page is the lesson's README from the lesson-01-from-engineer-to-lead branch, shown here so the whole School stays on one site. Code files open on GitHub at the same branch.