Specialisation
There is a scene from The Big Bang Theory joking about how none of the characters can fix a broken down car but at the same time they all know how an engine works. This can be related to most skills, knowing the underlying theory is one part, but being able to recall the nitty-gritty details that exist in reality is another.
Both theory and pragmatic experience are important because your skill development will reach a bottleneck if either is lacking. But there is a difference.
With cars it’s all well and good to know that an explosion pushes the pistons which turns the motor, then it connects to the wheels through the gearbox. But when getting under a car there are pipes and cables and belts going everywhere; you can get the car to do anything by playing with these little parts, but knowing what each individual one does is an achievement in itself.
Now I have reached an interesting stage in the development of my IT skills where I believe I am comfortable with the theory aspect of computers, however I lack the pragmatic aspect by learning a specific framework.
I realized this when I was playing around with the Unreal Development Kit. The tutorial was explaining things I already knew lots about, however the reason I couldn’t yet do what I wanted (in this framework) was because I didn’t know the specific functions intimately.
I knew how the engine worked but couldn’t tell you what all the specific little parts did.
With every programming framework there is always a detailed class tree that allows one to do everything you could possibly want to do. But it is huge, and remembering the names and syntax of each function takes time.
I now know I have to do this when I choose the framework that I want to specialize in. But at this stage choosing one is making me nervous. Do I learn the framework for Web Apps? or Game Dev? or learn the Linux Kernel? maybe Mobile Apps?
I guess it really isn’t that big a decision, but it kinda feels like it. Anyway I’m not at the stage where I need to choose just yet because there are a few little things which I need to do first.