Monday, February 9, 2015

The case for autodidacticism in computer programming

I was recently asked about how being self-educated affected my programming abilities in any way. I hadn't thought the question through prior to this, so I gave some less than satisfactory answer, meandering on about how it was a mixed blessing, or something to that effect. This isn't really a very good answer...

I'm an autodidact computer programmer, and formally educated physicist, so I'd like to think I have seen a decent cross-section of both informal and formal education.

Having given the question some thought, I would like to posit that autodidacts will ultimately prove to be superior at their craft. I'd like to emphasize that this is a pretty weak causal relationship. Suvivorship bias is arguably a strong effect at work here. Successful autodidacts would likely also be successful in formal education, whereas those who struggle with formal education will surely not make the cut in autodidacticism. Hence, most mediocre programmers can be assumed to be formally educated.

That being said, the successfully self-educated do possess a number of advantages. Learning has always been the autodidact's lifelong personal responsibility, and usually when you learn of your own volition, what you learn tends to ingrain itself fairly firmly in your mind. The act of furthering their learning is also something the autodidact performs habitually. Furthermore, in order to make it very far, the autodidact will need to develop some fundamentally useful skills in problem-solving and lateral thinking.

The formally educated are subject to entirely different dynamics. While they're probably going to be exposed to a broader spectrum of knowledge, following a fixed curriculum that makes few concessions to whether the student is susceptible means that central knowledge will be lost. Emphasis is on passing exams, not on deeper understanding of the subject matter, and passing exams has never been easier. I have also seen more than a hint of CS graduates ceasing their learning process the day they graduate. It's sadly fairly common that people with five year working experience have merely accumulated five years of one year working experience.

The singular drawback of self-education is that it is a lonesome road. It can be very difficult to find peers to bounce ideas off.

Although to repeat my reservation, it's of course always going to be hard to separate the selection bias from the effects imposed by the different means of education.

Sunday, February 8, 2015

On JFokus 2015

Last week I was at JFokus, after I won tickets at a JUG event hosted at my job last year. The conference offered a pretty interesting cross-section of hot topics in Java right now.

Functional programming is absolutely incandescent. It's probably a natural reaction to lambda functions being introduced in Java 8, as well as the ongoing difficulties with designing good metaphors for parallel computing. Although I must say I'm a bit disappointed in the framing. Having dabbled in functional programming for several years, I got what they were trying to say, but the message lacked motivation. As much as it's interesting to lift the how aspect of Monads, and other FP paradigms, I fear it's going to be lost on the crowd if the solution isn't framed with a problem it solves. Pointing to JS' callback hell is a pretty lackluster motivation. The C++-talk "Plain Threads are the GOTO of todays computing" is in my opinion a far better sales pitch for Monadic chaining of parallel code. But at any rate, it's great to see functional programming is starting to make it big outside of academia!

There was also a pretty large buzz about IoT, but I remain skeptical. It still seems like a solution looking for a problem. If the industry can actually agree to a standard, it could be great, but if DLNA / UPnP is even remotely indicative, it's going to work, but just poorly enough that you're going to be frustrated and disappointed whenever you use it.

I'm reminded of that Douglas Adams quote
We are stuck with technology when what we really want is just stuff that works.
I should have taken pictures of the conference, but I didn't. Instead, here's a completely unrelated picture a frozen river I took when I went for a walk last Monday morning.

Not pictured: The Conference.