You've just completed a new big feature.
There's been ups and downs - you started thinking how hard can it be, then discovered the inherent ambiguities, the dissonances with the existing code base, got stuck, pacing the floor of the office, chatting to coworkers, slowly building, discarding and rebuilding refined models, getting stuck and unstuck again and again, then gradually transcending into a coding frenzy, with the code bending towards your goals and your will, constantly in the zone, writing tests, wrapping things up, thoroughly testing everything manually, finally letting some trusted users try it out.
And now you're ready for release. Release!
Except just now someone remarked how something is a little bit odd. Perhaps it's even yourself, the overworked brain having mentally let go of the whole thing and suddenly remembering a little forgotten detail.
Ah. But I just need to fix this. It is simple. The world is my feet. And the test works. I can do this.
Except you didn't bother running the full test suite. Or going through the full test procedure. Or full release procedure. Or checking with the users.
This is the time of the last-minute bug where the little innocent fix turns out to violate an assumption somewhere else.
My piano teacher Karen-Marie once explained to me that finales can be the most dangerous parts for a musician. When you stop thinking ahead, instead thinking about what you've accomplished, letting concentration slip.
No comments:
Post a Comment