@shaykec/bridge 0.4.25 → 0.4.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/journeys/ai-engineer.yaml +34 -0
- package/journeys/backend-developer.yaml +36 -0
- package/journeys/business-analyst.yaml +37 -0
- package/journeys/devops-engineer.yaml +37 -0
- package/journeys/engineering-manager.yaml +44 -0
- package/journeys/frontend-developer.yaml +41 -0
- package/journeys/fullstack-developer.yaml +49 -0
- package/journeys/mobile-developer.yaml +42 -0
- package/journeys/product-manager.yaml +35 -0
- package/journeys/qa-engineer.yaml +37 -0
- package/journeys/ux-designer.yaml +43 -0
- package/modules/README.md +52 -0
- package/modules/accessibility-fundamentals/content.md +126 -0
- package/modules/accessibility-fundamentals/exercises.md +88 -0
- package/modules/accessibility-fundamentals/module.yaml +43 -0
- package/modules/accessibility-fundamentals/quick-ref.md +71 -0
- package/modules/accessibility-fundamentals/quiz.md +100 -0
- package/modules/accessibility-fundamentals/resources.md +29 -0
- package/modules/accessibility-fundamentals/walkthrough.md +80 -0
- package/modules/adr-writing/content.md +121 -0
- package/modules/adr-writing/exercises.md +81 -0
- package/modules/adr-writing/module.yaml +41 -0
- package/modules/adr-writing/quick-ref.md +57 -0
- package/modules/adr-writing/quiz.md +73 -0
- package/modules/adr-writing/resources.md +29 -0
- package/modules/adr-writing/walkthrough.md +64 -0
- package/modules/ai-agents/content.md +120 -0
- package/modules/ai-agents/exercises.md +82 -0
- package/modules/ai-agents/module.yaml +42 -0
- package/modules/ai-agents/quick-ref.md +60 -0
- package/modules/ai-agents/quiz.md +103 -0
- package/modules/ai-agents/resources.md +30 -0
- package/modules/ai-agents/walkthrough.md +85 -0
- package/modules/ai-assisted-research/content.md +136 -0
- package/modules/ai-assisted-research/exercises.md +80 -0
- package/modules/ai-assisted-research/module.yaml +42 -0
- package/modules/ai-assisted-research/quick-ref.md +67 -0
- package/modules/ai-assisted-research/quiz.md +73 -0
- package/modules/ai-assisted-research/resources.md +33 -0
- package/modules/ai-assisted-research/walkthrough.md +85 -0
- package/modules/ai-pair-programming/content.md +105 -0
- package/modules/ai-pair-programming/exercises.md +98 -0
- package/modules/ai-pair-programming/module.yaml +39 -0
- package/modules/ai-pair-programming/quick-ref.md +58 -0
- package/modules/ai-pair-programming/quiz.md +73 -0
- package/modules/ai-pair-programming/resources.md +34 -0
- package/modules/ai-pair-programming/walkthrough.md +117 -0
- package/modules/ai-test-generation/content.md +125 -0
- package/modules/ai-test-generation/exercises.md +98 -0
- package/modules/ai-test-generation/module.yaml +39 -0
- package/modules/ai-test-generation/quick-ref.md +65 -0
- package/modules/ai-test-generation/quiz.md +74 -0
- package/modules/ai-test-generation/resources.md +41 -0
- package/modules/ai-test-generation/walkthrough.md +100 -0
- package/modules/api-design/content.md +189 -0
- package/modules/api-design/exercises.md +84 -0
- package/modules/api-design/game.yaml +113 -0
- package/modules/api-design/module.yaml +45 -0
- package/modules/api-design/quick-ref.md +73 -0
- package/modules/api-design/quiz.md +100 -0
- package/modules/api-design/resources.md +55 -0
- package/modules/api-design/walkthrough.md +88 -0
- package/modules/clean-code/content.md +136 -0
- package/modules/clean-code/exercises.md +137 -0
- package/modules/clean-code/game.yaml +172 -0
- package/modules/clean-code/module.yaml +44 -0
- package/modules/clean-code/quick-ref.md +44 -0
- package/modules/clean-code/quiz.md +105 -0
- package/modules/clean-code/resources.md +40 -0
- package/modules/clean-code/walkthrough.md +78 -0
- package/modules/clean-code/workshop.yaml +149 -0
- package/modules/code-review/content.md +130 -0
- package/modules/code-review/exercises.md +95 -0
- package/modules/code-review/game.yaml +83 -0
- package/modules/code-review/module.yaml +42 -0
- package/modules/code-review/quick-ref.md +77 -0
- package/modules/code-review/quiz.md +105 -0
- package/modules/code-review/resources.md +40 -0
- package/modules/code-review/walkthrough.md +106 -0
- package/modules/daily-workflow/content.md +81 -0
- package/modules/daily-workflow/exercises.md +50 -0
- package/modules/daily-workflow/module.yaml +33 -0
- package/modules/daily-workflow/quick-ref.md +37 -0
- package/modules/daily-workflow/quiz.md +65 -0
- package/modules/daily-workflow/resources.md +38 -0
- package/modules/daily-workflow/walkthrough.md +83 -0
- package/modules/debugging-systematically/content.md +139 -0
- package/modules/debugging-systematically/exercises.md +91 -0
- package/modules/debugging-systematically/module.yaml +46 -0
- package/modules/debugging-systematically/quick-ref.md +59 -0
- package/modules/debugging-systematically/quiz.md +105 -0
- package/modules/debugging-systematically/resources.md +42 -0
- package/modules/debugging-systematically/walkthrough.md +84 -0
- package/modules/debugging-systematically/workshop.yaml +127 -0
- package/modules/demo-test/content.md +68 -0
- package/modules/demo-test/exercises.md +28 -0
- package/modules/demo-test/game.yaml +171 -0
- package/modules/demo-test/module.yaml +41 -0
- package/modules/demo-test/quick-ref.md +54 -0
- package/modules/demo-test/quiz.md +74 -0
- package/modules/demo-test/resources.md +21 -0
- package/modules/demo-test/walkthrough.md +122 -0
- package/modules/demo-test/workshop.yaml +31 -0
- package/modules/design-critique/content.md +93 -0
- package/modules/design-critique/exercises.md +71 -0
- package/modules/design-critique/module.yaml +41 -0
- package/modules/design-critique/quick-ref.md +63 -0
- package/modules/design-critique/quiz.md +73 -0
- package/modules/design-critique/resources.md +27 -0
- package/modules/design-critique/walkthrough.md +68 -0
- package/modules/design-patterns/content.md +335 -0
- package/modules/design-patterns/exercises.md +82 -0
- package/modules/design-patterns/game.yaml +55 -0
- package/modules/design-patterns/module.yaml +45 -0
- package/modules/design-patterns/quick-ref.md +44 -0
- package/modules/design-patterns/quiz.md +101 -0
- package/modules/design-patterns/resources.md +40 -0
- package/modules/design-patterns/walkthrough.md +64 -0
- package/modules/exploratory-testing/content.md +133 -0
- package/modules/exploratory-testing/exercises.md +88 -0
- package/modules/exploratory-testing/module.yaml +41 -0
- package/modules/exploratory-testing/quick-ref.md +68 -0
- package/modules/exploratory-testing/quiz.md +75 -0
- package/modules/exploratory-testing/resources.md +39 -0
- package/modules/exploratory-testing/walkthrough.md +87 -0
- package/modules/git/content.md +128 -0
- package/modules/git/exercises.md +53 -0
- package/modules/git/game.yaml +190 -0
- package/modules/git/module.yaml +44 -0
- package/modules/git/quick-ref.md +67 -0
- package/modules/git/quiz.md +89 -0
- package/modules/git/resources.md +49 -0
- package/modules/git/walkthrough.md +92 -0
- package/modules/git/workshop.yaml +145 -0
- package/modules/hiring-interviews/content.md +130 -0
- package/modules/hiring-interviews/exercises.md +88 -0
- package/modules/hiring-interviews/module.yaml +41 -0
- package/modules/hiring-interviews/quick-ref.md +68 -0
- package/modules/hiring-interviews/quiz.md +73 -0
- package/modules/hiring-interviews/resources.md +36 -0
- package/modules/hiring-interviews/walkthrough.md +75 -0
- package/modules/hooks/content.md +97 -0
- package/modules/hooks/exercises.md +69 -0
- package/modules/hooks/module.yaml +39 -0
- package/modules/hooks/quick-ref.md +93 -0
- package/modules/hooks/quiz.md +81 -0
- package/modules/hooks/resources.md +34 -0
- package/modules/hooks/walkthrough.md +105 -0
- package/modules/hooks/workshop.yaml +64 -0
- package/modules/incident-response/content.md +124 -0
- package/modules/incident-response/exercises.md +82 -0
- package/modules/incident-response/game.yaml +132 -0
- package/modules/incident-response/module.yaml +45 -0
- package/modules/incident-response/quick-ref.md +53 -0
- package/modules/incident-response/quiz.md +103 -0
- package/modules/incident-response/resources.md +40 -0
- package/modules/incident-response/walkthrough.md +82 -0
- package/modules/llm-fundamentals/content.md +114 -0
- package/modules/llm-fundamentals/exercises.md +83 -0
- package/modules/llm-fundamentals/module.yaml +42 -0
- package/modules/llm-fundamentals/quick-ref.md +64 -0
- package/modules/llm-fundamentals/quiz.md +103 -0
- package/modules/llm-fundamentals/resources.md +30 -0
- package/modules/llm-fundamentals/walkthrough.md +91 -0
- package/modules/one-on-ones/content.md +133 -0
- package/modules/one-on-ones/exercises.md +81 -0
- package/modules/one-on-ones/module.yaml +44 -0
- package/modules/one-on-ones/quick-ref.md +67 -0
- package/modules/one-on-ones/quiz.md +73 -0
- package/modules/one-on-ones/resources.md +37 -0
- package/modules/one-on-ones/walkthrough.md +69 -0
- package/modules/package.json +9 -0
- package/modules/prioritization-frameworks/content.md +130 -0
- package/modules/prioritization-frameworks/exercises.md +93 -0
- package/modules/prioritization-frameworks/module.yaml +41 -0
- package/modules/prioritization-frameworks/quick-ref.md +77 -0
- package/modules/prioritization-frameworks/quiz.md +73 -0
- package/modules/prioritization-frameworks/resources.md +32 -0
- package/modules/prioritization-frameworks/walkthrough.md +69 -0
- package/modules/prompt-engineering/content.md +123 -0
- package/modules/prompt-engineering/exercises.md +82 -0
- package/modules/prompt-engineering/game.yaml +101 -0
- package/modules/prompt-engineering/module.yaml +45 -0
- package/modules/prompt-engineering/quick-ref.md +65 -0
- package/modules/prompt-engineering/quiz.md +105 -0
- package/modules/prompt-engineering/resources.md +36 -0
- package/modules/prompt-engineering/walkthrough.md +81 -0
- package/modules/rag-fundamentals/content.md +111 -0
- package/modules/rag-fundamentals/exercises.md +80 -0
- package/modules/rag-fundamentals/module.yaml +45 -0
- package/modules/rag-fundamentals/quick-ref.md +58 -0
- package/modules/rag-fundamentals/quiz.md +75 -0
- package/modules/rag-fundamentals/resources.md +34 -0
- package/modules/rag-fundamentals/walkthrough.md +75 -0
- package/modules/react-fundamentals/content.md +140 -0
- package/modules/react-fundamentals/exercises.md +81 -0
- package/modules/react-fundamentals/game.yaml +145 -0
- package/modules/react-fundamentals/module.yaml +45 -0
- package/modules/react-fundamentals/quick-ref.md +62 -0
- package/modules/react-fundamentals/quiz.md +106 -0
- package/modules/react-fundamentals/resources.md +42 -0
- package/modules/react-fundamentals/walkthrough.md +89 -0
- package/modules/react-fundamentals/workshop.yaml +112 -0
- package/modules/react-native-fundamentals/content.md +141 -0
- package/modules/react-native-fundamentals/exercises.md +79 -0
- package/modules/react-native-fundamentals/module.yaml +42 -0
- package/modules/react-native-fundamentals/quick-ref.md +60 -0
- package/modules/react-native-fundamentals/quiz.md +61 -0
- package/modules/react-native-fundamentals/resources.md +24 -0
- package/modules/react-native-fundamentals/walkthrough.md +84 -0
- package/modules/registry.yaml +1650 -0
- package/modules/risk-management/content.md +162 -0
- package/modules/risk-management/exercises.md +86 -0
- package/modules/risk-management/module.yaml +41 -0
- package/modules/risk-management/quick-ref.md +82 -0
- package/modules/risk-management/quiz.md +73 -0
- package/modules/risk-management/resources.md +40 -0
- package/modules/risk-management/walkthrough.md +67 -0
- package/modules/running-effective-standups/content.md +119 -0
- package/modules/running-effective-standups/exercises.md +79 -0
- package/modules/running-effective-standups/module.yaml +40 -0
- package/modules/running-effective-standups/quick-ref.md +61 -0
- package/modules/running-effective-standups/quiz.md +73 -0
- package/modules/running-effective-standups/resources.md +36 -0
- package/modules/running-effective-standups/walkthrough.md +76 -0
- package/modules/solid-principles/content.md +154 -0
- package/modules/solid-principles/exercises.md +107 -0
- package/modules/solid-principles/module.yaml +42 -0
- package/modules/solid-principles/quick-ref.md +50 -0
- package/modules/solid-principles/quiz.md +102 -0
- package/modules/solid-principles/resources.md +39 -0
- package/modules/solid-principles/walkthrough.md +84 -0
- package/modules/sprint-planning/content.md +142 -0
- package/modules/sprint-planning/exercises.md +79 -0
- package/modules/sprint-planning/game.yaml +84 -0
- package/modules/sprint-planning/module.yaml +44 -0
- package/modules/sprint-planning/quick-ref.md +76 -0
- package/modules/sprint-planning/quiz.md +102 -0
- package/modules/sprint-planning/resources.md +39 -0
- package/modules/sprint-planning/walkthrough.md +75 -0
- package/modules/sql-fundamentals/content.md +160 -0
- package/modules/sql-fundamentals/exercises.md +87 -0
- package/modules/sql-fundamentals/game.yaml +105 -0
- package/modules/sql-fundamentals/module.yaml +45 -0
- package/modules/sql-fundamentals/quick-ref.md +53 -0
- package/modules/sql-fundamentals/quiz.md +103 -0
- package/modules/sql-fundamentals/resources.md +42 -0
- package/modules/sql-fundamentals/walkthrough.md +92 -0
- package/modules/sql-fundamentals/workshop.yaml +109 -0
- package/modules/stakeholder-communication/content.md +186 -0
- package/modules/stakeholder-communication/exercises.md +87 -0
- package/modules/stakeholder-communication/module.yaml +38 -0
- package/modules/stakeholder-communication/quick-ref.md +89 -0
- package/modules/stakeholder-communication/quiz.md +73 -0
- package/modules/stakeholder-communication/resources.md +41 -0
- package/modules/stakeholder-communication/walkthrough.md +74 -0
- package/modules/system-design/content.md +149 -0
- package/modules/system-design/exercises.md +83 -0
- package/modules/system-design/game.yaml +95 -0
- package/modules/system-design/module.yaml +46 -0
- package/modules/system-design/quick-ref.md +59 -0
- package/modules/system-design/quiz.md +102 -0
- package/modules/system-design/resources.md +46 -0
- package/modules/system-design/walkthrough.md +90 -0
- package/modules/team-topologies/content.md +166 -0
- package/modules/team-topologies/exercises.md +85 -0
- package/modules/team-topologies/module.yaml +41 -0
- package/modules/team-topologies/quick-ref.md +61 -0
- package/modules/team-topologies/quiz.md +101 -0
- package/modules/team-topologies/resources.md +37 -0
- package/modules/team-topologies/walkthrough.md +76 -0
- package/modules/technical-debt/content.md +111 -0
- package/modules/technical-debt/exercises.md +92 -0
- package/modules/technical-debt/module.yaml +39 -0
- package/modules/technical-debt/quick-ref.md +60 -0
- package/modules/technical-debt/quiz.md +73 -0
- package/modules/technical-debt/resources.md +25 -0
- package/modules/technical-debt/walkthrough.md +94 -0
- package/modules/technical-mentoring/content.md +128 -0
- package/modules/technical-mentoring/exercises.md +84 -0
- package/modules/technical-mentoring/module.yaml +41 -0
- package/modules/technical-mentoring/quick-ref.md +74 -0
- package/modules/technical-mentoring/quiz.md +73 -0
- package/modules/technical-mentoring/resources.md +33 -0
- package/modules/technical-mentoring/walkthrough.md +65 -0
- package/modules/test-strategy/content.md +136 -0
- package/modules/test-strategy/exercises.md +84 -0
- package/modules/test-strategy/game.yaml +99 -0
- package/modules/test-strategy/module.yaml +45 -0
- package/modules/test-strategy/quick-ref.md +66 -0
- package/modules/test-strategy/quiz.md +99 -0
- package/modules/test-strategy/resources.md +60 -0
- package/modules/test-strategy/walkthrough.md +97 -0
- package/modules/test-strategy/workshop.yaml +96 -0
- package/modules/typescript-fundamentals/content.md +127 -0
- package/modules/typescript-fundamentals/exercises.md +79 -0
- package/modules/typescript-fundamentals/game.yaml +111 -0
- package/modules/typescript-fundamentals/module.yaml +45 -0
- package/modules/typescript-fundamentals/quick-ref.md +55 -0
- package/modules/typescript-fundamentals/quiz.md +104 -0
- package/modules/typescript-fundamentals/resources.md +42 -0
- package/modules/typescript-fundamentals/walkthrough.md +71 -0
- package/modules/typescript-fundamentals/workshop.yaml +146 -0
- package/modules/user-story-mapping/content.md +123 -0
- package/modules/user-story-mapping/exercises.md +87 -0
- package/modules/user-story-mapping/module.yaml +41 -0
- package/modules/user-story-mapping/quick-ref.md +64 -0
- package/modules/user-story-mapping/quiz.md +73 -0
- package/modules/user-story-mapping/resources.md +29 -0
- package/modules/user-story-mapping/walkthrough.md +86 -0
- package/modules/writing-prds/content.md +133 -0
- package/modules/writing-prds/exercises.md +93 -0
- package/modules/writing-prds/game.yaml +83 -0
- package/modules/writing-prds/module.yaml +44 -0
- package/modules/writing-prds/quick-ref.md +77 -0
- package/modules/writing-prds/quiz.md +103 -0
- package/modules/writing-prds/resources.md +30 -0
- package/modules/writing-prds/walkthrough.md +87 -0
- package/package.json +2 -2
- package/canvas-dist/assets/_basePickBy-BovdgFIW.js +0 -1
- package/canvas-dist/assets/_basePickBy-BtkHe2u_.js +0 -1
- package/canvas-dist/assets/_basePickBy-C0936578.js +0 -1
- package/canvas-dist/assets/_basePickBy-CE2Qvuh7.js +0 -1
- package/canvas-dist/assets/_basePickBy-DV6sX4CG.js +0 -1
- package/canvas-dist/assets/_basePickBy-DZX6ZNMT.js +0 -1
- package/canvas-dist/assets/_baseUniq-B7dN28TM.js +0 -1
- package/canvas-dist/assets/_baseUniq-Cl23fCdR.js +0 -1
- package/canvas-dist/assets/_baseUniq-CojWFw7B.js +0 -1
- package/canvas-dist/assets/_baseUniq-DA640BJl.js +0 -1
- package/canvas-dist/assets/_baseUniq-Ds-62CCj.js +0 -1
- package/canvas-dist/assets/_baseUniq-KG7SRw9H.js +0 -1
- package/canvas-dist/assets/arc-7E9FFKlC.js +0 -1
- package/canvas-dist/assets/arc-BSMfRZtt.js +0 -1
- package/canvas-dist/assets/arc-C6nT-koR.js +0 -1
- package/canvas-dist/assets/arc-D_fOnjmo.js +0 -1
- package/canvas-dist/assets/arc-Khfvgkr3.js +0 -1
- package/canvas-dist/assets/arc-ieS-i42x.js +0 -1
- package/canvas-dist/assets/architectureDiagram-VXUJARFQ-DF4t6GQD.js +0 -36
- package/canvas-dist/assets/architectureDiagram-VXUJARFQ-DXgSlsio.js +0 -36
- package/canvas-dist/assets/architectureDiagram-VXUJARFQ-DiomxPB4.js +0 -36
- package/canvas-dist/assets/architectureDiagram-VXUJARFQ-DnFaxvXD.js +0 -36
- package/canvas-dist/assets/architectureDiagram-VXUJARFQ-Dt38C0LJ.js +0 -36
- package/canvas-dist/assets/architectureDiagram-VXUJARFQ-egbtMwua.js +0 -36
- package/canvas-dist/assets/blockDiagram-VD42YOAC-CUNKQd-b.js +0 -122
- package/canvas-dist/assets/blockDiagram-VD42YOAC-D-NiLXxd.js +0 -122
- package/canvas-dist/assets/blockDiagram-VD42YOAC-Dx6Dh9gg.js +0 -122
- package/canvas-dist/assets/blockDiagram-VD42YOAC-_r-PmlQy.js +0 -122
- package/canvas-dist/assets/blockDiagram-VD42YOAC-bvYKZLMc.js +0 -122
- package/canvas-dist/assets/blockDiagram-VD42YOAC-l85QT9Ig.js +0 -122
- package/canvas-dist/assets/c4Diagram-YG6GDRKO-BWKCTyQi.js +0 -10
- package/canvas-dist/assets/c4Diagram-YG6GDRKO-CbXs2xzC.js +0 -10
- package/canvas-dist/assets/c4Diagram-YG6GDRKO-CjiS-GNK.js +0 -10
- package/canvas-dist/assets/c4Diagram-YG6GDRKO-D7SnLlHp.js +0 -10
- package/canvas-dist/assets/c4Diagram-YG6GDRKO-RTTCSVf2.js +0 -10
- package/canvas-dist/assets/c4Diagram-YG6GDRKO-yvqJ_AqX.js +0 -10
- package/canvas-dist/assets/channel-CSXq7GP6.js +0 -1
- package/canvas-dist/assets/channel-CvujjGiJ.js +0 -1
- package/canvas-dist/assets/channel-D959Iony.js +0 -1
- package/canvas-dist/assets/channel-DOSwCnrB.js +0 -1
- package/canvas-dist/assets/channel-sw61LzxF.js +0 -1
- package/canvas-dist/assets/channel-vZVnNhOK.js +0 -1
- package/canvas-dist/assets/chunk-4BX2VUAB-BBjuAwXr.js +0 -1
- package/canvas-dist/assets/chunk-4BX2VUAB-BXRNyucU.js +0 -1
- package/canvas-dist/assets/chunk-4BX2VUAB-Bgq5Z77T.js +0 -1
- package/canvas-dist/assets/chunk-4BX2VUAB-BuoMCMCr.js +0 -1
- package/canvas-dist/assets/chunk-4BX2VUAB-COD5n7vg.js +0 -1
- package/canvas-dist/assets/chunk-4BX2VUAB-K8DepKJO.js +0 -1
- package/canvas-dist/assets/chunk-55IACEB6-Bic_bMrQ.js +0 -1
- package/canvas-dist/assets/chunk-55IACEB6-DEy2QUDq.js +0 -1
- package/canvas-dist/assets/chunk-55IACEB6-Dcgbmfzg.js +0 -1
- package/canvas-dist/assets/chunk-55IACEB6-DfmuNm_E.js +0 -1
- package/canvas-dist/assets/chunk-55IACEB6-DlQRcczm.js +0 -1
- package/canvas-dist/assets/chunk-55IACEB6-p2qMY-fm.js +0 -1
- package/canvas-dist/assets/chunk-B4BG7PRW-BpbyxBP2.js +0 -165
- package/canvas-dist/assets/chunk-B4BG7PRW-CCPqvPrP.js +0 -165
- package/canvas-dist/assets/chunk-B4BG7PRW-CEeDPAki.js +0 -165
- package/canvas-dist/assets/chunk-B4BG7PRW-D2UFN_2M.js +0 -165
- package/canvas-dist/assets/chunk-B4BG7PRW-DFI5h6HC.js +0 -165
- package/canvas-dist/assets/chunk-B4BG7PRW-DKOiFGMU.js +0 -165
- package/canvas-dist/assets/chunk-DI55MBZ5-BV6nHjNQ.js +0 -220
- package/canvas-dist/assets/chunk-DI55MBZ5-CEZJmC0E.js +0 -220
- package/canvas-dist/assets/chunk-DI55MBZ5-DOZT99Ek.js +0 -220
- package/canvas-dist/assets/chunk-DI55MBZ5-DmC2LoG2.js +0 -220
- package/canvas-dist/assets/chunk-DI55MBZ5-DpkcJdZP.js +0 -220
- package/canvas-dist/assets/chunk-DI55MBZ5-fVTGx0zh.js +0 -220
- package/canvas-dist/assets/chunk-FMBD7UC4-BOCyQpI7.js +0 -15
- package/canvas-dist/assets/chunk-FMBD7UC4-C76FrRL8.js +0 -15
- package/canvas-dist/assets/chunk-FMBD7UC4-CAq-btWc.js +0 -15
- package/canvas-dist/assets/chunk-FMBD7UC4-CidVsej6.js +0 -15
- package/canvas-dist/assets/chunk-FMBD7UC4-DPpfskdX.js +0 -15
- package/canvas-dist/assets/chunk-FMBD7UC4-DnLtclge.js +0 -15
- package/canvas-dist/assets/chunk-QN33PNHL-BclpCUi8.js +0 -1
- package/canvas-dist/assets/chunk-QN33PNHL-DDUw8IU1.js +0 -1
- package/canvas-dist/assets/chunk-QN33PNHL-DdJFAUXw.js +0 -1
- package/canvas-dist/assets/chunk-QN33PNHL-DjV4jUn9.js +0 -1
- package/canvas-dist/assets/chunk-QN33PNHL-N-HTycqU.js +0 -1
- package/canvas-dist/assets/chunk-QN33PNHL-sd8p21DW.js +0 -1
- package/canvas-dist/assets/chunk-QZHKN3VN-B6mT-JkP.js +0 -1
- package/canvas-dist/assets/chunk-QZHKN3VN-BCo8pc7x.js +0 -1
- package/canvas-dist/assets/chunk-QZHKN3VN-C8IIu6es.js +0 -1
- package/canvas-dist/assets/chunk-QZHKN3VN-D9FF492U.js +0 -1
- package/canvas-dist/assets/chunk-QZHKN3VN-DWMbUjXT.js +0 -1
- package/canvas-dist/assets/chunk-QZHKN3VN-l5FBJ77g.js +0 -1
- package/canvas-dist/assets/chunk-TZMSLE5B-BASt-UWt.js +0 -1
- package/canvas-dist/assets/chunk-TZMSLE5B-BCfaZWLT.js +0 -1
- package/canvas-dist/assets/chunk-TZMSLE5B-BKIk_hBR.js +0 -1
- package/canvas-dist/assets/chunk-TZMSLE5B-C4pt-Ir8.js +0 -1
- package/canvas-dist/assets/chunk-TZMSLE5B-DwGlELvo.js +0 -1
- package/canvas-dist/assets/chunk-TZMSLE5B-jJKG-WvJ.js +0 -1
- package/canvas-dist/assets/classDiagram-2ON5EDUG-B7YQfPU4.js +0 -1
- package/canvas-dist/assets/classDiagram-2ON5EDUG-BZ61MaHY.js +0 -1
- package/canvas-dist/assets/classDiagram-2ON5EDUG-CGseYor2.js +0 -1
- package/canvas-dist/assets/classDiagram-2ON5EDUG-CKzOc99J.js +0 -1
- package/canvas-dist/assets/classDiagram-2ON5EDUG-Ce_LPjwW.js +0 -1
- package/canvas-dist/assets/classDiagram-2ON5EDUG-DorPdibv.js +0 -1
- package/canvas-dist/assets/classDiagram-v2-WZHVMYZB-B7YQfPU4.js +0 -1
- package/canvas-dist/assets/classDiagram-v2-WZHVMYZB-BZ61MaHY.js +0 -1
- package/canvas-dist/assets/classDiagram-v2-WZHVMYZB-CGseYor2.js +0 -1
- package/canvas-dist/assets/classDiagram-v2-WZHVMYZB-CKzOc99J.js +0 -1
- package/canvas-dist/assets/classDiagram-v2-WZHVMYZB-Ce_LPjwW.js +0 -1
- package/canvas-dist/assets/classDiagram-v2-WZHVMYZB-DorPdibv.js +0 -1
- package/canvas-dist/assets/clone-74KSto7H.js +0 -1
- package/canvas-dist/assets/clone-CJQgAYVe.js +0 -1
- package/canvas-dist/assets/clone-DLeTuhHE.js +0 -1
- package/canvas-dist/assets/clone-D_IHK_lQ.js +0 -1
- package/canvas-dist/assets/clone-DxMUv1L9.js +0 -1
- package/canvas-dist/assets/clone-UNKf_nED.js +0 -1
- package/canvas-dist/assets/cose-bilkent-S5V4N54A-BTyQiCkr.js +0 -1
- package/canvas-dist/assets/cose-bilkent-S5V4N54A-BtPAe24N.js +0 -1
- package/canvas-dist/assets/cose-bilkent-S5V4N54A-DIjE7V3m.js +0 -1
- package/canvas-dist/assets/cose-bilkent-S5V4N54A-DKL_BGvE.js +0 -1
- package/canvas-dist/assets/cose-bilkent-S5V4N54A-LZ4OsCLU.js +0 -1
- package/canvas-dist/assets/cose-bilkent-S5V4N54A-XWeJtgga.js +0 -1
- package/canvas-dist/assets/dagre-6UL2VRFP-BJ2vcFwR.js +0 -4
- package/canvas-dist/assets/dagre-6UL2VRFP-C1FlE5s8.js +0 -4
- package/canvas-dist/assets/dagre-6UL2VRFP-C3BWFgl6.js +0 -4
- package/canvas-dist/assets/dagre-6UL2VRFP-CUnx73Rf.js +0 -4
- package/canvas-dist/assets/dagre-6UL2VRFP-Do10BY1y.js +0 -4
- package/canvas-dist/assets/dagre-6UL2VRFP-rOZEkrsg.js +0 -4
- package/canvas-dist/assets/diagram-PSM6KHXK-BGi_qzbq.js +0 -24
- package/canvas-dist/assets/diagram-PSM6KHXK-C3Nv7h_j.js +0 -24
- package/canvas-dist/assets/diagram-PSM6KHXK-CsMy-r0n.js +0 -24
- package/canvas-dist/assets/diagram-PSM6KHXK-Dj8g7kGt.js +0 -24
- package/canvas-dist/assets/diagram-PSM6KHXK-Dxb1w_7r.js +0 -24
- package/canvas-dist/assets/diagram-PSM6KHXK-kVMBkEyV.js +0 -24
- package/canvas-dist/assets/diagram-QEK2KX5R-4bsrr1WZ.js +0 -43
- package/canvas-dist/assets/diagram-QEK2KX5R-Bv7BmKfI.js +0 -43
- package/canvas-dist/assets/diagram-QEK2KX5R-C_FLN6hv.js +0 -43
- package/canvas-dist/assets/diagram-QEK2KX5R-Csuk5L3z.js +0 -43
- package/canvas-dist/assets/diagram-QEK2KX5R-D5Aszgz4.js +0 -43
- package/canvas-dist/assets/diagram-QEK2KX5R-DX58f87l.js +0 -43
- package/canvas-dist/assets/diagram-S2PKOQOG-1Q7hwiSd.js +0 -24
- package/canvas-dist/assets/diagram-S2PKOQOG-Bz9Vxi5V.js +0 -24
- package/canvas-dist/assets/diagram-S2PKOQOG-CdWgZIIc.js +0 -24
- package/canvas-dist/assets/diagram-S2PKOQOG-DBicbKFU.js +0 -24
- package/canvas-dist/assets/diagram-S2PKOQOG-DsXKwPtU.js +0 -24
- package/canvas-dist/assets/diagram-S2PKOQOG-L_SMHLXs.js +0 -24
- package/canvas-dist/assets/erDiagram-Q2GNP2WA-BYu7fh6H.js +0 -60
- package/canvas-dist/assets/erDiagram-Q2GNP2WA-CvnQ69BF.js +0 -60
- package/canvas-dist/assets/erDiagram-Q2GNP2WA-D3xm-Tdm.js +0 -60
- package/canvas-dist/assets/erDiagram-Q2GNP2WA-DIPpD8sj.js +0 -60
- package/canvas-dist/assets/erDiagram-Q2GNP2WA-DNgu6dMd.js +0 -60
- package/canvas-dist/assets/erDiagram-Q2GNP2WA-Decm8aB4.js +0 -60
- package/canvas-dist/assets/flowDiagram-NV44I4VS-2ymk2kw2.js +0 -162
- package/canvas-dist/assets/flowDiagram-NV44I4VS-BEPFOt6U.js +0 -162
- package/canvas-dist/assets/flowDiagram-NV44I4VS-BwqXYGfK.js +0 -162
- package/canvas-dist/assets/flowDiagram-NV44I4VS-CS1jax_z.js +0 -162
- package/canvas-dist/assets/flowDiagram-NV44I4VS-DQz5bf7r.js +0 -162
- package/canvas-dist/assets/flowDiagram-NV44I4VS-KW4T1sqF.js +0 -162
- package/canvas-dist/assets/ganttDiagram-JELNMOA3-B811prZt.js +0 -267
- package/canvas-dist/assets/ganttDiagram-JELNMOA3-C75pWm7X.js +0 -267
- package/canvas-dist/assets/ganttDiagram-JELNMOA3-CWsbo0fn.js +0 -267
- package/canvas-dist/assets/ganttDiagram-JELNMOA3-CbJozPBN.js +0 -267
- package/canvas-dist/assets/ganttDiagram-JELNMOA3-Co0cFt4c.js +0 -267
- package/canvas-dist/assets/ganttDiagram-JELNMOA3-I4PDqrRh.js +0 -267
- package/canvas-dist/assets/gitGraphDiagram-V2S2FVAM-B-z0cLPt.js +0 -65
- package/canvas-dist/assets/gitGraphDiagram-V2S2FVAM-Be40z-LF.js +0 -65
- package/canvas-dist/assets/gitGraphDiagram-V2S2FVAM-BejNaAVm.js +0 -65
- package/canvas-dist/assets/gitGraphDiagram-V2S2FVAM-BqWDYr0X.js +0 -65
- package/canvas-dist/assets/gitGraphDiagram-V2S2FVAM-DSvWGY-e.js +0 -65
- package/canvas-dist/assets/gitGraphDiagram-V2S2FVAM-HLYbyNJ5.js +0 -65
- package/canvas-dist/assets/graph-BE8KKsdf.js +0 -1
- package/canvas-dist/assets/graph-D6DzzszU.js +0 -1
- package/canvas-dist/assets/graph-DFR8Y_8s.js +0 -1
- package/canvas-dist/assets/graph-Da385cDY.js +0 -1
- package/canvas-dist/assets/graph-MU7gZz2B.js +0 -1
- package/canvas-dist/assets/graph-wjSBJwnf.js +0 -1
- package/canvas-dist/assets/index--ztw-8Rw.js +0 -647
- package/canvas-dist/assets/index-5TpIM6B1.js +0 -11
- package/canvas-dist/assets/index-BSswTuBk.js +0 -11
- package/canvas-dist/assets/index-BVvhMmjs.js +0 -11
- package/canvas-dist/assets/index-BY92Mj5g.js +0 -572
- package/canvas-dist/assets/index-CV7palC3.js +0 -572
- package/canvas-dist/assets/index-D9bmQGsB.js +0 -11
- package/canvas-dist/assets/index-DDIKkGv8.js +0 -592
- package/canvas-dist/assets/index-Dyo0NkPb.js +0 -574
- package/canvas-dist/assets/index-iQWajCow.js +0 -572
- package/canvas-dist/assets/index-m68YlAMU.js +0 -11
- package/canvas-dist/assets/index-mEoP57az.js +0 -11
- package/canvas-dist/assets/infoDiagram-HS3SLOUP--9BirqgJ.js +0 -2
- package/canvas-dist/assets/infoDiagram-HS3SLOUP-CSJVED2y.js +0 -2
- package/canvas-dist/assets/infoDiagram-HS3SLOUP-D68HIb2t.js +0 -2
- package/canvas-dist/assets/infoDiagram-HS3SLOUP-DK2VLGGz.js +0 -2
- package/canvas-dist/assets/infoDiagram-HS3SLOUP-PaFhn4yD.js +0 -2
- package/canvas-dist/assets/infoDiagram-HS3SLOUP-zLNG47sU.js +0 -2
- package/canvas-dist/assets/journeyDiagram-XKPGCS4Q-Bue2dR2X.js +0 -139
- package/canvas-dist/assets/journeyDiagram-XKPGCS4Q-CrgZfpdU.js +0 -139
- package/canvas-dist/assets/journeyDiagram-XKPGCS4Q-DUxWmkkC.js +0 -139
- package/canvas-dist/assets/journeyDiagram-XKPGCS4Q-OTFkv4pd.js +0 -139
- package/canvas-dist/assets/journeyDiagram-XKPGCS4Q-eK2_Zuu3.js +0 -139
- package/canvas-dist/assets/journeyDiagram-XKPGCS4Q-uds5Tz8D.js +0 -139
- package/canvas-dist/assets/kanban-definition-3W4ZIXB7-BETdiI7I.js +0 -89
- package/canvas-dist/assets/kanban-definition-3W4ZIXB7-BdVh7KdN.js +0 -89
- package/canvas-dist/assets/kanban-definition-3W4ZIXB7-Cxl8UM9S.js +0 -89
- package/canvas-dist/assets/kanban-definition-3W4ZIXB7-DVPlx3I2.js +0 -89
- package/canvas-dist/assets/kanban-definition-3W4ZIXB7-LtNWeoYB.js +0 -89
- package/canvas-dist/assets/kanban-definition-3W4ZIXB7-uvhEMvyE.js +0 -89
- package/canvas-dist/assets/layout-1OzszN14.js +0 -1
- package/canvas-dist/assets/layout-CJSupFcF.js +0 -1
- package/canvas-dist/assets/layout-DFRmxN_c.js +0 -1
- package/canvas-dist/assets/layout-DSu-zk7y.js +0 -1
- package/canvas-dist/assets/layout-TGcrvApd.js +0 -1
- package/canvas-dist/assets/layout-eStc8SYK.js +0 -1
- package/canvas-dist/assets/linear-9qlE6xa7.js +0 -1
- package/canvas-dist/assets/linear-CBfFWnLD.js +0 -1
- package/canvas-dist/assets/linear-Cv4ai8Hq.js +0 -1
- package/canvas-dist/assets/linear-DDzz65E6.js +0 -1
- package/canvas-dist/assets/linear-wbIqhwDf.js +0 -1
- package/canvas-dist/assets/linear-wyNKl76F.js +0 -1
- package/canvas-dist/assets/mindmap-definition-VGOIOE7T-3l4YzhEM.js +0 -68
- package/canvas-dist/assets/mindmap-definition-VGOIOE7T-B-KkpNlw.js +0 -68
- package/canvas-dist/assets/mindmap-definition-VGOIOE7T-DHMHWgmT.js +0 -68
- package/canvas-dist/assets/mindmap-definition-VGOIOE7T-Dqfyg4Z2.js +0 -68
- package/canvas-dist/assets/mindmap-definition-VGOIOE7T-NeRYOzsq.js +0 -68
- package/canvas-dist/assets/mindmap-definition-VGOIOE7T-xyu628P9.js +0 -68
- package/canvas-dist/assets/pieDiagram-ADFJNKIX-BWNzVAGj.js +0 -30
- package/canvas-dist/assets/pieDiagram-ADFJNKIX-Bm3PXYs-.js +0 -30
- package/canvas-dist/assets/pieDiagram-ADFJNKIX-BvvN7VvQ.js +0 -30
- package/canvas-dist/assets/pieDiagram-ADFJNKIX-BwU7AN7W.js +0 -30
- package/canvas-dist/assets/pieDiagram-ADFJNKIX-CHgwWCaM.js +0 -30
- package/canvas-dist/assets/pieDiagram-ADFJNKIX-DlZc8YOh.js +0 -30
- package/canvas-dist/assets/quadrantDiagram-AYHSOK5B-B-Zd8OFp.js +0 -7
- package/canvas-dist/assets/quadrantDiagram-AYHSOK5B-B1CnJyxI.js +0 -7
- package/canvas-dist/assets/quadrantDiagram-AYHSOK5B-C0Qo00b9.js +0 -7
- package/canvas-dist/assets/quadrantDiagram-AYHSOK5B-C9bx3nEJ.js +0 -7
- package/canvas-dist/assets/quadrantDiagram-AYHSOK5B-UHENkiRO.js +0 -7
- package/canvas-dist/assets/quadrantDiagram-AYHSOK5B-jKfurTPU.js +0 -7
- package/canvas-dist/assets/requirementDiagram-UZGBJVZJ-BPpNNusD.js +0 -64
- package/canvas-dist/assets/requirementDiagram-UZGBJVZJ-BwZF1NIK.js +0 -64
- package/canvas-dist/assets/requirementDiagram-UZGBJVZJ-CaT3Frtk.js +0 -64
- package/canvas-dist/assets/requirementDiagram-UZGBJVZJ-Dfoz7R_7.js +0 -64
- package/canvas-dist/assets/requirementDiagram-UZGBJVZJ-DsrX4TT-.js +0 -64
- package/canvas-dist/assets/requirementDiagram-UZGBJVZJ-dmouSXOl.js +0 -64
- package/canvas-dist/assets/sankeyDiagram-TZEHDZUN-BEy-A1Fu.js +0 -10
- package/canvas-dist/assets/sankeyDiagram-TZEHDZUN-BViMBiAQ.js +0 -10
- package/canvas-dist/assets/sankeyDiagram-TZEHDZUN-BqrM-qWN.js +0 -10
- package/canvas-dist/assets/sankeyDiagram-TZEHDZUN-DRkRC9qB.js +0 -10
- package/canvas-dist/assets/sankeyDiagram-TZEHDZUN-DbuzKCtn.js +0 -10
- package/canvas-dist/assets/sankeyDiagram-TZEHDZUN-_aHMKbpw.js +0 -10
- package/canvas-dist/assets/sequenceDiagram-WL72ISMW-B8FOaL2Q.js +0 -145
- package/canvas-dist/assets/sequenceDiagram-WL72ISMW-C02NQwOB.js +0 -145
- package/canvas-dist/assets/sequenceDiagram-WL72ISMW-CgyHivPj.js +0 -145
- package/canvas-dist/assets/sequenceDiagram-WL72ISMW-CzW1WaEm.js +0 -145
- package/canvas-dist/assets/sequenceDiagram-WL72ISMW-DJhHI1pe.js +0 -145
- package/canvas-dist/assets/sequenceDiagram-WL72ISMW-VFkpAeoG.js +0 -145
- package/canvas-dist/assets/stateDiagram-FKZM4ZOC-BSqFX4PJ.js +0 -1
- package/canvas-dist/assets/stateDiagram-FKZM4ZOC-BnXhhxkN.js +0 -1
- package/canvas-dist/assets/stateDiagram-FKZM4ZOC-ClARVrvt.js +0 -1
- package/canvas-dist/assets/stateDiagram-FKZM4ZOC-CuC6xesY.js +0 -1
- package/canvas-dist/assets/stateDiagram-FKZM4ZOC-DcAiGjph.js +0 -1
- package/canvas-dist/assets/stateDiagram-FKZM4ZOC-aBg0hjTp.js +0 -1
- package/canvas-dist/assets/stateDiagram-v2-4FDKWEC3-8fib9ftc.js +0 -1
- package/canvas-dist/assets/stateDiagram-v2-4FDKWEC3-B-DO0ZqO.js +0 -1
- package/canvas-dist/assets/stateDiagram-v2-4FDKWEC3-BksbsE4k.js +0 -1
- package/canvas-dist/assets/stateDiagram-v2-4FDKWEC3-C2DJCNPK.js +0 -1
- package/canvas-dist/assets/stateDiagram-v2-4FDKWEC3-CeA5jba6.js +0 -1
- package/canvas-dist/assets/stateDiagram-v2-4FDKWEC3-zsAyq0tK.js +0 -1
- package/canvas-dist/assets/timeline-definition-IT6M3QCI-BaHdYD2h.js +0 -61
- package/canvas-dist/assets/timeline-definition-IT6M3QCI-Bl2hg8IM.js +0 -61
- package/canvas-dist/assets/timeline-definition-IT6M3QCI-CrVwLiGm.js +0 -61
- package/canvas-dist/assets/timeline-definition-IT6M3QCI-DrXGRjnB.js +0 -61
- package/canvas-dist/assets/timeline-definition-IT6M3QCI-cYAwshf6.js +0 -61
- package/canvas-dist/assets/timeline-definition-IT6M3QCI-flyL0y-3.js +0 -61
- package/canvas-dist/assets/treemap-GDKQZRPO-C4Hg8kJ_.js +0 -162
- package/canvas-dist/assets/treemap-GDKQZRPO-DVY2G9qY.js +0 -162
- package/canvas-dist/assets/treemap-GDKQZRPO-DpLWPA1z.js +0 -162
- package/canvas-dist/assets/treemap-GDKQZRPO-Ds86cUVw.js +0 -162
- package/canvas-dist/assets/treemap-GDKQZRPO-DwmoI6tH.js +0 -162
- package/canvas-dist/assets/treemap-GDKQZRPO-SsGFkgVd.js +0 -162
- package/canvas-dist/assets/xychartDiagram-PRI3JC2R-B9c1iLBf.js +0 -7
- package/canvas-dist/assets/xychartDiagram-PRI3JC2R-BpX6MPWa.js +0 -7
- package/canvas-dist/assets/xychartDiagram-PRI3JC2R-CEgW_j0p.js +0 -7
- package/canvas-dist/assets/xychartDiagram-PRI3JC2R-CSEFGEQX.js +0 -7
- package/canvas-dist/assets/xychartDiagram-PRI3JC2R-CnG4XoMc.js +0 -7
- package/canvas-dist/assets/xychartDiagram-PRI3JC2R-Dftj3Bt3.js +0 -7
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
# Risk Management — Identifying and Mitigating Project Risks
|
|
2
|
+
|
|
3
|
+
<!-- hint:slides topic="Risk management: identification techniques, probability-impact matrix, response strategies, and risk register" slides="5" -->
|
|
4
|
+
|
|
5
|
+
## What Is a Risk?
|
|
6
|
+
|
|
7
|
+
A **risk** is an uncertain event or condition that, if it occurs, has a positive or negative effect on project objectives. In practice, we usually focus on *threats* (negative risks).
|
|
8
|
+
|
|
9
|
+
**Risk = Uncertainty × Impact**
|
|
10
|
+
|
|
11
|
+
Something is a risk when:
|
|
12
|
+
1. **It might happen** (uncertainty)
|
|
13
|
+
2. **It would matter if it did** (impact)
|
|
14
|
+
|
|
15
|
+
"I'm 100% sure we'll miss the deadline" is not a risk—it's a problem. "There's a 30% chance the API vendor delays their release" is a risk.
|
|
16
|
+
|
|
17
|
+
## Risk Identification Techniques
|
|
18
|
+
|
|
19
|
+
### Brainstorming
|
|
20
|
+
|
|
21
|
+
Gather the team and ask: "What could go wrong?" Use prompts:
|
|
22
|
+
- Technical: integrations, performance, security
|
|
23
|
+
- People: key person dependency, skill gaps
|
|
24
|
+
- External: vendors, regulators, market
|
|
25
|
+
- Process: coordination, handoffs, tooling
|
|
26
|
+
|
|
27
|
+
### Pre-Mortem
|
|
28
|
+
|
|
29
|
+
Imagine the project has failed. Ask: "What went wrong?" People are better at imagining failure than success. List causes without judging—quantity first, prioritize later.
|
|
30
|
+
|
|
31
|
+
### SWOT Analysis
|
|
32
|
+
|
|
33
|
+
| Strengths | Weaknesses |
|
|
34
|
+
|-----------|------------|
|
|
35
|
+
| Opportunities | Threats |
|
|
36
|
+
|
|
37
|
+
Threats are risks. Weaknesses can become risks if they're exposed (e.g., "no automated tests" → risk of regression).
|
|
38
|
+
|
|
39
|
+
### Dependency Mapping
|
|
40
|
+
|
|
41
|
+
Draw a dependency graph: who/what do we depend on? Each dependency is a potential risk. External APIs, third-party services, other teams, legacy systems.
|
|
42
|
+
|
|
43
|
+
## Risk Matrix (Probability × Severity)
|
|
44
|
+
|
|
45
|
+
Plot risks on a 2×2 or 3×3 grid:
|
|
46
|
+
|
|
47
|
+
```mermaid
|
|
48
|
+
quadrantChart
|
|
49
|
+
title Risk Matrix
|
|
50
|
+
x-axis Low Impact --> High Impact
|
|
51
|
+
y-axis Low Probability --> High Probability
|
|
52
|
+
quadrant-1 Monitor
|
|
53
|
+
quadrant-2 Mitigate
|
|
54
|
+
quadrant-3 Accept
|
|
55
|
+
quadrant-4 Avoid or Transfer
|
|
56
|
+
"Vendor delay": [0.3, 0.8]
|
|
57
|
+
"Key person leaves": [0.7, 0.6]
|
|
58
|
+
"API rate limits": [0.5, 0.4]
|
|
59
|
+
"Scope creep": [0.8, 0.7]
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
| Probability | Low Impact | Medium Impact | High Impact |
|
|
63
|
+
|-------------|------------|---------------|-------------|
|
|
64
|
+
| **High** | Monitor | Mitigate | Avoid or Transfer |
|
|
65
|
+
| **Medium** | Accept | Mitigate | Mitigate |
|
|
66
|
+
| **Low** | Accept | Accept | Monitor |
|
|
67
|
+
|
|
68
|
+
**High probability + High impact** = Address first. Avoid, transfer, or aggressively mitigate.
|
|
69
|
+
|
|
70
|
+
**Low probability + Low impact** = Accept. Document and move on.
|
|
71
|
+
|
|
72
|
+
## Risk Response Strategies
|
|
73
|
+
|
|
74
|
+
| Strategy | Meaning | Example |
|
|
75
|
+
|----------|---------|---------|
|
|
76
|
+
| **Avoid** | Eliminate the risk by changing the approach | Don't use the risky vendor; build in-house |
|
|
77
|
+
| **Mitigate** | Reduce probability or impact | Add integration tests; have a fallback API |
|
|
78
|
+
| **Transfer** | Shift impact to someone else | Insurance, warranties, contracts, SLA penalties |
|
|
79
|
+
| **Accept** | Acknowledge and plan for it | Document; have a contingency budget or buffer |
|
|
80
|
+
|
|
81
|
+
You don't eliminate all risks. You choose which to address and which to accept.
|
|
82
|
+
|
|
83
|
+
## Risk Register
|
|
84
|
+
|
|
85
|
+
A **risk register** tracks identified risks, their assessment, and response.
|
|
86
|
+
|
|
87
|
+
| ID | Risk | Prob | Impact | Response | Owner |
|
|
88
|
+
|----|------|------|--------|----------|-------|
|
|
89
|
+
| R1 | API vendor delays v2 | M | H | Mitigate: parallel prototype | Dev Lead |
|
|
90
|
+
| R2 | Key architect on vacation during integration | L | H | Mitigate: knowledge share before | PM |
|
|
91
|
+
| R3 | Performance regression in legacy module | M | M | Mitigate: load tests in CI | QA |
|
|
92
|
+
|
|
93
|
+
Template:
|
|
94
|
+
|
|
95
|
+
```markdown
|
|
96
|
+
## Risk Register
|
|
97
|
+
|
|
98
|
+
| ID | Risk Description | Probability | Impact | Response | Owner |
|
|
99
|
+
|----|------------------|-------------|--------|----------|-------|
|
|
100
|
+
| R1 | [What could go wrong] | L/M/H | L/M/H | Avoid/Mitigate/Transfer/Accept | [Name] |
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Dependency Mapping
|
|
104
|
+
|
|
105
|
+
Map dependencies to surface risks:
|
|
106
|
+
|
|
107
|
+
```mermaid
|
|
108
|
+
flowchart LR
|
|
109
|
+
A[Our Service] --> B[Auth API]
|
|
110
|
+
A --> C[Payment Gateway]
|
|
111
|
+
A --> D[Legacy DB]
|
|
112
|
+
C --> E[Stripe]
|
|
113
|
+
D --> F[Ops Team]
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Each arrow is a dependency—and a potential failure point. Document: What happens if B, C, or D fails? Who owns it?
|
|
117
|
+
|
|
118
|
+
## Technical Risks
|
|
119
|
+
|
|
120
|
+
| Category | Example Risks |
|
|
121
|
+
|----------|---------------|
|
|
122
|
+
| **Integration** | API changes, rate limits, auth failures, version mismatch |
|
|
123
|
+
| **Performance** | Load, latency, scalability under peak |
|
|
124
|
+
| **Security** | Vulnerabilities, credential exposure, compliance |
|
|
125
|
+
| **Legacy** | Unknown behavior, no tests, single point of failure |
|
|
126
|
+
| **Data** | Migration failures, corruption, GDPR/retention |
|
|
127
|
+
|
|
128
|
+
For each, ask: What's the probability? What's the impact? What's our response?
|
|
129
|
+
|
|
130
|
+
## Communicating Risks Without Being the "Doom Person"
|
|
131
|
+
|
|
132
|
+
1. **Lead with context** — "Here are the risks we're tracking and how we're addressing them."
|
|
133
|
+
2. **Pair risks with responses** — Don't just list problems; show the plan.
|
|
134
|
+
3. **Use RAG status** — Red/Amber/Green. Amber = "we're watching it."
|
|
135
|
+
4. **Avoid surprise** — Surface risks early. "I've been tracking this; here's the update."
|
|
136
|
+
5. **Frame as ownership** — "We're on it" vs "Something bad might happen."
|
|
137
|
+
|
|
138
|
+
The goal is *transparency*, not alarm. Stakeholders trust you when you show you're managing risk, not ignoring it.
|
|
139
|
+
|
|
140
|
+
## Monitoring and Updating Risks
|
|
141
|
+
|
|
142
|
+
Risks change. Review the register:
|
|
143
|
+
|
|
144
|
+
- **Weekly** — In team sync; any new risks? Any change in probability/impact?
|
|
145
|
+
- **At milestones** — Major phase gates; re-assess top risks.
|
|
146
|
+
- **When triggers fire** — "If X happens, we re-evaluate." Define triggers.
|
|
147
|
+
|
|
148
|
+
Close risks when they're no longer relevant (avoided, passed, or occurred and handled).
|
|
149
|
+
|
|
150
|
+
## Risk Management Flow
|
|
151
|
+
|
|
152
|
+
```mermaid
|
|
153
|
+
flowchart TD
|
|
154
|
+
A[Identify] --> B[Assess]
|
|
155
|
+
B --> C[Prioritize]
|
|
156
|
+
C --> D[Plan Response]
|
|
157
|
+
D --> E[Implement]
|
|
158
|
+
E --> F[Monitor]
|
|
159
|
+
F -.->|Update| A
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
**Identify** → **Assess** (prob × impact) → **Prioritize** (matrix) → **Plan response** (avoid/mitigate/transfer/accept) → **Implement** → **Monitor** (and loop).
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# Risk Management — Exercises
|
|
2
|
+
|
|
3
|
+
## Exercise 1: Pre-Mortem for a Release
|
|
4
|
+
|
|
5
|
+
**Task:** Your team is shipping a "payments v2" release in 6 weeks. Run a pre-mortem: list 5 reasons the release failed. Prioritize the top 2 and for each, suggest one mitigation.
|
|
6
|
+
|
|
7
|
+
**Validation:**
|
|
8
|
+
- [ ] 5 failure modes listed
|
|
9
|
+
- [ ] Top 2 selected and justified
|
|
10
|
+
- [ ] Each has at least one mitigation idea
|
|
11
|
+
- [ ] Mitigations are concrete (not "try harder")
|
|
12
|
+
|
|
13
|
+
**Hints:**
|
|
14
|
+
1. Think: integration, people, scope, vendors, testing
|
|
15
|
+
2. "We underestimated" is common—dig into *what* was underestimated
|
|
16
|
+
3. Mitigation examples: "Spike on Stripe API in week 1," "Document rollback runbook"
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Exercise 2: Risk Matrix and Prioritization
|
|
21
|
+
|
|
22
|
+
**Task:** Plot these risks on a 3×3 matrix (Prob × Impact): (A) Vendor delays API by 2 weeks—M prob, H impact. (B) Dev leaves mid-project—L prob, H impact. (C) Minor UI bugs in edge cases—H prob, L impact. (D) Security audit finds critical flaw—L prob, H impact. Which do you address first? Why?
|
|
23
|
+
|
|
24
|
+
**Validation:**
|
|
25
|
+
- [ ] All 4 plotted correctly
|
|
26
|
+
- [ ] Priority order explained
|
|
27
|
+
- [ ] At least one "accept" (don't mitigate everything)
|
|
28
|
+
|
|
29
|
+
**Hints:**
|
|
30
|
+
1. A: Mitigate (parallel work, fallback)
|
|
31
|
+
2. B: Mitigate (knowledge share) or Transfer (retention)
|
|
32
|
+
3. C: Accept (low impact)
|
|
33
|
+
4. D: Mitigate (early audit) or Avoid (security review upfront)
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Exercise 3: Risk Register for a Sprint
|
|
38
|
+
|
|
39
|
+
**Task:** Create a risk register for a 2-week sprint. Include: (1) Integration risk with external API, (2) Key person on PTO, (3) Scope creep from stakeholder. For each: probability, impact, response strategy, and owner.
|
|
40
|
+
|
|
41
|
+
**Validation:**
|
|
42
|
+
- [ ] 3 risks in register format
|
|
43
|
+
- [ ] Prob/impact assigned
|
|
44
|
+
- [ ] Response is Avoid/Mitigate/Transfer/Accept
|
|
45
|
+
- [ ] Owner is named
|
|
46
|
+
|
|
47
|
+
**Hints:**
|
|
48
|
+
1. Integration: Mitigate—spike early, mock for tests
|
|
49
|
+
2. PTO: Mitigate—handoff, documentation
|
|
50
|
+
3. Scope creep: Avoid—sprint goal lock; or Mitigate—"we'll add to backlog"
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Exercise 4: Dependency Map
|
|
55
|
+
|
|
56
|
+
**Task:** Draw a dependency map for "User can reset password via email." Include: your app, email service, auth service, database, and any teams. For each dependency, note: failure mode and owner.
|
|
57
|
+
|
|
58
|
+
**Validation:**
|
|
59
|
+
- [ ] At least 4 dependencies
|
|
60
|
+
- [ ] Failure mode per dependency
|
|
61
|
+
- [ ] Owner identified
|
|
62
|
+
- [ ] At least one external dependency (email, auth)
|
|
63
|
+
|
|
64
|
+
**Hints:**
|
|
65
|
+
1. Email: SendGrid/AWS SES—delays, rate limits, deliverability
|
|
66
|
+
2. Auth: Your service or third-party—token validation
|
|
67
|
+
3. DB: User records—availability, migration
|
|
68
|
+
4. Owner: Who fixes it if it breaks?
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Exercise 5: Risk Communication Draft
|
|
73
|
+
|
|
74
|
+
**Task:** Your highest risk is "Payment gateway may not support recurring billing by our launch date." Write a 4-sentence status for an executive. Include: the risk, current status, what you're doing, and when you'll know more.
|
|
75
|
+
|
|
76
|
+
**Validation:**
|
|
77
|
+
- [ ] No alarmist language
|
|
78
|
+
- [ ] Risk + response included
|
|
79
|
+
- [ ] Timeline or next check-in stated
|
|
80
|
+
- [ ] Tone is "we're managing it"
|
|
81
|
+
|
|
82
|
+
**Hints:**
|
|
83
|
+
1. Lead: "We're tracking a dependency on the payment gateway."
|
|
84
|
+
2. Status: "Confirmed support by [date] or we have a fallback."
|
|
85
|
+
3. Action: "Weekly sync with vendor; fallback design in progress."
|
|
86
|
+
4. Next: "Update at next steering."
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
slug: risk-management
|
|
2
|
+
title: "Risk Management — Identifying and Mitigating Project Risks"
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
description: "Identify, assess, and mitigate project risks — risk matrix, response strategies, and stakeholder communication."
|
|
5
|
+
category: project-management
|
|
6
|
+
tags: [risk-management, project-management, mitigation, planning, dependencies]
|
|
7
|
+
difficulty: intermediate
|
|
8
|
+
|
|
9
|
+
xp:
|
|
10
|
+
read: 15
|
|
11
|
+
walkthrough: 40
|
|
12
|
+
exercise: 25
|
|
13
|
+
quiz: 20
|
|
14
|
+
quiz-perfect-bonus: 10
|
|
15
|
+
|
|
16
|
+
time:
|
|
17
|
+
quick: 5
|
|
18
|
+
read: 20
|
|
19
|
+
guided: 50
|
|
20
|
+
|
|
21
|
+
prerequisites: [sprint-planning]
|
|
22
|
+
related: [stakeholder-communication, incident-response]
|
|
23
|
+
|
|
24
|
+
triggers:
|
|
25
|
+
- "How do I identify project risks?"
|
|
26
|
+
- "What is a risk matrix?"
|
|
27
|
+
- "How do I mitigate technical risks?"
|
|
28
|
+
- "How do I communicate risks to stakeholders?"
|
|
29
|
+
|
|
30
|
+
visuals:
|
|
31
|
+
diagrams: [diagram-mermaid, diagram-flow]
|
|
32
|
+
quiz-types: [quiz-matching, quiz-timed-choice]
|
|
33
|
+
slides: true
|
|
34
|
+
|
|
35
|
+
sources:
|
|
36
|
+
- url: "https://www.pmi.org/pmbok-guide-standards"
|
|
37
|
+
label: "PMI PMBOK"
|
|
38
|
+
type: docs
|
|
39
|
+
- url: "https://www.amazon.com/Waltzing-Bears-Managing-Risk-Software/dp/0932633609"
|
|
40
|
+
label: "Waltzing With Bears by DeMarco & Lister"
|
|
41
|
+
type: book
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# Risk Management Quick Reference
|
|
2
|
+
|
|
3
|
+
## Risk = Uncertainty × Impact
|
|
4
|
+
|
|
5
|
+
Something is a risk when it *might* happen and *would matter*.
|
|
6
|
+
|
|
7
|
+
## Identification Techniques
|
|
8
|
+
|
|
9
|
+
| Technique | Use When |
|
|
10
|
+
|-----------|----------|
|
|
11
|
+
| Brainstorming | Team kickoff, broad sweep |
|
|
12
|
+
| Pre-mortem | "Project failed—why?" |
|
|
13
|
+
| SWOT | Strategic context |
|
|
14
|
+
| Dependency mapping | Integration-heavy projects |
|
|
15
|
+
|
|
16
|
+
## Risk Matrix
|
|
17
|
+
|
|
18
|
+
| | Low Impact | Med Impact | High Impact |
|
|
19
|
+
|---|------------|------------|-------------|
|
|
20
|
+
| **High Prob** | Monitor | Mitigate | Avoid/Transfer |
|
|
21
|
+
| **Med Prob** | Accept | Mitigate | Mitigate |
|
|
22
|
+
| **Low Prob** | Accept | Accept | Monitor |
|
|
23
|
+
|
|
24
|
+
## Response Strategies
|
|
25
|
+
|
|
26
|
+
| Strategy | Meaning |
|
|
27
|
+
|----------|---------|
|
|
28
|
+
| **Avoid** | Change approach; eliminate risk |
|
|
29
|
+
| **Mitigate** | Reduce prob or impact |
|
|
30
|
+
| **Transfer** | Shift impact (insurance, contract) |
|
|
31
|
+
| **Accept** | Document; have buffer/plan B |
|
|
32
|
+
|
|
33
|
+
## Risk Register Template
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
| ID | Risk | Prob | Impact | Response | Owner |
|
|
37
|
+
|----|------|------|--------|----------|-------|
|
|
38
|
+
| R1 | [Description] | L/M/H | L/M/H | Strategy | [Name] |
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Technical Risk Categories
|
|
42
|
+
|
|
43
|
+
- **Integration** — APIs, vendors, versions
|
|
44
|
+
- **Performance** — Load, scale, latency
|
|
45
|
+
- **Security** — Vulnerabilities, compliance
|
|
46
|
+
- **Legacy** — Unknowns, no tests
|
|
47
|
+
- **Data** — Migration, corruption
|
|
48
|
+
|
|
49
|
+
## Communicating Risks
|
|
50
|
+
|
|
51
|
+
1. Lead with context
|
|
52
|
+
2. Pair risk + response
|
|
53
|
+
3. Use RAG (Red/Amber/Green)
|
|
54
|
+
4. No surprises—surface early
|
|
55
|
+
5. "We're on it" tone
|
|
56
|
+
|
|
57
|
+
## Dependency Map
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
[Our System] → [Dependency 1]
|
|
61
|
+
→ [Dependency 2]
|
|
62
|
+
→ [Dependency 3]
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
For each: What if it fails? Who owns it?
|
|
66
|
+
|
|
67
|
+
## Mermaid: Risk Flow
|
|
68
|
+
|
|
69
|
+
```mermaid
|
|
70
|
+
flowchart LR
|
|
71
|
+
A[Identify] --> B[Assess]
|
|
72
|
+
B --> C[Prioritize]
|
|
73
|
+
C --> D[Plan]
|
|
74
|
+
D --> E[Implement]
|
|
75
|
+
E --> F[Monitor]
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Review Cadence
|
|
79
|
+
|
|
80
|
+
- **Weekly** — Team sync; any changes?
|
|
81
|
+
- **Milestones** — Re-assess top risks
|
|
82
|
+
- **Triggers** — "If X, re-evaluate"
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Risk Management — Quiz
|
|
2
|
+
|
|
3
|
+
## Question 1
|
|
4
|
+
|
|
5
|
+
A risk is best defined as:
|
|
6
|
+
|
|
7
|
+
A) Something that has already gone wrong
|
|
8
|
+
B) An uncertain event that, if it occurs, affects project objectives
|
|
9
|
+
C) A guarantee of project failure
|
|
10
|
+
D) A problem that needs immediate fixing
|
|
11
|
+
|
|
12
|
+
<!-- ANSWER: B -->
|
|
13
|
+
<!-- EXPLANATION: A risk is characterized by uncertainty—it might or might not occur. If it occurs, it has an effect (positive or negative) on project objectives. Problems are current; risks are potential future events. -->
|
|
14
|
+
|
|
15
|
+
## Question 2
|
|
16
|
+
|
|
17
|
+
In a risk matrix, a "high probability, high impact" risk should typically be:
|
|
18
|
+
|
|
19
|
+
A) Accepted
|
|
20
|
+
B) Monitored only
|
|
21
|
+
C) Avoided, transferred, or aggressively mitigated
|
|
22
|
+
D) Documented for later
|
|
23
|
+
|
|
24
|
+
<!-- ANSWER: C -->
|
|
25
|
+
<!-- EXPLANATION: High-probability, high-impact risks pose the greatest threat. The priority is to avoid (change approach), transfer (insurance, contract), or mitigate (reduce prob/impact). Accept is for lower-priority risks. -->
|
|
26
|
+
|
|
27
|
+
## Question 3
|
|
28
|
+
|
|
29
|
+
The "Transfer" risk response strategy means:
|
|
30
|
+
|
|
31
|
+
A) Moving the risk to another project
|
|
32
|
+
B) Shifting the impact to another party (e.g., insurance, contract)
|
|
33
|
+
C) Delegating the risk to a junior team member
|
|
34
|
+
D) Ignoring the risk
|
|
35
|
+
|
|
36
|
+
<!-- ANSWER: B -->
|
|
37
|
+
<!-- EXPLANATION: Transfer shifts the impact to another party. Examples: insurance, warranties, penalty clauses in contracts, SLAs. The risk may still occur, but the financial or operational impact is borne by someone else. -->
|
|
38
|
+
|
|
39
|
+
## Question 4
|
|
40
|
+
|
|
41
|
+
A pre-mortem is useful because:
|
|
42
|
+
|
|
43
|
+
A) It predicts the future
|
|
44
|
+
B) It helps people imagine failure and surface risks they might not otherwise consider
|
|
45
|
+
C) It eliminates all risks
|
|
46
|
+
D) It replaces the need for a risk register
|
|
47
|
+
|
|
48
|
+
<!-- ANSWER: B -->
|
|
49
|
+
<!-- EXPLANATION: In a pre-mortem, you imagine the project has already failed and ask "what went wrong?" This counterfactual framing helps people think more honestly about threats. It surfaces assumptions and blind spots. -->
|
|
50
|
+
|
|
51
|
+
## Question 5
|
|
52
|
+
|
|
53
|
+
When communicating risks to stakeholders, you should:
|
|
54
|
+
|
|
55
|
+
A) Only share risks when they become problems
|
|
56
|
+
B) Lead with context, pair risks with responses, and avoid alarmism
|
|
57
|
+
C) Use dramatic language to get attention
|
|
58
|
+
D) Hide technical risks from non-technical stakeholders
|
|
59
|
+
|
|
60
|
+
<!-- ANSWER: B -->
|
|
61
|
+
<!-- EXPLANATION: Effective risk communication builds trust. Lead with context ("here's what we're tracking"), pair each risk with your response plan, and maintain a calm tone. Avoid surprises; surface early. Frame as "we're on it." -->
|
|
62
|
+
|
|
63
|
+
## Question 6
|
|
64
|
+
|
|
65
|
+
Dependency mapping helps identify risks because:
|
|
66
|
+
|
|
67
|
+
A) It shows the project timeline
|
|
68
|
+
B) Each dependency is a potential failure point
|
|
69
|
+
C) It replaces the risk register
|
|
70
|
+
D) It guarantees no integration issues
|
|
71
|
+
|
|
72
|
+
<!-- ANSWER: B -->
|
|
73
|
+
<!-- EXPLANATION: Dependencies—external APIs, vendors, other teams, legacy systems—are points of reliance. If a dependency fails, your project is affected. Mapping dependencies surfaces "what if X fails?" risks systematically. -->
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Risk Management — Resources
|
|
2
|
+
|
|
3
|
+
## Official and Standards
|
|
4
|
+
|
|
5
|
+
- [PMI PMBOK Guide](https://www.pmi.org/pmbok-guide-standards) — Project Management Institute. Industry standard for project management; includes risk management knowledge area.
|
|
6
|
+
- [PMBOK Risk Management](https://www.pmi.org/learning/library/risk-management-overview-7082) — Overview of risk processes from PMI.
|
|
7
|
+
- [ISO 31000 Risk Management](https://www.iso.org/iso-31000-risk-management.html) — International standard for risk management principles and guidelines.
|
|
8
|
+
|
|
9
|
+
## Books
|
|
10
|
+
|
|
11
|
+
- **Waltzing With Bears: Managing Risk on Software Projects** by Tom DeMarco and Timothy Lister — Classic on software risk. Emphasizes quantifying and facing risks instead of pretending they don't exist.
|
|
12
|
+
- **The Checklist Manifesto** by Atul Gawande — How simple checklists reduce risk in complex work (surgery, aviation, projects).
|
|
13
|
+
- **Project Risk Management** by Chris Chapman and Stephen Ward — Academic but practical; risk analysis and response.
|
|
14
|
+
|
|
15
|
+
## Articles and Readings
|
|
16
|
+
|
|
17
|
+
- [Pre-Mortems: Being Smart at the Start](https://hbr.org/2007/09/performing-a-project-premortem) — Gary Klein, HBR. Origin of the pre-mortem technique.
|
|
18
|
+
- [Risk Management in Agile](https://www.scrum.org/resources/blog/risk-management-agile-context) — Scrum.org. How risk fits in iterative delivery.
|
|
19
|
+
- [Dependency Mapping for Risk](https://www.atlassian.com/agile/project-management/dependencies) — Atlassian. Mapping and managing dependencies.
|
|
20
|
+
- [Risk Register Templates](https://www.smartsheet.com/content/risk-register-templates) — Smartsheet. Free risk register templates and examples.
|
|
21
|
+
- [Communicating Risk to Stakeholders](https://www.pmi.org/learning/library/communicating-risk-stakeholders-7098) — PMI. Best practices for risk reporting.
|
|
22
|
+
|
|
23
|
+
## Tools
|
|
24
|
+
|
|
25
|
+
- [Jira](https://www.atlassian.com/software/jira) — Risk tracking via custom fields, labels, or linked issues.
|
|
26
|
+
- [Linear](https://linear.app/) — Risks as issues; dependency linking.
|
|
27
|
+
- [Notion](https://www.notion.so/) — Risk registers, dependency maps, databases.
|
|
28
|
+
- [Miro](https://miro.com/) — Risk matrix and dependency mapping templates.
|
|
29
|
+
- [Lucidchart](https://www.lucidchart.com/) — Dependency and flow diagrams.
|
|
30
|
+
- [Risk Register Pro](https://www.riskregisterpro.com/) — Dedicated risk register tool (paid).
|
|
31
|
+
|
|
32
|
+
## Videos and Podcasts
|
|
33
|
+
|
|
34
|
+
- [Risk Management Fundamentals](https://www.youtube.com/results?search_query=project+risk+management+fundamentals) — Search for PMI or Coursera intros.
|
|
35
|
+
- [Agile Uprising — Risk in Agile](https://agileuprising.com/) — Podcast episodes on risk and uncertainty in agile contexts.
|
|
36
|
+
|
|
37
|
+
## Templates
|
|
38
|
+
|
|
39
|
+
- [PMI Risk Register Template](https://www.pmi.org/learning/library/risk-register-template-6867) — Free downloadable risk register.
|
|
40
|
+
- [Pre-Mortem Worksheet](https://hbr.org/2007/09/performing-a-project-premortem) — Gary Klein's pre-mortem format (from HBR article above).
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Risk Management Walkthrough — Learn by Doing
|
|
2
|
+
|
|
3
|
+
## Before We Begin
|
|
4
|
+
|
|
5
|
+
**Diagnostic:** What's the difference between a *risk* and an *issue*? When something has already gone wrong, is it still a risk—or something else? How would you treat each differently?
|
|
6
|
+
|
|
7
|
+
**Checkpoint:** You can explain that a risk is *potential* (it might happen); an issue is *actual* (it has happened). Your response to each is different.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Step 1: Run a Pre-Mortem
|
|
12
|
+
|
|
13
|
+
**Task:** Pick a project (real or hypothetical). Imagine it has failed. Write 5–7 plausible reasons it failed. Don't filter—just list. Then pick the top 2 that feel most likely.
|
|
14
|
+
|
|
15
|
+
**Question:** Why does imagining failure surface risks more effectively than asking "what could go wrong?" What assumptions did you uncover?
|
|
16
|
+
|
|
17
|
+
**Checkpoint:** At least 5 failure modes listed; top 2 selected with brief rationale.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Step 2: Build a Risk Matrix
|
|
22
|
+
|
|
23
|
+
**Task:** Take your top 2 risks and 2 more (e.g., "key person unavailable," "third-party API delay"). For each, assign probability (L/M/H) and impact (L/M/H). Plot them on a 3×3 risk matrix. Which one would you address first?
|
|
24
|
+
|
|
25
|
+
**Question:** What makes "high probability + high impact" different from "low probability + high impact"? How might stakeholders disagree with your ratings?
|
|
26
|
+
|
|
27
|
+
**Checkpoint:** All 4 risks are plotted; priority order is justified.
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Step 3: Choose Response Strategies
|
|
32
|
+
|
|
33
|
+
**Task:** For each of your 4 risks, assign a response: Avoid, Mitigate, Transfer, or Accept. For at least 2, write one concrete action (e.g., "Mitigate: run load tests in CI before each release").
|
|
34
|
+
|
|
35
|
+
**Question:** When is "Accept" the right choice? When would you avoid vs mitigate?
|
|
36
|
+
|
|
37
|
+
**Checkpoint:** Each risk has a strategy; at least 2 have specific actions.
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Step 4: Create a Risk Register
|
|
42
|
+
|
|
43
|
+
**Task:** Turn your 4 risks into a risk register. Include: ID, description, probability, impact, response, and owner. Add one more risk (e.g., technical: "integration test gaps") and fill it in.
|
|
44
|
+
|
|
45
|
+
**Question:** Who should "own" a risk? What does ownership mean—tracking, reporting, or executing the response?
|
|
46
|
+
|
|
47
|
+
**Checkpoint:** Register has 5 risks; format is consistent; owners assigned.
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Step 5: Map Dependencies
|
|
52
|
+
|
|
53
|
+
**Task:** Draw a simple dependency map for your project: your system in the center, with 4–5 things it depends on (people, systems, vendors). For each dependency, note: What happens if it fails? Who owns it?
|
|
54
|
+
|
|
55
|
+
**Question:** Which dependency would hurt most if it failed? Is that reflected in your risk register?
|
|
56
|
+
|
|
57
|
+
**Checkpoint:** Map is drawn; each dependency has a failure implication.
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## Step 6: Draft Risk Communication
|
|
62
|
+
|
|
63
|
+
**Task:** Pick your highest-priority risk. Write a 3–4 sentence status update for a stakeholder. Lead with context, include the risk and your response, and avoid alarmism.
|
|
64
|
+
|
|
65
|
+
**Question:** What would make you sound like the "doom person"? What would make you sound like you're on top of it?
|
|
66
|
+
|
|
67
|
+
**Checkpoint:** Update is calm, includes response, and is stakeholder-appropriate.
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# Running Effective Standups — Beyond Status Reports
|
|
2
|
+
|
|
3
|
+
<!-- hint:slides topic="Effective standups: purpose (coordination vs status), format options, timeboxing, async alternatives, and anti-patterns" slides="5" -->
|
|
4
|
+
|
|
5
|
+
## The Purpose of Standups
|
|
6
|
+
|
|
7
|
+
A daily standup (or daily scrum) is **not a status report to your manager**. Its purpose is **coordination**: help the team align on the day, surface blockers, and decide who needs to talk to whom afterward. When standups become status reports, people disengage and the meeting loses value.
|
|
8
|
+
|
|
9
|
+
**Scrum defines three questions** (what did I do, what will I do, any impediments?), but many teams find these lead to monologues. The key is to design the standup so it **enables coordination**, not reporting.
|
|
10
|
+
|
|
11
|
+
## The Three Questions — and Why They Often Fail
|
|
12
|
+
|
|
13
|
+
The classic format:
|
|
14
|
+
|
|
15
|
+
1. What did I do yesterday?
|
|
16
|
+
2. What will I do today?
|
|
17
|
+
3. Any blockers?
|
|
18
|
+
|
|
19
|
+
**Why it fails:** People recite lists. No one listens. Blockers get buried at the end. Managers use it to "check in," turning it into a status meeting. The antidote: refocus on **blockers and coordination**—what needs to happen *next*, and who needs to talk to whom.
|
|
20
|
+
|
|
21
|
+
## Alternative Formats
|
|
22
|
+
|
|
23
|
+
### Walk the Board
|
|
24
|
+
|
|
25
|
+
Go column by column on your Kanban/Scrum board instead of person by person. For each in-progress or "ready" item: Who's working on it? Blocked? Needs help? This keeps focus on **work**, not people.
|
|
26
|
+
|
|
27
|
+
**Example:** "The API integration story—Sarah, still in progress? Anyone blocked on it?"
|
|
28
|
+
|
|
29
|
+
### Focus on Blockers
|
|
30
|
+
|
|
31
|
+
Start with: "Anyone blocked or need help today?" Resolve those first. Then optionally do a quick round of "what's your focus today?" This flips the script: coordination first, status second.
|
|
32
|
+
|
|
33
|
+
### Round-Robin vs Topic-Based
|
|
34
|
+
|
|
35
|
+
- **Round-robin:** Each person speaks in turn. Predictable, but can feel like a checklist.
|
|
36
|
+
- **Topic-based:** Organize by work item or theme. "Let's go through the payment migration—who's involved, what's the status?" Better for cross-cutting work.
|
|
37
|
+
|
|
38
|
+
## Timeboxing — 15 Minutes Max
|
|
39
|
+
|
|
40
|
+
Standups should be **short**. 15 minutes is the upper bound; many effective teams do 10 or less. If you're running over:
|
|
41
|
+
|
|
42
|
+
- Take detailed discussions **offline**—"Let's sync on that after standup."
|
|
43
|
+
- Use a timer. When someone drones, gently: "Can we pick this up in a breakout?"
|
|
44
|
+
- Consider reducing frequency (e.g., three times a week instead of daily).
|
|
45
|
+
|
|
46
|
+
## Async Standups
|
|
47
|
+
|
|
48
|
+
**When they work:** Distributed teams, flexible schedules, or teams that don't need real-time coordination.
|
|
49
|
+
|
|
50
|
+
**Tools:** Slack (threaded updates), Loom (short video updates), Geekbot, Standuply, or a shared doc (Notion, Google Doc) where everyone posts by a deadline.
|
|
51
|
+
|
|
52
|
+
**Template example:**
|
|
53
|
+
```
|
|
54
|
+
Yesterday: [1–2 bullets]
|
|
55
|
+
Today: [1–2 bullets]
|
|
56
|
+
Blockers: [none / describe]
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
**Trade-offs:** Async saves meeting time but loses real-time discussion. Best when most work is independent; less ideal when lots of coordination is needed.
|
|
60
|
+
|
|
61
|
+
## Sync vs Async Standup Flow
|
|
62
|
+
|
|
63
|
+
```mermaid
|
|
64
|
+
flowchart TD
|
|
65
|
+
subgraph Sync["Sync Standup"]
|
|
66
|
+
A[Team gathers same time] --> B[Quick round or walk the board]
|
|
67
|
+
B --> C[Blockers surfaced]
|
|
68
|
+
C --> D[Breakouts scheduled]
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
subgraph Async["Async Standup"]
|
|
72
|
+
E[Each person posts by deadline] --> F[Team reads updates]
|
|
73
|
+
F --> G[Blockers flagged in thread]
|
|
74
|
+
G --> H[Follow-up DMs or ad-hoc sync]
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
Sync -->|Real-time coordination| D
|
|
78
|
+
Async -->|Flexibility, no meeting| H
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Common Anti-Patterns
|
|
82
|
+
|
|
83
|
+
| Anti-Pattern | Better Practice |
|
|
84
|
+
|--------------|-----------------|
|
|
85
|
+
| Status report to manager | Facilitate for the team; manager observes or doesn't attend |
|
|
86
|
+
| Problem-solving in standup | "Let's grab 2–3 people and discuss after" |
|
|
87
|
+
| Running long | Timebox 15 min; take discussions offline |
|
|
88
|
+
| Low energy / no one listening | Change format (walk the board, focus on blockers); make it interactive |
|
|
89
|
+
| Same person always talks longest | Use a timer or pass-the-ball; "One thing you're focused on today" |
|
|
90
|
+
|
|
91
|
+
## Tips for Remote Standups
|
|
92
|
+
|
|
93
|
+
1. **Cameras on** — Improves engagement and signals presence.
|
|
94
|
+
2. **Stable video and audio** — Invest in good mics; lag kills flow.
|
|
95
|
+
3. **Screen share the board** — So everyone sees the same view when walking the board.
|
|
96
|
+
4. **Use chat for follow-ups** — "We'll sync in a thread / DM after."
|
|
97
|
+
5. **Rotate facilitators** — Spread ownership; avoid one person dominating.
|
|
98
|
+
|
|
99
|
+
## When to Skip Standup Altogether
|
|
100
|
+
|
|
101
|
+
Consider skipping or reducing frequency when:
|
|
102
|
+
|
|
103
|
+
- Work is highly independent and low-coordination
|
|
104
|
+
- Team is very small (2–3 people) and already in constant contact
|
|
105
|
+
- You've tried multiple formats and no one finds value
|
|
106
|
+
- You're between sprints or in a light work period
|
|
107
|
+
|
|
108
|
+
Standup is a **tool**, not a religion. If it doesn't serve coordination, change it or drop it.
|
|
109
|
+
|
|
110
|
+
## Quick Format Comparison
|
|
111
|
+
|
|
112
|
+
| Format | Best For | Risk |
|
|
113
|
+
|--------|----------|------|
|
|
114
|
+
| Three questions | Traditional Scrum teams | Becomes status report |
|
|
115
|
+
| Walk the board | Kanban, visual teams | Requires up-to-date board |
|
|
116
|
+
| Blockers first | Teams with many dependencies | Might skip "what I'm doing" context |
|
|
117
|
+
| Async | Distributed, flex schedules | No real-time discussion |
|
|
118
|
+
|
|
119
|
+
Choose based on your team's coordination needs and culture.
|