Engineering Practices
Adding people to a late software project makes it later. - Frederick Brooks (More about Brooks’s Law)
| Practice | What is it? |
|---|---|
|
Spike
|
Spike is an exploration (enabler story) around a technical issue that the team is uncertain and won’t be able to estimate the story or even can end up in a blocker. Spikes can not be estimated, but can be timeboxed.
|
|
PoC
|
(Proof of Concept)
Is it feasible? That is the answer that we try to answer with a PoC. A PoC is typically an experiment or a small project that demonstrates that something is technically feasible. Also it is a way to learn and share knowledge with others since Engineers commonly present the PoC to other engineers. |
|
Premortem
|
What could go wrong? If it failed what could have gone wrong? That is the answer that we try to answer with this practice. In other words, before we start to develop something we get together and discuss possible scenarios that could go wrong (if the server crashes, if the user tries to operate in a different way). This helps to have a more clear idea of the technical breakdown (the tasks we need to accomplish our goal) and reduce the later effort for operations and fixes)
|
|
Postmortem
|
What went wrong? That is the answer that we try to answer with this practice. The idea is not to blame someone, but to find we we could have done to prevent the problem. In the end the objective is to identify what tasks should be accomplished to avoiding the problem to occur again. Those tasks can be related to software and infrastructure or even some new orientations in our Playbook.
|
|
Pair Programming
|
When Sofware Engineers work together sharing the same screen and take turns on the keyboard. The main purpose of it is to share knowledge.
|
|
Code Review
|
When one or more Software Engineers reviews their team member’s code. The main purpose of it is to grant code quality, but also works as a way of less experienced engineers get coached by more experienced engineers.
|
|
Refactoring
|
According to book Refactoring (by Martin Fowler): “Refactoring is a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior. Its heart is a series of small behavior preserving transformations. Its heart is a series of small behavior preserving transformations. Each transformation (called a “refactoring”) does little, but a sequence of these transformations can produce a significant restructuring. Since each refactoring is small, it’s less likely to go wrong. The system is kept fully working after each refactoring, reducing the chances that a system can get seriously broken during the restructuring.”
|
| Continuous Delivery | soon |
| Continuous Integration | soon |
| Observability | soon |
| Reliability | soon |




