Craft I: Create things for the sake of creating
by sebsonconferences
@__edorian rants in his latest Blogentry that re-creating tools in PHP that are out there in other languages already is kind of useless.
He has got a point there. Don’t write half assed re-implementations of Stuff in PHP that is already out there in . I do not agree totally with him. So why write the stuff anyway?
If I may use Richard Sennett’s Book the craftsman and cite the smart man directly:
“In the act of making it work, nothing else matters”
People creating things seem to be hooked up in the process, totally immersed by the task at hand. People speak of being “in the tunnel” or in “flow-state”. This state of mind is scientifically researched and enables the person do extraordinary things, way more accurate and creative than in a normal “get shit done” situation. It’s not so much about the concrete result, it’s about the process of creating the things. This is a good thing: Focussing totally on the small steps required to get something (like for example a SASS compiler implemented in PHP) alive. Make each of these steps as good as you can. I understand this can lead to very bad results, especially if you don’t take moral implications into account, but why not let people invest time and mind in things that matter for them, just to sharpen the blade of skills.
“People who make things usually don’t understand what they are doing”
Sometimes you have to create a thing in order to find out about the small details that make it so cool, hard to create and the implications of the result itself being in existence. Sometimes it is pure curiosity that drives us to create something and find out what we can use it for afterwards.
A Example: The creator of the glue, used on post-its, had to create a glue-fluid that was not adhesive enough to be used in a product. But for the sticky-note, that had to be removable, the thing was just right.
We need to create something and then use it in order to find out what it is and how it can be used.
“There is a distinct loop in between problem finding and problem solving”
This is a very important thing. Learning a craft is done in phases of doing and thinking. One could say you find the classic PDCA (Plan-Do-Check-Act) circle there, but this is way older than this. This Feedback loop, the metaphor Sennett uses “”in between hand and mind”", is there as long as humanity started to create stuff like the first stone wedges. First you find a problem, you try to solve it, then you look at the result and discover a new problem from it. The new “problem” might be an improvement to the solution you came up with or a new challenge resulting from your creation. Or even an absolute new solution.
2 Years ago I would have commented the post with a FULLACK. Today I am opposing this kind of behavior because it suggests that everything that is out there is already perfect and done. It isn’t and I am happy about everyone to tackle a problem from a new angle. In the End PHPFI was the same thing: We already had Perl and Perl had most of the things (and much more) when PHPFI started. Nowadays the situation is a bit different.
You have a nice point there that I didn’t go into the blog post because it was pretty much 80% trolling on top and 20% preachy, hopefully motivational, cleanup at the end.
Since you called me on it, and after reading your reply a couple of times, let me take try to explain what I was trying to express or why I think we might still “FULLACK” agree on the subject.
> “In the act of making it work, nothing else matters”
All power to you. If you build something for the sake of building it, or because it’s fucking awesome: All power to you! Doing stuff because it is fun gave us nodephp.org and I wouldn’t want it any other way.
We need crazy and we need people to redo things because it might turn out they discover something in the process.
Take nodejs for example. Everytime someone says “non blocking IO” I want to scream “IO always blocks ffs.. it’s just waiting in the backgroud… you know.. like threads” but what node did was simplify the concept of multi threading so drastically that I was actually usable for a lot of people without dying a slow race condition death.
—
The thing i was “complaining” about is not motivated people doing things they enjoy but lazy people disregarding anything that would require learning or even stepping out of their comport zone. The example I made with SASSing PHP was not because someone thought it was a cool idea but solely because “Installing ruby is hard and I can’t be bothered to learn something new so I’ll just throw together a half backed solution as quick and dirty as I can because I need to get work done” kind of deal.
—
I’ve been doing a big share of NIH in my time and for a deployment tool chain and other tooling I still like to have things that are very tailored to what I want them to do. They are specific solutions to a specific use case and thats fine. Putting them on github and proclaiming this to be the new “best solution for everyone” isn’t.