I wrote code, fixed bugs, tested ideas, and rebuilt entire systems. Each version appeared to move the product forward. But the most important changes were not happening only inside the repository.
Every bug exposed an assumption
A bug was rarely just a broken line of code. It often revealed something I had assumed about users, data, timing, architecture, or the behavior of the system.
The code made those assumptions visible because reality refused to behave exactly as the model in my head expected.
I thought I was building the app. The app was also building me.
Failure changed meaning
A failed version stopped feeling like wasted effort. It became evidence about what I did not yet understand.
- Bugs taught patience.
- Failed ideas taught humility.
- Rebuilding taught that attachment to a version can obstruct the system.
- Uncertainty taught me to separate confidence from truth.
The product is not the only output
A project produces code, interfaces, users, and documentation. It also produces judgment, habits, scars, questions, and a changed understanding of what building requires.