Is hacking an art, science, or engineering?
It's been my opinion for a while that hacking (of the programming/coding kind) is more of an art than science or engineering, and that I'm more of an artist than a scientist or engineer. There's no scientific method to programming to warrant the title of "science", and the process of writing software is so dynamic and open to creativity that it doesn't seem like "engineering". Occasionally, I come across others who are trying to push the same idea.
Show Rest of Post
I found all kinds of great ideas/quotes in the article so I'm going to quote them here and offer some of my own thoughts...
The way to create something beautiful is often to make subtle tweaks to something that already exists, or to combine existing ideas in a slightly new way.
This is basically another way to say "good programmers innovate, great ones immitate" which is another idea I've been promoting lately. Reinventing the wheel is probably one of the most frequently repeated sins among programmers (myself included) and it seems like the great programmers are the ones who realize that it's much better to take existing work and make it even better, assuming that there is such "existing work". Personally, I understand this at a logical level, but I haven't reached the level of enlightenment required to internalize this idea...
I've found that the best sources of ideas are not the other fields that have the word "computer" in their names, but the other fields inhabited by makers.
I've seen the same as a tutor in the university writing centor. Bleeding edge theories in composition instruction have so much to teach to programmers, because natural language composition has so much in common with writing in programming languages.
Universities and research labs force hackers to be scientists, and companies force them to be engineers.
That's one of the things I hate most about being a student in "Computer Science". In just about any other field that involves creation (i.e. writing, painting, etc) students get to choose their own projects. Why isn't this an option for those learning programming? If educators saw programming as an artform, or at least a creative process, I think this would change.
When we interviewed programmers, the main thing we cared about was what kind of software they wrote in their spare time. You can't do anything
really well unless you love it, and if you love to hack you'll inevitably be working on projects of your own.
That gives me a warm fuzzy feeling inside because I've constantly had my own projects since I started programming 10 years ago. On the other hand, the sad truth is that that's not how it is for many CS students. Don't ask me why, but I've come across very few students who code for fun in their own time...
Maybe it would be good for hackers to act more like painters, and
regularly start over from scratch, instead of continuing to work for years
on one project, and trying to incorporate all their later ideas as
revisions.
Engineering and MIS types often make fun of coders because we appear to have the tendency to work on things that interest us, rather than sticking with one project all the way through. But if you think of us as artists, it makes sense... How many painters work on the same painting for any period of time? What sculptor would work on a sculpture that's utterly uninteresting? Why should hackers be any different?
Sometimes you get excited about some new project and you want to work sixteen hours a day on it. Other times nothing seems interesting.
I think this is something non-hackers need to understand, because it's so true (IMO). Sometimes I'll go for days without coding at all... sometimes I'll code non-stop for days. Creative inspiration is a lot more important in hacking that most people realize. You can't make a hacker hack anymore than you can make a painter paint.
Part of what software has to do is explain itself. So to write good software you have to understand how little users understand.
This sounds an aweful lot like what I said in my "User Friendly Programmer" essay.
Posted Sat, May 17, 2003 00:23 by Thei Antispamist
I agree that programming cannot be classified as 'engineering' but I also wouldn't put a 'art' tag on the front of it either. I think it's more of a philosophy/linguistics kind of thing.
Aren't we just trying to answer some great question in a way that another form of intelligence will be able to comprehend and reply? Perhaps I would replace 'philosophy' with 'logistics' but I think the use of 'philosophy' implies what you are trying to convey; that programming can be a form of expression or discovery.
Besides, art people are crazy. :)
[moderate]