Learn to code has always seemed to me to be something pushed a lot by big tech, and for them the goal was to increase the supply of programmers. This happened, so it worked out for them. That many of these people don't put these skills to use doesn't matter for big tech.
By and large, “learn to code” was never going to produce high value developers. Creative minds create, learn, find a way, with or without on-ramps. A dev that is brought into the craft for a career rather than for a fascination for the the tool is unlikely to do much more than LLM level work.
It was an effort by big tech to create low level “coders” and grunt workers to lower the bar and compensation for more valuable personnel.
That said, it was great for introducing people that were never going to be professional developers to a powerful productivity multiplier and cognitive toolkit.
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.
Obviously, what im saying is a gross generalization with many counter examples. If you are an exception to that norm, I in no way meant to disparage your accomplishments.
Certainly I am not speaking from an ivory tower perspective, as I myself am entirely self taught in my profession, taking some classes here and there to fill in what I felt were gaps in my depth of understanding.
And , to be fair, a lot of development happens in the CRUD and web dev space. It’s also what LLMs, properly harnessed, excel at.
I just haven’t seen anyone without a deep interest in the technology become a highly proficient developer for greenfield development or deciphering ancient codebases, but I have seen a lot of people who want to collect a paycheck but can’t really produce anything that hasn’t been built or documented before without someone on the team dragging them along. Fortunately, most things have been built and documented before, so there’s that.
Wherever you find exceptional talent in a field of any kind, you will generally find that most of those examples will have started their journey in childhood in one way or another. There are probably people that started out as hairdressers or lawyers and became great engineers, but I imagine they are few and far between.
“Learn to code” generally didn’t offer anything over what one could easily absorb if you went looking for it yourself, which anyone fascinated by the field will have already done. (Except possibly in primary school).
Socially it was a push by Tech to create more serfs, or a grift to take people’s money or gain political favor. Certainly, it did create employment “opportunities” for a lot of people, and recently we have seen the reaping of that harvest, and a lot of people kicked to the curb as chaff of the process. (Many of them undoubtedly talented developers, but the process is only statistically functional, individual results may vary by a number of factors unrelated to ability)
OTOH it has left us with things like KhanAcademy and a handful of other self-serve educational resources that are legitimately helpful for people starting their journey of discovery, so that I think is a very positive thing.
I found learning to code worthwhile even though I didn't go into tech. It helped me appreciate math and it helped me write little helpful programs for myself when needed.
"Learn to code" was convincing because it came packaged with a kernel of truth, yes you could make it big by learning how to code even though the undertone of the phrase reeked of "Don't be poor", as if it were a simple choice.
I used to be a designer back in the days with no formal education, I learned to code via Action Script 2 and it was fantastic, to be able to add interactivity to design, we created really crazy stuff. So I was already manipulating objects without understanding them.
Yet the biggest hurdle for me was actually trying to grasp OOP. I understood what function is, a loop, an condition a variable, a record, but I had very hard time to understand why I needed to write classes, instantiate them, make property private... Now I get it: polymorphism, encapsulation. But still. These are not easy concepts for people with no formal compsci education.
SVN, I got it, MYSQL I got it, but OO? fast forward 10 years and I was all about Symfony 2, design patterns, IoC, ...
My point being that anybody can learn to code and write programs. I just feel like higher abstraction like OO, while they are certainly elegant and useful for maintaining huge codebases, are not necessarily something people wanting to learn programming should be obsessed about (though obviously, all most successful modern languages tend to be OO now, so they have no choice). I don't think PHP would have been that much of success if it forced OOP everywhere when it started.
I mean people programmed without OO for decades before it became really mainstream, therefore most programmers did not have to understand the concepts it carried to work.
> but I had very hard time to understand why I needed to write classes, instantiate them, make property private
Well, its all very arbitrary. But the idea is that people expect these practices to lead to better code, so you should follow them. There isn't really anything deep to understand. You just do it like that.
That's not a very fulfilling answer, so it's tempting to want to know why people think these practices lead to better code, but I don't think that's really that important for "understanding" programming.
> I had very hard time to understand why I needed to write classes
You don’t. It was a lie. Tying functions into state is silly. 90s era OOP has no resemblance to Alan Kay’s original concept. If it didn’t click for you, it’s probably because you have a solid bullshit detector. You did nothing wrong.
Learn to code has always seemed to me to be something pushed a lot by big tech, and for them the goal was to increase the supply of programmers. This happened, so it worked out for them. That many of these people don't put these skills to use doesn't matter for big tech.
By and large, “learn to code” was never going to produce high value developers. Creative minds create, learn, find a way, with or without on-ramps. A dev that is brought into the craft for a career rather than for a fascination for the the tool is unlikely to do much more than LLM level work.
It was an effort by big tech to create low level “coders” and grunt workers to lower the bar and compensation for more valuable personnel.
That said, it was great for introducing people that were never going to be professional developers to a powerful productivity multiplier and cognitive toolkit.
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.
You're so full of it. Reality check never.
Obviously, what im saying is a gross generalization with many counter examples. If you are an exception to that norm, I in no way meant to disparage your accomplishments.
Certainly I am not speaking from an ivory tower perspective, as I myself am entirely self taught in my profession, taking some classes here and there to fill in what I felt were gaps in my depth of understanding.
And , to be fair, a lot of development happens in the CRUD and web dev space. It’s also what LLMs, properly harnessed, excel at.
I just haven’t seen anyone without a deep interest in the technology become a highly proficient developer for greenfield development or deciphering ancient codebases, but I have seen a lot of people who want to collect a paycheck but can’t really produce anything that hasn’t been built or documented before without someone on the team dragging them along. Fortunately, most things have been built and documented before, so there’s that.
Wherever you find exceptional talent in a field of any kind, you will generally find that most of those examples will have started their journey in childhood in one way or another. There are probably people that started out as hairdressers or lawyers and became great engineers, but I imagine they are few and far between.
“Learn to code” generally didn’t offer anything over what one could easily absorb if you went looking for it yourself, which anyone fascinated by the field will have already done. (Except possibly in primary school).
Socially it was a push by Tech to create more serfs, or a grift to take people’s money or gain political favor. Certainly, it did create employment “opportunities” for a lot of people, and recently we have seen the reaping of that harvest, and a lot of people kicked to the curb as chaff of the process. (Many of them undoubtedly talented developers, but the process is only statistically functional, individual results may vary by a number of factors unrelated to ability)
OTOH it has left us with things like KhanAcademy and a handful of other self-serve educational resources that are legitimately helpful for people starting their journey of discovery, so that I think is a very positive thing.
I always figured it was about nextgen excel/access type productivity work vs coding.
Us elite 10x engineers turn our noses up, but random business users are building workflows and processes in stuff like PowerApps all day.
I found learning to code worthwhile even though I didn't go into tech. It helped me appreciate math and it helped me write little helpful programs for myself when needed.
This where I am at. My day job is more "architecture", but I write lots of helpful little things here and there.
"Learn to code" was convincing because it came packaged with a kernel of truth, yes you could make it big by learning how to code even though the undertone of the phrase reeked of "Don't be poor", as if it were a simple choice.
I used to be a designer back in the days with no formal education, I learned to code via Action Script 2 and it was fantastic, to be able to add interactivity to design, we created really crazy stuff. So I was already manipulating objects without understanding them.
Yet the biggest hurdle for me was actually trying to grasp OOP. I understood what function is, a loop, an condition a variable, a record, but I had very hard time to understand why I needed to write classes, instantiate them, make property private... Now I get it: polymorphism, encapsulation. But still. These are not easy concepts for people with no formal compsci education.
SVN, I got it, MYSQL I got it, but OO? fast forward 10 years and I was all about Symfony 2, design patterns, IoC, ...
My point being that anybody can learn to code and write programs. I just feel like higher abstraction like OO, while they are certainly elegant and useful for maintaining huge codebases, are not necessarily something people wanting to learn programming should be obsessed about (though obviously, all most successful modern languages tend to be OO now, so they have no choice). I don't think PHP would have been that much of success if it forced OOP everywhere when it started.
I mean people programmed without OO for decades before it became really mainstream, therefore most programmers did not have to understand the concepts it carried to work.
> but I had very hard time to understand why I needed to write classes, instantiate them, make property private
Well, its all very arbitrary. But the idea is that people expect these practices to lead to better code, so you should follow them. There isn't really anything deep to understand. You just do it like that.
That's not a very fulfilling answer, so it's tempting to want to know why people think these practices lead to better code, but I don't think that's really that important for "understanding" programming.
> I had very hard time to understand why I needed to write classes
You don’t. It was a lie. Tying functions into state is silly. 90s era OOP has no resemblance to Alan Kay’s original concept. If it didn’t click for you, it’s probably because you have a solid bullshit detector. You did nothing wrong.