Hacker Newsnew | past | comments | ask | show | jobs | submit | flsvilling's commentslogin

Programming is not a craft. A craftsman produces some product, whereas a programmer designs some product that is then produced by a compiler or by copying a file. That the production of software is trivial and fully automated, doesn't mean that there is no distinction between production and design.

We already have mass software production.


Overall, I strongly agree. I agree so strongly, I've been thinking about counter-examples, and I think I've found a few corner cases. ;)

Firstly, obviously, some aspects of programming are crafts-like. When we write conditionals as if(4 == x) instead of if(x==4) (for languages where variable assignment in a conditional is legal but not what you want), that's craftsmanship. Analogously, part of the process of designing a building is drafting, and that is a craft. A common error is to think that drafting is the primary task of architecture (at least, that's a common error about programming).

Less confidently, I would argue that the closer you get to the metal, the more craft aspects appear (without claiming that these aspects dominate), and that when we use a compiler, part of what we're getting is automated crafting. So we see three cases where we take back that crafting aspect into human hands...

First, for a new platform, sometimes some of the work is done by hand.

Second, many programmers _enjoy_ the craft of programming, and so practice it for fun. For example, code golf is craft.

Third, sometimes crafted is more appropriate. We usually prefer a cheap mass-manufactured physical object (high-quality, but not customized), but sometimes we want something handmade for the situation. I think that writing assembly by hand has some parallels with this (not to argue that writing assembler is more craft than design).


China still takes the lead in censorship.


I wouldn't bet on that. The US is full of 'self-censors', and that in a way is even more chilling.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: