Monday, July 29, 2013

Invisible Art

The other day in the office I was speaking with an engineering candidate for his final round interview. We were looking at some code and I was explaining our architecture. Later on Hemakshi remarked to me, "You were so excited to talk about code!". I didn't realize it at the time, but I really was. Since I'm the only engineer on the team, I rarely get to do it, nor does the team hear me talk about it. But once we got into the discussion and the guy showed interest and asked good questions, it was really fun and engaging to talk about this body of work I have been chipping away at for the better part of the last four years.

I take a lot of pride in writing code. I'm not an elite software developer, but I try very hard to write clean, maintainable, intuitive, well-documented code. Only after Hemakshi made her comment did I realize that all of that writing will largely go unobserved by the rest of the world.

Software developers spend countless hours on a craft largely invisible to a viewing audience. The outward manifestation is certainly visible as end-user software, but the code will pretty much never be seen. The only chance for significant amounts of your code to be seen/scrutinized/admired is if you are a core developer on a popular open source project. And even then it's only other hackers. Otherwise for all to rest of us slogging it out in our little corners of github, no one cares. Maybe you can organize a party with your college buddies where you take turns projecting up some stuff you've been hacking on for work. But who would ever do that? And besides, it would mostly be illegal. Jo can't show me his Pixar code, if he did I'd later have to be shot.

But to me programming is art; at the very least it is creative self-expression. It's sad that a genre of art that so many people pour themselves into isn't shared/shareable. Out of fear that I will die without ever getting a chance to talk about my code to a general audience, here we go:

This is a part of our software's data model definition. Our data model has been really successful; it's stood the test of time quite well. There is one major mistake I made in it early on (created two different models for a user at a time when I didn't know you can cross-reference models from different Django applications) and few deprecated fields, but all-in-all a very neat and flexible data model. 

Not only am I proud of what the code does, but I'm proud of how it's written and commented. I've not worked much on large software teams, so I don't have a sense for what is good commenting, but I try to comment as much as possible, especially in the last year or so as I realized other folks will soon be working on it.

I would love for there to be an art exhibit on people's code. The MoMa should have an installation where people put up beautiful codes on the walls. I would totally go and marvel at different hacks in different languages. The exhibit should include a snippet from Nipun's ServiceSpace code, who has spent over a decade developing a multi-100K lines codebase mostly as a one-man engineering team. From the little I've worked on it, I can say it is tremendous, and the same attention to detail he puts into everything he does shows up in his code.

I imagine the MoMa Code exhibit would have the ribbon cut by Knuth, although my personal choice would be RMS since he's the Rick Rubin of software.

No comments:

Post a Comment