No Comments →
Let me start with admitting that I just pushed out a shamefully buggy set of performance enhancements. I had done a lot of testing, but I hadn’t considered the enormous number of places my changes impacted and we spent the next two weeks picking off another 5-10 bugs that I had missed. All of the bugs would have been easily caught by even relatively comprehensive unit tests.
I hate to admit that my team’s does not have the habit of writing unit tests, or generally testing well at all. I am the one that should be setting the tone for these things and I have dropped the ball. We started off on the right foot (sort of) a couple of years ago with a moderate set of unit tests but as things continued those tests weren’t maintained and to be honest the speed in which we were having to refactor and transform the app overall in the first year made it incredibly difficult. In fact, those tests got so far out of date within a couple of months that we just dropped them out of the primary solution so none of us had to deal with them.
Our code base, team and the scope of the business solutions we’re providing is well beyond the point where unit tests became a necessity. But, it’s really tough to backfill an application the size of ours with tests. The app isn’t huge, around 100-150k logical lines of code, but it’s way too big to have the lackadaisical approach to testing and quality that we have. We don’t have any dedicated QA resources at the moment so we have a peer review process that breaks down a lot. So with a lack of unit tests, a lack of a well defined QA process, and a constant rush on whatever is next, we simply don’t have a Culture of Quality.
As I’ve said, I believe this largely is my own fault. I haven’t pushed back enough on some business demands to make it clear we need more time for testing. I’ve jumped into refactoring & enhancements without full recognizing the implications of those changes and I haven’t pushed my team enough to see the value of tests, not to mention simply making a rule of requiring tests for new development.bugs, code quality, development, team culture, testing