3 ms·
Programming is similar to chess in that it has a high branching factor. Each potential path towards a desired end state leads to other potential paths and exclu
by slv77 9y ago
Programming is similar to chess in that it has a high branching factor. Each potential path towards a desired end state leads to other potential paths and excludes others.
Good programmers are adept at being able to visualize complex trees and with experience to be able to quickly prune (exclude) suboptimal paths.
This is a pretty limited skill set and is closely correlated with spatial reasoning. Studies have shown that that skill is somewhat malleable through training but still follows a bell curve. Better training could double the number of people who could potentially succeed in stem careers but that is still far from everybody being able to code.
And the effect of training is to largely move people from the middle of the curve slightly to one side and not moving somebody from the middle to the edge of from one edge to the other. That means while you can make some people programmers you can't make anyone excellent programmers.
On a side note my experience is that people without strong spatial reasoning skills tend to find shortcuts early on that help them cope and those coping methods can eventually become strengths in their own right. For example they become adept at memorizing procedures (medicine) or start at the end state and work backwards (project management). To someone who relies on strong spatial reasoning abilities and never developed these techniques these people's abilities can seem like they are able to manage complex trees with speed (memorizing) or extremely deep trees with ease (project management).