4 ms·
Consider whether there is a trade-off between software that delivers value, is aesthetically pleasing to the craftsman, and its cost in time and/or money. You k
by raganwald 16y ago
Consider whether there is a trade-off between software that delivers value, is aesthetically pleasing to the craftsman, and its cost in time and/or money. You know, "Value, craft, cost, pick two."
If this tradeoff constrains the development of software, then this essay is important because it implies that to deliver software with value, it is more expensive to do so with craftsmanship. If this tradeoff does not constrain the development of software, the entire essay is irrelevant because you can deliver value at good cost while maintaining any standard of craftsmanship you like.
This much is obvious. What is not obvious from the article is that the author has convincingly defined what craftsmanship is and shown that the tradeoff is in effect. Instead, I read cherry-picked examples that beg their own conclusion. Any number of people can play that game if you don't provide a good definition of craftsmanship that is independent of the tradeoff and the value.
For example, if I define "craftsmanship" as reformatting software that already delivers value to be more readable, we have a definition that is not independent of the tradeoff, because readability for future programmers is a component of value. This reframes the discussion from craftsmanship vs. value into how much value is sufficient. That argument has nothing to do with craftsmanship, you can talk about whether software should work for all browsers or just IE, or how fast it is, it's a product management problem, not a question about the nature of programming. Engineers have the exact same argument about how strong a bridge ought to be.
Or maybe I define "craftsmanship" as spending extra time making value-less changes to code. Again I've dragged value into my definition, and cost as well. This argument now becomes a True Scotsman fallacy. If I say that I'm a Java programmer and that I use patterns as part of my craft, I can also claim that they save me time, so you say this isn't part of my craft because it saves me time. You mean the over-engineering patterns, just the ones that are in there for the sake of having patterns. WTF, we can't argue on that basis, the goalposts keep moving.