Developers should be Artists

Fabien Potencier

August 25, 2009

During my holidays, I took the chance to step back a little and think about my day-to-day work. As the CEO of Sensio, I have the opportunity to do a lot of different jobs. But what I really like to do is hacking. By hacking, I mean developing software for the fun of it, software that is not for a "paying" customer. And as such, hacking cannot be a day job per se. Hacking is something you do on the side. It's a hobby, a passion. And Open-Source is probably the best way to share your hacks.

Why do I like hacking so much? Obviously because I'm free to do whatever I want, with the tools and the methodology I choose. But more important, because I have the freedom to do it iteratively with no schedule pressure. Building a software is a long iterative process. I love to be able to code something, forget about it for some time, and come back to it later on to enhance it, or throw it away altogether. But back to the artist side of things. How much time do you think Leonardo da Vinci took to paint the Mona Lisa? According to Wikipedia, he began painting the Mona Lisa in 1503 and he is thought to have finished it shortly before he died in 1519. What? 13 years for just one painting? That's insane. Perhaps, but that's the way it works for artists. I started developing symfony in 2004, and it still unfinished in 2009, and probably will never be (and the number of features has not raised that much in five years). Hacking is an art, and hackers should act as artists. Hackers and painters have a lot in common but I won't talk about the analogy too much as Paul Graham wrote an excellent essay and a whole book on this topic. I recommend you to read both of them if you are a hacker or a developer.

Hacking is about creating something by using the computer as a medium of expression. One of the best hacker and artist I know of is Why the lucky stiff. From the beautiful camping micro-framework, to the excellent "Poignant Guide to Ruby" book, he was very prolific and a real artist. I use the past tense, as he recently removed all his online presence.

Everyday, I try to learn new ways to write beautiful code in PHP (who's laughing at me?). You can easily follow my progress by watching the evolutions of the symfony code, and more recently the symfony components code.

Stos-Punch from ST Magazine page 146

If you are looking for more "programming art", I also did some attempts with Twitto and Twittee, my two Twitter experiments.

// Twitto
require __DIR__.'/c.php';
if (!is_callable($c = @$_GET['c'] ?: function() { echo 'Woah!'; }))
  throw new Exception('Error');
$c();
 
// Twittee
class Container {
 protected $s=array();
 function __set($k, $c) { $this->s[$k]=$c; }
 function __get($k) { return $this->s[$k]($this); }
}
 

Back in the early nineties, I did some similar experiments. At that time, the goal was to do as much as possible in 10 lines of code. I was once published in the French ST Magazine (August 1990) for a program done is STOS (you can see the wonderful program in the sidebar).

If you ask me, a hacker should definitely be an artist. But can a developer working for a company be an artist? Unfortunately, I don't think so. To be an artist, you need time and freedom, two essential things you rarely have when working for a customer.

Discussion

gravatar Palleas  — August 25, 2009 16:52   #1
I totally agree, coding can be considered as art for some developpers, I'm really proud of myself when I find my code "beautiful", but that's rare enought to prevent me from getting swollen-headed...
I get bored pretty fast, that's why I'd love to spend my time "hacking" and coding some small and fun apps, but just as you said fun don't pay the bills!
gravatar cs  — August 25, 2009 17:03   #2
Word.
gravatar No'  — August 25, 2009 17:08   #3
One of my teacher would disagree... He used to tell us that :

* artists are neurotic: they're expressing their _feelings_ through their art, trying to free themselves from their pain.
* programmers are schizophreniac: they need to dive into the computer _logic_ and talk to them the right way to solve problems.

And that's the reason why artists (graphists, for example) and programmers (web dev, for example) would never understand each other.

Other point taken: everyone has a different definition of beauty. You can find beauty in maths, in paintings, in code, in writings, but the most essential is : Beauty is in the eye of the beholder.
gravatar Ryan Weaver  — August 25, 2009 17:11   #4
Amen - explore and be curious
gravatar James Logsdon  — August 25, 2009 17:15   #5
I agree. My code is a work of art, and it makes me cry when I see someone put no effort into the format of their code.
gravatar Rui Silva  — August 25, 2009 18:11   #6
Nice post! Very inspirational.
gravatar Greg Beaver  — August 25, 2009 18:13   #7
In response to "No'" in comment #3, I'm sorry to tell you this, but your teacher is both misguided and arrogant :). How can I have the authority to tell you this outrageous claim? I am an artist by trade (professional musician) and a programmer.

Artists are simply better able to channel their intuition into the real world than the non-artist. It has nothing to do with neurosis.

Programmers could stand to learn a bit from the artistic process. Having an intuitive understanding of long-term structure is essential to proper design in both art and in programming. It allows choosing artistic details (implementation specifics) that support the larger design.

Artists who are performers also understand the importance of allowing the intuition to function at its pace, and how to predict exactly how long this will take, something all programmers need in order to accurately predict a delivery date.

Translation: sometimes it is better to take a walk - or even a nap - and let intuition work out a solution to a problem that all the analytic force in the world would never arrive at. Most programmers program as if they were cramming for a test, it's no wonder many programs end up just barely "working" :).
gravatar Raphaël Rougeron  — August 25, 2009 18:32   #8
Woa... STOS... The good old Atari's days... Thanks for making me remember that ;)
gravatar Cesare D'Amico - GrUSP  — August 25, 2009 19:25   #9
Hey Fabien, 1519 - 1503 makes 16 ;)
BTW, I agree, when you start coding as a work, the fun part of it dies slowly...
gravatar http://blog.juliendesrosiers.com  — August 25, 2009 19:40   #10
Content de voir que je ne suis pas seul à voir la programmation comme un art. Je suis un peu tiraillé entre ces deux mondes (dev pour clients et hacking pour moi-même) ces jours ci. Particulièrement quand je regarde l'oeuvre de WhyTheLuckyStiff. On peut se demander Comment faisait-il pour trouver tout ce temps pour faire ces projets dont il ne tirait aucun profit? Perso, j'ai trop de travail ces jours ci.. Il faut bien vivre! J'ai hâte de prendre du temps pour mes projets open source ( http://github.com/juliend2 ) .

Merci pour ce post!
gravatar Fellipe Brito  — August 25, 2009 21:07   #11
Great text, but, maybe Leo Davinci took 16 years and not 13, lol!
gravatar Stefan  — August 25, 2009 21:23   #12
I agree, partially agree and disagree at the same time.

I agree with you that hackers can (and should strive to) be artists. I know I definitely try to be. If I will ever succeed to the point where some others, such as yourself, are, will always remain a question until the point where it actually might happen.

I partially agree with you that when you work for clients, you can not be an artist. Because indeed, while you work on projects for clients, it is very hard to put the heart and soul in the code as you could when you have the time and freedom. However, the same person that works for a client during daytime could be an artist at night, working on either open source projects or their own hobby projects. And I think that should be promoted by companies to their developers, not limited (see http://blog.calevans.com/2009/08/24/a-challenge-to-it-companies/)

Last but not least, I dare disagree with you. There are companies, usually not php development shops though, where you can up to a certain point be an artist. This is for instance why, when looking for a new job, I chose not to go for a PHP development shop anymore. Sure, I still have deadlines with the company I work for now, but since I work on an internal project for internal clients, there is much more focus on creating high-quality and maintainable solutions. Quality goes over deadline. And that is what an artist needs.
gravatar Ahmed El.Hussaini  — August 26, 2009 00:15   #13
I couldn't agree more, I always think of myself not as a developer but as an artist, a maestro and my code, my work are my symphonies ;)
gravatar Vic  — August 26, 2009 05:20   #14
@ No'

I disagree ... I think what's lacking in a lot of software developers is a necessary artistic streak. Software development is not maths and number crunching, it's a creative process, or at its most clinical it's engineering.

Art and programming fit well together.
gravatar Alan  — August 26, 2009 09:23   #15
And then symfony will become just another framework, built for the sake of art rather than for real life projects.

If so, can you just leave symfony and start something useless, as some of us try to make web apps rather than spend their time doing unproductive work?
gravatar Inconnu  — August 26, 2009 09:53   #16
Inconnu : « Ce tableau m’a coûté quinze ans d’efforts : un jour pour le faire et le reste pour le vendre »
gravatar Fabien  — August 26, 2009 10:18   #17
@Alan: symfony is different. It's not a piece of art. It's a framework built for our customers. So, it's definitely built for real projects. What make you think otherwise?
gravatar Mario Bittencourt  — August 26, 2009 13:39   #18
Well,

I think that the developers should always foster their artistic side BUT someone has to pay for the bills.

No one will pay you (or your company) for something that can't be delivered. So a balance must be reached and some companies do try to incorporate this spirit.

My recommendation is that you take what you've learned from your hacking sessions and incorporate in your company's daily routine.
gravatar Lukas  — August 26, 2009 21:52   #19
Amen. Not every is or wants to be an arists though, but for those who are, work hard, but work even harder on finding the right company that will let you create beauty. You will be happier, your clients will be happier and the world too :)
gravatar Rick  — August 27, 2009 09:30   #20
Developers and artists are two very different things. What they have in common is their medium, code, but that's where it ends.

If I want an artistic mural, I'll hire a different kind of painter then I would if I just want my front door painted blue.

Yeah, it's pretty awesome if someone can be both, but I've encountered too many developers who try to be an artist instead of just getting the job done. With the emphasize on "try", because nine out of ten times "being creative" is just an excuse for not being able to properly use the tools of the trade.

Good artists break the rules. Wannabe hackers simple don't know or understand the rules. They don't create beauty, they create spaghetti crap nobody wants with just a hint of what might have been if they had any talent or skill.

Besides, if you really wanna be an artist, there's no obligation to use the same medium as for your work. Go paint or sculpt or make music or something. Being a "code-artist" only on rare occassions makes people better developers. Most of the time, it just makes them pain-in-the-ass developers with bad excuses for not delivering.

Developers should be professionals. Not artists, not engineers. Just being a professional developer, a skilled craftsman is good enough.
gravatar Piwaï  — August 27, 2009 14:44   #21
@Rick :
"Developers should be professionals. Not artists, not engineers." =>That would be so sad. How do you think any of the tool we all use today would exist if the developers were neither artists, nor engineers ?

Not being able to manage developers should not be an argument to refuse them the right of claiming they are artists :-)

I truly believe developers can be artists, which of course requires a lot of passion, a lot of learnings, and some experience (as with any art I guess).
gravatar Tomek  — August 27, 2009 17:52   #22
Well, I'd agree with the overall message of the post (to some extent at least) but if being an artist when coding means producing a code like the examples here are showing then I am all against "the art of coding" :)
gravatar Manus Gratas  — September 02, 2009 21:07   #23
The main sentence, not necessarily in context, says it all "...I'm free to do whatever I want...".

Some people don't code at home, obvious reasons are : it's not paid, family, social price when staying long hours in front of the PC.

Some employers will tell you straight as it is "We don't care how you do it, but we'll get a bug fix by the end of the day".
gravatar Anton Babushkin  — September 03, 2009 05:26   #24
Just because you're a "designer" or "play the piano" doesn't mean you're an artist. An artist is all about self-expression. It doesn't have to be a painting or a beautiful piano melody. It just needs to express something that you're going through or feeling at that time. Hence why a lot of critics look at paintings and always imagine what the artist was feeling at the time. Was he angry or frustrated? Or feeling a lot of love for someone at the time?

I think the same can apply to programming. The difference however, is it takes another programmer to see the true beauty and art in someones "hack" project.
gravatar NiKo  — September 23, 2009 08:04   #25
http://geekandpoke.typepad.com/geekandpoke/2009/09/the-art-of-programming.html :-)
gravatar jminkler  — October 06, 2009 03:34   #26
beauty is in the eye of the beercoder
gravatar Don  — October 14, 2009 00:02   #27
Sure, you all wanna be artists, eh?
Dream on.
"No" and his teacher are right.

Some pointing to creativity: almost anything you do is in some way creative, with few exceptions. But even building walls, creating tools, painting walls has an amount of creativity in it. Creativity means intuitive solving of problems.
But that does not make an artist of you.

Many programmers are very creative, indeed.
But so are football players, thieves and craftsmen.
Are they all artists?

Btw:
"Beauty is in the eye of the beholder"
is common sense and complete crap.

Were you born with taste and a sense for beauty?
No, you needed time to discover beauty, develop your taste and refine your eyes, ears, tongue etc.
Some have more talent but everyone has to work to get taste, e.g. the ability to see beauty in something.

gravatar Evan  — October 23, 2009 20:24   #28
@Don - "No, you needed time to discover beauty, develop your taste and refine your eyes, ears, tongue etc. "

Your argument actually supports the original statement - it's the fact that none of us is born with 'taste and a sense for beauty' that results in everyone discovering a sense of beauty and taste that is unique to themself and their cumulative experiences. Only if we were born with it could it be consistent among all or most 'beholders'.

I agree that creativity - specifically as you define it "intuitive solving of problems" - is a common trait of both artists and programmers, but does not necessarily mean one is the other. I believe what differentiates the craftsman from the artist is the vision to see the problems others do not (or in ways others do not), and the drive to apply their creativity to these problems so that by solving them they reveal something unseen to the rest of the world.

In that sense I see Fabien's argument not as one calling for developers to define themselves as 'artists' but rather to strive to be more than simply craftsman solving the problems placed in front of them. Spend some of your time looking for the problems that no one else has seen yet and use your skills to try to solve them.