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.


  1. I think people like you and I are the exception. I've definitely felt in my years in industry that engineers that treat their code like art are the minority. I understand at times it can be difficult especially if you're working within an existing large system, but there's never an excuse for not at least properly commenting or documenting your code. I think other times the pressure for results now cause people to accept their first working solution, no matter how convoluted it might be.

    Do you still have our CS164 compiler code? The memory I have in my head is of a java-based Van Gogh. But, I wonder if that's just because my standards were still developing at that stage.

    "They are effectively... popped."

  2. For people like me, I don't understand a word...and affectionately call it "chicken-scratch" when Nipun is working on it. But one thing I do know is that I have is a HUGE amount of respect and appreciation for it, because it makes everything work in the way I want it to and better. I do think it's pretty hot when something scrolls just right on the screen, or a sign-up form works brilliantly, and who doesn't want clean coding for SEO. I appreciate the focus and creativity that goes into it. So all of you coders out there! Thanks for making our lives better!

    -a laywoman's perspective

  3. As one who loves all art forms but a visual artist primarily, I can totally appreciate the musical, poetically visual beauty of code. I've used old versions of code cards in past work. A show at MOMA (or any museum) would be fabulous, to fill a room with same size strips from floor to ceiling - contrasting the different hacks/different languages - one next to the other. (So that no lives are at stake, they would not be 100% accurate.) It would then become actually an installation, transforming into a sculptural experience, being surrounded by code..... surrounded by that which normally is invisible yet crucial to everyone's online experience, to the ease and grace, efficiency and yes, convenience of moving across this amazing global web of communication, thanks to enthusiastic, creative geniuses like you! :) 's The scope of this gift, the beyond imagination. Thank you for your beautiful work!

  4. And thanks Neil, for all the hard work with KindSpring, too!!!!