
Learn Python The Hard Way: Warnings For Beginners - wh-uws
http://learnpythonthehardway.org/book/ex0.html#warnings-for-beginners
======
lmkg
If someone wants to learn Python, teach them Python. Don't teach them 'nix,
gnu, bash, vimacs, git, and oh yeah Python. The big draw of programming is
that you can take a computer and _make it do something_. Shorten the path to
_doing something_ as much as possible; anything that lengthens it is premature
optimization.

They'll learn the value of those tools easily soon enough. Before someone has
actually written code, all of those things are barriers, not tools, and the
only reason to use them is cargo-cult-ism. Once they've written a few lines,
they'll start to appreciate the value on their own.

------
davecap1
I started working through this book with my girlfriend who wants to learn
Python... it turns out most people don't know/understand what a terminal or
shell is. This should have been obvious to me, but it wasn't :)

Any suggestions on how to explain what the terminal is and why it is
necessary? I feel like there has to be a "pre-learn python" book that explains
the basics of how computers work. This probably already exists though...
anybody know?

~~~
aidenn0
1) The terminal is a conversation; you tell the computer to do something and
it answers you (a lot of the time telling you it doesn't understand you).

2) When you want to do something very specific the terminal can be much more
efficient, as well as easy to explain. example "copy c:\foo.doc c:\bar.doc"

versus (e.g.):

1) Navigate explorer to c:\

2) Find the file named "foo" with the MS Word icon and click and drag it,
staying in the same window

3) Click on "Copy of foo"

4) Press F2

5) Type in "bar"

The shell way is both faster and easier to communicate to someone else (as
long as they know how to open a terminal).

------
krisoft
At my former workplace we hold regular programing workshops for absolute
beginners, mostly for groups of art students, using Processing. Surprisingly
the first and biggest pitfall what our students had to jump was always the
question: How can I type { ? So after a few occasions, we get the habit of
starting with an introduction to the whereabouts of funky characters.

I can see how fast could things turn unmanageably hard when a novice try to
tame the keyboard, an unfamiliar text editor, the command line, and a
programing language at the same time. I think that should be the reason why
all the programing systems, which are intended for non-professionals, and I
know of have a tightly coupled ide. (Arduino, Logo, NodeBox, Fluxus, and the
aforementioned Processing) Did I forget something out? Do anyone know any
popular, or less known exception?

------
d3cay
I started learning python a little while ago-there are so many options-mostly
been using trial and error to figure out the best approach-from experience
what you said TOTALLY makes sense--thanks p.s talking to other people who are
also at the moment trying to learn python seems it would help-but I haven't
been able to find any good discussion group/sites/forums/etc like that. Doea
anyone know any good ones to do that?

------
heretohelp
I'm a dedicated and long-time Emacs user but he's right.

Not everybody that learns Python is looking to become a professional
programmer, just leave them the fuck alone and let them learn to code in their
own way.

~~~
d0mine
I don't see how gedit is simpler than emacs for a complete beginner: open an
editor, start typing (letters, arrows, delete produce the same result), press
"save" button (I think emacs shows toolbar by default).

emacs gives you the power to do much more but it doesn't force you to use it.

To be fair making emacs a complete Python IDE that has the same features as
Eclipse for Java has a steep learning curve and it is not trivial. But for the
book you don't need it (some don't need it even for professional work with
Python provided that there are other useful features in emacs).

~~~
mvanveen
Did you even read the link? I'm sorry, but I can't imagine a worse time to
invoke the editor wars. Shame on you.

Look, I love my editor just as much as the next guy. I have tremendous respect
for emacs, and you can take vim from my cold, dead hands (and no, I will not
start _those_ wars now, either). But a beginner has far too much trouble just
getting shit fucking installed and working consistently.

Case in point: the reason why a menagerie of tools and scripts for setting up
programming environments make the front page of HN every week is because it's
a total schlep to try and get your environment set up. And this is an audience
of _experts_. That 30 second fabric deploy script is literally the most
convenient that process will be for anyone, ever. A beginner might have a hard
enough of a time touch typing.

I think Zed's entire point is to dissuade beginners to listen to people who
are proselytizing as you are now. Let the beginner find emacs when they're
ready. Trying to move them into that habit up front might be beyond the
opportunity cost of programming for that individual. And then a community
which is attacked left and right by ignorant people in power trying to
legislate it away will have have lost an ally do to pithy zealotry.

Any amount of editor or environment advocacy on your part is really just
injuring the signal to noise ratio.

~~~
heretohelp
Even explaining why C-s searches instead of saving in Emacs is an immense
roadblock for new users.

The guy you're responding to is suffering from this:
<http://en.wikipedia.org/wiki/Curse_of_knowledge>

Not everybody that writes code needs to be using Emacs or vim.

Just the same, not every 6 year old kid learning to play violin needs a
Stradivarius.

I've been using Emacs for _counts in head_ 13 years, almost 14 now. I've also
spent many years teaching new people to use it and I can tell you right now,
most people not willing to dedicate some time independent of anything else to
just learning Emacs will get any value out of it.

Don't distract them from learning to code. End of story.

------
gbog
I always wonder why in python context the three enemy brother OS should be
presented in Mac, Windows, Linux order. If based on usage it should be W M L,
if based "close minded ness " it should be L W M, and no other criterion I can
think of would result in M W L.

~~~
lclarkmichalek
What do you mean by "close minded ness"? Anyway, I think ease of use for many
people would be ranked M W L (cue pointless discussion based on anecdotal
evidence on all sides). But I think really, you're missing the larger point;
this does not matter in the slightest. The order in which operating systems
are talked about is _not_ significant.

~~~
gbog
What I have learnt reading good books is that every thing matters.

------
dllthomas
I strongly disagree, regarding the text editor. You'll make mistakes and want
to fix them, want to copy things, etc, and this is much easier in a decent
text editor. Learn to use vim or emacs or something of similar power before
you get started programming - it's worthwhile. Running through vimtutor is not
hard (I don't know of a similar thing for emacs, but it probably exists), and
it can speed you up wherever else you're working with text, as well.

~~~
Fizzadar
I can't understand why learning vim/emacs is in any way useful for a
programmer. Surly the best text editor is the easiest to use (ie one which
makes use of a keyboard + mouse)? Vim is certainly powerful (and unnecessarily
complicated), but when it comes to writing out code anything will do (Sublime
in my case).

~~~
tikhonj
The reason you want to learn a decent text editor is the same reason you want
to learn to touch type decently fast--you don't want to have to think about
moving around, or using your mouse, or swapping some words when you're trying
to just write code.

Also, there is a difference between "easiest to learn" (e.g. uses keyboard +
mouse) and "easiest to use" (e.g. keyboard navigation). In the hands of an
expert, Emacs and Vim are more efficient than other editors--in a very real
sense, they are _easier_ to use, but only _after_ you learn them.

Learning how to use an editor well enough to be efficient is an O(1) task. The
benefit to using a powerful editor efficiently is O(n) to however much
programming you do. Unless you don't plan on doing much programming, learning
how to use a good editor is worth it.

There are some other reasons as well (e.g. Emacs is extremely consistent,
customizable and supports every single thing you can imagine doing in a text
editor, and then some). However, I think this is all secondary to just being
more efficient and not having to think or switch contexts (e.g. never going
from typing to using the mouse to using the arrow keys and back to typing).

~~~
dllthomas
Not just programming - editing configuration files or html or other large
blocks of structured text. Which, granted, is more common in the life of a
programmer than the average person, but there are certainly non-programmers
who wind up doing a lot of it.

