Learning and Knowing

After yesterday's post - which I will summarise as "look how much I still have left to learn" - I wasn't really satisfied with the ending. You can tell I wasn't because I added a further ending in a comment later on, but I still had the feeling that I hadn't really said what I wanted to say and that stuck in my mind a bit. This afternoon I was browsing through sys-con.com's archive of magazines and I came across an editorial by Joe Mitchko - 'Are you a WebLogic Expert':

The question is so difficult to respond to because the term "WebLogic" covers a lot of ground. I am often left puzzled for a day or two, asking myself, should I be a WebLogic expert? If I were an expert, what would I know beyond what I already know?

This chimed fairly strongly with the nascent and nebulous thoughts which had been swirling around in my head since the previous day - you can take the term "Weblogic" out of the question and the quote, leaving aside for a moment the definition of 'expert', and replace it with almost any web technology or buzzword and the comment above will still apply.

Try it with CSS. Accessibility. Ajax. Web 2.0. Pick one where you feel fairly comfortable that you have the knowledge to 'get by'.

If I were a Javascript expert, what would I know beyond what I already know?

It's impossible for me (and, in fact, anyone else) to know the answer to that question, the only way to find out what there is to know beyond what I already know is to actually go out there and look for it. That's going to be the same whatever term you plug in there - to find the limits of your knowledge you've got to embrace the unknown.

Dealing with the unknown can actually be pretty scary, in a sense you're choosing to put yourself in a position of weakness and potentially setting yourself up for failure. And this is where my thoughts ran into some blog posts I was reading yesterday - Worse Than Failure published an article from Coding Horror's Jeff Atwood, who posted a follow up on his own blog:

I can absolutely guarantee that the kinds of developers who could benefit most from reading WTF simply do not-- and never will-- read the WTF website

It struck me that (massive generalisation warning) the sort of programmers who don't need to read WTF (and Coding Horror) are the ones who're exploring the frontiers of their own ignorance by themselves, the ones who need to read it and don't are the ones who want to feel safe and secure in their current set of knowledge. The example I posted yesterday - the previous solution to the '08' problem, the function removeLeadingZeroes, was a non-exploratory solution: you know how to manipulate strings, so use that knowledge to strip the zeros off the front and solve the problem. The exploratory solution, though admittedly not an awful lot of exploration in this case, involved first realising the need to explore the unknown and then doing it.

It sounds much grander than it actually was in this case, but I think the general principal will hold up in more exacting cases. Scientific studies have shown that nearly everyone believes their ability to be "above average", a comforting lie we tell ourselves, and can keep telling ourselves as long as we don't venture out into the unknown, but the path to being an 'expert' is to always assume there's something you don't know, and then go and find what it is.