2 ms·
1) Explain the concept of a Minimum Viable Product (https://en.wikipedia.org/wiki/Minimum_viable_product https://en.wikipedia.org/wiki/Minimum_viable_product).
by abrichr 7y ago
1) Explain the concept of a Minimum Viable Product (https://en.wikipedia.org/wiki/Minimum_viable_product https://en.wikipedia.org/wiki/Minimum_viable_product). The only way developers get paid is if the business makes money, and the business only makes money by shipping working product ASAP.
2) Define invariants at the top of functions using assertions (https://en.wikipedia.org/wiki/Assertion_(software_development) https://en.wikipedia.org/wiki/Assertion_(software_developmen...). Make this a requirement in your style guide, and always do code reviews. Think of this like the MVP of handling edge cases in code, e.g.
def foo(bar):
assert 0 < bar < 1, (
"bar must be between 0 and 1"
)
# TODO: handle bar <= 0 and bar >= 1
...
3) Use Test Driven Development (https://en.wikipedia.org/wiki/Test-driven_development https://en.wikipedia.org/wiki/Test-driven_development) to define the minimum required functionality. Write the high level integration tests, then give them to the developers to implement against.
4) Reward success periodically by looking at how many tests each developer got passing. This could be in the form of looking at burndown charts during a sprint retrospective (https://en.wikipedia.org/wiki/Scrum_(software_development) https://en.wikipedia.org/wiki/Scrum_(software_development)).