Quote from abishur on October 3, 2011, 20:17
@scribe - I hear what you're saying and I don't disagree with that. I actually made a point of stating that if this device meets its goal of getting kids into programming, then this will be an introductory device. You're talking about the usefulness of an IDE in a professional environment which I don't disagree with, but I'm talking about a bunch of kids at the very beginning of the programming road. They don't need an IDE and frankly, IMHO, it's a good thing if they don't have the memory to run one for learning the basics of programming. Programmers need to be able to get down and dirty with just a notepad and a command prompt, once they've earned their bones, so to speak, then let them branch out and use IDEs
Shoot, I've been in situation on headless linux servers where even notepad would have been a luxury. I've had co-workers who have been at a complete loss because they suddenly found themselves trying to tweak a program on a headless linux server and didn't have their IDE to finish variables for them, remind them of semi-colons, remind them to include specific headers.
I recognize the usefulness of an IDE, but I also recognize that a little memory restriction for beginning programmers is a good thing. It teaches them good programming techniques makes them more versatile then someone who has only done programming with netbeans, or visual studio
Likewise, I understand where you're coming from, I began in a very similar manner and it has helped my understanding and habits, but then programming is one of my biggest passions and even I'm more willing to convince a client to work with another platform than to stick with something that's going to be a hassle, if you can make a financial case, it's logical to do what's easiest.
Having taught, very recently, students fresh out of school, not far from RaspberryPi's target age, I can say there has to be an element of universal appeal. They have to see two main things:
- Results: They need to see the fruits of their efforts. For me animating pixel graphics used to be fine, but most now feel disappointed if they're not seeing a powerful use of 3D graphics on the screen.
- A future: They need to be able to see how the programming will help them in the future. If we're suggesting excel is a sorry excuse for "programming" then we need to show them something both more powerful but also equally a time-saving and handy tool.
I found that if I provided a high level scripting introduction that could teach them to enjoy the subject, those who were so inclined would ask to progress further into deeper C++ coding meanwhile everyone was happy.
I did try the approach of non-visual text-based products in C++ as well, I found that the students had more concern for the importance of syntax and structure in order to avoid compiler errors, but after reviewing their progress the following year they had the least knowledge retention, even though they had the simplest tasks and less passion to continue with programming.
I think it's easier to teach C++ as opposed to scripting as it's well structured and so you can teach it in a structured manner, but in the long run it misses the primary most basic need of making sure the students might ever put what you're teaching them to practical use, which is a goal that must be met before any other learning has relevance.
My personal opinion is that in the same way we think excessive memory usage is a bad thing, I believe that not promoting the use of modern tools, simpler, unified, platforms and APIs is against progress and it doesn't promote well the infinite potential of programming.
I guess it all comes down to are you going to drill it into them at an early age vs are you going to let them enjoy it and make the drilling a little more optional. Modern teaching (at least for 16+) says the former is the wrong approach, which I don't agree or disagree on but this has created attitudes and expectations in current students that make following through with the former much more difficult and less effective. I myself left my own education from displeasure with this approach, even though once I was given the freedom I pursued a very similar path. My experience has also told me the latter approach is most effective, even if you have to put-up with bad coding practises at first.
I think for an IDE free approach to work, you'd have to catch them in year 7 and 8 before they've had time to form opinions big enough to question what they're taught in order to see a good return. From the point of view of a new coder old enough to have an opinion but who doesn't fully understand programming, not using modern tools just seems highly illogical and it's hard to convince them of anything else at this stage.