People Feel Dumb: That's why they don't code
impressmyself.co
impressmyself.co
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.