Why am I learning this stuff?

Posted on July 30, 2007


As I mentioned on a previous post, I smuggled my PC on holiday and had a go at learning Ruby on Rails. I’m not going to spend much time talking about what I think. Needless to say, I had fun starting from knowledge = nil and gently climbing up the learning curve towards knowledge = 0.1. And yes, Ruby is obviously very cool.

After two weeks of having a go at this stuff on an evening, I thought I’d sit back and re-assess exactly what I was doing, and why.

The lowdown is this:

> I’m an average programmer (possibly slightly above average because of my extreme / anally retentive progamming neatness) in ASP/VbScript
> There was a day when I did this as part of my day job, but not any longer. Now, I just send emails a lot.
> I have been able to solve most web application problems the world has thrown at me.
> I know well that VBScript/ASP has a limited lifespan, won’t be supported by MS for much longer and is laughed about in “real” developer circles.
> I accepted a looong time ago, grudgingly, that I’ll never know everything about everything. Maybe.

So apart from having a nice time learning something (and there’s a lot to be said for that without needing another reason), what exactly am I doing, trying to learn this new – completely new – way of coding?

Well, I have aspirations to retire any day now, and want to wake on a morning and know that I’ve truly made it by having to swim ashore to do my weekly shop. I intend to make this happen either with an extraordinary spate of deeply cunning crime or by building a web business that is so completely cool that no-one else will be able to touch me. The web business seems more sensible (for now at least) and I’ve got enough ideas to keep knocking them out faster than I need to. And here’s the crux. Bring on the graph…

Technical learning graph

[I love a graph almost as much as I love a diagram]

Here’s what’s going on. Up the X is technical proficiency from zero at the bottom to frightening at the top. Along the Y axis is time. Now think about me and my knowledge of VbScript. It’s up there – granted after a couple of years worth of hard slog – but I can do stuff in it, so my technical proficiency is pretty high. My knowledge might actually still be increasing so the line should be off-horizontal but there is also a threshold implied by its flatness.

Next up in this case is Ruby, but it could be any serious web development framework/language. When I started leaning Ruby, I knew nothing, but you’d hope my proficiency would increase with time. So there’s a gradient to it, which is me learning.

Now, there are also two thresholds which I have called the Production threshold and the Prototyping threshold. The Prototyping threshold is the point at which I’d feel confident enough to knock out some alpha versions, do some user testing, play about with the look and feel. I’d probably still be using an Access database under the hood though, and the code would be terrible. In other words, if I got more than three visitors my application would probably emit a funny smell and die on its arse. The Production threshold is the place that serious developers want to be (actually, really serious ones want to be at the Geek threshold which isn’t shown here. You know the people I mean…)

What I’m coming to realise is that I’ll probably never now be the person who writes production-level code – instead, I’ll pay, bribe or beg someone else to do it. So for my particular purposes the Production threshold and anything beyond is an academically interesting thing but actually nothing more than that. Instead, I’m only ever going to knock out experiments and demonstrations for ideas which other people can then take and make production-level. I don’t actually care how fast, well compiled, transportable, modern or supported my prototyping language of choice is. In the slightest.

The time it takes to get me to Point A is the only thing I’m interested in. And because that green Ruby line has a gradient to it, the time to Point A is unfortunately not zero (bring on the Matrix – “I know Ruby…”). The time to get to the Prototyping threshold for VbScript has already passed. I’m there, I’ve learnt it.

Uncomfortable though it is, I’m therefore going to dump Ruby. She’s very fine, but I’ve got too much to do, and not enough time to do it. VbScript will have to do…