
Why Johnny can't program (2002) - semicolondev
http://www.bricklin.com/wontprogram.htm
======
learning_still
Excellent article. The one thing I disagree with is IDE's. I think that they
actually present an overly complex interface that is daunting to the new user,
not helpful. Ditching IDE's and switching to a text editor and CLI has made
every aspect of programming easier for me to understand. As a new user, the
price I paid to be able to click a button and run my program, was far greater
than the price of learning how to run it from a CLI. I wish I had listened
sooner to all the people telling me not to use IDE's.

~~~
blakeyrat
When you say "IDE" you're probably meaning something like Visual Studio. Ok,
fair enough.

Now think about something like HyperCard. That's an IDE. It's eminently usable
and learnable (even friendly), and yet still does all the things an IDE does.

"IDE" doesn't have to be Visual Studio. There have been friendly IDEs in the
past, and there's no reason they couldn't be built today except nobody's doing
it. There's actually a nasty trend in software development right now that can
be summarized as "they're programmers; they don't need usability or
discoverability". Look at Git for an example. Ugh. This trend can not die
quickly enough for me.

~~~
cbd1984
I find git extremely usable, and I despise IDEs that hide anything from me.

Every hidden thing is a thing that, when it goes wrong, I can't fix. Something
"goes wrong" when it's either not working as designed, or it's broken as
designed and needs to be reconfigured or otherwise changed: The IDE handles
the wrong language, for example, and needs to use a different compiler and
have different highlighting and formatting rules.

IDEs that only handle one language are beneath contempt.

~~~
nickpinkston
Sounds like you're a power user, not a novice.

~~~
cbd1984
> Sounds like you're a power user, not a novice.

Smile when you say that. ;)

"Power user", to me, means someone who knows a lot of trivia about specific
software but no underlying theory; none of their knowledge transfers to any
other system, so their domain knowledge is constantly being obsoleted. Having
some power user traits is inevitable and desirable, but being _just_ a power
user is a stage you should strive to outgrow.

I admit that that's just a knee-jerk reaction based on my idiosyncratic
definitions.

------
Retric
I take the opposite view. Programming is fairly easy and many people do it
without realizing it. EX: Adding waypoints in StarCraft pathing for new units.

Professional programming like professional dancing is simply taking that same
idea several steps further.

~~~
pvg
The opposite view of what? Because the author discusses your point directly
and at length -

"[...] this is not to say that many people can't get immersed in systems that
require such understanding. They do in many parts of their lives. For example,
lawyers and tax accountants routinely work with such complexity in their
contracts and planning. Doctors work with an untold number of variables.
Someone planning a big party has to work out the food, matching paper goods,
favors, invitation list, entertainment, etc. Yet, all of these people rarely
program computers in addition. It's just that people who aren't professional
or hobbyist programmers usually don't want to get so immersed in something
that is infrequently done and not part of the rest of their lives. The
question really isn't "Why Johnny can't program" but rather "Why Johnny _won
't_ or _doesn 't choose_ to program"."

~~~
orionblastar
It is having an interest in learning how to program. Not everyone has it. That
is why there isn't much diversity in people hired for programming jobs, lack
of interest in programming by women and minorities. I'm sure women and
minorities can program and learn how to do it, just that a lot lack the
interest and do something else instead.

There are exceptions like people in India that get a free college education
and take up programming to get a good paying job in the West somewhere.

~~~
pvg
Not sure I understand how that's related to the article either, to be honest.

------
nickpsecurity
Good article. Yet again, benefits of BASIC and Pascal kick in. Note that these
are still maintained with idustrial-strength tools and IDE's available. Just
gotta develop courseware that takes people through a series of problems
incrementally learning the language while letting them ignore the rest of it.
Gradually pick up both the features, thinking style, and good practices.
Eventually can do the whole thing with the whole language and it's already a
production language. :)

On a side-note, the questions the author asked were partly solved with efforts
like Scratch. That project made a form of programming as easy as playing with
Legos. What kids did from there was amazing. Might be lessons to apply in the
adult tools.

[https://scratch.mit.edu/](https://scratch.mit.edu/)

------
RussellDussel
HTML is a programming language?

Makes me think there's a very grey area between declarative programming
languages and just plain data. If writing HTML is considered programming, does
that make a draftsman drawing up building plans a programmer?

~~~
kruczek
It isn't. HTML is not Turing-complete. It is a markup language, which
describes structured data, but does not describe any dynamics of that data.

------
snlacks
Amy Wohl's comment is true, but I've realized I can't pick out the right
visual tools in any field on the computer unless I already know what I'm
doing. This of course doesn't apply in a business setting where environments
are set up for you.

Text based tools are easier to keep modular and advance the process. Without
someone doing it, the visual environments seem to stagnate (anecdotally).

------
fredgrott
Some do programming..others are at the higher level of software management..

An example..in android programming I spend some time marking up my classes
with annotations telling the compiler which way I mean some java method or
statement to be treated by the compiler which improves the management of the
software dev process by reducing the error count down significantly

