Is programming a science or an art?

Discussion in 'Mac Programming' started by liptonlover, Aug 12, 2008.

?

What is programming?

  1. Science

    30 vote(s)
    69.8%
  2. Art

    34 vote(s)
    79.1%
  3. Normal job

    12 vote(s)
    27.9%
  4. None of the above

    4 vote(s)
    9.3%
  1. liptonlover macrumors 6502a

    Joined:
    Mar 13, 2008
    #1
    I've always wondered about this... I can see it both ways. On one hand, art generally doesn't deal with math and numbers like programming does. Yet programming isn't a day-to-day job either, nor is it generally a groundbreaking area of life where programmers are making revelations. I don't think there's anyone that programs to discover new things, or just because they need a daily job. Programmers are passionate about their work, and love it. So what do you think?
     
  2. TEG macrumors 604

    TEG

    Joined:
    Jan 21, 2002
    Location:
    Langley, Washington
    #2
    Programing is everything. It is science (the principles behind it), art (getting everything to work just so), job (as evidenced by Windows), and total crap (as even though everything is written correctly, it still doesn't do what it is supposed to do).

    TEG
     
  3. lee1210 macrumors 68040

    lee1210

    Joined:
    Jan 10, 2005
    Location:
    Dallas, TX
    #3
    I checked both, but the question was either/or so the answer is "No, it is both".

    Computer science is a science.
    Programming is the application of the science.

    Is casting a mold and using it to form a plastic sculpture art or science? It seems to be an art, but requires the application of chemistry, thermodynamics, etc. In this case the science is applied more casually, whereas most programming requires a more rigorous application of Computer science.

    I guess it really depends on what sort of programming. You can program without any knowledge of computer science, but I would be unlikely to want to use the result.

    -Lee
     
  4. lazydog macrumors 6502a

    Joined:
    Sep 3, 2005
    Location:
    Cramlington, UK
    #4
    Right now I'm battling with getting a project into Eclipse and have come to the conclusion it would be easier to start a fire by rubbing two sticks together at the bottom of a swimming pool. So, art or science? ... more like frustrating or soul destroying!

    b e n
     
  5. Xander562 macrumors 68000

    Xander562

    Joined:
    Apr 2, 2006
    #5
    Making a program carry out a specific function is a science. Making a program that simultaneously is functional and easy to use/elegant is an art.
     
  6. liptonlover thread starter macrumors 6502a

    Joined:
    Mar 13, 2008
    #6
    If you want to take it far enough, everything is a science. But we need to decide if we're talking about an abstract or solid thing. Programming requires a lot of science. There's no question about that. But the programmer ideally is striving to create a beautiful, unique app. I think it's close, but for me art wins.
     
  7. lazydog macrumors 6502a

    Joined:
    Sep 3, 2005
    Location:
    Cramlington, UK
    #7
    I guess programming isn't an art because all programs can be auto generated by a really dumb program. The very large phase space makes it appear to us that when we write a program we are creating something new, when in fact we're only discovering what's already there.

    b e n
     
  8. Darkroom Guest

    Darkroom

    Joined:
    Dec 15, 2006
    Location:
    Montréal, Canada
    #8
    i think "craft" would be a better choice of words than "art"
     
  9. dejo Moderator

    dejo

    Staff Member

    Joined:
    Sep 2, 2004
    Location:
    The Centennial State
    #9
    Update the poll to have a "Both" choice and I can answer!

    I had a university professor tell us that the best programmers use both the left (scientific) and right (artistic) sides of their brains equally. I still think he was on to something.

    Something like "a thousand monkeys sitting at typewriters"? I don't think so!
     
  10. FireArse macrumors 6502a

    Joined:
    Oct 29, 2004
    #10
    Can it be art?

    I think it can be art. At university, lecturers have described some approaches as 'elegant'.

    What was the Space transporter that auto-tagged itself to the ISS? I think the software controlling all that was art. Pure Genius.

    There are some Computer Science principles that I think are art - DeMorgans or Karnaugh maps - they looked 'arty' to me when I first saw them :)

    F
     
  11. liptonlover thread starter macrumors 6502a

    Joined:
    Mar 13, 2008
    #11
    dejo you can select both options. Multi choice poll.
     
  12. Lari macrumors newbie

    Joined:
    Aug 12, 2008
    Location:
    US
    #12
    I've always thought of it as both. When I was interviewing back in the early 90's, I met lots of programmers that were of the science type. Extremely dull, lacking imagination, 9-5 mostly for the money programmers that fit in at big businesses.

    Then there are the artists. They are the one that work for endless hours programming for the pure joy of being able to make the machine do new things (at least to them). They are the ones that go in in the middle of the night to test something, not because their employer called and forced them to come in. And yes, their code can be quite elegant.

    I guess I think it's more in attitude than it is in how the code actually looks. I'd throw most hackers (true hackers not the media spin on hackers) into the artist group.
     
  13. liptonlover thread starter macrumors 6502a

    Joined:
    Mar 13, 2008
    #13
    In the early '90s people thought science was what computers should be for. Computers were geared at business and scientists back then, so business men and scientists were the ones using them, manipulating them, programming them. Like I said, I don't think very many people program purely as a job and means of making money any more.
     
  14. Aea macrumors 6502a

    Aea

    Joined:
    May 23, 2007
    Location:
    Denver, Colorado
    #14
    I'd say both. It's a very creative job, but still requires very strict principles and a very concrete understanding of the language and media you're working on.
     
  15. Eric5h5 macrumors 68020

    Joined:
    Dec 9, 2004
    #15
    In that case nothing is art, since that argument could apply to everything. All writing could be autogenerated, all paintings, everything. The odds of a functional program being autogenerated are about the same as Hamlet being autogenerated, I'd say.

    --Eric
     
  16. Tosser macrumors 68030

    Joined:
    Jan 15, 2008
    #16
    I'd hope more people would consider it a craft and took pride in the craftmanship. Hopefully that way we'd get less bloatware, less bugs and less security holes.
     
  17. HiRez macrumors 603

    HiRez

    Joined:
    Jan 6, 2004
    Location:
    Western US
    #17
    Clearly it is both, but you can decide to focus almost entirely on one aspect or the other if you want. Personally I don't think you can really be a great programmer without a good dose of both. You can go to school for Computer Science, but can also study to be a Software Designer, which implies some artistry. You could say you don't need to be a programmer to be a software designer, but I don't know any who aren't.
     
  18. savar macrumors 68000

    savar

    Joined:
    Jun 6, 2003
    Location:
    District of Columbia
    #18
    I think the answer is, "programming is engineering". Engineering involves some art to it, because rarely is there a formula which you can plug in to optimize all parameters. You have to experiment a bit to see what works, and tweak... those things require human intuition.

    (If it didn't require human intuition, then somebody would have written a program already which is capable of writing all other programs.)

    But I resent those who say that programming is an "art". This viewpoint is used to justify defects existing in software, or suboptimal design.

    Programming is like building a bridge. It is possible to design it all up front, then construct it, and it will operate perfectly for decades within its specified parameters of operation -- bridges rarely fail unless some external catastrohpic event occurs.

    On the other hand, modern software fails ALL THE TIME.

    The biggest reasons for this are:
    1) It's still a young field,
    2) Way more demand than supply right now -- so idiots get into the field who wouldn't normally make the cut in a real engineering field (Also, the bar to entry in software is lower than, say, bridge building. You can mess around constructing software at very little cost. Buildling large scale bridges on your own is preposterous.)
    3) No strong standards organizations like other engineering disciplines have
    4) Wrong business mentality -- most people hiring developers are looking to do the job as cheaply as possible, so they hire incompetent developers. If you RFP'd the construction of a new building, you'd be DAMN sure that the developers were top notch before you let anybody set foot in the building, but if you RFP'd a new information system you'd probably toss it to the cheapest bidder.
     
  19. savar macrumors 68000

    savar

    Joined:
    Jun 6, 2003
    Location:
    District of Columbia
    #19
    I agree with you that "Elegant" may be an artful measure, but "easy to use" or "accessible" is much more quantifiable, and thus it becomes an engineer's optimization problem.
     
  20. savar macrumors 68000

    savar

    Joined:
    Jun 6, 2003
    Location:
    District of Columbia
    #20
    Interesting... see that viewpoint is the one I usually associate with bad software. If it were approached as a rigorous discipline, with standards defined and compliance measured, we would have much better software than we do.

    "Pride" makes it sound like its a one-of-a-kind product, which is silly for software. Software's single greatest appeal is it's extremely low marginal cost and the symmetry of identical software performing identical tasks.

    I suppose that there is a distinction between business apps and otherwise.

    If you've worked on business apps before, you quickly realize that there is very little originality in it. It's all just tweaking the parameters based on what's important to that client. The real genius for that type of development is putting in place the policies and tools that allow you to build something that is cost-effective (it generates more value than it costs).

    The guys who developed Delicious Library on the other hand... well I admit that is a kind of "craft", where pride matters. They were working on something highly original where being defect-free doesn't matter quite as much as producing something novel and intriguing.
     
  21. zmttoxics macrumors 65816

    zmttoxics

    Joined:
    May 20, 2008
    #21
    It's a trade / skill. No different to welding. There is science behind it, it can be considered an art, but really its a skill set.
     
  22. ChrisA macrumors G4

    Joined:
    Jan 5, 2006
    Location:
    Redondo Beach, California
    #22
    What is it you are writing? I spent quite a few months working on a self diagnostic system for a radar system. The "user interface" was an LED that would, under the right conditions light up or blink. Is this "art".

    I also wrote a device driver for a custom one-off camera. Are device drivers "art"?

    Right now I'm working on a system to automatically generate the programming that gets loaded into a device that procees rocket telemetry. It's something like a compiler but very specialized to just one purpose. "art"? I doubt it.

    What about the programs inside your microwave oven controller or the ones in your car?

    Most people, I think of "software" as something that runs on a desktop computer. Most of it does not.

    None of this is "science" either. Science tell us about the natural observable world. Programming is engineering. Much of it is not even that, it's done just "seat of the pants" and ad-hoc.
     
  23. Tosser macrumors 68030

    Joined:
    Jan 15, 2008
    #23
    Really? Why does considering it a craft equal bad software?

    Hmm, when I speak of pride in good craftsmanship, I think of, say, fine carpentry with knowledge of woods, knowledge in general about what he does, know how and experience. I, for one, think that you (or me, for that matter) is misinterpreting the words "craft" and "pride" I wrote earlier.


    No it doesn't, and no it isn't (because the first is not true). To be able to take pride in a "job well done", all the way through the day matters much to how well something is done. If you take pride in what you do, you're less likely to cut corners, be sloppy and so on.

    This is entirely based on the flawed premise that "pride"=One-off products. And because of the premise is flawed, this is utterly irrelevant.

    See above.

    And again …
     
  24. dejo Moderator

    dejo

    Staff Member

    Joined:
    Sep 2, 2004
    Location:
    The Centennial State
    #24
    Part of programming should be engineering, a discipline that involves scientific methods. Hence, the connection to science. But if you are a really good programmer, you cannot rely solely on the engineering part but should also incorporate an artistic part. As for being done "seat of the pants" and ad-hoc, that is not restricted to programming alone. Many skills can be applied in this manner too. And that says more about the person than what they are doing.

    I studied Computing Science in university. We took one class that was attended by Computer Engineering students as well. We found their approach much more ad-hoc than ours.
     
  25. jzuena macrumors 6502a

    jzuena

    Joined:
    Feb 21, 2007
    Location:
    Lexington, MA, USA
    #25
    To code, or not to code -- that is the question...

    Computer Science -- the study of algorithms, is as its name implies a science. As others above have said programming is the application of Computer Science, which is the definition of engineering. I suppose a particular program could be seen as a work of art, but programming itself is more of an engineering discipline.
     

Share This Page