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.
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).
We already have mass software production.