@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,92 @@
|
|
|
1
|
+
# Git Walkthrough — Learn by Doing
|
|
2
|
+
|
|
3
|
+
## Step 1: Your First Repository
|
|
4
|
+
|
|
5
|
+
Let's start by creating a Git repository from scratch.
|
|
6
|
+
|
|
7
|
+
<!-- hint:terminal -->
|
|
8
|
+
|
|
9
|
+
**Task:** Create a new directory and initialize it as a Git repository.
|
|
10
|
+
|
|
11
|
+
**Question:** Before we run any commands — what do you think `git init` actually creates? What would you expect to find in the directory afterward?
|
|
12
|
+
|
|
13
|
+
**Checkpoint:** The user should mention the `.git` hidden directory and understand it stores Git's internal data.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Step 2: Understanding the Three Areas
|
|
18
|
+
|
|
19
|
+
Now let's explore how Git tracks changes.
|
|
20
|
+
|
|
21
|
+
<!-- hint:diagram mermaid-type="flowchart" topic="Git three areas: working directory, staging area, repository" -->
|
|
22
|
+
|
|
23
|
+
**Task:** Create a file called `hello.txt` with some content. Then run `git status`.
|
|
24
|
+
|
|
25
|
+
**Question:** Git says your file is "untracked." What do you think that means? Where does the file live in Git's three-area model (working directory, staging area, repository)?
|
|
26
|
+
|
|
27
|
+
**Checkpoint:** The user should explain that untracked means Git sees the file but isn't tracking changes to it yet. It exists only in the working directory.
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Step 3: Staging and Committing
|
|
32
|
+
|
|
33
|
+
<!-- hint:terminal -->
|
|
34
|
+
|
|
35
|
+
**Task:** Stage `hello.txt` with `git add`, then commit it.
|
|
36
|
+
|
|
37
|
+
**Question:** Why do you think Git has a separate staging area instead of committing directly from the working directory? What advantage does this give you?
|
|
38
|
+
|
|
39
|
+
**Checkpoint:** The user should understand that staging lets you choose exactly which changes to include in a commit — you can have 10 modified files but only commit 3.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Step 4: Making Changes
|
|
44
|
+
|
|
45
|
+
<!-- hint:terminal -->
|
|
46
|
+
|
|
47
|
+
**Task:** Edit `hello.txt` to add a second line. Run `git diff` to see the changes.
|
|
48
|
+
|
|
49
|
+
**Question:** What does the `+` and `-` notation in the diff output mean? Can you read the diff and predict exactly what changed?
|
|
50
|
+
|
|
51
|
+
**Checkpoint:** The user can read diff output and explain additions (`+`) and removals (`-`).
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Step 5: Branching
|
|
56
|
+
|
|
57
|
+
<!-- hint:card type="concept" title="Branches are lightweight pointers to commits — no files copied" -->
|
|
58
|
+
|
|
59
|
+
**Embed:** https://learngitbranching.js.org/
|
|
60
|
+
|
|
61
|
+
**Task:** Create a new branch called `feature` and switch to it. Make a change and commit it.
|
|
62
|
+
|
|
63
|
+
**Question:** When you created the branch, did Git copy all your files? What actually happened under the hood?
|
|
64
|
+
|
|
65
|
+
**Checkpoint:** The user should understand that a branch is just a pointer to a commit — no files are copied. It's extremely lightweight.
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Step 6: Merging
|
|
70
|
+
|
|
71
|
+
<!-- hint:diagram mermaid-type="flowchart" topic="Fast-forward vs three-way merge" -->
|
|
72
|
+
|
|
73
|
+
**Task:** Switch back to `main` and merge your `feature` branch.
|
|
74
|
+
|
|
75
|
+
**Question:** What kind of merge happened — fast-forward or three-way? How can you tell?
|
|
76
|
+
|
|
77
|
+
**Checkpoint:** The user should be able to identify the merge type from the output and explain why that type was used.
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## Step 7: Handling Conflicts
|
|
82
|
+
|
|
83
|
+
<!-- hint:celebrate -->
|
|
84
|
+
|
|
85
|
+
**Task:** Create a conflict scenario:
|
|
86
|
+
1. On `main`, edit line 1 of `hello.txt` and commit
|
|
87
|
+
2. Create a branch, edit the same line differently, and commit
|
|
88
|
+
3. Try to merge
|
|
89
|
+
|
|
90
|
+
**Question:** When you see the conflict markers (`<<<<<<<`, `=======`, `>>>>>>>`), what does each section represent? How do you decide which version to keep?
|
|
91
|
+
|
|
92
|
+
**Checkpoint:** The user can resolve a conflict manually, understanding that the top section is their current branch and the bottom is the incoming branch.
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
scenarios:
|
|
2
|
+
- id: git-init
|
|
3
|
+
title: "Initialize a Repo and Make Your First Commit"
|
|
4
|
+
difficulty: beginner
|
|
5
|
+
xp: 20
|
|
6
|
+
setup: []
|
|
7
|
+
files:
|
|
8
|
+
- name: README.md
|
|
9
|
+
content: "# My Project"
|
|
10
|
+
language: markdown
|
|
11
|
+
readonly: false
|
|
12
|
+
task: "Initialize a new Git repository here, add README.md to staging, and make your first commit with message \"Initial commit\"."
|
|
13
|
+
validations:
|
|
14
|
+
- label: ".git directory exists"
|
|
15
|
+
check: output-contains
|
|
16
|
+
pattern: "Initialized empty Git repository|\.git"
|
|
17
|
+
- label: "First commit made"
|
|
18
|
+
check: output-contains
|
|
19
|
+
pattern: "Initial commit|\[master.*\] Initial"
|
|
20
|
+
hints:
|
|
21
|
+
- "What command creates a new Git repository in the current directory?"
|
|
22
|
+
- "You'll need to stage files before committing. What does git add do?"
|
|
23
|
+
- "git init, then git add README.md, then git commit -m \"Initial commit\""
|
|
24
|
+
agent_prompts:
|
|
25
|
+
on_start: "Before we run any commands — what do you think happens when you initialize a Git repository? What gets created?"
|
|
26
|
+
on_complete: "You've made your first commit. What's the difference between the working directory, staging area, and repository? How does git add fit in?"
|
|
27
|
+
|
|
28
|
+
- id: branching
|
|
29
|
+
title: "Create and Switch Between Branches"
|
|
30
|
+
difficulty: beginner
|
|
31
|
+
xp: 25
|
|
32
|
+
setup:
|
|
33
|
+
- "git init && git branch -M main"
|
|
34
|
+
- "echo 'line 1' > notes.txt"
|
|
35
|
+
- "git add notes.txt && git commit -m 'First commit'"
|
|
36
|
+
- "echo 'line 2' >> notes.txt && git add notes.txt && git commit -m 'Second commit'"
|
|
37
|
+
files: []
|
|
38
|
+
task: "Create branch feature/notes, switch to it, add \"line 3\" to notes.txt, commit, then switch back to main. Use git branch to confirm both branches exist."
|
|
39
|
+
validations:
|
|
40
|
+
- label: "Feature branch created"
|
|
41
|
+
check: output-contains
|
|
42
|
+
pattern: "feature/notes|Switched to branch"
|
|
43
|
+
- label: "Commit on feature branch"
|
|
44
|
+
check: output-contains
|
|
45
|
+
pattern: "line 3|Third|feature"
|
|
46
|
+
hints:
|
|
47
|
+
- "Git has a shortcut to create and switch in one step. What might git checkout -b do?"
|
|
48
|
+
- "After making changes on the branch, commit them before switching back."
|
|
49
|
+
- "git checkout -b feature/notes, edit notes.txt, git add, git commit, then git checkout main"
|
|
50
|
+
agent_prompts:
|
|
51
|
+
on_start: "Why might you want multiple branches? What problem does branching solve when several people work on the same project?"
|
|
52
|
+
on_complete: "When you switched back to main, did notes.txt still have 'line 3'? Why or why not?"
|
|
53
|
+
|
|
54
|
+
- id: merge-conflict
|
|
55
|
+
title: "Resolve a Merge Conflict"
|
|
56
|
+
difficulty: intermediate
|
|
57
|
+
xp: 35
|
|
58
|
+
setup:
|
|
59
|
+
- "git init && git branch -M main"
|
|
60
|
+
- "echo 'Hello World' > greeting.txt"
|
|
61
|
+
- "git add greeting.txt && git commit -m 'Initial commit'"
|
|
62
|
+
- "git checkout -b feature-a"
|
|
63
|
+
- "echo 'Hello from branch A' > greeting.txt"
|
|
64
|
+
- "git add greeting.txt && git commit -m \"A's version\""
|
|
65
|
+
- "git checkout main"
|
|
66
|
+
- "git checkout -b feature-b"
|
|
67
|
+
- "echo 'Hello from branch B' > greeting.txt"
|
|
68
|
+
- "git add greeting.txt && git commit -m \"B's version\""
|
|
69
|
+
- "git checkout main"
|
|
70
|
+
- "git merge feature-a -m 'Merge A'"
|
|
71
|
+
files: []
|
|
72
|
+
task: "Merge feature-b into main. Resolve the conflict in greeting.txt by editing the file, removing conflict markers, staging, and completing the merge."
|
|
73
|
+
validations:
|
|
74
|
+
- label: "Merge attempted"
|
|
75
|
+
check: command-match
|
|
76
|
+
pattern: "git merge"
|
|
77
|
+
- label: "Conflict resolved"
|
|
78
|
+
check: output-contains
|
|
79
|
+
pattern: "Merge made|merge successful|Automatic merge"
|
|
80
|
+
- label: "Merge committed"
|
|
81
|
+
check: output-contains
|
|
82
|
+
pattern: "Merge branch|merge commit"
|
|
83
|
+
hints:
|
|
84
|
+
- "Run git merge feature-b. When you see CONFLICT, open greeting.txt and look for <<<<<<<, =======, >>>>>>>."
|
|
85
|
+
- "Edit the file to remove the markers and keep the content you want, then git add greeting.txt."
|
|
86
|
+
- "After staging the resolved file, run git commit (Git will suggest a default merge message)."
|
|
87
|
+
agent_prompts:
|
|
88
|
+
on_start: "When two branches change the same line in the same file, Git can't decide automatically. What would you look for in a conflicted file to understand what each branch changed?"
|
|
89
|
+
on_complete: "Could you have avoided this conflict? How might rebasing have changed the situation?"
|
|
90
|
+
|
|
91
|
+
- id: interactive-rebase
|
|
92
|
+
title: "Squash Commits with Interactive Rebase"
|
|
93
|
+
difficulty: intermediate
|
|
94
|
+
xp: 40
|
|
95
|
+
setup:
|
|
96
|
+
- "git init && git branch -M main"
|
|
97
|
+
- "echo 'fix 1' > changelog.txt && git add . && git commit -m 'wip'"
|
|
98
|
+
- "echo 'fix 2' >> changelog.txt && git add . && git commit -m 'typo fix'"
|
|
99
|
+
- "echo 'fix 3' >> changelog.txt && git add . && git commit -m 'oops forgot'"
|
|
100
|
+
- "echo 'fix 4' >> changelog.txt && git add . && git commit -m 'all done'"
|
|
101
|
+
files: []
|
|
102
|
+
task: "Use git rebase -i HEAD~4 to squash the 4 commits into 2. Change the second and fourth 'pick' to 'squash', save, and complete the rebase."
|
|
103
|
+
validations:
|
|
104
|
+
- label: "Rebase started"
|
|
105
|
+
check: command-match
|
|
106
|
+
pattern: "git rebase -i|git rebase --interactive"
|
|
107
|
+
- label: "Commit count reduced"
|
|
108
|
+
check: output-contains
|
|
109
|
+
pattern: "Successfully rebased|2 commits|2 files changed"
|
|
110
|
+
hints:
|
|
111
|
+
- "Interactive rebase lets you edit, squash, or reorder commits. Try git rebase -i HEAD~4."
|
|
112
|
+
- "In the todo list, 'pick' keeps a commit, 'squash' (or 's') combines it with the previous one."
|
|
113
|
+
- "Change lines 2 and 4 from 'pick' to 'squash', save and close. Git will then prompt for new commit messages."
|
|
114
|
+
agent_prompts:
|
|
115
|
+
on_start: "Why might you want to squash commits before pushing? What's the trade-off between a detailed history and a clean one?"
|
|
116
|
+
on_complete: "When would you avoid rebasing? Think about commits that others have already pulled."
|
|
117
|
+
|
|
118
|
+
- id: cherry-pick
|
|
119
|
+
title: "Cherry-Pick a Specific Commit Between Branches"
|
|
120
|
+
difficulty: advanced
|
|
121
|
+
xp: 40
|
|
122
|
+
setup:
|
|
123
|
+
- "git init && git branch -M main"
|
|
124
|
+
- "echo 'base' > config.txt && git add . && git commit -m 'base'"
|
|
125
|
+
- "git checkout -b feature"
|
|
126
|
+
- "echo 'A' >> config.txt && git add . && git commit -m 'Commit A'"
|
|
127
|
+
- "echo 'B' >> config.txt && git add . && git commit -m 'Commit B - the fix we need'"
|
|
128
|
+
- "echo 'C' >> config.txt && git add . && git commit -m 'Commit C'"
|
|
129
|
+
- "git checkout main"
|
|
130
|
+
files: []
|
|
131
|
+
task: "The feature branch has 3 commits (A, B, C). Cherry-pick only the middle one (Commit B) onto main. Use git log feature to find its hash."
|
|
132
|
+
validations:
|
|
133
|
+
- label: "Cherry-pick command used"
|
|
134
|
+
check: command-match
|
|
135
|
+
pattern: "git cherry-pick"
|
|
136
|
+
- label: "Correct commit applied"
|
|
137
|
+
check: output-contains
|
|
138
|
+
pattern: "Commit B|the fix we need|cherry-pick"
|
|
139
|
+
hints:
|
|
140
|
+
- "git log feature --oneline will show the commit hashes. The middle one is Commit B."
|
|
141
|
+
- "Cherry-pick applies a specific commit from another branch onto your current branch."
|
|
142
|
+
- "git cherry-pick <hash-of-B>. Use the full hash or the short 7-character prefix."
|
|
143
|
+
agent_prompts:
|
|
144
|
+
on_start: "Sometimes you want one commit from a branch but not the whole branch. What Git operation would you use? How is it different from merge?"
|
|
145
|
+
on_complete: "When might cherry-picking cause problems? Consider what happens if the picked commit depends on earlier commits from its branch."
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# Technical Hiring — Structured Interviews That Find Signal
|
|
2
|
+
|
|
3
|
+
<!-- hint:slides topic="Structured interview pipeline: scorecard, question types, rubrics, independent scoring, and bias mitigation" slides="6" -->
|
|
4
|
+
|
|
5
|
+
## Why Structured Interviews Matter
|
|
6
|
+
|
|
7
|
+
Unstructured interviews are **poor predictors** of job performance. They favor charisma, similarity bias, and the "gut feel" that often reflects our own biases. **Structured interviews**—same questions, same rubrics, independent scoring—improve reliability, fairness, and legal defensibility. The goal: **find signal, reduce noise.**
|
|
8
|
+
|
|
9
|
+
Sources: *Who* (Smart & Street), *Work Rules!* (Laszlo Bock, ex-Google). Both emphasize: define what you need, ask the same questions, score against a rubric.
|
|
10
|
+
|
|
11
|
+
## Designing a Scorecard
|
|
12
|
+
|
|
13
|
+
Before writing questions, define the **scorecard**: what competencies matter, and how you'll evaluate them.
|
|
14
|
+
|
|
15
|
+
**Must-have vs. nice-to-have:**
|
|
16
|
+
- **Must-have** — Non-negotiable. Missing one = no hire.
|
|
17
|
+
- **Nice-to-have** — Strengths that differentiate; can compensate elsewhere.
|
|
18
|
+
|
|
19
|
+
**Example scorecard for a mid-level engineer:**
|
|
20
|
+
|
|
21
|
+
| Competency | Must/Need | How We Assess |
|
|
22
|
+
|------------|-----------|---------------|
|
|
23
|
+
| Problem-solving | Must | Technical screen, system design |
|
|
24
|
+
| Communication | Must | Behavioral, technical (explain reasoning) |
|
|
25
|
+
| Collaboration | Must | Behavioral (STAR) |
|
|
26
|
+
| Domain experience | Nice | Resume, technical depth |
|
|
27
|
+
| Culture add | Nice | Behavioral, values alignment |
|
|
28
|
+
|
|
29
|
+
**Rule:** Scorecard first. Questions and rubrics flow from it.
|
|
30
|
+
|
|
31
|
+
## Interview Types
|
|
32
|
+
|
|
33
|
+
| Type | Purpose | Format |
|
|
34
|
+
|------|---------|--------|
|
|
35
|
+
| **Behavioral** | Past behavior predicts future | STAR format; same questions for all |
|
|
36
|
+
| **Technical** | Technical skill, problem-solving | Coding, debugging, or architecture; clear rubric |
|
|
37
|
+
| **System design** | Architecture, trade-offs, scale | Whiteboard or diagram; scenario-based |
|
|
38
|
+
| **Take-home** | Async signal; work sample | Bounded task; blind or semi-blind review |
|
|
39
|
+
|
|
40
|
+
**Balance the mix:** Don't over-index on any one. Behavioral + technical + one other is typical.
|
|
41
|
+
|
|
42
|
+
## Writing Good Questions
|
|
43
|
+
|
|
44
|
+
### Behavioral: STAR Format
|
|
45
|
+
|
|
46
|
+
- **S**ituation — Context
|
|
47
|
+
- **T**ask — Their responsibility
|
|
48
|
+
- **A**ction — What they did
|
|
49
|
+
- **R**esult — Outcome, what they learned
|
|
50
|
+
|
|
51
|
+
**Example:** "Tell me about a time you disagreed with a technical decision. What was the situation, what did you do, and what was the result?"
|
|
52
|
+
|
|
53
|
+
**Rubric:** Strong answer = specific situation, clear ownership, concrete action, reflective outcome. Weak = vague, someone else did it, no reflection.
|
|
54
|
+
|
|
55
|
+
### Technical: Clear Rubric
|
|
56
|
+
|
|
57
|
+
- **Question:** Bounded, unambiguous. "Given an array of integers, find two that sum to target."
|
|
58
|
+
- **Rubric:** What does strong/medium/weak look like? Edge cases? Optimization?
|
|
59
|
+
- **Follow-ups:** Pre-prepared so interviewers probe consistently.
|
|
60
|
+
|
|
61
|
+
**Example rubric:** Strong = correct solution, handles edge cases, discusses complexity. Medium = correct with hint. Weak = stuck, wrong approach, can't explain.
|
|
62
|
+
|
|
63
|
+
## Conducting the Interview
|
|
64
|
+
|
|
65
|
+
1. **Rapport (2–3 min)** — Brief intro, set expectations, put them at ease.
|
|
66
|
+
2. **Calibration** — If multiple interviewers, align on rubric before the day.
|
|
67
|
+
3. **Note-taking** — Take notes *during*; don't rely on memory. Quote key phrases.
|
|
68
|
+
4. **Time management** — Reserve 5–10 min for their questions.
|
|
69
|
+
5. **No leading** — Don't hint at answers; let them perform.
|
|
70
|
+
|
|
71
|
+
**Candidate experience:** Start and end on time. Explain what's next. Thank them.
|
|
72
|
+
|
|
73
|
+
## Evaluation: Independent Scoring and Debrief
|
|
74
|
+
|
|
75
|
+
1. **Independent scoring** — Each interviewer scores *before* the debrief. No groupthink.
|
|
76
|
+
2. **Debrief meeting** — Compare scores, discuss evidence, resolve discrepancies.
|
|
77
|
+
3. **Hire/no-hire** — Based on scorecard; must-haves must be met.
|
|
78
|
+
4. **Document** — Notes and scores for legal and calibration.
|
|
79
|
+
|
|
80
|
+
**Calibration:** Periodically review: Are we too lenient? Too harsh? Use data.
|
|
81
|
+
|
|
82
|
+
## Common Biases
|
|
83
|
+
|
|
84
|
+
| Bias | What It Is | Mitigation |
|
|
85
|
+
|------|------------|------------|
|
|
86
|
+
| **Halo effect** | One strength overshadows weaknesses | Score each competency separately |
|
|
87
|
+
| **Similarity bias** | Prefer people like us | Structured questions; diverse panel |
|
|
88
|
+
| **Anchoring** | First impression dominates | Independent scoring; evidence-based |
|
|
89
|
+
| **Recency** | Remember the end of the interview | Take notes throughout |
|
|
90
|
+
| **Confirmation** | Seek evidence that matches initial view | Rubric first; look for disconfirming evidence |
|
|
91
|
+
|
|
92
|
+
**Inclusive hiring:** Reduce unnecessary requirements (e.g., "CS degree"); focus on competency. Diverse interview panels. Bias training.
|
|
93
|
+
|
|
94
|
+
## Candidate Experience
|
|
95
|
+
|
|
96
|
+
- **Clear communication** — What to expect, how long, who they'll meet.
|
|
97
|
+
- **Respect their time** — Start on time; don't overrun.
|
|
98
|
+
- **Feedback** — If you reject, provide brief constructive feedback (where legally appropriate).
|
|
99
|
+
- **Speed** — Don't leave them hanging for weeks.
|
|
100
|
+
|
|
101
|
+
## Hiring Pipeline Flow
|
|
102
|
+
|
|
103
|
+
```mermaid
|
|
104
|
+
flowchart TD
|
|
105
|
+
A[Define scorecard] --> B[Screen resumes]
|
|
106
|
+
B --> C[Phone/technical screen]
|
|
107
|
+
C --> D[On-site: Behavioral]
|
|
108
|
+
C --> E[On-site: Technical]
|
|
109
|
+
C --> F[On-site: System design]
|
|
110
|
+
D --> G[Independent scoring]
|
|
111
|
+
E --> G
|
|
112
|
+
F --> G
|
|
113
|
+
G --> H[Debrief meeting]
|
|
114
|
+
H --> I{Hire/No-hire}
|
|
115
|
+
I -->|Hire| J[Offer]
|
|
116
|
+
I -->|No-hire| K[Reject + feedback]
|
|
117
|
+
|
|
118
|
+
style A fill:#3fb950
|
|
119
|
+
style G fill:#58a6ff
|
|
120
|
+
style H fill:#f85149
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## Key Takeaways
|
|
124
|
+
|
|
125
|
+
1. **Structured > unstructured** — Same questions, same rubric, independent scoring.
|
|
126
|
+
2. **Scorecard first** — Define competencies before writing questions.
|
|
127
|
+
3. **STAR for behavioral** — Situation, Task, Action, Result.
|
|
128
|
+
4. **Clear rubrics for technical** — What does strong/medium/weak look like?
|
|
129
|
+
5. **Mitigate bias** — Separate scoring, diverse panel, evidence-based.
|
|
130
|
+
6. **Candidate experience** — Clear, respectful, timely.
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# Technical Hiring — Exercises
|
|
2
|
+
|
|
3
|
+
## Exercise 1: Create an Interview Scorecard
|
|
4
|
+
|
|
5
|
+
**Task:** For a "Senior Backend Engineer" role, create a scorecard. Include: 4–5 competencies, must-have vs. nice-to-have, and how each will be assessed. Make it specific enough that two hiring managers would agree on what "strong" looks like.
|
|
6
|
+
|
|
7
|
+
**Validation:**
|
|
8
|
+
- [ ] 4–5 competencies
|
|
9
|
+
- [ ] Must vs. nice clearly marked
|
|
10
|
+
- [ ] Assessment method for each (behavioral, technical, system design)
|
|
11
|
+
- [ ] At least one competency has a concrete "strong" description
|
|
12
|
+
|
|
13
|
+
**Hints:**
|
|
14
|
+
1. Common competencies: technical depth, problem-solving, communication, collaboration, ownership
|
|
15
|
+
2. Must-have: can't ship without it. Nice: differentiates top candidates
|
|
16
|
+
3. "How assessed" prevents overlap (e.g., don't assess "communication" in 3 different interviews)
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Exercise 2: Write Behavioral Questions
|
|
21
|
+
|
|
22
|
+
**Task:** Write 3 behavioral questions using STAR format. Each should target a different competency (e.g., conflict, failure, collaboration). For one question, write a 3-level rubric (strong, medium, weak).
|
|
23
|
+
|
|
24
|
+
**Validation:**
|
|
25
|
+
- [ ] All 3 questions are open-ended and STAR-friendly
|
|
26
|
+
- [ ] Questions don't overlap
|
|
27
|
+
- [ ] Rubric has distinct levels with observable differences
|
|
28
|
+
- [ ] Rubric is usable by another interviewer
|
|
29
|
+
|
|
30
|
+
**Hints:**
|
|
31
|
+
1. "Tell me about a time when..." — forces specificity
|
|
32
|
+
2. Strong: specific situation, clear ownership, concrete action, reflection
|
|
33
|
+
3. Weak: vague, someone else did it, no outcome, defensive
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Exercise 3: Design a Technical Screen
|
|
38
|
+
|
|
39
|
+
**Task:** Design a 45-minute technical phone screen. Include: the question (or question type), rubric (strong/medium/weak), time allocation (setup, problem, follow-ups, candidate Q&A), and how you'd communicate the format to the candidate beforehand.
|
|
40
|
+
|
|
41
|
+
**Validation:**
|
|
42
|
+
- [ ] Question is bounded (solvable in 30–35 min)
|
|
43
|
+
- [ ] Rubric covers correctness, approach, communication
|
|
44
|
+
- [ ] Time allocation is realistic
|
|
45
|
+
- [ ] Candidate gets clear pre-interview instructions
|
|
46
|
+
|
|
47
|
+
**Hints:**
|
|
48
|
+
1. Bounded: "Find two numbers that sum to target" not "Build a social graph"
|
|
49
|
+
2. Follow-ups: edge cases, optimization, alternate approaches
|
|
50
|
+
3. Pre-email: "You'll have 45 min. We'll share a doc; you can use any language. Camera on for discussion."
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Exercise 4: Bias Mitigation Checklist
|
|
55
|
+
|
|
56
|
+
**Task:** Create a 5-item "bias mitigation" checklist for your interview process. Each item should be concrete and actionable (e.g., "Score each competency before debrief"). For each, explain which bias it addresses.
|
|
57
|
+
|
|
58
|
+
**Validation:**
|
|
59
|
+
- [ ] 5 items, each actionable
|
|
60
|
+
- [ ] Each linked to a specific bias (halo, similarity, anchoring, etc.)
|
|
61
|
+
- [ ] Checklist could be used by any interviewer
|
|
62
|
+
- [ ] Items are implementable without major process change
|
|
63
|
+
|
|
64
|
+
**Hints:**
|
|
65
|
+
1. Independent scoring → reduces anchoring, groupthink
|
|
66
|
+
2. Same questions for all → reduces similarity bias
|
|
67
|
+
3. Rubric-first evaluation → reduces halo effect
|
|
68
|
+
4. Diverse panel → reduces similarity bias
|
|
69
|
+
5. Note-taking during → reduces recency bias
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Exercise 5: Candidate Experience Audit
|
|
74
|
+
|
|
75
|
+
**Task:** Audit a hypothetical or real hiring pipeline from application to offer. List 5 touchpoints. For each, identify: what the candidate experiences, one potential pain point, and one improvement.
|
|
76
|
+
|
|
77
|
+
**Validation:**
|
|
78
|
+
- [ ] 5 touchpoints identified
|
|
79
|
+
- [ ] Pain point is specific (not "could be better")
|
|
80
|
+
- [ ] Improvement is concrete
|
|
81
|
+
- [ ] Covers: application, screening, onsite, follow-up, offer
|
|
82
|
+
|
|
83
|
+
**Hints:**
|
|
84
|
+
1. Application: Is the form long? Is there a way to track status?
|
|
85
|
+
2. Screening: How long do they wait? Do they get feedback?
|
|
86
|
+
3. Onsite: Is the schedule clear? Are they left alone in a room?
|
|
87
|
+
4. Follow-up: How quickly do you decide? Do you communicate?
|
|
88
|
+
5. Offer: Is the process clear? Is the timeline respectful?
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
slug: hiring-interviews
|
|
2
|
+
title: "Technical Hiring — Structured Interviews That Find Signal"
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
description: "Conduct fair, structured technical interviews: scorecards, question design, bias mitigation, and candidate experience."
|
|
5
|
+
category: leadership
|
|
6
|
+
tags: [hiring, interviews, recruiting, structured-interviews, evaluation, team-building]
|
|
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: []
|
|
22
|
+
related: [one-on-ones, technical-mentoring]
|
|
23
|
+
|
|
24
|
+
triggers:
|
|
25
|
+
- "How do I conduct technical interviews?"
|
|
26
|
+
- "How do I evaluate candidates fairly?"
|
|
27
|
+
- "What makes a structured interview?"
|
|
28
|
+
- "How do I avoid bias in hiring?"
|
|
29
|
+
|
|
30
|
+
visuals:
|
|
31
|
+
diagrams: [diagram-flow, diagram-mermaid]
|
|
32
|
+
quiz-types: [quiz-drag-order, quiz-timed-choice]
|
|
33
|
+
slides: true
|
|
34
|
+
|
|
35
|
+
sources:
|
|
36
|
+
- label: "Who by Geoff Smart and Randy Street"
|
|
37
|
+
type: book
|
|
38
|
+
url: "https://whothebook.com/"
|
|
39
|
+
- label: "Work Rules! by Laszlo Bock"
|
|
40
|
+
type: book
|
|
41
|
+
url: "https://www.workrules.net/"
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Technical Hiring — Quick Reference
|
|
2
|
+
|
|
3
|
+
## Why Structured
|
|
4
|
+
|
|
5
|
+
**Same questions, same rubric, independent scoring.** Improves reliability, fairness, legal defensibility.
|
|
6
|
+
|
|
7
|
+
## Scorecard First
|
|
8
|
+
|
|
9
|
+
1. Define competencies (4–6)
|
|
10
|
+
2. Must-have vs. nice-to-have
|
|
11
|
+
3. How each is assessed
|
|
12
|
+
4. Write questions from scorecard
|
|
13
|
+
|
|
14
|
+
## Interview Types
|
|
15
|
+
|
|
16
|
+
| Type | Purpose |
|
|
17
|
+
|------|---------|
|
|
18
|
+
| Behavioral | Past behavior → future; STAR |
|
|
19
|
+
| Technical | Coding, problem-solving, rubric |
|
|
20
|
+
| System design | Architecture, trade-offs |
|
|
21
|
+
| Take-home | Async work sample |
|
|
22
|
+
|
|
23
|
+
## Behavioral: STAR
|
|
24
|
+
|
|
25
|
+
- **S**ituation — Context
|
|
26
|
+
- **T**ask — Their responsibility
|
|
27
|
+
- **A**ction — What they did
|
|
28
|
+
- **R**esult — Outcome, learning
|
|
29
|
+
|
|
30
|
+
**Example:** "Tell me about a time you disagreed with a technical decision. Situation, task, action, result?"
|
|
31
|
+
|
|
32
|
+
## Technical Rubric
|
|
33
|
+
|
|
34
|
+
- **Strong** — Correct, edge cases, explains reasoning, optimization
|
|
35
|
+
- **Medium** — Correct with hint, partial edge cases
|
|
36
|
+
- **Weak** — Stuck, wrong approach, can't explain
|
|
37
|
+
|
|
38
|
+
## Conducting
|
|
39
|
+
|
|
40
|
+
1. Rapport (2–3 min)
|
|
41
|
+
2. Calibrate before the day
|
|
42
|
+
3. Take notes during
|
|
43
|
+
4. Reserve time for candidate questions
|
|
44
|
+
5. No leading — let them perform
|
|
45
|
+
|
|
46
|
+
## Evaluation
|
|
47
|
+
|
|
48
|
+
1. **Independent scoring** — Before debrief
|
|
49
|
+
2. **Debrief** — Compare, discuss evidence
|
|
50
|
+
3. **Hire/no-hire** — Must-haves met
|
|
51
|
+
4. **Document** — Notes and scores
|
|
52
|
+
|
|
53
|
+
## Common Biases
|
|
54
|
+
|
|
55
|
+
| Bias | Mitigation |
|
|
56
|
+
|------|------------|
|
|
57
|
+
| Halo effect | Score each competency separately |
|
|
58
|
+
| Similarity bias | Structured questions; diverse panel |
|
|
59
|
+
| Anchoring | Independent scoring first |
|
|
60
|
+
| Recency | Notes throughout |
|
|
61
|
+
| Confirmation | Look for disconfirming evidence |
|
|
62
|
+
|
|
63
|
+
## Candidate Experience
|
|
64
|
+
|
|
65
|
+
- Clear communication (what to expect)
|
|
66
|
+
- Start and end on time
|
|
67
|
+
- Feedback when possible
|
|
68
|
+
- Don't leave them hanging
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Technical Hiring — Quiz
|
|
2
|
+
|
|
3
|
+
## Question 1
|
|
4
|
+
|
|
5
|
+
Why do structured interviews outperform unstructured ones?
|
|
6
|
+
|
|
7
|
+
A) They take less time
|
|
8
|
+
B) They improve reliability, fairness, and legal defensibility
|
|
9
|
+
C) They are easier to design
|
|
10
|
+
D) They require fewer interviewers
|
|
11
|
+
|
|
12
|
+
<!-- ANSWER: B -->
|
|
13
|
+
<!-- EXPLANATION: Structured interviews use the same questions and rubrics for all candidates. This improves reliability (consistent evaluation), fairness (reduces bias), and legal defensibility (documented, job-related criteria). Unstructured interviews favor charisma and similarity bias. -->
|
|
14
|
+
|
|
15
|
+
## Question 2
|
|
16
|
+
|
|
17
|
+
When should you define the interview scorecard?
|
|
18
|
+
|
|
19
|
+
A) After writing the first question
|
|
20
|
+
B) Before writing any questions
|
|
21
|
+
C) During the debrief
|
|
22
|
+
D) After the first candidate
|
|
23
|
+
|
|
24
|
+
<!-- ANSWER: B -->
|
|
25
|
+
<!-- EXPLANATION: Scorecard first. Define what competencies matter and how you'll assess them before writing questions. Questions and rubrics flow from the scorecard. This ensures alignment and prevents ad-hoc, inconsistent evaluation. -->
|
|
26
|
+
|
|
27
|
+
## Question 3
|
|
28
|
+
|
|
29
|
+
What does STAR stand for in behavioral interviews?
|
|
30
|
+
|
|
31
|
+
A) Skill, Task, Action, Result
|
|
32
|
+
B) Situation, Task, Action, Result
|
|
33
|
+
C) Strategy, Time, Analysis, Response
|
|
34
|
+
D) Standard, Test, Assess, Review
|
|
35
|
+
|
|
36
|
+
<!-- ANSWER: B -->
|
|
37
|
+
<!-- EXPLANATION: STAR = Situation (context), Task (their responsibility), Action (what they did), Result (outcome, what they learned). It's a framework for getting specific, past-behavior examples that predict future performance. -->
|
|
38
|
+
|
|
39
|
+
## Question 4
|
|
40
|
+
|
|
41
|
+
Which bias occurs when one positive trait overshadows weaknesses?
|
|
42
|
+
|
|
43
|
+
A) Similarity bias
|
|
44
|
+
B) Halo effect
|
|
45
|
+
C) Anchoring
|
|
46
|
+
D) Recency bias
|
|
47
|
+
|
|
48
|
+
<!-- ANSWER: B -->
|
|
49
|
+
<!-- EXPLANATION: The halo effect: one strength (e.g., charisma, pedigree) leads us to overlook weaknesses. Mitigation: score each competency separately; use a rubric; look for disconfirming evidence. -->
|
|
50
|
+
|
|
51
|
+
## Question 5
|
|
52
|
+
|
|
53
|
+
When should interviewers score candidates?
|
|
54
|
+
|
|
55
|
+
A) During the debrief, together
|
|
56
|
+
B) After the debrief, individually
|
|
57
|
+
C) Before the debrief, independently
|
|
58
|
+
D) Only the hiring manager scores
|
|
59
|
+
|
|
60
|
+
<!-- ANSWER: C -->
|
|
61
|
+
<!-- EXPLANATION: Interviewers should score independently before the debrief. This prevents groupthink and anchoring—if you hear others first, you may adjust your score. Independent scoring preserves each person's judgment, then the debrief reconciles. -->
|
|
62
|
+
|
|
63
|
+
## Question 6
|
|
64
|
+
|
|
65
|
+
What is a key principle of inclusive hiring?
|
|
66
|
+
|
|
67
|
+
A) Require a CS degree
|
|
68
|
+
B) Focus on competency; reduce unnecessary requirements
|
|
69
|
+
C) Prioritize "culture fit" above all
|
|
70
|
+
D) Use only technical interviews
|
|
71
|
+
|
|
72
|
+
<!-- ANSWER: B -->
|
|
73
|
+
<!-- EXPLANATION: Inclusive hiring focuses on competencies that predict performance. Unnecessary requirements (e.g., CS degree when equivalent experience works) exclude qualified candidates. Diverse panels, structured questions, and rubric-based evaluation support fairness. -->
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Technical Hiring — Resources
|
|
2
|
+
|
|
3
|
+
## Books
|
|
4
|
+
|
|
5
|
+
- **Who: The A Method for Hiring** by Geoff Smart and Randy Street — Scorecard, structured interviews, topgrading.
|
|
6
|
+
- **Work Rules!** by Laszlo Bock — Google's hiring practices; structured interviews, bias reduction.
|
|
7
|
+
- **The Manager's Path** by Camille Fournier — Hiring for eng managers; interviewing, calibration.
|
|
8
|
+
- **Hiring for the Startup** by Y Combinator — Practical hiring for early-stage teams.
|
|
9
|
+
|
|
10
|
+
## Articles
|
|
11
|
+
|
|
12
|
+
- [Google — How We Hire](https://rework.withgoogle.com/) — Re:Work guides on structured interviewing.
|
|
13
|
+
- [First Round Review — Interviewing](https://review.firstround.com/) — Aggregated hiring and interview best practices.
|
|
14
|
+
- [Lara Hogan — Demystifying the Engineering Manager](https://larahogan.me/blog/) — Hiring, interviewing, bias.
|
|
15
|
+
- [Triplebyte Blog](https://triplebyte.com/blog) — Technical interviewing, bias, candidate experience.
|
|
16
|
+
- [Workable — Structured Interview Guide](https://resources.workable.com/) — How to design and run structured interviews.
|
|
17
|
+
|
|
18
|
+
## Videos
|
|
19
|
+
|
|
20
|
+
- [LeadDev — Technical Hiring](https://leaddev.com/) — Conference talks on hiring.
|
|
21
|
+
- [InfoQ — Hiring in Tech](https://www.infoq.com/) — Panels and talks.
|
|
22
|
+
- [Laszlo Bock — Work Rules! Talk](https://www.youtube.com/results?search_query=laszlo+bock+work+rules) — Key concepts from the book.
|
|
23
|
+
|
|
24
|
+
## Podcasts
|
|
25
|
+
|
|
26
|
+
- [Engineering Culture by InfoQ](https://www.infoq.com/podcasts/engineering-culture/) — Hiring, interviews.
|
|
27
|
+
- [LeadDev podcast](https://leaddev.com/podcast) — Hiring, team building.
|
|
28
|
+
- [Lenny's Podcast](https://www.lennyspodcast.com/) — Hiring leaders, interview design.
|
|
29
|
+
|
|
30
|
+
## Tools
|
|
31
|
+
|
|
32
|
+
- [Lever](https://www.lever.co/) — ATS with structured interview support, scorecards.
|
|
33
|
+
- [Greenhouse](https://www.greenhouse.io/) — Hiring software; structured interview kits.
|
|
34
|
+
- [Interviewing.io](https://interviewing.io/) — Anonymous technical interviewing practice.
|
|
35
|
+
- [Lattice](https://lattice.com/) — Performance and hiring; scorecards.
|
|
36
|
+
- [Notion](https://www.notion.so/) — Scorecard templates, interview guides.
|