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.
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
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!
* 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.
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" :).
BTW, I agree, when you start coding as a work, the fun part of it dies slowly...
Merci pour ce post!
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.
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.
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?
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.
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.
"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).
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".
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.
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.
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.