4 ms·
> This is caused by the malleable, abstract thought-stuff of code, and it occurs even within the work of the individual coder: as soon as you master something,
by gurkendoktor 9y ago
> This is caused by the malleable, abstract thought-stuff of code, and it occurs even within the work of the individual coder: as soon as you master something, it should be abstracted into a library or framework - a product.
You can also turn this around: Maybe software craftsmanship is not about writing great code (for the reasons you mentioned; the article also doesn't phrase it that way), but about skillfully using existing tools. Peek into the open source libraries you use, disassemble the closed-source ones, take your time to really understand that occasional bug.
There are many tools that rarely change (extreme examples: Unix, RDBMS, programming languages), and grokking them is not something that can be productized. Yet I see few people/businesses making that investment; it's easier in the short term to treat everything as a black box and add more abstraction glue, and that's what I see many people/businesses do.
- hyperpallium 9y agoYes, there are meta-skills of tool use. Another enduring eg: vi. Muscle-memory investment is retained - very like tool-use in a physical craft. I think git will last forever(!) too. Still seems more like a journey man or handyman than craftsmanship, but maybe that's not fair of me. I agree there is deep craft in understanding tools. Hmmm, maybe developing/maintaining those enduring tools is even closer to craftsmanship? Unfortunately, enduring codebases get worse over time by conglomeration! The antithesis of craftsmanship. People who have written the same kind of enduring tool several times (from scratch) would probably be the epitome of software craftsmanship. e.g. plan 9 and go. But, gluing black-boxes is more productive.