Is Programming Art or Engineering?

Posted by JD 10/15/2009 at 17:04

This question has been asked thousands of time. Is Programming Art or Engineering?

The answer depends on whether you program

  • for fun or work
  • for yourself or for someone else
  • something you need or to specifications
  • for games or productivity
  • because you love programming or to pay the bills

My first professional programming experience was 90% engineering and 10% art. We weren’t allowed to be too creative because maintainability and easy to understand were critical requirements of our code. Real-time avionics code shouldn’t be inspired very often. Once, I had to make a complex calculation run in 1 cycle when it was over running the allowed cycle time. Real-time code has stringent time requirements. That meant significant optimization was needed to fit the longer calculations into the allowable time. The cost was maintainability and I think only 1 other person out of 8 reviewers actually validated the complex equations used. A few months later, 512 test cases validated the results perfectly. Due to the nature of this code, everything was performed following stringent processes.

Later, I worked with a very talented team were we’d whiteboard a design then made it happen. This was 80% art and 20% engineering. Occasionally, we’d create a UML diagram and work on some new stuff that had never been done before. Very interesting work with very little process.

Next I worked in a 20 person company producing database access software. Blah. Boring. I think the boring part made it more engineering than art. When I started there, they had ZERO process and had trouble reproducing the code, much less predicting when a new feature or bug would be ready for use. I introduced process to help predictability. Since we created the requirements and the designs, it was higher art. Perhaps 30% and 70% engineering.

I hack some code for fun now, no professional programming anymore. That hacking is to solve a problem, an itch, as it
were. Most of the time, these are 10-30 line scripts and not really very complex. 100% engineering. Every once in a while, there is a new problem that I’ve never seen or solved before. When the solution comes to me, there’s a little happiness … call it art or inspired. Those are 90% art and 10% engineering. I have a process, but it isn’t formal.

So, you see there really isn’t a single answer to whether programming is art or engineering. There appears to be a correlation between the amount of process involved and the amount of art that I assign to the effort. Perhaps this differentiates between art and engineering?

Does the programming language make a difference? Is Ruby art, but Java engineering? PHP? Perl? Shell? Fortran?

What do you think? Drop some feeback.

Trackbacks

Use the following link to trackback from your own site:
https://blog.jdpfu.com/trackbacks?article_id=354