I’ve been really interested in semantic text analysis lately. Partly because I have a few ideas I want to play with that require it, partly because I didn’t really know anything about how it works.
But the exercise got me thinking: here I am, 16 years into my career with computersnow, and still cracking the book on a brand new topic. Granted it’s a relatively new topic, sort of obscure, but still you’d think that in 16 years you could cover a lot of ground. And I’m the kind of person who, when I encounter something I’m not familiar with, will go learn it at a level where I can be at least somewhat functional with it. So with that in mind I took a few minutes and actually mapped out in Visio all the major topics I’ve learned since I started with ANSI C in 1990 and what prompted me to learn them.
I expected to find a lot of dead technology that wasn’t useful anymore, lying around cluttering up my head with useless synaptic connections that I’ll never use again, but I really only found a few: ANSI C and C++, Win32 API, MFC, VB/COM. And you could argue that those aren’t really even dead yet, I’m sure there’s still some kind of market out there for those skills.
Out of the 22 topics that I could think of, only 4 are now useless to me. That means I’ve learned an average of one skill a year which I’m still using to this day. Stuff like TCP/IP networking, VOIP, n-Tier application design, relational database architecture, OLAP, distributed applications–things that take some research and experimentation to really get (for me at least).
Now it could be that I’m a slow learner (in my defense I have been learning these things while going to school, having a career, having a life, etc). But I’d like to think that I’m not. And what’s more, I actually need a good number of these skills to be able to apply what I’m now learning about semantic text analysis. If I hadn’t learned all the stuff I already know, I wouldn’t be able to do much with the research papers I’m reading, let alone understand them. (I’m even leaning a little on the statistics I learned in college–first time ever!)
So that got me thinking, how would somebody who’d never done anything with a computer besides surf the Net go about learning how to program something that uses semantic text analysis? Or anything else that obscure for that matter? What would be the progression they would take to acquire the skills and knowledge necessary to write actual working code? Surely they could do it in far less time than it took me to get there, firstly because they wouldn’t have to learn the dead technology I did, and secondly because they could do it in a much more focused way. But still, I have to wonder what the minimum amount of learning time would be to get up to speed–I have a hard time believing it would be less than six or seven years of focused learning.
There’s a big difference between someone who can write code, and someone who knows how to actually write a functional program that solves a problem. I should know, I’ve had direct and very painful experiences managing offshore programmers who fall into the first category. So how long does it really take to grow somebody who falls into the second?








