Why am I learning this stuff?

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…

5 comments
Mike
Mike

Yeah, absolutely - and tbh the side of development which is all about ideas and prototyping is FAR more interesting (to me, anyway) than all that optimisation / cleaning it up / documentation stuff. Just as well I'm not a web developer. At least not at the moment...maybe I should keep quiet - who knows what the next job will hold...;-)

Jeremy
Jeremy

I found you can make a career (well, a few years of emplyment so far, best not count my chickens) out of putting prototype-level code into production... Seriously, thanks for your thoughts, Mike. I'm also hoping at some point to get around to installing and playing with all the Ruby stuff I downloaded, oh, months ago, if only because I want to understand what other people are using and talking about. I've never done this with, say, Java, but RoR is relatively fresh so perhaps I won't be so far behind the curve. But in the end we aren't going to be moving from ASP.Net any time soon so it's only for my benefit, and I have a few other things to occupy my time. Ruby will have to wait, I think.

Mike
Mike

Hey Paul. Yeah, that's what I thought when I started my 2 weeks. The stuff that RoR does do - the scaffolding as one example or managing "migrations" as another - are awesome. Really incredibly powerful for rolling out quick applications. In fact I built an simple system years ago in ASP which, er, writes ASP out to the file system to do the "scaffold" thing because I realised you'd always need quick "web admin" access to db, and I've used it ever since - it's interesting to see this is a common problem. I guess it's as much about my impatience as anything else. My "zero to A" time needs to be quicker than my "zero to application with ASP" time, which just simply isn't ever going to happen. I was deeply impressed with what you could do with RoR straight away and *if I had the time* I'm sure I could probably save that time longer term. I just need instant gratification... The production side of RoR is interesting. I've heard a load of people saying it's REALLY slow for serious applications that are being pounded and .Net blows it away speed-wise. I dunno squit about PHP...

Paul Walk
Paul Walk

Fascinating! Right up to the end I really thought you were going to conclude, as I (more or less) have that it was worth learning RoR because it made such a great, rapid prototyping framework.... I could draw a similar graph to yours, substituting Java for that weird Microsoft throwback that you use to build applications. Of course it might be the case that Java is slower and more cumbersome than VBScript/ASP to do prototyping work, hence my recognition that I really need Rails or something like it. On a slightly related note, the barriers to actually deploying a *production* RoR application seem to remain quite high, compared to Perl/PHP for example. Paul