ЁЯдЭ рдзрдбрд╛ 02 тАФ Platform as a product: рд╢рд┐рдХреНрд╖рд┐рдХрд╛ рдпрд╛ рдХрд╛рд░реНрдпрд╛рд▓рдпрд╛рдЪреНрдпрд╛ рдЧреНрд░рд╛рд╣рдХ рдЖрд╣реЗрдд
ЁЯУН рддреБрдореНрд╣реА рдЗрдереЗ рдЖрд╣рд╛рдд: 12 рдкреИрдХреА рдзрдбрд╛ 02 ┬╖ рдорд╛рдЧреЗ: lesson-01-why-platforms ┬╖ рдкреБрдвреЗ: lesson-03-golden-paths
ЁЯУж рдпрд╛ рдмреНрд░рдБрдЪрдордзреНрдпреЗ рдХрд╛рдп рдЖрд╣реЗ
рдзрдбрд╛ 01, рдЖрдгрд┐ platform рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рдИрд▓ рдХреА рджреБрд░реНрд▓рдХреНрд╖рд┐рдд рд╣реЛрдИрд▓ рд╣реЗ рдард░рд╡рдгрд╛рд░реА рд╡рд┐рдЪрд╛рд░рд╕рд░рдгреА: рддреНрдпрд╛рд▓рд╛
рдПрдХ product рдорд╛рдирд╛. Teams рдпрд╛ users рдЖрд╣реЗрдд. рддреБрдореНрд╣реА рддреНрдпрд╛рдВрдЪреА рдореБрд▓рд╛рдЦрдд рдШреЗрддрд╛, рддреНрдпрд╛рдВрдЪреЗ рддреНрд░рд╛рд╕
рдХреНрд░рдорд╛рдиреЗ рд▓рд╛рд╡рддрд╛, рд╕рд░реНрд╡рд╛рдд рдореЛрдареНрдпрд╛ рддреНрд░рд╛рд╕рд╛рдкрд╛рд╕реВрди рдЦрд╛рд▓реА рдПрдХ roadmap рдмрдирд╡рддрд╛, рдЖрдгрд┐ adoption рдореЛрдЬрддрд╛ тАФ
platform рд╕реНрд╡рддрдГ рдирд┐рд╡рдбрдгрд╛рд▒реНрдпрд╛ teams тАФ рд╕рдХреНрддреА рдХрд░реВрди рддреЛ рд▓рд╛рджрдгреНрдпрд╛рдРрд╡рдЬреА. idp/office.py
рдордзрд▓реЗ rank_pains() рдЖрдгрд┐ adoption(), рдЖрдгрд┐ idp/demo.py рдордзрд▓реЗ product().
ЁЯзТ 5 рд╡рд░реНрд╖рд╛рдВрдЪреНрдпрд╛ рдореБрд▓рд╛рд▓рд╛ рд╕рдордЬрд╛рд╡рд▓реНрдпрд╛рд╕рд╛рд░рдЦреЗ
рджреАрдкрд┐рдХрд╛ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛рд░реНрдпрд╛рд▓рдп рдЪрд╛рд▓рд╡рддреЗ. рдпрд╛ рдорд╣рд┐рдиреНрдпрд╛рдд рддрд┐рдЪреНрдпрд╛рдХрдбреЗ рдПрдХрд╛рдЪ рдирд╡реНрдпрд╛ рд╕рдВрдЪрд╛рдЪреЗ рдмрдЬреЗрдЯ рдЖрд╣реЗ.
рддрд┐рд▓рд╛ рд╕рдЧрд│реНрдпрд╛рдд рдЬрд╛рд╕реНрдд рдордЬреЗрджрд╛рд░ рд╡рд╛рдЯрдгрд╛рд░реА рдЧреЛрд╖реНрдЯ рддреА рдмрдирд╡реВ рд╢рдХрд▓реА рдЕрд╕рддреА: рдПрдХ рдЪрдХрдЪрдХреАрдд smart-board рд╕рдВрдЪ. ЁЯЦея╕П рддреНрдпрд╛рдРрд╡рдЬреА рддреА рдПрдХ рд╡рд╣реА рдШреЗрдКрди рд╢рд╛рд│реЗрдд рдлрд┐рд░рддреЗ рдЖрдгрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рднрд╛рдЧрд╛рд▓рд╛ рд╡рд┐рдЪрд╛рд░рддреЗ: "рддреБрдордЪрд╛ рд╡реЗрд│ рдХрд╢рд╛рдд рд╡рд╛рдпрд╛ рдЬрд╛рддреЛ? рдЖрдард╡рдбреНрдпрд╛рд▓рд╛ рдХрд┐рддреА рддрд╛рд╕?"
- рд╡рд┐рдЬреНрдЮрд╛рди рд╡рд┐рднрд╛рдЧ рдореНрд╣рдгрддреЛ: "lab database рдЪреА рд╡рд╛рдЯ рдкрд╛рд╣рдгреНрдпрд╛рдд тАФ рдЖрдард╡рдбреНрдпрд╛рд▓рд╛ 6 рддрд╛рд╕."
- рдЧрдгрд┐рдд рд╡рд┐рднрд╛рдЧ рдореНрд╣рдгрддреЛ: "database рдЪреА рд╡рд╛рдЯ рдкрд╛рд╣рдгреНрдпрд╛рдд тАФ 4 рддрд╛рд╕. рд╡реЗрд│рд╛рдкрддреНрд░рдХрд╛рдЪрд╛ screen рдХреЛрдгрд╛рдЪрд╛ рд╣реЗ рд╢реЛрдзрдгреНрдпрд╛рдд тАФ 1 рддрд╛рд╕."
- рдХреНрд░реАрдбрд╛ рд╡рд┐рднрд╛рдЧ рдореНрд╣рдгрддреЛ: "database рдЪреА рд╡рд╛рдЯ рдкрд╛рд╣рдгреНрдпрд╛рдд тАФ 5 рддрд╛рд╕."
рддреА рд╕рдЧрд│реЗ рдмреЗрд░реАрдЬ рдХрд░рддреЗ. database рдЪреА рд╡рд╛рдЯ рдкрд╛рд╣рдгреНрдпрд╛рдд рд╕рдВрдкреВрд░реНрдг рд╢рд╛рд│реЗрдЪреЗ рдЖрдард╡рдбреНрдпрд╛рд▓рд╛ 15 рддрд╛рд╕ рдЬрд╛рддрд╛рдд. рддреЛрдЪ рдкрд╣рд┐рд▓рд╛ рд╕рдВрдЪ. smart board рдирд╛рд╣реА.
рдордЧ рддреА рдХреЛрдгрд╛рд▓рд╛рд╣реА рддреЛ рд╡рд╛рдкрд░рд╛рдпрдЪрд╛ рдЖрджреЗрд╢ рджреЗрдд рдирд╛рд╣реА. рддреА рддреЛ рдЗрддрдХрд╛ рдЪрд╛рдВрдЧрд▓рд╛ рдмрдирд╡рддреЗ рдХреА рд╡рд┐рднрд╛рдЧрд╛рдВрдирд╛ рддреЛ рд╣рд╡рд╛рд╕рд╛ рд╡рд╛рдЯрддреЛ. рдХрд┐рддреА рдЬрдг рддреЛ рдирд┐рд╡рдбрддрд╛рдд рддреЗ рддреА рдореЛрдЬрддреЗ: рдкрд╣рд┐рд▓реНрдпрд╛ рдорд╣рд┐рдиреНрдпрд╛рдд 5 рдкреИрдХреА 1, рддрд┐рд╕рд▒реНрдпрд╛ рдорд╣рд┐рдиреНрдпрд╛рдд 5 рдкреИрдХреА 3, рд╕рд╣рд╛рд╡реНрдпрд╛ рдорд╣рд┐рдиреНрдпрд╛рдд 5 рдкреИрдХреА 4. рдЬреЗрд╡реНрд╣рд╛ рдХрд▓рд╛ рд╡рд┐рднрд╛рдЧ "рдирдХреЛ, рдзрдиреНрдпрд╡рд╛рдж" рдореНрд╣рдгрддреЛ, рддреЗрд╡реНрд╣рд╛ рддреА рдХрд╛ рддреЗ рд╡рд┐рдЪрд╛рд░рддреЗ тАФ рддреЗ рдЙрддреНрддрд░рдЪ рддрд┐рдЪреЗ рдкреБрдврдЪреЗ рдХрд╛рдо рдЖрд╣реЗ.
ЁЯЧ║я╕П рдЖрдХреГрддреА
flowchart LR
i["ЁЯЧгя╕П interviews<br/>5 departments"] --> r["ЁЯУК rank by hours lost<br/>database 15 h/week<br/>CI YAML 7 ┬╖ owner lookup 5"]
r --> m["ЁЯЧ║я╕П roadmap<br/>biggest pain first"]
m --> b["ЁЯз░ build the kit"]
b --> a["ЁЯУИ adoption<br/>20% тЖТ 60% тЖТ 80%"]
a -->|"teams that leave: ask why"| i
ЁЯЧ║я╕П рдХрд╛рдврд▓реЗрд▓реА рдЖрдХреГрддреА + рдПрдХ lab: https://school-edh.pages.dev/platform-engineering/lesson-diagrams.html#l02
тЭУ рдХрд╛рдп
- Platform as a product тАФ platform team рдПрдЦрд╛рджреНрдпрд╛ product team рд╕рд╛рд░рдЦреА рдХрд╛рдо рдХрд░рддреЗ: рддрд┐рдЪреЗ users рдЕрд╕рддрд╛рдд, рддреА user research рдХрд░рддреЗ, рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ roadmap рдареЗрд╡рддреЗ, documentation рдЖрдгрд┐ release notes рд▓рд┐рд╣рд┐рддреЗ, рдЖрдгрд┐ users рдЪреЗ рднрд▓реЗ рдЭрд╛рд▓реЗ рдХрд╛ рддреЗ рдореЛрдЬрддреЗ. CNCF Platforms White Paper рдЖрдгрд┐ Team Topologies рджреЛрдиреНрд╣реА platforms рдЪреЗ рд╡рд░реНрдгрди рдЕрд╕реЗрдЪ рдХрд░рддрд╛рдд.
- Users (рдЕрдВрддрд░реНрдЧрдд рдЧреНрд░рд╛рд╣рдХ) тАФ platform рд╡рд░ рдмрд╛рдВрдзрдХрд╛рдо рдХрд░рдгрд╛рд░реЗ developers рдЖрдгрд┐ teams. рддреНрдпрд╛ рд╕рд╣рд╕рд╛ рддреНрдпрд╛рд▓рд╛ рд╡рд│рд╕рд╛ рдШрд╛рд▓реВ рд╢рдХрддрд╛рдд (рд╕реНрд╡рддрдГрдЪреЗ Terraform рд▓рд┐рд╣реВрди, cloud console рд╡рд╛рдкрд░реВрди), рдореНрд╣рдгреВрди platform рд▓рд╛ рдЖрдкрд▓реА рдЬрд╛рдЧрд╛ рдорд┐рд│рд╡рд╛рд╡реА рд▓рд╛рдЧрддреЗ.
- User interviews тАФ users рд╢реА рддреНрдпрд╛рдВрдЪреНрдпрд╛ рдХрд╛рдорд╛рдмрджреНрджрд▓ рдЖрдгрд┐ рддреНрд░рд╛рд╕рд╛рдВрдмрджреНрджрд▓ рдмреЛрд▓рдгреЗ, "рддреБрдореНрд╣рд╛рд▓рд╛ feature X рдЖрд╡рдбреЗрд▓ рдХрд╛?" рдЕрд╕реЗ рд╡рд┐рдЪрд╛рд░рдгреЗ рдирд╛рд╣реА. рдЪрд╛рдВрдЧрд▓реЗ рдкреНрд░рд╢реНрди рднреВрддрдХрд╛рд│рд╛рдмрджреНрджрд▓ рдЕрд╕рддрд╛рдд: "рдорд╛рдЧрдЪреНрдпрд╛ рд╡реЗрд│реА рддреБрдореНрд╣рд╛рд▓рд╛ database рд▓рд╛рдЧрд▓рд╛ рддреЗрд╡реНрд╣рд╛ рдХрд╛рдп рдЭрд╛рд▓реЗ?"
- Roadmap тАФ рдХрд╛рд░реНрдпрд╛рд▓рдп рдХрд╛рдп рдмрдирд╡рдгрд╛рд░ рдпрд╛рдЪреА рдХреНрд░рдорд╡рд╛рд░ рдпрд╛рджреА. рдореВрд▓реНрдпрд╛рдиреБрд╕рд╛рд░ рдХреНрд░рдо рд▓рд╛рд╡рд▓реЗрд▓реА (рдЗрдереЗ: рдЖрдард╡рдбреНрдпрд╛рд▓рд╛ рд╡рд╛рдпрд╛ рдЬрд╛рдгрд╛рд░реЗ рддрд╛рд╕, рдордЧ рдХрд┐рддреА teams рдирд╛ рддреЛ рдЬрд╛рдгрд╡рддреЛ), рдмрдирд╡рд╛рдпрд▓рд╛ рдХрд╛рдп рдордЬреЗрджрд╛рд░ рдЖрд╣реЗ рддреНрдпрд╛рдиреБрд╕рд╛рд░ рдирд╛рд╣реА.
- Adoption тАФ platform рд╡рд╛рдкрд░рдгрд╛рд▒реНрдпрд╛ teams рдЪрд╛ рд╡рд╛рдЯрд╛. рд╡рд╛рдкрд░ рд╕реНрд╡реЗрдЪреНрдЫреЗрдиреЗ рдЕрд╕реЗрд▓ рддрд░ adoption рд╣рд╛ рдкреНрд░рд╛рдорд╛рдгрд┐рдХ feedback рдЕрд╕рддреЛ. рд╕рдХреНрддреА ("Q3 рдкрд░реНрдпрдВрдд рд╕рдЧрд│реНрдпрд╛рдВрдиреА рддреЛ рд╡рд╛рдкрд░рд▓рд╛рдЪ рдкрд╛рд╣рд┐рдЬреЗ") рдореБрд│реЗ рдЖрдХрдбрд╛ рд╡рд╛рдврддреЛ, рдкрдг product рдЪрд╛рдВрдЧрд▓реЗ рдЖрд╣реЗ рдХреА рдирд╛рд╣реА рд╣реЗ рдХрд│рдд рдирд╛рд╣реА.
- Thinnest viable platform (TVP) тАФ Team Topologies рдЪреА рдХрд▓реНрдкрдирд╛: рдорджрдд рдХрд░рдгрд╛рд▒реНрдпрд╛ рд╕рд░реНрд╡рд╛рдд рд▓рд╣рд╛рди рдЧреЛрд╖реНрдЯреАрдкрд╛рд╕реВрди рд╕реБрд░реБрд╡рд╛рдд рдХрд░рд╛ тАФ рдЪрд╛рдВрдЧрд▓реНрдпрд╛ defaults рдЪреЗ рдПрдХ wiki рдкрд╛рди рд╕реБрджреНрдзрд╛ тАФ рдЖрдгрд┐ users рдЬрд┐рдереЗ рдУрдврддрд╛рдд рддрд┐рдереЗрдЪ рддреЛ рд╡рд╛рдврд╡рд╛.
- Developer experience (DevEx) тАФ developers рдирд╛ рдЖрдкрд▓реЗ рдХрд╛рдо рдХрд░рдгреЗ рдХрд┐рддреА рд╕реЛрдкреЗ, рдЬрд▓рдж рдЖрдгрд┐ рд╕реБрдЦрдж рд╡рд╛рдЯрддреЗ рддреЗ. Platform рдЪреНрдпрд╛ product рдЪреА рдЧреБрдгрд╡рддреНрддрд╛ рдЗрдереЗ рджрд┐рд╕рддреЗ.
ЁЯдФ рдХрд╛
рдХрд╛рд░рдг platforms рдЕрдкрдпрд╢реА рд╣реЛрдгреНрдпрд╛рдЪрд╛ рд╕рд░реНрд╡рд╛рдд рд╕рд╛рдорд╛рдиреНрдп рдорд╛рд░реНрдЧ рд╢рд╛рдВрдд рдЕрд╕рддреЛ: рддреЗ рдмрдирд╡рд▓реЗ рдЬрд╛рддрд╛рдд, рдЬрд╛рд╣реАрд░ рд╣реЛрддрд╛рдд, рдЖрдгрд┐ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдд рдирд╛рд╣реАрдд. Teams рдЖрдкрд▓реНрдпрд╛ рд╕реНрд╡рддрдГрдЪреНрдпрд╛ scripts рдареЗрд╡рддрд╛рдд рдХрд╛рд░рдг platform рдиреЗ рддреНрдпрд╛рдВрдЪреА рд╕рдорд╕реНрдпрд╛ рд╕реЛрдбрд╡рд▓реА рдирд╛рд╣реА, рдХрд┐рдВрд╡рд╛ рдЕрд╢рд╛ рдкрджреНрдзрддреАрдиреЗ рд╕реЛрдбрд╡рд▓реА рдХреА рддреНрдпрд╛рдВрдЪрд╛ рджрд┐рд╡рд╕ рдЬрд╛рд╕реНрдд рд╡рд╛рдИрдЯ рдЧреЗрд▓рд╛. рдЖрдзреА users рд╢реА рдмреЛрд▓рдгреЗ рдЪреБрдХреАрдЪреА рдЧреЛрд╖реНрдЯ рдмрдирд╡рдгреНрдпрд╛рдкреЗрдХреНрд╖рд╛ рд╕реНрд╡рд╕реНрдд рдЖрд╣реЗ. рдЖрдгрд┐ рдирд┐рд╡рдбрд▓реЗрд▓реЗ adoption рдореЛрдЬрд▓реНрдпрд╛рдиреЗ рдорд╣рд┐рдиреНрдпрд╛рдорд╛рдЧреВрди рдорд╣рд┐рдирд╛ рдХрд│рддреЗ рдХреА рдХрд╛рд░реНрдпрд╛рд▓рдпрд╛рдЪрд╛ рдЦрд░реЛрдЦрд░ рдЙрдкрдпреЛрдЧ рд╣реЛрддреЛ рдЖрд╣реЗ рдХрд╛.
ЁЯФз рдХрд╕реЗ (рдпрд╛ repo рдордзреНрдпреЗ)
idp/office.py рдордзрд▓реЗ rank_pains(interviews)
{team: {pain: hours lost per week}} рдШреЗрддреЗ, рдкреНрд░рддреНрдпреЗрдХ рддреНрд░рд╛рд╕рд╛рдЪреЗ рд╕рдЧрд│реНрдпрд╛ teams рдордзрд▓реЗ рддрд╛рд╕ рдмреЗрд░реАрдЬ рдХрд░рддреЗ,
teams рдореЛрдЬрддреЗ, рдЖрдгрд┐ рдЖрдзреА рддрд╛рд╕рд╛рдВрдиреБрд╕рд╛рд░, рдордЧ teams рдЪреНрдпрд╛ рд╕рдВрдЦреНрдпреЗрдиреБрд╕рд╛рд░, рдордЧ рдирд╛рд╡рд╛рдиреБрд╕рд╛рд░ рдХреНрд░рдо рд▓рд╛рд╡рддреЗ (рдореНрд╣рдгрдЬреЗ
рдХреНрд░рдо рд╕реНрдерд┐рд░ рд░рд╛рд╣рддреЛ). adoption(teams, on_path) рдореНрд╣рдгрдЬреЗ paved path рдирд┐рд╡рдбрд▓реЗрд▓реНрдпрд╛ teams рдЪреА рдЯрдХреНрдХреЗрд╡рд╛рд░реА.
idp/demo.py рдордзрд▓реЗ product() рдкрд╛рдЪ рд╡рд┐рднрд╛рдЧрд╛рдВрдЪреНрдпрд╛ рдореБрд▓рд╛рдЦрддреА рдШреЗрддреЗ рдЖрдгрд┐ roadmap
рдЖрдгрд┐ рдорд╣рд┐рдиреЗ 1, 3 рдЖрдгрд┐ 6 рдордзрд▓реЗ adoption рдЫрд╛рдкрддреЗ.
ЁЯзк рдХрд░реВрди рдкрд╛рд╣рд╛
python3 idp/demo.py product
python3 - <<'EOF'
import sys; sys.path.insert(0, "idp"); from office import rank_pains, adoption
interviews = {"science": {"waiting for a database": 6, "writing CI YAML": 3},
"maths": {"waiting for a database": 4, "finding a service's owner": 1},
"library": {"writing CI YAML": 4},
"sports": {"finding a service's owner": 1},
"arts": {"finding a service's owner": 2}}
print("top pain:", rank_pains(interviews)[0])
interviews["music"] = {"writing CI YAML": 5} # one more interview
for pain, hours, teams in rank_pains(interviews): print(f"{pain:<26} {hours:>2} h/week ┬╖ {teams} teams")
teams = list(interviews)
print("adoption with 3 of 6 on the path:", adoption(teams, {"science", "maths", "music"}), "%")
EOF
тЬЕ рддрдкрд╛рд╕рд╛ тАФ рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд╛рдп рджрд┐рд╕рд╛рдпрд▓рд╛ рд╣рд╡реЗ
product рд╣реЗ рдЫрд╛рдкрддреЗ:
тФАтФА Dipika (the facilities office) interviews 5 departments: hours lost per week, per pain
1. waiting for a database 15 h/week across 3 teams
2. writing CI YAML 7 h/week across 2 teams
3. finding a service's owner 5 h/week across 4 teams
4. preview environments 5 h/week across 2 teams
5. rotating secrets 3 h/week across 2 teams
month 1: 20% of departments chose the paved path
month 3: 60% of departments chose the paved path
month 6: 80% of departments chose the paved path
рддреБрдордЪрд╛ snippet рд╣реЗ рдЫрд╛рдкрддреЛ:
top pain: ('waiting for a database', 10, 2)
writing CI YAML 12 h/week ┬╖ 3 teams
waiting for a database 10 h/week ┬╖ 2 teams
finding a service's owner 4 h/week ┬╖ 3 teams
adoption with 3 of 6 on the path: 50 %
ЁЯПБ рддреБрдореНрд╣реА рдЖрддреНрддрд╛рдЪ рдХрд╛рдп рд╕рд┐рджреНрдз рдХреЗрд▓реЗ
рдЖрдгрдЦреА рдПрдХрд╛ рдореБрд▓рд╛рдЦрддреАрдиреЗ roadmap рдЪреЗ рд╢рд┐рдЦрд░ рдмрджрд▓рд▓реЗ: рд╕рдВрдЧреАрдд рд╡рд┐рднрд╛рдЧрд╛рдореБрд│реЗ CI YAML (12 h/week) database (10 h/week) рдЪреНрдпрд╛ рдкреБрдвреЗ рдЬрд╛рддреЗ. Roadmap рд╣рд╛ рдРрдХрдгреНрдпрд╛рдЪрд╛ рдкрд░рд┐рдгрд╛рдо рдЖрд╣реЗ, рдЖрдгрд┐ рддреБрдореНрд╣реА рдЬрд╛рд╕реНрдд рд▓реЛрдХрд╛рдВрдЪреЗ рдРрдХрд▓реЗ рдХреА рддреЛ рдмрджрд▓рддреЛ. "finding a service's owner" рдХрдбреЗрд╣реА рд▓рдХреНрд╖ рджреНрдпрд╛: рддреЛ 4 teams рдирд╛ рддреНрд░рд╛рд╕ рджреЗрддреЛ рдкрдг рдПрдХреВрдг рдлрдХреНрдд 5 рддрд╛рд╕ тАФ рдЕрдиреЗрдХрд╛рдВрдирд╛ рдереЛрдбрд╛рд╕рд╛ рдЬрд╛рдгрд╡рдгрд╛рд░рд╛ рддреНрд░рд╛рд╕. рдЖрдзреА рддрд╛рд╕рд╛рдВрдиреБрд╕рд╛рд░ рдЖрдгрд┐ рдордЧ teams рдЪреНрдпрд╛ рд╕рдВрдЦреНрдпреЗрдиреБрд╕рд╛рд░ рдХреНрд░рдо рд▓рд╛рд╡рдгреЗ рд╣рд╛ рдПрдХ рдирд┐рд░реНрдгрдп рдЖрд╣реЗ; рдЦрд░реЗ рдХрд╛рд░реНрдпрд╛рд▓рдп рддреНрдпрд╛рд▓рд╛ рд╡реЗрдЧрд│реЗ рд╡рдЬрди рджреЗрдК рд╢рдХрддреЗ, рдЖрдгрд┐ рддреЗ рдХрд╕рд╛ рдХреНрд░рдо рд▓рд╛рд╡рддреЗ рд╣реЗ рддреНрдпрд╛рдиреЗ рд╕рд╛рдВрдЧрд╛рдпрд▓рд╛ рд╣рд╡реЗ.
ЁЯУП рд╢рд┐рдХрд╡рдгреНрдпрд╛рдЪреЗ рдореЙрдбреЗрд▓: рдЦрд▒реНрдпрд╛ рдореБрд▓рд╛рдЦрддреА рдЧреЛрд╖реНрдЯреА рджреЗрддрд╛рдд, рд╕реНрд╡рдЪреНрдЫ рдЖрдХрдбреЗ рдирд╛рд╣реАрдд. рдЕрдВрджрд╛рдЬреЗ "рд╡рд╛рдпрд╛ рдЧреЗрд▓реЗрд▓реЗ рддрд╛рд╕" рдвреЛрдмрд│ рдЕрд╕рддрд╛рдд; рддреНрдпрд╛рдВрдЪрд╛ рд╡рд╛рдкрд░ рдХрд╛рдорд╛рдЪрд╛ рдХреНрд░рдо рд▓рд╛рд╡рд╛рдпрд▓рд╛ рдХрд░рд╛, рдЕрдЪреВрдХ рд╕рддреНрдп рдореНрд╣рдгреВрди рдирд╛рд╣реА.
тЪая╕П рдиреЗрд╣рдореАрдЪреНрдпрд╛ рдЪреБрдХрд╛
- users рдирд╛ рдХрд╛рдп рд╣рд╡реЗ рддреНрдпрд╛рдРрд╡рдЬреА platform team рд▓рд╛ рдЬреЗ рд░реЛрдЪрдХ рд╡рд╛рдЯрддреЗ рддреЗ рдмрдирд╡рдгреЗ
- рдЪрд╛рдВрдЧрд▓реНрдпрд╛ product рдРрд╡рдЬреА рд╕рдХреНрддреА тАФ adoption рд╡рд╛рдврддреЛ, рд╕рдорд╛рдзрд╛рди рдШрдЯрддреЗ, рдкрд│рд╡рд╛рдЯрд╛ рд╡рд╛рдврддрд╛рдд
- "what happened last time?" рдРрд╡рдЬреА "would you use X?" рд╡рд┐рдЪрд╛рд░рдгреЗ (рд╕рдЧрд│реЗ рд╣реЛ рдореНрд╣рдгрддрд╛рдд)
- documentation рдирд╛рд╣реА, release notes рдирд╛рд╣реАрдд, support channel рдирд╛рд╣реА тАФ рд╣реЗ product рдЖрд╣реЗ, рдореНрд╣рдгреВрди рддрд┐рдиреНрд╣реА рд╣рд╡реЗрдд
- path рд╕реЛрдбрдгрд╛рд▒реНрдпрд╛ teams рдирд╛ feedback рди рдорд╛рдирддрд╛ рдирд┐рдпрдо рдореЛрдбрдгрд╛рд▒реНрдпрд╛ рдорд╛рдирдгреЗ
ЁЯПн рдкреНрд░рддреНрдпрдХреНрд╖ рд╡рд╛рдкрд░рд╛рдд
Roadmap рдХрдВрдкрдиреАрдЪреНрдпрд╛ рдЖрдд рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдареЗрд╡рд╛, рдореНрд╣рдгрдЬреЗ рдкреНрд░рддреНрдпреЗрдХ team рд▓рд╛ рдХрд╛рдп рдпреЗрдд рдЖрд╣реЗ рдЖрдгрд┐ рдХрд╛ рддреЗ рджрд┐рд╕реЗрд▓. рдПрдХ рдЫреЛрдЯрд╛, рдкреНрд░рд╛рдорд╛рдгрд┐рдХ format тАФ рдкреНрд░рддреНрдпреЗрдХ item рд╕рд╛рдареА рдПрдХ issue, рдкреБрд░рд╛рд╡реНрдпрд╛рд╕рд╣ label рд▓рд╛рд╡рд▓реЗрд▓рд╛:
# on a real account, with the GitHub CLI, in the platform team's repo
gh issue create --title "Self-service Postgres (roadmap #1)" \
--label roadmap --label "pain:15h-week" \
--body "Interviews: science 6 h, sports 5 h, maths 4 h per week waiting for a database."
gh issue list --label roadmap
рдЕрдиреЗрдХ platform teams рджрд░ рддрд┐рдорд╛рд╣реАрд▓рд╛ рдПрдХ рдЫреЛрдЯреЗ survey рд╕реБрджреНрдзрд╛ рдШреЗрддрд╛рдд (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде: "рдорд╛рдЧрдЪреНрдпрд╛ рдорд╣рд┐рдиреНрдпрд╛рдд рдПрдХ рдмрджрд▓ ship рдХрд░рдгреЗ рдХрд┐рддреА рд╕реЛрдкреЗ рд╣реЛрддреЗ?" 1тАУ5 рдЪреНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рд╡рд░, рдЖрдгрд┐ рдПрдХ рдореЛрдХрд│рд╛ рдкреНрд░рд╢реНрди). рдзрдбрд╛ 11 рдпрд╛рдХрдбреЗ рдкрд░рдд рдпреЗрддреЛ: systems рдордзрд▓реЗ рдЖрдХрдбреЗ рдЖрдгрд┐ рд▓реЛрдХрд╛рдВрдЪреА рдЙрддреНрддрд░реЗ.
ЁЯПн рдкреНрд░рддреНрдпрдХреНрд╖ рд╡рд╛рдкрд░рд╛рдд рд╣реЗ рдХрд╛ рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ: platform рдЪреА рд╕реНрдкрд░реНрдзрд╛ "рдореА рд╕реНрд╡рддрдГрдЪ рдХрд░реВрди рдЯрд╛рдХреЗрди" рд╢реА рдЕрд╕рддреЗ. рддреЛ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рд╕реЛрдкрд╛ рдорд╛рд░реНрдЧ рдЕрд╕реЗрд▓ рддреЗрд╡реНрд╣рд╛рдЪ рдЬрд┐рдВрдХрддреЛ тАФ рдЖрдгрд┐ "рд╕реЛрдкрд╛" рдореНрд╣рдгрдЬреЗ рдХрд╛рдп рд╣реЗ рдлрдХреНрдд рд╡рд┐рдЪрд╛рд░реВрдирдЪ рдХрд│рддреЗ.
тПня╕П рдкреБрдвреЗ
рд╕рд░реНрд╡рд╛рдд рдореЛрдард╛ рддреНрд░рд╛рд╕ рдЖрд╣реЗ "рдкреНрд░рддреНрдпреЗрдХ team рдХреЛрд▒реНрдпрд╛ рдкрд╛рдирд╛рдкрд╛рд╕реВрди рд╕реБрд░реБрд╡рд╛рдд рдХрд░рддреЗ". рдХрд╛рд░реНрдпрд╛рд▓рдпрд╛рдЪрд╛ рдкрд╣рд┐рд▓рд╛ рд╕рдВрдЪ: рдПрдХ template рдЬреЛ рдирд╡реНрдпрд╛ service рд▓рд╛ рдПрдХрд╛ рдкрд╛рдпрд░реАрдд рдЪрд╛рд▓рдгрд╛рд░рд╛ рд╕рд╛рдВрдЧрд╛рдбрд╛ рджреЗрддреЛ.
git checkout lesson-03-golden-paths