> I saw another article for an elementary school programming course, and I can’t believe how far off-base we have gotten. We don’t need more software developers but if you believe that notion, I don’t think more courses is the way to go.
I don't think idea is to make everyone a software engineer, it's to teach the basics of computer programming to everyone so they can use it in their everyday life in the same way basic math, language and other skills are taught. Being able to hack together a basic script to automate a tedious task, or make your computer (something almost everyone has at this point) do something it can't already do would be beneficial to a lot of people, even when most of those people are not going to become software engineers in the long run.
Do you think they'd be allowed to? IT policy is generally 'nothing we haven't authorised' I remember not being able to connect non-approved keyboards to the computer....
People don't code because A) They are not interested in coding. B) They do not have the ressources to learn coding C) Coding has nothing to do with their job D) They are too lazy / no will to learn to code.
Hell, I know to code. I code daily, it's my job. And I pretty much NEVER coded as a hobby. I don't see why non-programmers would take up coding...
I have a list of things-to-code as long as my arm, lots of little utilities and websites I want to create. But once I knock-off work at the end of the day, have dinner and perform the daily ablutions I simply don't have time.
It is for this very reason that I think that Basic Income [1] can/will someday be a net wealth creator, even if 95% of its recipients end up sitting on their asses.
Not just that. With guaranteed basic income, in effect everyone has f-you money. No employer could easily coerce employees to do what they don't think is right: the employees could more easily walk away.
We could eliminate copyrights. After all, with basic income, artists and creators are getting paid. Some might release their work to the public domain right away. Others might pursue different publishing options.
All sorts of corporate (not just individual) welfare benefits could be eliminated; after all, everyone is getting a basic income.
Basic income would greatly shift power from the most wealthy back to ordinary people. It could be that the effects would be profoundly democratic.
> Not just that. With guaranteed basic income, in effect everyone has f-you money. No employer could easily coerce employees to do what they don't think is right: the employees could more easily walk away.
While a basic income guarantee would reduce the capacity for coercion, unless you have fantastic levels of productivity such that you can have very high output with very low labor input, its not going to be anything like what is usually considered "F-you" money.
> We could eliminate copyrights. After all, with basic income, artists and creators are getting paid.
The purpose of copyrights is to create a marginal incentive to create, which basic income does not do. OTOH, a well-established basic income guarantee would further weaken the case for very long term copyrights -- but the case for that has always been weak, anyway.
> The purpose of copyrights is to create a marginal incentive to create
Income is not the only incentive to create. Many are drawn to the impulse that Eddie Izzard calls "creativist": rather than making things in order to make money, make money in order to make things. Currently, copyrights and markets are the least-worst way we've found to enable these creations to bootstrap, but if we can do better, we should.
> unless you have fantastic levels of productivity such that you can have very high output with very low labor input
The combination of robotics and software make a high-output/low-labor future highly probable, if not inevitable. How long it will take until Basic Income is affordable is debatable.
Agreed. I'd be curious what the numbers added up to if we eliminated all social welfare programs and spent it it on Basic Income instead (not that I would necessarily advocate for or against that). I'll have to run some fuzzy numbers when I can find a moment.
Time and energy. I'm fortunate to have a day job that is challenging and engaging, and by the time I'm done with that for the day I usually just want to recharge for the next day. If I'm feeling particularly energized I often end up staying later instead of going home to work on things.
Plus, I have a list of non-coding projects competing for my time as well. Often if I do work on anything its one of those, because the context switch is easier for me and the problems are different than what I was just dealing with in the office.
Yes, the geeky type will love taking up programming. But most already learn at least some coding.
I'm taking about most people outside that target demographics. I'm thinking about my cousin that work as a mechanician, she can use her computer to go on facebook and look at her emails, but not much else. If I told her "learn coding!" she would reply "learn to fix cars!".
It makes no sense that I would expect her to learn coding and it makes no sense that she would expect me to learn how to fix an engine.
Sure, I know how to change my oil. Well, she know how to defragment her computer.
I think math can be taught much more effectively to young children through programming. It gives them a direct and useful application of what they learn in math which could motivate them a lot more.
I think math can be taught just fine without dragging programming into it. Basic math is usually abstracted away in programming anyway - it would be no different than using a calculator.
Plus, the level that you'd need to reach for the kid to see something interesting as a result of math would require so much time and knowledge that you'd have been better off to just teach them fractions.
The author implies that everyone is smart. This is false. On average, everyone is of average intelligence. The entire population lies either below or above average. Not everyone is capable of being a software engineer, and people like Barack Obama need to focus on helping people do well at whatever it is they can do well at (rather than trying to churn out a bunch of burdensome code monkeys).
> Not everyone is capable of being a software engineer
Bullshit. This is a very narcissistic view that lots of programmers have. I think you have this belief because it helps you enjoy feeling superior to non-programmers.
If a person can learn how to read and write, then they can learn how to program. It just takes time and effort, and some people can learn it faster than others. But just about anyone can do it.
The only things holding them back are their priorities and misconceptions.
It's not about intelligence--some people's brains just aren't wired in a way that would make them any good at software development. That doesn't mean that they couldn't ever learn how to write code given enough time, but not everyone has unlimited time and will power to do that. So in theory, yes, anyone could learn to code. In practice, it doesn't work out that way.
>some people's brains just aren't wired in a way that would make them any good at software development.
People say this a lot. That is the entirety of the evidence for it. I have yet to meet someone in a context in which they actually wanted to program who didn't have the ability. Programming isn't hard, hard programming is hard, because it usually requires hard math and deep abstraction. In those cases, though, the programming is the easiest part - it's pencil to notebook that's frustrating.
> some people's brains just aren't wired in a way that would make them any good at software development.
I've worked in education with enough people to understand this situation very well.
There's an initial "hump" that you have to get over, the very first time you are learning how to program. It involves wrapping your head around a few dozen distinct concepts and how they can interact.
For some people, it takes a few days, and for others, it takes a few weeks or months. This is usually based on how much prior exposure they've had to programming - how much they tinkered with it before trying to learn it formally.
Anyway, after that hump, people feel confident that they can learn to do anything in the world of programming. In my experience, the only people who failed to reach this point were the ones who did not dedicate a reasonable amount of time.
Once you get over those initial concepts, your skill level is really just a matter of how much experience you've had. The ones that learned the initial concepts in a few days are not necessarily better than the ones who took a few months.
Maybe everyone can learn to code, but the research says that a portion of the population (on the order of half) isn't wired to think that way, and at least would take orders of magnitude more time to learn (if they can at all).
I'm by no means claiming that this segment of the population is more or less intelligent than the rest, but to make claims like "everyone can learn to program" is to ignore the realities of the classroom.
I, personally, have that belief from having been a CS101 tutor in college. I majored in EE and had lots of EE classmates who found programming to be extremely mentally taxing and absolutely hated it.
I worked with otherwise very bright students who could not grasp the concept of taking a problem and decomposing it into discrete steps. Some people's brains simply don't want to work that way. They can solve the problem just fine, but not in a way that a computer could process.
No, the author is saying that software engineering is currently viewed (even by smart and capable people) as an intellectually intimidating profession. There's no reason why that should be the case. Working in this space doesn't require you to have exceptional intelligence; just a willingness to apply yourself to the task and think in terms of certain logical patterns.
At no point does the writer try to imply that everyone is smarter than average - that's silly.
This generalizes to all forms of intelligence: those who are afraid of the feeling of stupidity and ignorance get stuck and don't move past it. I can't count the number of deeply intelligent people I've known who short-circuit their thinking and learning processes due to this fear.
It's not a self-esteem issue; it equally affects those who see themselves as smart, and those who don't. It's an issue of tolerating discomfort and confusion long enough to get to the other side. I'm not sure how exactly one teaches that.
I'd prefer empirical data, but before that's available (to the discussion, at least) I'd guess one teaches that by giving opportunities to practice and reassurance that it's normal.
Small children are relentless and courageous and highly tolerant of discomfort -- falling down 20 times does not intimidate them when learning to walk. They get tired, shrug and try again later. They pause their learning process temporarily but there are no negative emotions there, while the thrill of attempting something new is still kindling.
>I doubt that I am much smarter than the average person. If I can learn this stuff anyone can. Let me be super clear, there is nothing special about me or most other software developers, we just decided to show up and go for it.
Are you sure? You claim to be "not much smarter than the average person," but remember: if you're any smarter than a person with median intelligence, you're smarter than most people.
>Despite the enormous changes which have taken place since electronic computing was invented in the 1950s, some things remain stubbornly the same. In particular, most people can't learn to program: between 30% and 60% of every university computer science department's intake fail the first programming course.
Maybe they're simply lacking in confidence, but these are students that chose to take the course in the first place.
I think the truly smart people don't realize how smart they are. I only know that I'm "smart" because I keep hearing it constantly from people. I thought I had normal conversations, apparently I have "intelligent conversations" instead! I have had the same experience as the author but I have internalized at this point that I do seem to be smarter than the average person.
I also feel that pushing programming for everyone is a stretch. Some people just don't get it, and never will, and that's apart from intelligence - it just requires a specific type of intelligence to truly grasp the concepts.
>I saw another article for an elementary school programming course, and I can’t believe how far off-base we have gotten.
I don't understand this post at all. There were programming classes at elementary school 25-30 years ago teaching Logo and Basic on Apple IIs. If it weren't for those classes, I can't really be sure that I'd be programming now.
So we shouldn't have programming classes for children now because confidence? Am I missing something, or does confidence often come with experience, especially experience gained in childhood when you're too young and stupid to be properly terrified?
If you want to raise adult mountain climbers, does it make sense to start your children climbing hills, or to spend their childhoods giving them the confidence to attempt to climb mountains as adults, oblivious to their own incompetence? I don't think confidence-building to the exclusion of skill-building is the way to go.
My son writes programs using Python's turtle graphics, which reminds me of the Logo programming I did on my Vic 20 as a kid. Yesterday he was writing the same "input a number and then draw a polygon with that many sides" program I did a long time ago.
I'm pretty sure most of us learnt to program outside of school, and off our own backs. Isn't that the best way?
School is there to show kids how to teach themselves anything they want to learn. Not to spoonfeed them specific skills they may or may not want to have.
I'm pretty sure many(most?) of us started that process within school.
>Isn't that the best way?
Best for what? Best for being a good programmer? In my experience, no. You can't avoid spending 1000s of hours outside of school programming and reading about programming, but having fantastic teachers to help guide you through that journey is awesome when you can get it.
>School is there to show kids how to teach themselves anything they want to learn.
Not any school that I want my kids in. I want my kids in the school that teaches them how to read, add, and understand the science of the world around them - including how their stupid cellphone works. They've got the rest of their day and the rest of their lives (with a bit of latitude starting in the last half of high school, and college) to learn whatever they want, at least until all the libraries are closed and everything is behind a paywall.
I didn't get the feeling that school is there to teach kids how to teach themselves. That is very much a skill that I had to learn outside of school. School, even in a very nice area with excellent schools, felt like a long exercise in checking boxes.
There are things that did teach me "how to learn" but they only arose outside of school and after high school. There are things that have given me a fearless desire to learn, and the confidence to know that there's nothing I can't come to understand if I am willing to apply myself. However, none of those things happened inside of the traditional school system.
Teaching someone to learn should damn well include exposure to a lot of different things to help them see the use of learning. It should include a "sandbox" wherein they can learn skills without consequences of simple mistakes and other learning related "failure" instilling a fear of living life.
It should include a bunch of basic skills as well - because seriously, I'd rather be taught "here's the common, most successful way of doing X" rather than having to go out and discover it on my own for thousands of random skills. Does that mean one day I may have to give up my notion of "checkbook register" that is comfortable and I've known forever in favor of "proper double entry book keeping" - absolutely, and you know what, I'll take a class on that too. But in the mean time, I won't be figuring out how to track my dollars on my own, and in the future I won't rediscover double entry for myself. Why?
I'm too busy focusing on software stuff in depth. That's where I'm focusing my "learn for myself" talents and limited time.
> School is there to show kids how to teach themselves anything they want to learn. Not to spoonfeed them specific skills they may or may not want to have.
Eh, debatable. I'd tend to say that ideally school is there to give kids experience with a wide range of activities and to try to inspire in them a love of learning in at least one of them, as well as the basic methodologies of doing so.
I don't think spoon-feeding, or making people learn skills they blatantly don't like, has great returns. But I wouldn't go quite so far as saying school's just there to show them how to learn - considering how directed the learning environment is, school doesn't really seem to spend much time on that at all.
Confidence that I could program came from being exposed to programming on Apple IIs and the Casio FX-702P. Being taught some simple graphing with BASIC in class laid the groundwork. Later came watching others create things, then trying out my own ideas in BASIC, failing, and then trying again.
This should be applied to other important fields as well -- for example a medical-themed biology class I took as a kid helped me understand that being a doctor was attainable (but not for me).
I likely wouldn't be a developer today if not for elementary school.
I thought Logo was dumb and could never get into it, but one day after school in grade 6 I saw my friend had used Logo to open a command prompt on a school computer. He had gone into QBASIC and made a rocket ship fly using just print commands.
I was hooked instantly. I spent most of my non-school waking hours for the next few months coding in BASIC, entering programs from books I found buried in the library, and pouring through the help system to learn how to do new things.
Programming then really taught me to dig deep and figure things out on my own using resources available to me, and gave me a source of pride and confidence that I didn't get from other avenues. Eventually earning a great sense of accomplishment as I'd teach friends how to use various game engines that I'd develop at home.
Without that first experience in elementary school -- ultimately enabled through a feature of Logo -- I'd never have begun that journey.
I wrote the post, you make an excellent point that it's good to have experience in order to gain confidence. I do believe we need to address the current holes in our education system before we start adding new course work, and that we need to work hard to help students to learn to overcome challenges and to have the confidence to attack all kinds of problems.
Programming is only one skill that people are afraid to learn, there are thousands of others and we can't have elementary school classes for them all.
Programming isn't only one skill, though, any more than writing or math is one skill. I think the point of elementary school is teaching enough basics that young people can navigate an area of study, have a good idea of its breadth, and decide whether they want to come back to it when they have more latitude about what they would like to study further. It also helps in business and citizenship, so you have an idea of what to pay for stuff, and you know what you're voting for.
>we can't have elementary school classes for them all.
We not only can have elementary school classes for it, we do, and have since I first walked into one 32 years ago. That fact is responsible for a large percentage of the programmers walking around today.
>we need to address the current holes in our education system before we start adding new course work
In my opinion, weakness in math (and programming) is one of the current holes in our education system. I'm also trying to argue that this is not new coursework.
I like you, you are well mannered and incredibly reasonable. I think it being or not being new coursework is a matter of location there were definitely no programming in my elementary school. I though I did start taking them in high school.
I think we look at computer programming much differently in terms of our world view and should probably leave it at that. Thanks for making some great comments and being a cool person.
The bare basics of coding, like variables, conditions, loops, creating and using objects, etc. aren't that hard. Certainly no harder than, say, high school algebra. So writing a simple script that's basically a big main function is something that most people are capable of learning how to do.
But core CS concepts about data structures and algorithms, or designing large OO programs with your own classes and methods? Those are significantly more difficult things. Not everyone can do that.
The thing is, being a programmer means you probably hang out with people of above-average intelligence, and read things written by people of above-average intelligence, so that skews your perception of what 'average' means. I mean, we had plenty of people fail miserably at my college intro coding class, and this was at a fairly respectable tier-1 research university!
What we need are more people who know what they're doing. I find it condescending to assume that we really need to coddle more people and make them feel good about coding. Do we need to make this same argument for electrical engineers, surgeons, pilots and air traffic controllers?
I don't mean to imply that the current software world is a cabal of highly-skilled geniuses who need preserving - it's not. From personal professional experience, it's, on average, a nuthouse of self-promoting Java idiots with a "dropout genius" mentality who have no common sense and are not nearly as smart or good at problem-solving as their blogs or resumes would lead you to believe.
However, I think it would another discussion entirely to ask if the wrong people feel confident enough to write code. The belief that we need to reach out and bring more people into programming, in a world where the average developer struggles to cobble together a web application that isn't full of basic security holes, is ridiculous.
Also, I strongly suspect all of these efforts to drag more people into coding are at least partly sponsored by industry, in an attempt to drive the relatively-high wage of a programmer down, in the face of a perceived increase in programmer demand.
> Also, I strongly suspect all of these efforts to drag more people into coding are at least partly sponsored by industry, in an attempt to drive the relatively-high wage of a programmer down, in the face of a perceived increase in programmer demand.
Perhaps by newer and less experienced entrants into the business market. Whenever there's a boom in a certain market, you get a lot of hacks flooding in who have a lot of money, but little sense. Web development was this way post-dot-com-crash. There were many print advertising agencies that added on web development as a service to their clients. However, they didn't alter their business practices to accommodate the needs of software development.
These agencies treated software developers like graphic designers. They almost always required fixed cost contracts for development ($X to build a website), and this caused a ton of problems that would be evident to seasoned developers. When I suggested that they change their compensation practices they would refuse, and just blame it on the original programmer for being unskilled.
I didn't mind in the beginning, because I was making $200-$300/hr to fix their problems. However, I eventually quit consulting because I got bored with cleaning up bad code caused by time/money constraints. It wasn't stupid programmers who caused the problem, but stupid business people.
Bringing it back to the main topic - I think it's wrong to get more people to code. Those who graduate with CS degrees and software development skills are entirely capable to building large, functional systems. However, a good bulk of those programmers aren't going to work at a software/tech company. They're going to work in the IT departments of companies in non-software industries. Efforts should be made to better integrate these ad-hoc IT departments into the primary business.
For myself, not feeling smart enough was why I waited longer than I should have to learn how to code.
This part especially resonates with me:
>"...we just decided to show up and go for it."
I think that's a choice that anyone has to ultimately make if they want to learn anything.
Software training programs among other things are just one way to capture people's interests, and I think is a good supplement to a larger push for people to learn how computers work.
That's why people don't learn new things in general, they hate feeling helpless, clueless, dumb. They hate the shame and embarrassment of making basic mistakes, and they hate the potential of breaking things out of ignorance. If you've ever seen someone who is not very tech savvy use a computer you can see all of these things reflected in the way they go about things, it's a big reason why they tend to fall into a specific very narrowly defined pattern of use and stick with it.
Saw someone tweet a few weeks back that criteria for advancement in education (e.g., graduating 1st to 2nd grade) needs to be mastery-based, instead of time-based. This is the most brilliantly simple insight into our education system I've ever come across. What better way to make someone feel 'dumb' than to give them an "F", "D", or "C" after a year of education when their peers receive "A"s and "B"s.
57 comments
[ 2.9 ms ] story [ 126 ms ] threadI don't think idea is to make everyone a software engineer, it's to teach the basics of computer programming to everyone so they can use it in their everyday life in the same way basic math, language and other skills are taught. Being able to hack together a basic script to automate a tedious task, or make your computer (something almost everyone has at this point) do something it can't already do would be beneficial to a lot of people, even when most of those people are not going to become software engineers in the long run.
Hell, I know to code. I code daily, it's my job. And I pretty much NEVER coded as a hobby. I don't see why non-programmers would take up coding...
I have a list of things-to-code as long as my arm, lots of little utilities and websites I want to create. But once I knock-off work at the end of the day, have dinner and perform the daily ablutions I simply don't have time.
It is frustrating.
[1] http://en.wikipedia.org/wiki/Basic_income
We could eliminate copyrights. After all, with basic income, artists and creators are getting paid. Some might release their work to the public domain right away. Others might pursue different publishing options.
All sorts of corporate (not just individual) welfare benefits could be eliminated; after all, everyone is getting a basic income.
Basic income would greatly shift power from the most wealthy back to ordinary people. It could be that the effects would be profoundly democratic.
While a basic income guarantee would reduce the capacity for coercion, unless you have fantastic levels of productivity such that you can have very high output with very low labor input, its not going to be anything like what is usually considered "F-you" money.
> We could eliminate copyrights. After all, with basic income, artists and creators are getting paid.
The purpose of copyrights is to create a marginal incentive to create, which basic income does not do. OTOH, a well-established basic income guarantee would further weaken the case for very long term copyrights -- but the case for that has always been weak, anyway.
If you have no need to save for retirement, "f-you"'s become free.
Income is not the only incentive to create. Many are drawn to the impulse that Eddie Izzard calls "creativist": rather than making things in order to make money, make money in order to make things. Currently, copyrights and markets are the least-worst way we've found to enable these creations to bootstrap, but if we can do better, we should.
> unless you have fantastic levels of productivity such that you can have very high output with very low labor input
The combination of robotics and software make a high-output/low-labor future highly probable, if not inevitable. How long it will take until Basic Income is affordable is debatable.
Sure. But the future is, you know, different than the present.
> How long it will take until Basic Income is affordable is debatable.
Some level of Basic Income guarantee is affordable now. What varies with productivity is the level at which Basic Income is sustainable.
The marginal incentives you mention are of course one way to implement that, but not the only way, it seems to me.
Plus, I have a list of non-coding projects competing for my time as well. Often if I do work on anything its one of those, because the context switch is easier for me and the problems are different than what I was just dealing with in the office.
Because coding lets you do neat, fun things? Video games are a big motivator for many.
I'm taking about most people outside that target demographics. I'm thinking about my cousin that work as a mechanician, she can use her computer to go on facebook and look at her emails, but not much else. If I told her "learn coding!" she would reply "learn to fix cars!".
It makes no sense that I would expect her to learn coding and it makes no sense that she would expect me to learn how to fix an engine.
Sure, I know how to change my oil. Well, she know how to defragment her computer.
Plus, the level that you'd need to reach for the kid to see something interesting as a result of math would require so much time and knowledge that you'd have been better off to just teach them fractions.
Bullshit. This is a very narcissistic view that lots of programmers have. I think you have this belief because it helps you enjoy feeling superior to non-programmers.
If a person can learn how to read and write, then they can learn how to program. It just takes time and effort, and some people can learn it faster than others. But just about anyone can do it.
The only things holding them back are their priorities and misconceptions.
People say this a lot. That is the entirety of the evidence for it. I have yet to meet someone in a context in which they actually wanted to program who didn't have the ability. Programming isn't hard, hard programming is hard, because it usually requires hard math and deep abstraction. In those cases, though, the programming is the easiest part - it's pencil to notebook that's frustrating.
"I haven't seen the evidence" is hardly synonymous with "there isn't any": http://www.eis.mdx.ac.uk/research/PhDArea/saeed/paper1.pdf
I've worked in education with enough people to understand this situation very well.
There's an initial "hump" that you have to get over, the very first time you are learning how to program. It involves wrapping your head around a few dozen distinct concepts and how they can interact.
For some people, it takes a few days, and for others, it takes a few weeks or months. This is usually based on how much prior exposure they've had to programming - how much they tinkered with it before trying to learn it formally.
Anyway, after that hump, people feel confident that they can learn to do anything in the world of programming. In my experience, the only people who failed to reach this point were the ones who did not dedicate a reasonable amount of time.
Once you get over those initial concepts, your skill level is really just a matter of how much experience you've had. The ones that learned the initial concepts in a few days are not necessarily better than the ones who took a few months.
Maybe everyone can learn to code, but the research says that a portion of the population (on the order of half) isn't wired to think that way, and at least would take orders of magnitude more time to learn (if they can at all).
I'm by no means claiming that this segment of the population is more or less intelligent than the rest, but to make claims like "everyone can learn to program" is to ignore the realities of the classroom.
I worked with otherwise very bright students who could not grasp the concept of taking a problem and decomposing it into discrete steps. Some people's brains simply don't want to work that way. They can solve the problem just fine, but not in a way that a computer could process.
No, the author is saying that software engineering is currently viewed (even by smart and capable people) as an intellectually intimidating profession. There's no reason why that should be the case. Working in this space doesn't require you to have exceptional intelligence; just a willingness to apply yourself to the task and think in terms of certain logical patterns.
At no point does the writer try to imply that everyone is smarter than average - that's silly.
It's not a self-esteem issue; it equally affects those who see themselves as smart, and those who don't. It's an issue of tolerating discomfort and confusion long enough to get to the other side. I'm not sure how exactly one teaches that.
Small children are relentless and courageous and highly tolerant of discomfort -- falling down 20 times does not intimidate them when learning to walk. They get tired, shrug and try again later. They pause their learning process temporarily but there are no negative emotions there, while the thrill of attempting something new is still kindling.
Are you sure? You claim to be "not much smarter than the average person," but remember: if you're any smarter than a person with median intelligence, you're smarter than most people.
Also remember the really high failure rates in introductory programming classes: http://www.codinghorror.com/blog/2006/07/separating-programm...
>Despite the enormous changes which have taken place since electronic computing was invented in the 1950s, some things remain stubbornly the same. In particular, most people can't learn to program: between 30% and 60% of every university computer science department's intake fail the first programming course.
Maybe they're simply lacking in confidence, but these are students that chose to take the course in the first place.
I also feel that pushing programming for everyone is a stretch. Some people just don't get it, and never will, and that's apart from intelligence - it just requires a specific type of intelligence to truly grasp the concepts.
I don't understand this post at all. There were programming classes at elementary school 25-30 years ago teaching Logo and Basic on Apple IIs. If it weren't for those classes, I can't really be sure that I'd be programming now.
So we shouldn't have programming classes for children now because confidence? Am I missing something, or does confidence often come with experience, especially experience gained in childhood when you're too young and stupid to be properly terrified?
If you want to raise adult mountain climbers, does it make sense to start your children climbing hills, or to spend their childhoods giving them the confidence to attempt to climb mountains as adults, oblivious to their own incompetence? I don't think confidence-building to the exclusion of skill-building is the way to go.
School is there to show kids how to teach themselves anything they want to learn. Not to spoonfeed them specific skills they may or may not want to have.
>Isn't that the best way?
Best for what? Best for being a good programmer? In my experience, no. You can't avoid spending 1000s of hours outside of school programming and reading about programming, but having fantastic teachers to help guide you through that journey is awesome when you can get it.
>School is there to show kids how to teach themselves anything they want to learn.
Not any school that I want my kids in. I want my kids in the school that teaches them how to read, add, and understand the science of the world around them - including how their stupid cellphone works. They've got the rest of their day and the rest of their lives (with a bit of latitude starting in the last half of high school, and college) to learn whatever they want, at least until all the libraries are closed and everything is behind a paywall.
There are things that did teach me "how to learn" but they only arose outside of school and after high school. There are things that have given me a fearless desire to learn, and the confidence to know that there's nothing I can't come to understand if I am willing to apply myself. However, none of those things happened inside of the traditional school system.
It should include a bunch of basic skills as well - because seriously, I'd rather be taught "here's the common, most successful way of doing X" rather than having to go out and discover it on my own for thousands of random skills. Does that mean one day I may have to give up my notion of "checkbook register" that is comfortable and I've known forever in favor of "proper double entry book keeping" - absolutely, and you know what, I'll take a class on that too. But in the mean time, I won't be figuring out how to track my dollars on my own, and in the future I won't rediscover double entry for myself. Why?
I'm too busy focusing on software stuff in depth. That's where I'm focusing my "learn for myself" talents and limited time.
Eh, debatable. I'd tend to say that ideally school is there to give kids experience with a wide range of activities and to try to inspire in them a love of learning in at least one of them, as well as the basic methodologies of doing so.
I don't think spoon-feeding, or making people learn skills they blatantly don't like, has great returns. But I wouldn't go quite so far as saying school's just there to show them how to learn - considering how directed the learning environment is, school doesn't really seem to spend much time on that at all.
Confidence that I could program came from being exposed to programming on Apple IIs and the Casio FX-702P. Being taught some simple graphing with BASIC in class laid the groundwork. Later came watching others create things, then trying out my own ideas in BASIC, failing, and then trying again.
This should be applied to other important fields as well -- for example a medical-themed biology class I took as a kid helped me understand that being a doctor was attainable (but not for me).
I thought Logo was dumb and could never get into it, but one day after school in grade 6 I saw my friend had used Logo to open a command prompt on a school computer. He had gone into QBASIC and made a rocket ship fly using just print commands.
I was hooked instantly. I spent most of my non-school waking hours for the next few months coding in BASIC, entering programs from books I found buried in the library, and pouring through the help system to learn how to do new things.
Programming then really taught me to dig deep and figure things out on my own using resources available to me, and gave me a source of pride and confidence that I didn't get from other avenues. Eventually earning a great sense of accomplishment as I'd teach friends how to use various game engines that I'd develop at home.
Without that first experience in elementary school -- ultimately enabled through a feature of Logo -- I'd never have begun that journey.
Programming is only one skill that people are afraid to learn, there are thousands of others and we can't have elementary school classes for them all.
>we can't have elementary school classes for them all.
We not only can have elementary school classes for it, we do, and have since I first walked into one 32 years ago. That fact is responsible for a large percentage of the programmers walking around today.
>we need to address the current holes in our education system before we start adding new course work
In my opinion, weakness in math (and programming) is one of the current holes in our education system. I'm also trying to argue that this is not new coursework.
I think we look at computer programming much differently in terms of our world view and should probably leave it at that. Thanks for making some great comments and being a cool person.
But core CS concepts about data structures and algorithms, or designing large OO programs with your own classes and methods? Those are significantly more difficult things. Not everyone can do that.
The thing is, being a programmer means you probably hang out with people of above-average intelligence, and read things written by people of above-average intelligence, so that skews your perception of what 'average' means. I mean, we had plenty of people fail miserably at my college intro coding class, and this was at a fairly respectable tier-1 research university!
Above average programming-related intelligence, anyway.
I don't mean to imply that the current software world is a cabal of highly-skilled geniuses who need preserving - it's not. From personal professional experience, it's, on average, a nuthouse of self-promoting Java idiots with a "dropout genius" mentality who have no common sense and are not nearly as smart or good at problem-solving as their blogs or resumes would lead you to believe.
However, I think it would another discussion entirely to ask if the wrong people feel confident enough to write code. The belief that we need to reach out and bring more people into programming, in a world where the average developer struggles to cobble together a web application that isn't full of basic security holes, is ridiculous.
Also, I strongly suspect all of these efforts to drag more people into coding are at least partly sponsored by industry, in an attempt to drive the relatively-high wage of a programmer down, in the face of a perceived increase in programmer demand.
Perhaps by newer and less experienced entrants into the business market. Whenever there's a boom in a certain market, you get a lot of hacks flooding in who have a lot of money, but little sense. Web development was this way post-dot-com-crash. There were many print advertising agencies that added on web development as a service to their clients. However, they didn't alter their business practices to accommodate the needs of software development.
These agencies treated software developers like graphic designers. They almost always required fixed cost contracts for development ($X to build a website), and this caused a ton of problems that would be evident to seasoned developers. When I suggested that they change their compensation practices they would refuse, and just blame it on the original programmer for being unskilled.
I didn't mind in the beginning, because I was making $200-$300/hr to fix their problems. However, I eventually quit consulting because I got bored with cleaning up bad code caused by time/money constraints. It wasn't stupid programmers who caused the problem, but stupid business people.
Bringing it back to the main topic - I think it's wrong to get more people to code. Those who graduate with CS degrees and software development skills are entirely capable to building large, functional systems. However, a good bulk of those programmers aren't going to work at a software/tech company. They're going to work in the IT departments of companies in non-software industries. Efforts should be made to better integrate these ad-hoc IT departments into the primary business.
For myself, not feeling smart enough was why I waited longer than I should have to learn how to code.
This part especially resonates with me:
>"...we just decided to show up and go for it."
I think that's a choice that anyone has to ultimately make if they want to learn anything.
Software training programs among other things are just one way to capture people's interests, and I think is a good supplement to a larger push for people to learn how computers work.