ЁЯЧУя╕П рдзрдбрд╛ 01 тАФ Engineer рддреЗ lead: рдЖрдард╡рдбреНрдпрд╛рдЪреЗ рддрд╛рд╕ рдХреБрдареЗ рдЬрд╛рддрд╛рдд
ЁЯУН рддреБрдореНрд╣реА рдЗрдереЗ рдЖрд╣рд╛рдд: 12 рдкреИрдХреА рдзрдбрд╛ 01 ┬╖ рдкреБрдвреЗ: lesson-02-one-on-ones
ЁЯУж рдпрд╛ рдмреНрд░рдБрдЪрдордзреНрдпреЗ рдХрд╛рдп рдЖрд╣реЗ
рд╣рд╛ рд╕рдВрдкреВрд░реНрдг рдХреЛрд░реНрд╕ рдПрдХрд╛рдЪ рдмрджрд▓рд╛рдмрджреНрджрд▓ рдЖрд╣реЗ: рдХрддрд░рд┐рдирд╛ рд╢рд╛рд│реЗрддрд▓реА рд╕рд░реНрд╡реЛрддреНрддрдо рдЧрдгрд┐рдд рд╢рд┐рдХреНрд╖рд┐рдХрд╛ рд╣реЛрддреА. рдЖрддрд╛ рддреА рдЧрдгрд┐рдд рд╡рд┐рднрд╛рдЧрдкреНрд░рдореБрдЦ рдЖрд╣реЗ. рддрд┐рдЪреНрдпрд╛ рдЯреАрдордордзреНрдпреЗ рджреАрдкрд┐рдХрд╛ рдЖрдгрд┐ рдРрд╢реНрд╡рд░реНрдпрд╛ рд╢рд┐рдХрд╡рддрд╛рдд, рдЖрдгрд┐ рдореАрд░рд╛ рд╡ рд▓реАрд▓рд╛ рдпрд╛ рджреЛрди рдирд╡реНрдпрд╛ рд╢рд┐рдХреНрд╖рд┐рдХрд╛рд╣реА рдЖрд╣реЗрдд. рдЙрддреНрддрдо рдзрдбрд╛ рдХрд╕рд╛ рд╢рд┐рдХрд╡рд╛рдпрдЪрд╛ рд╣реЗ рдХрддрд░рд┐рдирд╛рд▓рд╛ рдЕрдЬреВрдирд╣реА рдорд╛рд╣реАрдд рдЖрд╣реЗ тАФ рдкрдг рдЖрддрд╛ рддрд┐рдЪреЗ рдХрд╛рдо рдореНрд╣рдгрдЬреЗ рд╡рд┐рднрд╛рдЧ: рдХреЛрдг рдХрд╛рдп рд╢рд┐рдХрд╡рддреЗ, рдХреЛрдг рдЕрдбрдХрд▓реА рдЖрд╣реЗ, рдХреЛрдг рд╡рд╛рдврддреЗ рдЖрд╣реЗ, рдкрд╛рд▓рдХрд╛рдВрдирд╛ рдХрд╛рдп рд╡рдЪрди рджрд┐рд▓реЗ рд╣реЛрддреЗ. Engineering рдЪреНрдпрд╛ рднрд╛рд╖реЗрдд: рддреА engineer рдкрд╛рд╕реВрди engineering lead рдЭрд╛рд▓реА. рд╕рдВрдкреВрд░реНрдг рдХреЛрд░реНрд╕рднрд░ рддреБрдореНрд╣реА рд╡рд╛рдкрд░рд╛рд▓ рдЕрд╢рд╛ рдЦрд▒реНрдпрд╛ files:
- lead/models.py тАФ рдореБрдЦреНрдпрд╛рдзреНрдпрд╛рдкрд┐рдХреЗрдЪреЗ рдХрд╛рд░реНрдпрд╛рд▓рдп рдЫреЛрдЯреНрдпрд╛ deterministic models рдЪреНрдпрд╛ рд░реВрдкрд╛рдд, рд╢реБрджреНрдз Python рдордзреНрдпреЗ (zero dependencies)
- lead/demo.py тАФ рдкреНрд░рддреНрдпреЗрдХ рдзрдбрд╛ рдПрдХ рдЫреЛрдЯрд╛ program рдореНрд╣рдгреВрди (
python3 lead/demo.py <section>; sections:calendar oneonones delegation hiring forecast priorities debt metrics topologies incidents writing growth) - lead/test_lead.py тАФ models рд╡рд░реАрд▓ 12 checks
- demo-output.txt тАФ рдирд┐рд░реЛрдЧреА run рдХрд╛рдп print рдХрд░рддреЛ
ЁЯОТ рд╕реБрд░реВ рдХрд░рдгреНрдпрд╛рдЖрдзреА: рддреБрдореНрд╣рд╛рд▓рд╛ рдлрдХреНрдд 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
тЭУ рдХрд╛рдп
- Engineering lead / engineering manager тАФ рдЯреАрдордЪреНрдпрд╛ рдирд┐рдХрд╛рд▓рд╛рдВрдЪреА рдЖрдгрд┐ рддреНрдпрд╛рддреАрд▓ рд▓реЛрдХрд╛рдВрдЪреА рдЬрдмрд╛рдмрджрд╛рд░реА рдЕрд╕рд▓реЗрд▓реА рд╡реНрдпрдХреНрддреА. рдХрдВрдкрдиреАрдиреБрд╕рд╛рд░ рдкрджрдирд╛рдореЗ рдЦреВрдк рдмрджрд▓рддрд╛рдд ("tech lead", "team lead", "engineering manager"); рдХрд╛рд╣реА рднреВрдорд┐рдХрд╛ рдореБрдЦреНрдпрддрдГ technical рдЕрд╕рддрд╛рдд, рдХрд╛рд╣реА рдореБрдЦреНрдпрддрдГ рд▓реЛрдХрд╛рдВрдмрджреНрджрд▓. рд╣рд╛ рдХреЛрд░реНрд╕ рддреНрдпрд╛рдВрдкреИрдХреА рдмрд╣реБрддреЗрдХрд╛рдВрдордзреНрдпреЗ рд╕рдорд╛рди рдЕрд╕рд▓реЗрд▓реЗ рднрд╛рдЧ рд╢рд┐рдХрд╡рддреЛ.
- Managerial leverage тАФ Andy Grove рдпрд╛рдВрдЪреА High Output Management (1983) рдордзрд▓реА рдХрд▓реНрдкрдирд╛: manager рдЪреЗ output рдореНрд╣рдгрдЬреЗ рддрд┐рдЪреНрдпрд╛ рдЯреАрдордЪреЗ output, рдЕрдзрд┐рдХ рддреА рдкреНрд░рднрд╛рд╡ рдЯрд╛рдХрддреЗ рддреНрдпрд╛ рдЯреАрдореНрд╕рдЪреЗ output. рдЬреА lead рдкрд╛рдЪ рдЬрдгреАрдВрдкреИрдХреА рдкреНрд░рддреНрдпреЗрдХреАрдЪреЗ рдЖрдард╡рдбреНрдпрд╛рд▓рд╛ рджреЛрди рддрд╛рд╕ рд╡рд╛рдЪрд╡рддреЗ, рддрд┐рдиреЗ рджрд╣рд╛ рддрд╛рд╕ рдЬреЛрдбрд▓реЗ тАФ рд╕реНрд╡рддрдГ рдЬрд▓рдж coding рдХрд░реВрди рддреА рдЬреЛрдбреВ рд╢рдХрд▓реА рдЕрд╕рддреА рддреНрдпрд╛рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд.
- Maker's schedule рд╡рд┐рд░реБрджреНрдз manager's schedule тАФ Paul Graham рдпрд╛рдВрдЪрд╛ рдирд┐рдмрдВрдз (2009). Makers (code рд▓рд┐рд╣рд┐рдгрд╛рд░реЗ, design рдХрд░рдгрд╛рд░реЗ рдХрд┐рдВрд╡рд╛ рд▓реЗрдЦрди рдХрд░рдгрд╛рд░реЗ рд▓реЛрдХ) рдпрд╛рдВрдирд╛ рдореЛрдареЗ рдЕрдЦрдВрдб рддреБрдХрдбреЗ рд▓рд╛рдЧрддрд╛рдд; рд╕рдХрд╛рд│рдЪреНрдпрд╛ рдордзреНрдпреЗрдЪ рдПрдХ meeting рд╕рдВрдкреВрд░реНрдг рд╕рдХрд╛рд│ рдЦрд╛рдК рд╢рдХрддреЗ. Managers рдПрдХ-рдПрдХ рддрд╛рд╕рд╛рдЪреНрдпрд╛ slots рдордзреНрдпреЗ рдХрд╛рдо рдХрд░рддрд╛рдд. Lead рдПрдХрд╛рдЪ рд╡реЗрд│реА рджреЛрдиреНрд╣реА schedules рд╡рд░ рдЬрдЧрддреЗ.
- Focus time тАФ рдпрд╛ lab рдордзреНрдпреЗ: рдХрд┐рдорд╛рди 2 рддрд╛рд╕рд╛рдВрдЪреНрдпрд╛ рддреБрдХрдбреНрдпрд╛рдВрдордзреНрдпреЗ рдорд┐рд│рдгрд╛рд░рд╛ рдореЛрдХрд│рд╛ рд╡реЗрд│ (рддреБрдореНрд╣реА рд╣реЗ рдмрджрд▓реВ рд╢рдХрддрд╛). Fragments тАФ рд▓рд╣рд╛рди рддреБрдХрдбреНрдпрд╛рдВрддреАрд▓ рдореЛрдХрд│рд╛ рд╡реЗрд│. рдореЛрдХрд│реЗ рддрд╛рд╕ рддреЗрд╡рдвреЗрдЪ рдЕрд╕реВрдирд╣реА рддреЗ рдмрд╣реБрддреЗрдХ focus рдЕрд╕реВ рд╢рдХрддрд╛рдд рдХрд┐рдВрд╡рд╛ рдмрд╣реБрддреЗрдХ fragments.
- Player-coach trap тАФ рдЬреБрдиреЗ engineering рдХрд╛рдо рдкреВрд░реНрдг рдЖрдХрд╛рд░рд╛рдд рдареЗрд╡реВрди рддреНрдпрд╛рд╡рд░ lead рдЪреЗ рдХрд╛рдо рдЬреЛрдбрдгреЗ. рдпрд╛рдЪрд╛ рдЕрд░реНрде рд╕рд╣рд╕рд╛ рдЕрд╕рд╛ рд╣реЛрддреЛ рдХреА lead рдЪреЗ рдХрд╛рдо тАФ 1:1s, planning, рдЕрдбрдерд│реЗ рджреВрд░ рдХрд░рдгреЗ тАФ рд╣реЗрдЪ рд╡рдЧрд│рд▓реЗ рдЬрд╛рддреЗ, рдЖрдгрд┐ рдЯреАрдо lead рдЪреНрдпрд╛ code reviews рдЪреА рд╡рд╛рдЯ рдкрд╛рд╣рдд рдмрд╕рддреЗ.
ЁЯдФ рдХрд╛
рдХрд╛рд░рдг рдирд╡реНрдпрд╛ 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 рддрд╛рд╕рд╛рдВрдЪреЗ рддреБрдХрдбреЗ рд▓рд╛рдЧрдд рдЕрд╕рддреАрд▓, рддрд░ рдереЛрдбрд╛рд╕рд╛ рд╡рд┐рдЦреБрд░рд▓реЗрд▓рд╛ рдЖрдард╡рдбрд╛рд╣реА рдПрдХрд╣реА рддреБрдХрдбрд╛ рд╕реЛрдбреВ рд╢рдХрдд рдирд╛рд╣реА.
тЪая╕П рдиреЗрд╣рдореАрдЪреНрдпрд╛ рдЪреБрдХрд╛
- рдЬреБрдиреЗ engineering рдХрд╛рдо рдкреВрд░реНрдг рдЖрдХрд╛рд░рд╛рдд рдареЗрд╡рдгреЗ, рдЖрдгрд┐ lead рдЪреЗ рдХрд╛рдо рд╕рдВрдзреНрдпрд╛рдХрд╛рд│реА рдХрд░рдгреЗ
- рдЯреАрдордЪреЗ рд╕рд░реНрд╡рд╛рдд рддрд╛рддрдбреАрдЪреЗ рдХрд┐рдВрд╡рд╛ рд╕рд░реНрд╡рд╛рдд рд░рдВрдЬрдХ technical рдХрд╛рдо рд╕реНрд╡рддрдГ рдШреЗрдгреЗ тАФ рддреБрдореНрд╣реАрдЪ bottleneck рдмрдирддрд╛
- рдкреНрд░рддреНрдпреЗрдХ meeting рдорд┐рд│реЗрд▓ рддреНрдпрд╛ slot рдордзреНрдпреЗ рд╕реНрд╡реАрдХрд╛рд░рдгреЗ
- рддреБрдореНрд╣реА рдХрд┐рддреА code ship рдХреЗрд▓рд╛ рдпрд╛рд╡рд░реВрди рддреБрдордЪрд╛ рдЖрдард╡рдбрд╛ рдореЛрдЬрдгреЗ
- рддреБрдореНрд╣реА рдЬрд╕реЗ рддреБрдордЪреЗ calendar рдкрд╛рд╣рддрд╛ рддрд╕реЗрдЪ рдЯреАрдо рдкрд╛рд╣рддреЗ рдЕрд╕реЗ рдЧреГрд╣реАрдд рдзрд░рдгреЗ тАФ рддреБрдореНрд╣реА рдХрдзреА рдЙрдкрд▓рдмреНрдз рдЖрд╣рд╛рдд рдЖрдгрд┐ рдХрдзреА рдирд╛рд╣реА рд╣реЗ рдореЛрдареНрдпрд╛рдиреЗ рд╕рд╛рдВрдЧрд╛
ЁЯПн рдкреНрд░рддреНрдпрдХреНрд╖ рд╡рд╛рдкрд░рд╛рдд
рдХрд╛рд╣реАрд╣реА рдмрджрд▓рдгреНрдпрд╛рдЖрдзреА рддреБрдордЪреНрдпрд╛ 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