I have been on both extremes of this division. As a nomad against a group of settlers: “So just because you guys never heard about these most frequent design patterns (and most likely even about the whole idea of design patterns), it means that I shouldn’t ever use them… and instead use your preferred way of hundred-lines blocks of procedural code with dozens of ad-hoc modifications because the whole thing is already too heavy to be refactored (and you probably haven’t heard about refactoring either)?” And as a settler after a nomad raid: “So Mr. Smart created this weird framework here, completely idiosyncratic and undocumented, and now he moved on to a fresh project, and it is my job to understand what he tried to do here and solve all the resulting problems, so Mr. Smart can get the credit for being smart, and I get the lowly work of cleaning up his mess. I wish he had to clean up his own mess, just as I have to clean mine.” And the funny thing is that now as I write it, I understand how the other side probably felt.
It is about long-term responsibilities. Programming is not just “create this magical stuff”, but also “maintain this stuff when it starts falling apart”. Some people are shining good at the former task, and completely suck at the latter, and then someone else must pay for their ticket to fame.
(Not surprisingly, I feel similarly about politics. Designing an utopia is not a hard problem if in a case of disaster you are allowed to say “meh, whatever” and go away, leaving the starving millions behind.)
I have been on both extremes of this division. As a nomad against a group of settlers: “So just because you guys never heard about these most frequent design patterns (and most likely even about the whole idea of design patterns), it means that I shouldn’t ever use them… and instead use your preferred way of hundred-lines blocks of procedural code with dozens of ad-hoc modifications because the whole thing is already too heavy to be refactored (and you probably haven’t heard about refactoring either)?” And as a settler after a nomad raid: “So Mr. Smart created this weird framework here, completely idiosyncratic and undocumented, and now he moved on to a fresh project, and it is my job to understand what he tried to do here and solve all the resulting problems, so Mr. Smart can get the credit for being smart, and I get the lowly work of cleaning up his mess. I wish he had to clean up his own mess, just as I have to clean mine.” And the funny thing is that now as I write it, I understand how the other side probably felt.
It is about long-term responsibilities. Programming is not just “create this magical stuff”, but also “maintain this stuff when it starts falling apart”. Some people are shining good at the former task, and completely suck at the latter, and then someone else must pay for their ticket to fame.
(Not surprisingly, I feel similarly about politics. Designing an utopia is not a hard problem if in a case of disaster you are allowed to say “meh, whatever” and go away, leaving the starving millions behind.)