4 ms·
So true - a lot of people seem to really struggle with the connection between the code that goes in and the behavior that comes out. I have a theory about this
by nlawalker 9y ago
So true - a lot of people seem to really struggle with the connection between the code that goes in and the behavior that comes out.
I have a theory about this - it happens because we haven't found a way to teach kids about the connection between human effort and software created as a result of work. A huge amount of a child's education at all ages is learning how things are made. As they grow up, kids are naturally exposed to information about how the interesting things that surround them in the physical world are manifested. Buildings are erected with construction equipment, which are made in factories by machines and workers with tools. Food is made by growing and processing ingredients, which come from farms. Roads are created by construction workers with plans and maps and big machines. Society works because people do things and make things and organize things. Look in any kids book with lots of pictures and you'll see what I mean.
But software is different. Construction of software is not physical or visceral and so we can't really show kids how it's made, and most software that people actually use is so vastly complicated and visually oriented that we can't make a connection between it and simple logical concepts that kids can understand (following directions, "if" statements, "while" loops, etc.) The result is not only magical thinking, but a belief that most/all software just magically springs from the void. I've had many conversations with people who never stopped to consider that all the stuff they use on their computer was actually created by people who thought it up and then made it happen - that it's a result of human effort.
By the time people reach the age where they can learn this stuff, the empty area between "effort" and "working software" is so baked-in that they can't even comprehend that they can make computers do new things by thinking and working.
- mgkimsal 9y agoGenerally agree, and I see the 'empty area' you're talking about. I see it because I didn't experience it, and have taken years to really grok that there's a small handful of folks who start early. As much as I get pushback on it, learning programming is, imo, similar to learning another language, in that the earlier you start, the more natural it may seem. I started programming at age 9. It was really hardly 'programming' - mostly typing in code from books and magazines to start, but within a couple years I was writing my own stuff. I'm sure it was mostly crap, but I've been able to think about loops, variables, arrays, stacks, subroutines/functions and other concepts for... more than 30 years at this point. If someone 'starts' around age 17-18, then has a few years in school (while doing multiple other classes), it's little wonder they may not have as strong a grasp on the basics (missing semicolons, etc) as others with more experience. > The result is not only magical thinking, but a belief that most/all software just magically springs from the void. I've had many conversations with people who never stopped to consider that all the stuff they use on their computer was actually created by people who thought it up and then made it happen - that it's a result of human effort. I have to stop and remind myself that about cars sometimes too. There are thousands of parts on cars that all interact together, and people - thousands of people - all studied different areas to learn how to be the best at XYZ to build ABC which fits with 20 other parts to make everything work together when I press a button or turn a key. And... hundreds of others designed the machines that lets those other people build the parts they need. It's sort of crazy when you think about it! (shoulders of giants, etc).
- qyv 9y agoRegardless of the extensive science behind computer programming, I still consider programming a "creative" field. Yes, you do need sound engineering and be able to at least have a working understand some of the computer-science, but there is more to it than that. It also requires the creative ability, just like painting a picture or writing a novel. You need to be able to conjure ideas and take them from theoretical manifestations to concrete implementations. You need to be able to look at a problem and see the way to the solution, like a sculptor can look at a chunk of rock and see a statue.