“For much of my career I viewed software development as a craft: a constructive endeavor with fixed standards of excellence. I thought that over a lifetime, I could assiduously refine my skills, inching toward some level of subjective mastery until eventually myself and others would agree that I had become “a real expert.”
Unfortunately it doesn’t work that way with software. “
He writes that in order to stay useful, current and relevant developers need to continue to learn and grow.
“To remain relevant, I have to reject my previous assumption that I would spend a lifetime refining my craft. … But by diligently throwing out the old rules and embracing the new ones, I hope to come close.”
You really should go read this article, It is a great piece. But, I wish that Jalkut wrote another paragraph or two because I think he misidentified the craft.
Daniel defines the craft as “tools”, “techniques”, “rules” that may include references to topics such as “Memory management”. “Multitasking”, “Concurrent programming”.
This is not how I define craft. The craft is the deconstruction of the problem married with knowledge of the tools to build a good solution. As the tools change, as the problems shift, our craft remains to understand this and build a maintainable solution. Donald Knuth writes the mentality is “a peculiar way of thinking, a certain way of structuring knowledge in their heads, a mentality.”.
So while I agree with Daniel Jalkut, we need to hold loosely to the current tools and techniques — the underlying craft is the ability to understand problems and use tools to build stuff.
Don’t hold too tightly to the current techniques. Continue to learn. As Ebert wrote “all clear-minded people should remain two things throughout their lifetimes: Curious and teachable.” or as Steve Jobs quoted in his Stanford commencement address “Stay Hungry!”