Software developers spend 50% of their time debugging
Debugging is the process of finding and resolving defects or problems within the program that prevent correct operation of computer software or a system
Debugging is simply a domain-specific term for problem solving
(probably problem with dependencies)
(probably problem with the environment)
1. Get to a place in history when everything was fine
2. Recreate the problem a single step.
Write a test that reproduces the problem and fails.
Make it pass (by modifying production code)
If (needed && possible)