I love the connection you make between The Joy of Painting and programming. And I agree: programming is kind of terrible.
On a larger scale in technology we made some tremendous progress: Everybody can become a painter, everybody can become a writer, everybody can become a musician, everybody can become a movie director, etc. Sure, in all these cases you still have some investment to make, but compared to what it used to be in the past, you can start learning most of these things with just a computer and some free or relatively cheap software. That’s great.
What’s bugging me about this, is that we as software designers and engineers create the digital tools for people to explore and learn these domains. Take Apple’s Garage Band for instance to introduce people to producing music: It’s a tool that’s sitting right between being professional enough for people to produce real music or podcasts — sure, eventually they will likely upgrade to a more professional tool, but you can get quite far, especially if you learned with it — but most of all it’s simple enough to get started. Given a little bit of interest in the craft of producing music, Garage Band tries to be fun, it tries to get out of the way, and it tries to nudge you quickly to little successes that feel good and provide the momentum to continue learning.
Same with iMovie (sorry, yes, I’m an Apple fanboy, but that doesn’t mean there aren’t other good examples; I just know these better than others): it’s professional enough to help you create some pretty good results, but it stays simple enough and invites exploration to help you get better at the craft of editing video without giving up in frustration.
For some reason tools for creating programs do not work like that.
Vim, for instance, is not inviting new users to explore programming. Instead it stares at you expectantly when you start it, and then immediately screams at you “If you don’t know what you’re doing, you’re in the wrong place. Go away!”. And then it silently enjoys your struggle to find your way out.
I know, vim is probably the worst example I could’ve picked, and that’s exactly why I did, but even if other editors and programming environments are a little more welcoming, we are so far away from the fun, exploration, and “out of the way” I described above.
Sure, there are things like Sketch, specifically designed for learning, and they provide a much better experience to get started. But they are on the other end of the spectrum, and often fall short when you want to start doing “real stuff”. I don’t think they hit the balance between playful and serious like GarageBand or iMovie do.
Programming today is too much about learning the tools and too little about learning the craft. When Bob the Painter tells you how to draw one of his beloved trees, it’s not about the exact properties of the brush or the canvas or the color. Bob the Programmer has a lot of questions about “your environment” first, want’s to know your editor settings, which are “clearly not optimal, because you’re still using the defaults”, and gives a long lecture about “the right programming language” and the frameworks, libraries, and dependencies “absolutely needed for the problem at hand”, before you even get to the point where you think about what it really is that we’re trying to do.
I’m convinced we can create tools for programming that are hitting that sweet spot between easy to learn and powerful enough. However, we are stuck in a local optima, sitting on top of a comfortable hill with our highly optimized tools for manipulating symbols in text editors to craft cryptic poetry that makes machines dance.
Seriously, this can’t be the best way to do it. But it’s hard to leave this world behind, where we have all these comfortable things like diff and git and filesystems and the magical power of piping streams on a unix command line. Why would we walk back down all the way into the deep and cold and dark valley of uncertainty, into unknown directions, just to cross over to hopefully find one of the high mountains around us which I’m sure are there, somewhere.
That comfortable hill is very crowded these days. Only very few people are willing to leave the hill behind to find out what else is there. Kudos to those brave explorers! I’d expect a few of them likely gathering here.