I've discovered that programming and painting have more in common than I could have previously thought. What I've come to understand is that both of these endeavors are about "making." It's about the inherent desire to create artifacts that can solve practical problems, can communicate ideas, or that can inspire. I recently read an interesting article by Paul Graham, entitled Hackers and Painters. Graham holds a PhD in Computer Science from Harvard and also studied painting at the Rhode Island School of Design. He likens the process of programming computer applications, an activity he calls "hacking," to the process of painting. Both he argues are about the desire to create beautiful things. I think he is on to something.
While we might be accustomed to the notion of beauty as it applies to the fine arts, this might be a foreign notion to those who develop technology. But in programming, Graham argues that beautiful software is that which is well designed, and well written. I believe that this idea idea of creating well designed, well made artifacts has inspired craftsman of all types throughout history.
So if programming is like painting then, what does that imply about the way software should be written? I think it suggests that -
- Software, like paintings, are developed through a process of iteration and evolution - that it is impossible to get the design right the first time and that we learn through making.
- Where painters explore ideas through sketching, software developers should explore their ideas through some process of prototyping.
- Great software, like great painting, requires a fanatical devotion to beauty and perfection of the craft.
- Creativity and inspiration are fleeting. It is also important for individuals to find ways to remain productive and work through slumps in creativity that are inevitable to any maker.
- It is important to have empathy with our viewers, patrons, and users. Are we making things that people need? That inspire? That communicate important ideas? We can only know this by engaging with our audience and learning about their activities and desires.
- Finally, what motivates all makers, be they painters, programmers, or other craftsman is the making. We are driven to not just work with ideas but to create tangible things - things that bring pleasure, things that improve lives, things that challenge us to solve problems or to see the world in a new way.
