I try to be a good observer because I like learning from others, it’s both fun and satisfying. However, it’s not always easy, my ego and blind spots usually prevent me from seeing things objectively, and I’ll lose a lot of good opportunities to learn as a result. Sometimes, without consciousness, I could be overly critique to others work simply because I don’t think it raises to my standard. While I might personally hold an equal or higher standard for my own work so that I don’t feel bad morally, it rarely gets the best result it could get. Not until recently, did I find a better way of dealing with similar situations, it’s by changing perspective.
To elaborate it a bit more, I’ll pick a recent experience that I encountered at work. A couple weeks ago, there was a hack week event and one of my teammate came up with a prototype to an existing problem we’re facing at work, that’s we don’t have an universal typing system that allows developer to share code between front end and backend codebase written in different programming languages. It’s similar to open source tool trpc but is adapted to our in-house infrastructure. I was very excited to see improvements like this, so I directly jumped into reading the code to see what’s going on. However, after examining the solution, I found it works fine but not as good as I would expect. As a result, right below a few positive comments (mixed with political righteousness and sincere compliments) from different reviewers, I opted to sing a counter melody and left a few thoughts for improvements. Not surprisingly, my suggestions, although being received, yield no result.
Similar experiences have happened before as well. On the one hand, I’m not criticizing irrationally since I appreciate that kind of efforts with sincere hope that things can get better. On the other hand, my honest feedback isn’t constructive enough to drive real changes to happen. Taking into account of the delicacy of human motivation, the way I handle nuances in communication becomes especially important. But it’s clear that what I’m proposing isn’t working well. Looking in retrospect, the more I examine my notion of “not good enough”, the more it resembles an excuse of inaction of myself. By inaction, I mean the resistance to commit real time and effort to workout a better solution or communicate effectively that delivers result. I’m only assuming there’s a better version on premise of theory without an actual “skin in the game”. If basing conclusions on theory, how could I tell if I’m not premature optimizing or not? Or maybe I’m unconsciously falling into the common trap of nitpicking others work.
The reflection eventually leads to a paradigm shift within myself, that’s if I’m not able to come up with a better solution to any existing problems within a bounded timeframe, I’d happily embrace the existing solution as current best solution, which will serve as a stepping stone for future improvements.
And the changing in perspective works great. Instead of looking at the “Is the glass half empty or half full?” as glass half empty, I’m grateful that it’s half full. It helps me to avoid the tendency to optimize for a local maxima (specific to the problem that I’m facing) while shifting focus to a higher level, taking the entire team’s merit into account. It’s rare for people in corporate settings to have the drive to improve things and to see things as what can be instead of what it is. It’s both encouraging and crucial to have the foundational work being laid out first so that more improvements and contributions can arise. It’s the practice of good enough software. Therefore, any reason not to embrace it?