Photography: SFBIKE http://www.flickr.com/photos/sfbike/

Conversations in Code.

(And please don’t call them codeversations)

I like this quote by R.R. Martin:

“A reader lives a thousand lives before he dies, said Jojen. The man who never reads lives only one.”

One of the reasons I like it, is because it transcends reading; it applies rather nicely to software engineering.

Engineering is about tradeoffs, and you always choose one option against another. With open source code you have the chance to experience “the what if” while studying other solutions for the same problem. In my case I developed a Raspberry Pi system for displaying Muni Arrivals, and this article tells the story of how enlightening it was to study another solution.

Looking down before taking a dive.

You can tell a lot about a system just by glancing at it’s folder structure.

Robert Martin (Aka. Uncle Bob), talks about Screaming Architecture. A good system resembles your solution, in a budgeting system you will see files named accounts, invoices, etc. But it goes beyond that, seeing a folder named tests or specs will tell you if it was made via Test Driven, Behavior Driven or Cowboy Development.

Configuration and Convention.

The two most important files in any application are it’s Readme and its configuration file.

As we read on the Art Of Unix Programming, there is nothing more powerful than a Configuration file. Regardless if its a .yml, a .conf or a bunch of Registry keys, this file will tell you what it can do and it will allow you to change it to fit your own needs.

Those who don’t know History are doomed to Git Revert it.

Your version control history tells the story of your app development.

Was it developed in a hurry? You can tell that by the big size of the commit and the tone/content between each of them. Was this a single endeavour or a collective effort? Does the author understand that commit messages are part of it’s documentation?

Fragility and Resilience against the future.

“That man is prudent who neither hopes nor fears anything from the uncertain events of the future.” — A. France

One of my favorite parts of comparing projects is noticing how easy is to make the mistake of assuming that your display will never change; that you are always going to display your string in an 16 led string and that you won’t find another cheap usb display tomorrow.

Code doesn’t lie.

Reading code is talking with the Code, you just need to learn how to listen to it.

Reading code, becomes a conversation, a conversation that challenges your decisions, one that brings up to light the fragility, quality and future of your application. Code is truth.