Problems, Solutions. Ends, Means.

I have been doing a great deal of reading and thinking on some of the web services that have launched (or just announced) lately (App.net, Medium, Branch) and how we as content creators and consumers might interact with these new publishing systems and with content in general. And I'm in the pondering stage of a pretty lengthy post about them. But tonight's internet choose-your-own-adventure took a different turn.

My adventure tonight started on Branch, actually, in a conversation called Thinking Differently About Web Publishing. If you're at all interested in the dynamics of writing and/or consuming content for the web its a good read. There's even some ad/spam douchebaggery in the middle to spice things up a bit.

That led me1 to this article on Coding Horror: Please Don't Learn to Code2. That one led me to this and this and this. But it's that first post asking me to not learn how to code that really hooked me tonight.

I've had a nagging want to learn how to code for a while. I have previously dabbled in a couple of languages (some extremely beginner Python, some clumsily hacked together PHP, HTML, CSS) but never enough to do much beyond Hello World. I am no programmer.

But the part of the Coding Horror post discussing the problems with the idea that everyone needs to learn to code struck me:

It assumes that coding is the goal. Software developers tend to be software addicts who think their job is to write code. But it's not. Their job is to solve problems. Don't celebrate the creation of code, celebrate the creation of solutions. We have way too many coders addicted to doing just one more line of code already.

It puts the method before the problem. Before you go rushing out to learn to code, figure out what your problem actually is. Do you even have a problem? Can you explain it to others in a way they can understand? Have you researched the problem, and its possible solutions, deeply? Does coding solve that problem? Are you sure?

Well, of course! When I self-hosted this site I learned just enough to get the job done and fix any issues that cropped up. I had a problem. I found a solution. If I tried to learn PHP/HTML/CSS and then code up the site it would have never happened.

There are problems and tasks. Then there are methods and solutions. Ends. Means. Unlike brain surgery or rocket science, basic coding3 can be a tool that you can select as appropriate, apply to the problem at hand, and put down. Consider the problem trying to be solved. Ask whether a computer program or web application can solve that problem. Ask whether you (or I or whoever) can figure out enough of the required coding to actually do it. And then if all those boxes are checked start doing it.

In a lot of ways this is very like writing words. They say that to become a better writer one must write. A lot. I'm not too proud to admit that I have bought many books on writing. Many of them have writing prompts and exercises that are supposed to help get you writing so that you get practice writing. I hate them. And I don't do them. I have absolutely zero motivation to write for the sake of writing. I have probably written the same number of sentences from writing prompts as I have lines of Python from code exercises: just enough to know I hate it because it's pointless.

But this? Writing a blog post? These words and sentences flow easily. I have an idea or a set of ideas I want to get out of my head. I have a story I want to tell. I use the words and phrases and hyperlinks and footnotes that I need to do that.

So a couple of lines in an article on the internet solved two problems for me. It made me feel ok about never having learned to code4 and it made me realize that what's holding me back on my fiction writing is that I don't yet have a good problem to solve: a story to tell.

Just wanting to write or code or do carpentry or take photographs or paint or do just about anything creative is a solution in search of a problem. Find the problem you want to solve and the method will follow.


1I can't remember how I got from one to the other, but I must have. I've got a lot of tabs open in Safari right now. Its kind of a mess.

2Which has been in my Instapaper on no less than three occasions without me having read it. I guess tonight was the night.

3And make no mistake. What I am talking about here is basic coding. You can't just Google how to code and start writing Excel or Google itself.

4But I still kinda want to. And I have what I think is a pretty good idea for an iPhone app. I don't know if I'll ever get it working but I'm going to try to start on it soon. The difference is that now I have a problem I want to solve. Whether I can solve it is a different question.