Distinctly I recall being hurled about in a tiny taxi roughly the size of my highly-fuel efficient Prius, hurtling through the streets toward certain doom (en route to our hotel). Frantically, John and the driver were having a conversation in a language I didn't understand, his and the driver's hands undulating wildly while pointing at various signs I couldn't read. I realized they were arguing about which was the best route to travel when the automobile pivoted into a sharp right, barely missing oncoming traffic.
When we came to a stop, thankfully at our hotel and not in the grill of a semi-truck, I tipped the cab driver generously, and asked my brother when he had learned to speak Italian. To my surprise, he responded that he didn't really know Italian, but that Spanish was 'close enough' to the dialect of Italian the driver spoke that they were able to communicate, nonetheless. That's not at all the impression I got at the time. I wonder now, thinking back, why they didn't simply both speak English (as I know the driver had greeted us in English at the airport) as opposed to attempting to communicate in an complex mixture of two different languages and manual gestures.
It has since occurred to me that coding is a lot like verbal communication. The language used is similar to a cultural vernacular, and comments are analogous to those hand-wavy exclamations used to get certain points across which aren't clear from the language itself. Sometimes, it's enough to get a feel for the code and interpret a few gestures, but usually, actually speaking the same language (or dialect) is preferable. Also, there are some things you just can't say in one language or dialect versus another. In code, this might be analogous to why someone decided to use nodejs for building a service, instead of WCF (or vice versa).
I'll come back to analogies to verbal communication throughout this talk to try to influence your perspective, as I attempt to demonstrate that code quality matters. However, I will always defer to the number one rule: get code to work. But once code works, what next? I will explain why I (and other managers I know) pay attention to things like code quality when reviewing code, and what different transgressions in style or pattern mean to me, as an Manager of engineers.
My talk on this subject is roughly an hour long. Here are the high points of what I'm going to be discussing.
- Intro
- Code is Communication (with examples)
- Code is Design (with examples)
- Code is your Career
- Questions
After the talk, I'll be posting my slide deck here with examples and explanations for your reference :). My goal is to help improve your coding career by giving you a perspective on what your coding choices, style, design say about your development as an engineer.
This camp will be on Saturday, 9/10 from 3:30 to 4:30. I'll be there most of the day, so if you see me drop by and say hello!