This is an exersize in making a change to a production-like "Big ball of mud" by "making the change safe, then making the change easy, then making the easy change"
- Create a Golden Master WITHOUT CHANGING ANY CODE (make it safe)
- Make the requested change by: a. Dependency breaking: safely breaking out the aspect we are interested in from the ball of mud (make it safe) b. Get under test: write unit tests to capture the behaviour of that aspect (make it safe) c. Refactor to make clear: refactor so that the intent of that aspect is clear (make it easy) d. Add a failing test for the new behaviour (make it easy) e. Add the change (easy change)
Your product owner hands you the following prioritised backlog:
- Report status in a label instead of an alert
- We need stricter password criteria: mix of upper and lowercase and common ones not allowed ("password","qwerty")
- We need stronger hashing algo for new users
- Store data in keychain, not user preferences
- Allow multi language support
- Forgot password: Can we add ability to get a hint