General question to other developers...

R

RvGrah

I've been writing in C# for about 4 years now, coming from VB.net and
VB6 before that, in which I know I'm not alone. I found learning C#,
at least to the extent that I use it in developing database front-
ends, to be rather painless. The language and VS ide seemed
comfortable pretty quickly.

Some of the enhancements that have come along in the last two updates
(via VS 2005 and 2008) like Generics and now Linq and anonymous types
etc, are really nice, but seem to have made the learning curve a bit
steeper. I'd like to see my son learn coding, but where I used to tell
him he could get off the ground in a few months, that now seems more
like two or three years. After all, how would you use Linq to Sql if
you didn't understand T-Sql yet? And WPF seems like it has great
potential, but that's another layer again.

Anybody have thoughts they care to share on this?

Bob
 
J

Jon Skeet [C# MVP]

RvGrah said:
I've been writing in C# for about 4 years now, coming from VB.net and
VB6 before that, in which I know I'm not alone. I found learning C#,
at least to the extent that I use it in developing database front-
ends, to be rather painless. The language and VS ide seemed
comfortable pretty quickly.

Some of the enhancements that have come along in the last two updates
(via VS 2005 and 2008) like Generics and now Linq and anonymous types
etc, are really nice, but seem to have made the learning curve a bit
steeper. I'd like to see my son learn coding, but where I used to tell
him he could get off the ground in a few months, that now seems more
like two or three years. After all, how would you use Linq to Sql if
you didn't understand T-Sql yet? And WPF seems like it has great
potential, but that's another layer again.

Anybody have thoughts they care to share on this?

I don't think C# is an ideal first language, to be honest -
particularly not C# 2 and 3. I've heard good things about Squeak, a
Smalltalk variant often used for education.
 
E

Edwin van Holland

Bob,

The learning curve for basic .NET 2.0 is not that hard. Even if your son
has little to none experience in coding he should be able to create
console / form applications in no time. When using form applications he
immidiately sees what he has created so its a good motivation to
continue. When he has basic knowledge of C# it might be wise to show him
some sql before letting him work with linq. the step will be small from
there as the basics of linq aren't to difficult to understand with some
sql knowledge.

Finally WPF: I can't say I've tested a lot of WPF features but what i've
seen indeed has great potential. The only problem is that the components
have different attributes and methods then the normal c# components so
that development was not as easy as I hoped. Also, when deploying wpf
over the internet as an xbap application all king of security issues
come up.

Hope this information could be of any help

Edwin
 
P

Peter Duniho

[...]
Some of the enhancements that have come along in the last two updates
(via VS 2005 and 2008) like Generics and now Linq and anonymous types
etc, are really nice, but seem to have made the learning curve a bit
steeper. I'd like to see my son learn coding, but where I used to tell
him he could get off the ground in a few months, that now seems more
like two or three years. After all, how would you use Linq to Sql if
you didn't understand T-Sql yet? And WPF seems like it has great
potential, but that's another layer again.

Anybody have thoughts they care to share on this?

I agree with Jon that C# is probably not a good choice for a first
computer language.

Frankly, I think that someone first getting into programming, especially
at a young age, should probably not even start out with an OOP language.
For all its flaws as compared to other high-level languages in common use
in the industry, BASIC still remains IMHO a very good introduction to the
basic ideas of data storage, flow control, and i/o. There's a reason the
word "beginner" is in the name. :)

And I'm not talking about an OOP variation of BASIC like VB or VB.NET
either. Just plain old BASIC. Though, properly managed I think one could
use a VB-based environment to introduce someone to programming. You'd
just need to be careful to provide all of the non-BASIC goop for that
person.

Another good starting language is Logo. Granted, it's a little more
object-oriented and even a bit functional in nature, but IMHO it's still
at its heart a straight-forward procedural language. It's also inherently
graphical, which can make it a bit more fun to play with than BASIC
(though frankly, when I was a child learning BASIC, it never once occurred
to me that I might not be having fun even when the only output I could do
was text).

I also think that Lisp can be a good starting language. It's actually a
relatively powerful language IMHO, but it's fairly simple to describe at
its most basic. Of course, the downside is that learning Lisp doesn't
really give you much of an introduction with respect to the procedural
environments that are the bread-and-butter of the software industry. But
at least it helps a person start thinking in a more structured,
computer-friendly way (which IMHO is an essential part of being a
programmer).

Basically, I don't think that C#, or any .NET environment for that matter,
is a very good way to introduce someone to programming. Even without the
changes in C# 2.0 and 3.0, it's a fairly complicated, abstract environment
and much better suited to someone that already has some good programming
fundamentals under their belt.

Pete
 
J

JTC^..^

I don't think C# is an ideal first language, to be honest -
particularly not C# 2 and 3. I've heard good things about Squeak, a
Smalltalk variant often used for education.

It's difficult to argue my case as C# is my first and only language - next
to T-SQL. I started learning about 2 years ago. I passed my 70-316 Window
Applications exam after 1 year. Before that I'd already done 70-229 Sql
Server 2000 Design and Implementation, so I had a head start I guess.

I didn't work as a programmer. I was (and still am) a tester working in a
small development team, looking to give my self that little bit more to
prove myself. I've recently started work along side the developers in the
team on a C# application; two of which are VB6 developers. I'm acting as a
mentor to get them using C#. From the start I've always concentrated on the
concepts of OOP, so I simply think that way when I'm programming; trying to
pass those concepts and my idea on the VB6 programmers is interesting and
frustrating for both. They just struggle to grasp the OOP concepts.

IMHO, with the possible exception of the functions provided in .Net
Framework, C# is just another programming language. Encapsulation and
inheritance etc are powerful concepts with OOP, otherwise is there really
that much of a difference? Yet as I said before "It's difficult to argue my
case as C# is my first and only language".
 
A

Alun Harford

Peter said:
[...]
Some of the enhancements that have come along in the last two updates
(via VS 2005 and 2008) like Generics and now Linq and anonymous types
etc, are really nice, but seem to have made the learning curve a bit
steeper. I'd like to see my son learn coding, but where I used to tell
him he could get off the ground in a few months, that now seems more
like two or three years. After all, how would you use Linq to Sql if
you didn't understand T-Sql yet? And WPF seems like it has great
potential, but that's another layer again.

Anybody have thoughts they care to share on this?

I agree with Jon that C# is probably not a good choice for a first
computer language.

Frankly, I think that someone first getting into programming, especially
at a young age, should probably not even start out with an OOP
language. For all its flaws as compared to other high-level languages
in common use in the industry, BASIC still remains IMHO a very good
introduction to the basic ideas of data storage, flow control, and i/o.
There's a reason the word "beginner" is in the name. :)

There's also a reason Dijkstra wrote:

"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 don't think "beyond hope of regeneration" is quite right, but it
certainly does far more harm than good.

Alun Harford
 
A

Alun Harford

RvGrah said:
I've been writing in C# for about 4 years now, coming from VB.net and
VB6 before that, in which I know I'm not alone. I found learning C#,
at least to the extent that I use it in developing database front-
ends, to be rather painless. The language and VS ide seemed
comfortable pretty quickly.

Some of the enhancements that have come along in the last two updates
(via VS 2005 and 2008) like Generics and now Linq and anonymous types
etc, are really nice, but seem to have made the learning curve a bit
steeper. I'd like to see my son learn coding, but where I used to tell
him he could get off the ground in a few months, that now seems more
like two or three years. After all, how would you use Linq to Sql if
you didn't understand T-Sql yet? And WPF seems like it has great
potential, but that's another layer again.

Anybody have thoughts they care to share on this?

I don't think C# is a good first programming language.

The 'purer' functional languages are a much better bet. ML, Haskell, and
(if you want a .NET language) F# are much better languages to learn first.

Alun Harford
 
J

Jon Skeet [C# MVP]

IMHO, with the possible exception of the functions provided in .Net
Framework, C# is just another programming language. Encapsulation and
inheritance etc are powerful concepts with OOP, otherwise is there really
that much of a difference? Yet as I said before "It's difficult to argue my
case as C# is my first and only language".

Yes, there are massive differences between different types of
programming language. Have a look at things like Haskell or Lisp, and
then compare them to C# again. Even consider "pure" SQL (rather than
say T-Sql etc) - it's a different world.
 
P

Peter Duniho

There's also a reason Dijkstra wrote:

"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 don't think "beyond hope of regeneration" is quite right, but it
certainly does far more harm than good.

I don't understand that comment, and I think it's hopelessly
narrow-minded. Just because Dijkstra knows something about programming,
that doesn't mean he knows something about _teaching_ programming. That
statement proves to me that he doesn't know enough about teaching.

An entire generation of programmers were raised on BASIC, myself
included. I have not found my BASIC experience to be a liability, and in
fact if anything it made me appreciate the more structured environments I
was exposed to later. Beyond that, BASIC is extremely simple and provides
a no-nonsense, no-complications initial exposure to the idea of thinking
like a computer.

Frankly, I've seen far too many people approach programming from a sort of
gestalt, holistic point of view, trying to do everything at once rather
than applying a good methodical approach. They have no idea where to
start, so they try to start everything all at once and fail miserably. I
suspect that these people have been exposed to higher-level, highly
abstract concepts far too early. They don't have the discipline required
to work through problems a piece at a time the way that computers insist
on.

And finally, any teacher who says that teaching a student is impossible is
simply a failure as a teacher. Assuming a student who is willing, any
competent teacher should be able to convey whatever concept they need to.
Blaming that failure on the student or the student's prior experience is a
cop-out. It is true that the "law of primacy" applies, and a student who
has learned bad habits from their use of BASIC will have to unlearn them
and this is harder than learning the good habits in the first place. But
BASIC doesn't in and of itself cause bad habits (you can just as easily
teach good habits in BASIC as elsewhere, within the limitations of BASIC
of course), and in any case these bad habits are always unlearnable.

Maybe it's my own bias, based on my own experience, but I don't consider
myself a bad programmer and I don't think that I was "mentally mutilated
beyond hope of regeneration". I think it's silly for anyone to claim that
BASIC is necessarily going to be a cause of something like this happening.

Pete
 
A

Arne Vajhøj

RvGrah said:
I've been writing in C# for about 4 years now, coming from VB.net and
VB6 before that, in which I know I'm not alone. I found learning C#,
at least to the extent that I use it in developing database front-
ends, to be rather painless. The language and VS ide seemed
comfortable pretty quickly.

Some of the enhancements that have come along in the last two updates
(via VS 2005 and 2008) like Generics and now Linq and anonymous types
etc, are really nice, but seem to have made the learning curve a bit
steeper. I'd like to see my son learn coding, but where I used to tell
him he could get off the ground in a few months, that now seems more
like two or three years. After all, how would you use Linq to Sql if
you didn't understand T-Sql yet? And WPF seems like it has great
potential, but that's another layer again.

Anybody have thoughts they care to share on this?

C# is not that bad a language to start with.

Just start with a reasonable level of ambition.

Do not jump to LINQ in week 2.

Of course there are other languages as well.

20 years ago Pascal was generally considered *the* language
for learning programming.

It is not in favor today, but it is still a good learning
language. Not too complex and you will learn good practices.

Arne
 
F

Family Tree Mike

I just would add that my kids, started with "Scratch", a language from MIT.
It teaches some of the basic principles before moving on to a more
traditional language. I liken it to the old "Logo" language. Now the older
one is dabbling in C#.

http://scratch.mit.edu/
 
A

Arne Vajhøj

Peter said:
I don't understand that comment, and I think it's hopelessly
narrow-minded. Just because Dijkstra knows something about programming,
that doesn't mean he knows something about _teaching_ programming. That
statement proves to me that he doesn't know enough about teaching.

An entire generation of programmers were raised on BASIC, myself
included. I have not found my BASIC experience to be a liability, and
in fact if anything it made me appreciate the more structured
environments I was exposed to later. Beyond that, BASIC is extremely
simple and provides a no-nonsense, no-complications initial exposure to
the idea of thinking like a computer.

Dijkstra worked as a teacher at a university for several years and wrote
a book about teaching computer science, so he must have had some
experience with teaching.

It should be note that he said that about BASIC in 1975. And the BASIC
of 1975 was let us call it "basic" and did not have the capabilities
of recent BASIC dialects like VB.NET and VB6.

Arne
 
J

Jeroen Mostert

Peter said:
I don't understand that comment, and I think it's hopelessly
narrow-minded. Just because Dijkstra knows something about programming,
that doesn't mean he knows something about _teaching_ programming. That
statement proves to me that he doesn't know enough about teaching.
It's a good thing he's dead, because he'd be deeply offended at that
statement. Teaching programming (and discussing how it ought to be taught)
was his life's work, you know. He was also a good programmer, but that's
almost beside the point.

The thing is, Dijkstra had a very different view from what programming is
(or ought to be) than most of us do, and it was that view he was trying to
teach. That view is completely divorced from the "try stuff out and see
where you end up" approach that BASIC encourages, and that's what his
characteristically hyperbolic statement is getting at. I don't think he
would have objected to the attitude per se (we all have to start somewhere),
but what he definitely did object to was the Dark Ages he felt that BASIC
(and for that matter still almost all modern programming languages) were
keeping programming in.

I can tell you that Dijkstra certainly did know about teaching programming
-- his kind of programming. Now, it's one thing to say that his kind of
programming was too academic or incomplete to be a valid basis for teaching
programming as we know it. That's undoubtedly true, and he himself knew it;
he just thought everyone else was just wrong on that. For what he did teach,
he taught it well.

I say this as a programmer who started out on BASIC, and who once sat in a
class taught by Dijkstra. And while I must obviously disagree on his opinion
that that therefore qualifies me as "mentally mutilated beyond hope of
regeneration" :), it also allows me to see why he *would* say that, and why
it can't be taken literally.
And finally, any teacher who says that teaching a student is impossible
is simply a failure as a teacher.

On the other hand, anyone who claims that, given enough time and effort,
*anyone* could be taught to program well, is arguably part of the problem.
This was another one of Dijkstra's peeves. What do you mean, "elitist"?
 
P

Peter Duniho

It's a good thing he's dead, because he'd be deeply offended at that
statement.

That seems doubtful to me. How could someone who makes such blatantly
offensive statements themselves be so easily offended?

In any case, if he would be offended, then he ought not to have made such
an offensive statement. People in glass houses, etc.
The thing is, Dijkstra had a very different view from what programming
is (or ought to be) than most of us do, and it was that view he was
trying to teach.

If your point is that his idea of what's a "good programmer" is different
from the rest of the world's idea, that's fine with me. But then the
quoted statement is entirely irrelevant in this discussion.
[...]
And finally, any teacher who says that teaching a student is impossible
is simply a failure as a teacher.

On the other hand, anyone who claims that, given enough time and effort,
*anyone* could be taught to program well, is arguably part of the
problem.

I did qualify my comment as being applicable only to a student who is
themselves willing to be part of the process.

There are obviously some people that are unteachable. Whether due to
mental defect or simply their lack of interest in the topic. But
otherwise, it is simply untrue that it could be impossible to teach a
particular person a particular topic. Human beings are designed to learn,
and given a student has all the normal functioning human intelligence and
who is able and willing, they can be taught anything.

Pete
 
A

.\\\\axxx

My 2c...

It is more than likely that, if your son progresses in programming, he
will be writing in an OOP environment.
My belief (as an experienced software developer using pretty much any
language you care to mention (yes, I'm THAT old)) is that the best
thing to teach a student today is OO concepts. These are so poorly
understood by so many developers today, that a good understanding puts
you a step ahead.
Whether C# is the 'best' language is debatable - and I think depends a
great deal on age and prior experience. All those curly braces
sometimes make it look a little scarey to first timers!

Remember, you don't have to look at the whole of the .NET 3.5
framework if you are teaching programming. Start with a simple Hello
World form - click the button and change the label text. This
introduces OO (and also alows the student to play with the form
properties, (which can be a distraction in the classroom environment,
I admit, but playing with properties is introducing OO in an easy way)

You can progress from there whichever way your fancy takes you -
introducing just parts of the framework that are necessary to develop
the program. Initially, I feel, this will involve introducing the
usual programming concepts common to most programming languages -
iteration and conditional programming being the two major constructs.

Moving on to databases does become increasingly complex - and (in my
experience) DB concepts are often taught separately, introducing SQL
outside of the development environment, so that when tying together
some front ent program to a database, both ends are familiar to the
student.

One problem that occurs here is the abilities of the teacher. Many
teachers were brought up on procedural languages, and many take the
'it didn't do me any harm' view. This is a poor argument. I have a
friend who never wore a bicycle helmet when he was young, and it never
did him any harm either - so he lets his kids ride around without
them. Of course, his school friend who was killed when not wearing a
helment didn't grow up to sire any offspring...

..\\ax
Software developer for more years than I care to remember, high school
teacher for not very long at all.
 
P

Peter Duniho

My 2c...

It is more than likely that, if your son progresses in programming, he
will be writing in an OOP environment.
My belief (as an experienced software developer using pretty much any
language you care to mention (yes, I'm THAT old)) is that the best
thing to teach a student today is OO concepts. These are so poorly
understood by so many developers today, that a good understanding puts
you a step ahead.

No question that OOP is going to be an eventual step for any serious
programmer.

But. We don't insist that children go straight to walking. We let them
practice crawling first. That allows them to master basic concepts like
perception and navigation before they are up on two feet going too fast
for their brains to keep up.

Likewise, even OOP programming still involves a lot of basic procedural
implementation details. I don't care how well a person has been taught
OOP design, if they haven't mastered the basic mechanics first they still
won't be able to write a useful program.
[...]
One problem that occurs here is the abilities of the teacher. Many
teachers were brought up on procedural languages, and many take the
'it didn't do me any harm' view. This is a poor argument.

In that situation, sure. I agree. A bicycle helment is demonstrably
useful in preventing injuries and death that might otherwise occur. Just
because someone lived through not wearing one, that doesn't mean a
helmet's not useful.

But it's a pretty far stretch to use the same argument to justify a claim
that learning programming without OOP concepts as an initial step is
harmful to one's future as a programmer. All the evidence in fact argues
against this claim. On the other hand, it's well-proved that when
teaching something to a person, it does no good whatsoever to jump ahead
to advanced topics before they have mastered the foundational elements.

Pete
 
A

.\\\\axxx

No question that OOP is going to be an eventual step for any serious
programmer.

But. We don't insist that children go straight to walking. We let them
practice crawling first. That allows them to master basic concepts like
perception and navigation before they are up on two feet going too fast
for their brains to keep up.

Likewise, even OOP programming still involves a lot of basic procedural
implementation details. I don't care how well a person has been taught
OOP design, if they haven't mastered the basic mechanics first they still
won't be able to write a useful program.

I believe you think of OOP as being an advanced concept because it was
learned by you post procedural coding - and not hand-in-hand. If we
are going to be walking in a jungle environment, we shouldn't learn to
crawl in a suburban loungeroom (sorry - running out of relevant
examples). OOp is, if you like, the environment, so learning to
program in that environment is, I would think, the best environment
for learning. And learning procedural language can be done just as
well in that environment as in another.
[...]
One problem that occurs here is the abilities of the teacher. Many
teachers were brought up on procedural languages, and many take the
'it didn't do me any harm' view. This is a poor argument.

In that situation, sure. I agree. A bicycle helment is demonstrably
useful in preventing injuries and death that might otherwise occur. Just
because someone lived through not wearing one, that doesn't mean a
helmet's not useful.

But it's a pretty far stretch to use the same argument to justify a claim
that learning programming without OOP concepts as an initial step is
harmful to one's future as a programmer. All the evidence in fact argues
against this claim. On the other hand, it's well-proved that when
teaching something to a person, it does no good whatsoever to jump ahead
to advanced topics before they have mastered the foundational elements.
All the evidence? You mean all the OOp programmers now who learned on
procedural languages first? I've met a large number who were, frankly,
crap at OOP - and I have never met a professional who was brought up
on OOp from first principals - so what evidence?

and again - sure you need to teach the basics before going on to the
advanced, but do you really think OOP is advanced? I think of it as
simply a different way of thinking about a problem - and in fact with
kids I find it makes more sense to them as a concept that 'pure'
coding. Sure, they still need to learn how to write a function, and a
loop, and an If and Switch (or whatever) (and, please, nobody teach
them to use GoTo :) but doing this in an OO environment, using OO
terms, is a great introduction to something which, at its heart, is
not advanced - just different.
 
P

Peter Duniho

I believe you think of OOP as being an advanced concept because it was
learned by you post procedural coding - and not hand-in-hand.

That's not why I think of OOP as being advanced. OOP requires a certain
level of abstract thinking that is simply not even present in most young
children. On the other hand, the idea behind a basic loop iteration (for
example) is something anyone who can count and follow instructions can
easily grasp.

OOP _is_ advanced. And not just because I didn't learn it first.
[...]
All the evidence? You mean all the OOp programmers now who learned on
procedural languages first? I've met a large number who were, frankly,
crap at OOP

Irrelevant. The assertion was that it's impossible to teach good
programming practices to someone who started with BASIC. To refute that
assertion you need only demonstrate some (or one, for that matter)
programmers who started with BASIC but who have learned good programming
practices.

Every field has what I believe to be a relatively high number of people
who don't practice the field with proficiency. Honestly, in most cases I
think it's more an issue of the people just not caring than anything
else. Those people _could_ be good at what they do, if only they had some
pride in their work.

But even if all those people are truly intractably bad at what they do,
it's the _other_ people that are relevant. Those who serve as
counter-examples to the false claim. And no matter how many bad
programmers you find, there are plenty of the other kind.
- and I have never met a professional who was brought up
on OOp from first principals - so what evidence?

Well, unless it's your claim that you also have never met a professional
who has learned good programming practices, then you have stated the
evidence right here (anecdotal though it may be).
[...] Sure, they still need to learn how to write a function, and a
loop, and an If and Switch (or whatever) (and, please, nobody teach
them to use GoTo :) but doing this in an OO environment, using OO
terms, is a great introduction to something which, at its heart, is
not advanced - just different.

Even assuming you can successfully teach your student OOP, the OOP
concepts cannot be used at all (in mainstream programming contexts)
without the procedural/imperative foundation. It's a basic matter of
primacy: you can write a program with imperatives but without OOP. You
can't write a program with OOP but without the imperatives. Frankly,
that's all it takes to know that one follows the other.

Pete
 
R

RvGrah

Well I almost forgot about my pensive moment this afternoon. Thank you
all for weighing in...

Let me add some preface. My dad wrote Cobol in the Sixties for
Chrysler International out of their London offices. Later he wrote
Basic for an insurance company stateside. He wanted me to learn coding
when I turned 18 in 1973, but I had my head just about anywhere else,
despite the fact that I had the ability to learn programming then as I
do now. I finally got into writing code full-time for a living in 2000
(never actually had a computer until 1995!). This was after various
careers, mostly in construction and as a contractor. I still work in
the construction field, just as a developer for a larger construction
company that has some ambitious software ideas.

My son is now 18, and I want him to learn to write code. He's going to
go to a local school to learn Dreamweaver and graphic arts type
things, but he has the smarts to just dive in and learn code, if he
could develop the inclination and determination to do it. He has his
head in music and all the other kinds of things 18 year olds do.

It seems to me at least, that for a smarter individual, seeing
programs go together that right away have their own gui, colors,
tricks is more gratifying than doing things that just print results to
a screen. I know it did for me. I've shown him how to build a simple
sql server set of three or four tables and then query them from C# and
display results in an Infragistics grid. I'm sure he grasped all of
it, but kids nowadays are a lot harder to amaze and surprise than my
generation was 35 years ago.

I don't really think the whole OOP versus procedural thing is such a
big issue. You can use VB.Net or C# as mostly a procedural language
anyway until you start to grasp the concepts of how the tools you work
with are all object based and then start building your own little
classes and overrides as you see a need. All depends on the kinds of
things you're developing... But the gratification factor is much
higher, imho, with any "visual" language-ide.

Bob
 
R

RobinS

Peter Duniho said:
It's a good thing he's dead, because he'd be deeply offended at that
statement.

That seems doubtful to me. How could someone who makes such blatantly
offensive statements themselves be so easily offended?

In any case, if he would be offended, then he ought not to have made such
an offensive statement. People in glass houses, etc.
The thing is, Dijkstra had a very different view from what programming
is (or ought to be) than most of us do, and it was that view he was
trying to teach.

If your point is that his idea of what's a "good programmer" is different
from the rest of the world's idea, that's fine with me. But then the
quoted statement is entirely irrelevant in this discussion.
[...]
And finally, any teacher who says that teaching a student is impossible
is simply a failure as a teacher.

On the other hand, anyone who claims that, given enough time and effort,
*anyone* could be taught to program well, is arguably part of the
problem.

I did qualify my comment as being applicable only to a student who is
themselves willing to be part of the process.

There are obviously some people that are unteachable. Whether due to
mental defect or simply their lack of interest in the topic. But
otherwise, it is simply untrue that it could be impossible to teach a
particular person a particular topic. Human beings are designed to learn,
and given a student has all the normal functioning human intelligence and
who is able and willing, they can be taught anything.

I used to believe that, but I don't any more. Not everybody can understand
everything, whether because of their background, or because of some kind of
wiring, I don't know.

Some people "get" math while to others it is incomprehensible.

I made A's in Organic Chemistry (eons ago) and it all made complete sense to
me, where others who really, really wanted to do well in the class and spent
hours studying, couldn't get higher than a C no matter how hard they tried.

Some programmers you work with see the patterns and know how it all fits
together. Others barely get it to work and it hangs by a thread.

And when I was writing software with other developers for chemical plants, I
explained repeatedly that pressure and temperature affect the volume of a
fluid, but still got the same questions over and over again (the valve is
open 100% all the time, but the volume fluctuates; why?) from the same two
people because they just could not comprehend that one simple fact.

RobinS.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top