I’ve been integrating some older modules of our codebase into a new one recently, which naturally involved finding the colleagues with the respective knowledge of those modules and asking them questions. It’s a natural workflow in our imperfect world of leaky abstractions with the lack of true black-boxes, so there is nothing to get mad about.
However, one particular thing did strike me on my journey for the knowledge and made me wonder. Most of the times my question “Hey, did you remember that %feature% thing?” was followed by the immediate “oh, damn, yeah, that thing definitely sucks” reaction. It was funny because I hadn’t even mentioned any issues with that module (and I actually hadn’t had any) but the reaction was clearly negative.
Why do some developers have an automatic negative attitude towards the things they have built? Is it because they move towards the feature delivery speed instead of the quality sometimes? Is it because of the heart-breaking tradeoffs and the legacy they had to accommodate to during the development stage?
The natural tradeoffs are nothing to be ashamed off. In the end of the day our primary goal is to create a good enough solution for a given problem considering resources available at the moment. There is nothing wrong with not being able to create the single ultimately perfect solution. However, keeping that “will you be ashamed of it in several months?” question in mind may be quite helpful the next time you build something new.