Aptitude? We don't need no stinkin' aptitude!
Here's an academic paper:
The Camel has Two Humps. The authors analyzed programming skills and have come up with an aptitude test that correlates with the success or failure of college students in programming course.
I found the paper's central idea interesting: That the three skills of understanding state change over time (they call it sequence and assignment), recursion, and concurrency are three of the central skills of programming and are ranked in that order of scarcity.
(Revelation: instead of thinking about something as being
hard, consider it
scarce instead. It's a significant change or perspective).
I expect immediate refutations from people who resist the idea that
programming is hard or that programming skill is scarce:
- This only applies to filtering the wheat from the chaff: once students make it through their first year or so of instruction they are good enough to program anything, provided they apply themselves.
- The skills measured do not apply in the real world (wherever that may be), where understanding state change, recursion and concurrency are irrelevant to constructing software: frameworks and IDEs solve all of our problems and all you need to do is wire the pieces together.
What does this mean for you?Even if you agree with the dissenters, read the paper with an open mind. One benefit you (I am speaking
directly to you, not making a grand rhetorical gesture) can take from this is to organize your own self-development along these lines.
Consider athletics. You read a paper saying that future aptitude for sports can be measured at an early age on the basis of running speed, jumping ability, and weight lifting strength. We could drink beer and have a huge argument about their applicability to a specific sport. Maybe fencers would say that heavy bench presses are useless predictors.
But for all round athletes, those three areas are a great foundation for training. Our experience with athletics is that athletes who mix sport-specific skills training with work on speed, leaping, and strength out-perform athletes who just train skills.
So consider this: go out of your way to practice your skills the next time you are writing some code. Use iterators in places where you'd normally use a for loop. Use recursion in places where you'd normally use an iterator. And find a way to decompose operations into parallelizable components.
...
...
...
...
why are you still reading this blog post? hup! hup! get down and give me one recursive routine, then follow the instructions in this paragraph! and I mean all of you, do it at the same time!Labels: passion