On Craft
What do Open Source software and Craft Beer have in common? The characteristics of the developers. Craft Software is defined by passion, innovative tradition, openness & sharing, and community involvement.
"Craft" as in beer.
As dangerous a pastime as it is, lately, I have been thinking. I've been thinking about the state of things, as we are, and the future, and where we have come from to get here. Being in America, I've been thinking about freedom as it pertains to things like unalienable rights and working for an open core software company, I've been thinking about things like unalienable rights granted by software licenses.
Some History of Software
Free Software has a really interesting history. It's absolutely worth looking into, and I encourage you to hear it from videos and recordings or in person from the industry pioneers like Richard Stallman, Linus Torvalds and Eric Raymond. They have a perspective that I don't, but that I can appreciate. What's more, their ideas and faith in a sharing and open culture seem to have largely played out correctly. I'd be hard pressed to hear any argument that says that Open Source isn't a constant part of our daily lives, especially in the world of high technology.
I thought you said there would be beer?
I thought of another industry that follows a similar time-line of success. Beer. Specifically, craft beer. While beer has been around for centuries if not millennia, the concepts of Craft Beer have been somewhat recent. And the success has been wild. But it's not something entirely new or unique. It follows a similar success pattern as Free and Open Source software.
What's the tie between two small movements started in the '80s, seen as largely nothing to worry about by the current status-quo industry leaders, and now both wildly successful and ubiquitous?
I found both the free software movement and the craft beer movement focussed on some similar practices to build their success.
Dissimilar definitions
There's definitions both for Free Software and Open Source Software, but they deal with rights and rules about developing and delivering software without really getting at what drives innovative change. While I think Free and Open Source software (FOSS) does great things for developers' individual passions, community building, and fostering innovation, I think it does so largely as a side effect. That is, I don't know that you have to be only ever developing and using FOSS to still be an ethical developer or part of the greater and local tech communities. The concepts and effects of Craft (as in beer) capture the really powerful effects more directly.
The definition of craft beer, however, is focussed mainly upon output of product to set apart David's Neighborhood Brewpub from the industry Goliaths. Craft brewers, for instance, by default can't just publish their recipes in an open source way. What sets them apart from their competitors is their recipe book, but that doesn't preclude them from sharing. Brewers get together to show off their work and share lessons learned and offer advice, welcoming new brewers and consumers into their communities. The knowledge passed about techniques and skills is about becoming better as a whole industry of craft brewers and innovating on a product, while still being aware of the long and storied history of Craft Beer.
I want then, to talk about Craft Software Development. Software's output, however, is difficult to measure; there's no analogue to barrels produced. But I think focussing on the hallmarks of what sets a craft brewer apart from a Macro Industry Machine gets at the heart of the difference. Craft Software Development is a mindset of building not just machine-readable instructions to accomplish a task in a certain way, but building communities, giving back, and progressing the industry as a whole.
A Craft Software Definition
Craft Software Development is characterized by:
- Passion
- Innovative Tradition
- Openness & Sharing
- Community Involvement
1. Passion
A developer of Craft software is characterized by a passion for their craft. They care deeply about producing a quality product and the impact that product has on the local and global community, not just meeting deadlines and quotas and collecting a paycheck.
2. Innovative Tradition
High tech pushes innovative boundries necessarily. Craft Software development is characterized by interpreting the rich – if short – history of software development in unique ways (like this concept) and truly unprecedented ideas. It's progress without forgetting where we've come from.
3. Openness & Sharing
Open Sourcing or making Free/Libre all of your software is specifically not a requirement of Craft Software Development, but sharing everything possible is. For some, Open Sourcing their whole project may truly be a possibility. For many, this may mean Opening the Source Code of internal tools (like Twitter or Netflix) if not their platform. For others, this may be sharing internal processes and operational philosophy (think Google's SRE concepts).
The point is a focus on transparency and knowledge sharing the "hows" and "whys" more so than the "whats".
4. Community Involvement
Craft software is not developed in a vacuum. While some may be able to directly invite users into the development process by making their source code available and accepting issues and merge/pull requests, others seek to build communities of users to share support, ideas and strategies. Craft Software invites and connects with the communities around its developers, sharing ideas and giving back from lessons learned. This might look like attending and sponsoring meet-ups and conferences, or recognizing and providing time for developers to be apart of their software communities.
This often extends to being involved in the local non-software communities as well.
An invitation
I would be remiss if I wrote all of this and didn't invite the reader to be a part of it. These are my ideas on Craft Software. We'll call it version 1. I've had some time in beta development sharing the idea with a few people and getting feedback and now I'm presenting to the public. I want to know what other people think. Do you agree? Disagree? Am I off base? Is this obvious? Or is it a discussion worth having?
I gave a talk inspired by these thoughts at DevConf.US found here:
Let me know what you think on my twitter, comment or talk to me at a conference or meet-up!