-
Notifications
You must be signed in to change notification settings - Fork 54
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
17 changed files
with
159 additions
and
54 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,6 +2,7 @@ | |
tags: | ||
- Prototyping | ||
- Coding | ||
- Pair Programming | ||
--- | ||
|
||
![Draft](/img/state/draft.png) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,6 @@ | ||
--- | ||
tags: | ||
- Automation | ||
--- | ||
|
||
![Draft](/img/state/draft.png) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,7 @@ | ||
--- | ||
tags: | ||
- Automation | ||
--- | ||
![Draft](/img/state/draft.png) | ||
|
||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
--- | ||
title: Automation | ||
tags: | ||
- Automation | ||
practice: | ||
aka: | ||
- "Mechanisation" | ||
- "Formalisation" | ||
mitigates: | ||
- tag: Implementation Risk | ||
reason: "Reduces the variability in process completion" | ||
- tag: Operational Risk | ||
reason: "Introduces more consistency in process operations and removes opportunity for human error" | ||
attendant: | ||
- tag: Codebase Risk | ||
reason: "More code means more software to manage" | ||
- tag: Complexity Risk | ||
reason: "Introducing code adds to the complexity of a project" | ||
- tag: Feature Fit Risk | ||
reason: "The automated process might not capture the variability of requirements of the original approach" | ||
- tag: Invisibility Risk | ||
reason: "The quality and performance characteristics may be obscured by automation." | ||
- tag: Process Risk | ||
reason: "Automation introduces a process" | ||
related: | ||
- /practices/development/Coding | ||
- /practices/testing/Measurement | ||
--- | ||
|
||
<PracticeIntro details={frontMatter.practice} /> | ||
|
||
## Description | ||
|
||
> "Automation describes a wide range of technologies that reduce human intervention in processes, mainly by predetermining decision criteria, subprocess relationships, and related actions, as well as embodying those predeterminations in machines.": - [Automation, _Wikipedia_](https://en.wikipedia.org/wiki/Automation) | ||
One of the key ways to measure whether your team is doing _useful work_ is to look at whether, in fact, it can be automated. And this is the spirit of [DevOps](DevOps) - the idea that people in general are poor at repeatable tasks, and anything people do repeatedly _should_ be automated. | ||
|
||
|
||
## See Also | ||
|
||
<TagList tag="Automation" /> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,25 +1,47 @@ | ||
--- | ||
title: Pair Programming | ||
tags: | ||
- Pair Programming | ||
practice: | ||
aka: | ||
- "Mob Programming" | ||
- "Pairing" | ||
mitigates: | ||
- tag: Staff Risk | ||
reason: "Knowledge is shared across staff, reducing key person risk." | ||
- tag: Agency Risk | ||
reason: "Colleagues working together are able to keep each other honest." | ||
- tag: Learning Curve Risk | ||
reason: "Prototypes are a way of learning about a particular solution to a problem." | ||
- tag: Communication Risk | ||
reason: "A prototype often allows for communicating a design or idea in a way that a written document or diagram wouldn't." | ||
- tag: Implementation Risk | ||
reason: "More eyeballs means fewer bugs and a better implementation" | ||
attendant: | ||
- tag: Schedule Risk | ||
reason: "Staff working together introduces redundancy which might slow down delivery speed." | ||
- tag: Agency Risk | ||
reason: "Staff might not like working in this arrangement." | ||
related: | ||
- /practices/Coding | ||
- /practices/coordination/Review | ||
--- | ||
|
||
<PracticeIntro details={frontMatter.practice} /> | ||
|
||
## Description | ||
|
||
### Pair Programming / Mob Programming | ||
|
||
In the main, [Review](Review.md)) is the main way to mitigate [Coordination Risk](../risks/Coordination-Risk.md). For example: | ||
- [Code Reviews](Review.md) | ||
- [Stand Up Meetings](Review.md) | ||
- [Presentations & Demos](Review.md) | ||
- [Training](Review.md) | ||
> "Pair programming is a software development technique in which two programmers work together at one workstation. One, the driver, writes code while the other, the observer or navigator,[1] reviews each line of code as it is typed in. The two programmers switch roles frequently." - [Pair Programming, _Wikipedia_](https://en.wikipedia.org/wiki/Pair_programming) | ||
**Pair Programming** however _combines_ the review with the process of coding: there are now two heads at each terminal. What does this achieve? | ||
**Pair Programming** combines the [review](../coordination/Review.md) with [coding](Coding.md): there are now two heads at each terminal. | ||
|
||
- Clearly, we mitigate [Key-Man Risk](../risks/Coordination-Risk.md) as we've got two people doing every job. | ||
- Knowledge is transferred at the same time, too, mitigating [Specialist Risk](../risks/Coordination-Risk.md). | ||
- Proponents also argue that this mitigates [Complexity Risk](../risks/Complexity-Risk.md), as the software will be better quality. | ||
- Since the pair spend _so much time together_, the communication is very _high bandwidth_, so this mitigates [Communication Risk](../risks/Communication-Risk.md) | ||
|
||
But, conversely, there is a cost to **Pair Programming**: | ||
- Having two people doing the job _one person could do_ intimates [Schedule Risk](../risks/Scarcity-Risk.md#schedule-risk). | ||
- Could the same [Complexity Risk](../risks/Complexity-Risk.md) be mitigated just with more regular [Code Reviews](Review.md)? | ||
- Sometimes, asking members of a team to work so closely together is a recipe for disaster. [Team Risk](../risks/Coordination-Risk.md) | ||
- Not every pair programmer "shares" the keyboard time evenly, especially if ability levels aren't the same. | ||
- There is only one **Feedback loop**, so despite the fact you have two people, you can only [Meet Reality](../thinking/Meeting-Reality.md) serially. | ||
|
||
**Mob Programming** goes one stage further and suggests that we can write better software with _even more people around the keyboard_. So, what's the right number? Clearly, the usual trade-off applies: are you _mitigating_ more risk than you're _gaining_? | ||
|
||
**Mob Programming** goes one stage further and suggests that we can write better software with _even more people around the keyboard_. So, what's the right number? Clearly, the usual trade-off applies: are you _mitigating_ more risk than you're _gaining_? | ||
|
||
## See Also | ||
|
||
<TagList tag="Pair Programming" /> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -13,6 +13,7 @@ tags: | |
- Dead-End Risk | ||
- Codebase Risk | ||
- Risks | ||
- Refactoring | ||
redirect_from: | ||
- /Complexity-Risk | ||
--- | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters