I recently joined a new engineering team and was given my first coding assignment. I was told that time was of the essence in this case and so did a rather hasty implementation in Ruby and opened a PR fully expecting to get some interesting suggestions and even some of the dreaded “change requests”
I got some legitimate questions and concerns about the code, in particular related to getting the tests to run in our CI system.
There were two types of comments that I took issue with.
The first was “not idiomatic” which I have heard before, especially from Ruby engineers. All modern languages have their cool language features and their eccentricities and learning those things is part of the fun. Knowing a particular language well - be it Javascript, Ruby, Go, Rust, Haskell, whatever - is a real accomplishment and people should be proud of doing so. But they should not use that pride and knowledge to belittle people who write code “with an accent”.
In my case, I have written production code in perhaps 20 different languages over my 30+ years in this business and still actively code in 3 or 4 at any given time. When I haven’t used a particular language heavily in a few months it takes me a while to get caught up and fluent again. I have learned a lot in the past from PR comments and suggestions and I have no problem incorporating these into my code going forward.
The refrain I often hear from the “idiomatic” perspective is “your code is too hard for me to read”. I find this a weak argument with elitist implications. In this development team, as is almost always the case in the year 2022, we have a few engineers who speak English with an accent. On our Standup calls with these engineers, we don’t interrupt them and say “I can’t understand you because of your accent, can you please speak more like a native”. If we don’t understand someone, we politely ask them to perhaps try another explanation or maybe write out their ideas. We take it upon ourselves to help understand them, we don’t put that burden completely on them.
I once worked with a very talented and sharp Ruby engineer, someone I admire and learned a great deal from. This engineer spoke Spanish and English fluently but had a significant speech impediment. Not once when I worked with him did I stop him and say “can you please not stutter when you speak, I can’t understand you”. Instead I waited patiently for him to work through his stutter and I appreciated the enormous effort that he made to communicate.
The other comment I received which bears some examination is “no reason”. As in “there is no reason to do it this way”. This is a breathtakingly arrogant thing to say to another person regardless of the context. When I hear someone say this I mentally convert their statement into “I can’t think of a reason” or perhaps “I am too lazy/dumb/narrow-minded to think of a reason”. Younger people who may be reading this, take some advice from a middle aged professional who used to be as narrow-minded and arrogant as anyone: there is always a reason why people do what they do. Just because you don’t understand their reason, or disagree with it does not mean they didn’t have one.
A younger, less experienced version of me would have been insulted by these types of comments. Lucky for me, I am not that engineer anymore. I am well-seasoned: salty and spicy.