I'm 50, and started with BASIC on a mainframe timeshare system. The following Dijkstra quote is proudly displayed on my cube wall:
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
I would actually go a step further with the thread title: Please don't try to teach if you can't.
When I talk to junior (or senior) folks who are learning to program, it will become evident that I've chosen different tools than what they're learning. So the discussion of tool choice is inevitable, especially if I have to admit that I don't know the language they're learning. My typical advice is to choose something that is presented with good learning tools, and maybe one that has tutorials related to a subject matter that they're interested in.
I was about to quote this quote, but I have a different opinion here.
> I would actually go a step further with the thread title: Please don't try to teach if you can't.
The line between teaching a truth and teaching a self-enforcing belief pattern has not been drawn, and I don't know if it ever will be. You can be an amazing teacher and not even know it (by making horrible mistakes that other people learn from by observation, comparison, abstraction, and analysis). Or you can be a really amazing teacher and never admit it.
> My typical advice is to choose something that is presented with good learning tools, and maybe one that has tutorials related to a subject matter that they're interested in.
>>>>> The line between teaching a truth and teaching a self-enforcing belief pattern has not been drawn, and I don't know if it ever will be. You can be an amazing teacher and not even know it (by making horrible mistakes that other people learn from by observation, comparison, abstraction, and analysis). Or you can be a really amazing teacher and never admit it.
I taught myself to program in .NET (VB and C#) this year and I've really enjoyed it. For someone who lacks the perspective of a seasoned programmer, I am routinely blown away by how easily you can incorporate .NET libraries to do cool stuff. One example - Microsoft has a standard speech recognition library, which works well for constrained grammar. As such, a desktop app with voice recognition was very easy to do.
For a variety of reasons, prior attempts at C++, Ruby, PHP never took hold for me. The main reason was I had no compelling project to complete (I have a few now, related to work). Yet, looking back on these episodes, and the experienced programmers will surely laugh, but getting a basic environment up where you can write code, build and deploy is difficult for the uninitiated, if you start on Windows as I did.
Later, with a mac, I did the first 1/3 of the one-month-rails course, which actually saw me through to creating a working ruby environment. There's lots of domain expertise which makes ruby inaccessible to the newb, not the least of which is that the most common IDE is a glorified text editor. Compare this to all the "spell-check" equivalents in Visual Studio.
anyway, now that I have a foot-hold somewhere in programming, I have a frame of reference to look up (and mostly down) the stack. Looking forward to learning more.
After 14 years of java programming which was really the language I started with, I can say that quote applies to java and perhaps any language that's not assembly, C, C++.
I think every beginner should be strongly encouraged to start with C.
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
I would actually go a step further with the thread title: Please don't try to teach if you can't.
When I talk to junior (or senior) folks who are learning to program, it will become evident that I've chosen different tools than what they're learning. So the discussion of tool choice is inevitable, especially if I have to admit that I don't know the language they're learning. My typical advice is to choose something that is presented with good learning tools, and maybe one that has tutorials related to a subject matter that they're interested in.