

Ask HN: Review my "learning programming" checklist - michaelleland
http://www.silvertreksystems.com/checklist.html

======
KirinDave
It's pretty interesting when someone who doesn't really know a subject tries
to teach it. You can always see what people _perceive_ vs. what _actually is_.

------
wccrawford
Too many languages. Cut it down to 2 at most: 1 for learning the logic and
basics, 1 for actually making a project.

~~~
michaelleland
I thought of this as well. My thought here on the different languages was to
make the programmer's skill based on more than expertise in any one language.

~~~
T-R
If that's your goal, the languages need to be from different paradigms (maybe
C + Assembly, Ruby/Python, and Haskell/Clojure, and then maybe Prolog and
Factor).

If your goal is just to get someone to minimum competence so they can build
something, it's better to stick with one language (or, at worst, just a web
stack), at the very least so they don't get bogged down installing a bunch of
tools for relatively little benefit. PHP and Ruby are both Algol derivatives,
so having a person solve Project Euler problems in both and compare them won't
likely reveal much more than trivial differences.

Also, unless they have a decent math background, 100 Project Euler problems is
just going to frustrate and scare off people - some of those problems are
pretty much intractable without Dynamic Programming; anyone who hasn't taken
an algorithms course would probably take a long time to figure that out.

------
jshen
Here's my checklist.

1\. Think of something useful you want to make and create it.

~~~
chopsueyar
Your font styling is more pleasant, too.

------
freyrs3
No mention of any compiled languages? Scripting languages are good for
beginners, but to be a mature programmer you should have at least touched a
compiler at some point.

Also link to Mozilla Docs instead of W3Schools.

~~~
gte910h
Robot C (which is a compiled algol family language used to control lego
mindstorms), is quite definitely a compiled language.

This is mentioned before ruby. Additionally, using the term scripting language
pejoratively lump ruby or python in with lua, tcl, perl and awk scripts is a
little rich these days.

~~~
vladoh
Saying that Robot C is a good example for a compiled language is like saying
that watching porn is a good example for a healthy sexual life...

~~~
gte910h
And if I said that, your joke would even have a point. Instead, I pointed out
the parent was incorrect, there as a compiled language on the list, of which I
offered no opinion as to it's quality. It's definitely algol related, so is a
reasonable transition to C/Java et al.

~~~
vladoh
This was exactly the point of my post ;) Your original post is very similar to
mine - they both don't make a valid point and they both don't contribute to
the discussion (I also never said, that you said that). It is like the old
programmer and manager joke...

A man is flying in a hot air balloon and realizes he is lost. He reduces
height and spots a man down below. He lowers the balloon further and shouts,
'Excuse me, can you help me? I promised my friend I Would meet him half an
hour ago, but I don't know where I am.' The man below says, 'Yes. You are in a
hot air balloon, Hovering approximately 30 feet above this field. You are
between 40 and 42 degrees North latitude, and between 58 and 60 degrees West
Longitude.' 'You must be a programmer,' says the balloonist. 'I am,' replies
the man. 'How did you know?' 'Well,' says the balloonist, 'everything you have
told me is Technically correct, but I have no idea what to make of your
Information and the fact is I am still lost.' The man below says, "You must be
a project manager." 'Yes, I am,' replies the balloonist, 'but how did you
know?' 'Well,' says the man, 'you don't know where you are, or where You are
going. You have made a promise which you have no idea how to Keep, and you
expect me to solve your problem.'

------
ohyes
Is 'learning programming' in quotes because it is sarcastic?

You don't program anything until the final exam, and the final exam is two
relatively trivial tasks.

Just start with the final exam, and then build it out until you have something
relatively substantial. Do all of the other reading and stuff as you learn.

------
gte910h
I'd do railsforzombies.org after tryruby.org (to perhaps interest the person
in an application for ruby).

~~~
michaelleland
I added ROR at the end of the list, with an "assignment" of making a web app
to organize contacts. Do you feel that by that time the programmer will have
become bored?

~~~
gte910h
If you've learned programming and are bored, you're doing the wrong thing.

You should go "holy crap, I can make such neat stuff now" and go do that.

------
postfuturist
Don't send people to w3schools.

~~~
PetrolMan
That's not really fair. W3Schools definitely has it's uses. It's certainly not
exhaustive but it gives a good overview of a lot of different topics.

~~~
T-R
It has its uses, but W3Schools has been criticized for being inaccurate[1],
and there's better documentation out there now (HTMLDog and Mozilla Developer
Center have been mentioned[2][3]).

[1] <http://w3fools.com/> [2] <http://htmldog.com> [3]
<https://developer.mozilla.org/en-US/>

------
vladoh
I'm sorry, but after doing all the things in the list, you will not know
anything about stack, dynamic memory, pointers and so on. You can never say
you can program knowing those.

~~~
michaelleland
True. But my goal here is to get somebody to learn programming to the point
where they could reasonably apply for a job. The question is, would you hire
somebody who didn't know "stack, dynamic memory, pointers and so on" if they
were willing to learn as needed?

~~~
Hominem
This is pretty interesting to me. "stack, dynamic memory, pointers and so on"
for the most part is not something I've had to think about while programming
in the last couple years. For the most part I can ignore them, and I doubt any
new developers that learn on the job would pay any special attention to these
issues, but there is always a case that pops where this knowledge suddenly
becomes very important, and having the background knowledge is important.

Let me give you an example. I got called in to diagnose a problem with a c#
web service. They were getting constant OutOfMemory exceptions. The team's
solution was to increase memory and then throw up their hands when it that
didn't fix the issue. After looking at the code I saw that they were creating
a 500mb string. They figured this was a-ok because they had 4gb of memory.
They did not know what a string really is, even in a language like C# the
memory has to be contiguous. If they had ever worked with C they would have
known this and we could have saved time and money.

------
BasDirks

      body {
          font-family: "Verdana", sans-serif;
          font-size: 13px;
          line-height: 1.7em;
      }
    

To comment on your actual list: I'm not sure I agree with learning PHP. There
are more fun alternatives.

Also, where's HTML5?

