Through a very fortunate accident, I’ve been involved with the Software Craft movement almost since its beginnings. It’s been almost 10 years of non-stop learning, meeting people who I respect and learn from, and meaningful conversations. Yet I always felt something was missing.
Software Craft is a loose, young, complex, and evolving social movement. It represents different things for different people. Some see it as a belief system. Others see it as a renewal of old guilds. Some see it as a metaphor, while others recognize its realities. For others, it is a pragmatic idea, required for an industry in its teenage years.
All these viewpoints, despite being contradictory, make sense. From a logical perspective, I understand all of them. But what was missing was my personal answer to an important question: what is so appealing about the Software Craft idea?
Continue reading “Software craft is for me…”
It recently dawned on me how often I say or hear the words “our industry is young”.
There’s truth in these words. Architecture, medicine, craftsmanship, engineering – they all started thousands of years ago. They had time to make mistakes, to learn from those mistakes, to come together as a profession and define it, to build tools and practices and to improve upon them, to build curriculum for schools and use it to teach the next generations.
But these words are tricky. They are tricky because they express the perfect excuse. “The industry is young, man, what can I do if we have a lot of bugs? I’m not to blame if I was born so early”.
Continue reading “One less excuse”
There’s nothing to read here for you. Really, nothing at all.
You are a perfect programmer. Your code is the best you’ve ever seen. We all bow to your wisdom and awesomeness.
There’s nothing more for you to learn. There’s nothing left to practice. There’s nothing left to read, no conference that can teach you things, no community that can advance your skills.
There’s nothing for you in this blog post.
Continue reading “For The Perfect Programmer”
“Design” is an overloaded term that causes confusion in software development. It has at least three meanings: design as result (as in “the design of the application is easy to change”), design as process (as in “I designed it using Test driven development”) and design as aesthetics (as in “I love this design”).
A clear vocabulary is the sign of a mature profession. Therefore, as an effort to advance our profession, I propose fixing the confusion using a more precise set of terms. You’ll find a glossary at the end of this blog post.
Continue reading “An Attempt At Clarifying The “Software Design” Vocabulary”
In my previous post, I set out three problems that I believe software crafters worldwide should work on in the years to come to fulfill the promise of “raising the bar”. This is a quick update on its aftermath.
Continue reading “The aftermath of ‘the three problems’ blog post”