4 ms·
I should have added: programming, fundamentally is not about “coding” but about accurately characterizing a process or problem, identifying the subtleties of th
by K0balt 2y ago
I should have added: programming, fundamentally is not about “coding” but about accurately characterizing a process or problem, identifying the subtleties of the data relationships to create the right data structure for the problem,, and identifying the corner cases that a given solution might introduce.
It is a matter of deep intuitive capture and understanding of complex problems / data systems / processes…and intuiting the intersection of that structure with the structure of the computing system that you are using as a tool to solve the problem. That isn’t something that can necessarily be taught to everyone.
Aptitude barriers to professional competence in the space are significant, and a minority of the population can ever be more than barely performant no matter how many syntaxes they know or sorting algorithms they memorize.
Hell, I’ve been engineering software and hardware for 4 decades and am considered an expert in my field, and I find I am barely up to the task of complex problems, having to break them down and lose any value that the hidden interrelations that the chunks might have because I simply cannot see it in the timeframe permitted. When a problem gets up over 6 dimensions or so I can’t “visualize” it any more at as a whole without overgeneralizing to the point of an extremely blurry interpretation. When visualizing things in frequency space instead of coordinate space I am even less performant.
I have met people that can effortlessly juggle a seemingly limitless dimensional space without giving it a second thought, and I can tell you they are rare and truly exceptional people in that regard. Maybe 1/10000 of the population, and most of them go into maths. But that is the skill you need in order to intuit the correct data structure for a complex problem.
I think It is a matter of being able to hold a lot of context and logical relationships front-of-mind for meaningful periods of time, and for most people that also requires exceptional concentration skills and an ability to ignore distractors.
Those are things that are not typically taught. Students normally bring those skills with them from childhood, and education serves mostly to expand their understanding, teach them new ways to express data representations and processes, and generally to broaden and sharpen their skills.
That doesn’t mean that we shouldn’t teach everyone how to write programs to solve problems. It just means that it doesn’t represent a career opportunity for everyone that can put together a simple invoicing program in python or make a cool JavaScript animation.