What is a software crafter?

Tags: programming, coding, craft
Published: 2021-08-18 15:23:53

Even if we use terms such as _software engineering_ and _software architecture_, software development is really much more of an art form than a science.

This content is part of <a href="https://gum.co/DevConcepts-Part-01-SoftwareCraft" rel="noopener"> the first volume</a> of my <a href="https://dev-concepts.dev" rel="noopener">Dev Concepts series of books</a>.

![Craft](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e5lqp1qr11huysul2b8u.jpg)

## What is a Software Crafter?

Simply put, the software craft is about *_more_* than just software development and software engineering:

![Software development/engineering vs Software craft](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dyusn5wsoy2f9bc15864.png)

After 15+ years in the field, software development feels much more like an art than like a science to me. In IT, each problem has an almost infinite number of solutions. Some are better than others, and it takes experience to know. To me, that's the fun part of the job. Every day is filled with new interesting puzzles to solve. It can be frustrating at times, but when approached with the right mindset, it can be a real pleasure.

I personally consider myself as a software crafter. Much more so than as a software developer/engineer. The word *craft* has a very _profound_ meaning for me.

I consider it as a combination of the following definitions:

* Skill in planning, making, or executing
* Make or produce with care, skill, or ingenuity

As a crafter, I don't _just_ want to be a coder, generating endless lines of meaningless code. I don't want to be a generator of one-line wizardry that nobody can understand. Writing working software is simply *not enough*.

I don't want to deliver solutions that are very costly or even impossible to maintain. I don't want to create solutions that don't deliver real value to their users. Collaborating with customers is not enough for me.

That is why I've signed the [*Manifest for Software Craftsmanship*](https://manifesto.softwarecraftsmanship.org), along with at least 30K other crafters.

What I want is to be a _professional_, part of a community of professionals. What I want is to craft *_beautiful code_* that stands the test of time. I want to help raise the bar higher for everyone. I also want to help others learn the craft. Finally, I want to build _partnerships_ with my customers, so that I can continually bring value to them. If you're familiar with the [Agile Manifesto](https://agilemanifesto.org), then I would say that I value the craft over simple "execution". I've called my company [DeveloPassion](https://developassion.be) precisely because I have a passion for software development and want to leverage that passion to build _great_ software for my customers.

> Your work is craft, and if you hone your ability and apply it with respect and care, then like the skilled wheelwright you can generate meaning in the daily efforts of your professional life. Cal Newport, Deep Work

Creating what I consider to be well-crafted (or beautiful) code/software requires careful thought and attention, which in turn requires _sharp_ skills. Developers that don't consider software development as a craft won't put in the efforts required to fully grasp what they're doing and will be satisfied with much lower quality results.

Considering software development/engineering as a craft has an important impact on what you want to deliver: not only value, but also quality, maintainability, beauty, and even _elegance_. Beautiful/high-quality software is multi-faceted, as I explain in Dev Concepts. Approaching software development as a craft also deeply influences the pride that you can feel in your work.

I want to encourage each and every single one of you to really consider software development/engineering as a craft rather than as a "production" job, and to raise the bar higher by aiming for quality over quantity. Crafters should also be able to communicate effectively with customers, and subject matter experts. Professionals understand that strong communication skills are _paramount_ for success. It's not only a question of execution! The net results will be happier customers, less costly developments, and pride for achieving great results.

Becoming a software crafter is not easy. In the next articles, I'll tell you everything I know about how to become one. It takes time and effort, but you can aim to become one on the very first day; simply by truly _caring_. Caring not only for the end result, but for everything in and around the development (i.e., tooling, methodology, approach, collaboration, documentation, etc).

## References

* [Manifesto for Software Craftsmanship](https://manifesto.softwarecraftsmanship.org)
* [The Pragmatic Programmer: From Journeyman to Master](https://www.amazon.com/Pragmatic-Programmer-Journeyman-Master-ebook/dp/B003GCTQAE?tag=dsebastien-20) by Andrew Hunt
* [Software Craftsmanship: The New Imperative](https://www.amazon.com/Software-Craftsmanship-Imperative-Pete-McBreen/dp/0201733862?tag=dsebastien-20) by Mike Hendrickson
* [The Craftsman](https://www.amazon.com/Craftsman-Richard-Sennett/dp/0300151195?tag=dsebastien-20) by Richard Sennett
* [Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman](https://www.amazon.com/Apprenticeship-Patterns-Guidance-Aspiring-Craftsman/dp/0596518382?tag=dsebastien-20) by Dave Hoove and Adewale Oshineye
* [What is Software Craftsmanship](https://www.linkedin.com/pulse/what-software-craftsmanship-david-max/)
* [Craftsmanship - the Fifth Agile Manifesto Value?](https://www.infoq.com/news/2008/08/manifesto-fifth-craftsmanship/)
* [What happened to Software Craftsmanship](https://qz.com/work/1371151/what-happened-to-software-craftsmanship)

## Conclusion

In this article, I've tried to share my vision of what it means to be a software crafter. It means different things to different people, but there's a core element to it: the constant focus on going above and beyond, and improving constantly.

You can approach software development as a job, like any other, something that brings food on the table. At that's fine, really. But approaching this job as a craft will help you achieve better results, and take pride in your work.

What is your opinion about this topic? Are you also a software crafter? Do you want to become one?

That’s it for today!

PS: If you want to learn tons of other cool things about product/software/Web development, then [check out the Dev Concepts series](https://dev-concepts.dev/), [subscribe to my newsletter](https://dsebastien.net/news), and [come say hi on Twitter](https://twitter.com/dSebastien)!