6 ms·
Ask HN: Review my "learning programming" checklist
- wccrawford 15y agoToo many languages. Cut it down to 2 at most: 1 for learning the logic and basics, 1 for actually making a project.
- michaelleland 15y agoI 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 15y agoIf 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.
- postfuturist 15y agoDon't send people to w3schools.
- PetrolMan 15y agoThat'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.
- jamiltron 15y agoIf by "good overview" you mean "often incorrect and sometimes extremely harmful" you are correct: http://w3fools.com/ http://w3fools.com/
- T-R 15y agoIt 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/ http://w3fools.com/ [2] http://htmldog.com http://htmldog.com [3] https://developer.mozilla.org/en-US/ https://developer.mozilla.org/en-US/
- freyrs3 15y agoNo 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 15y agoRobot 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 15y agoSaying 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 15y agoAnd 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 15y agoThis 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.'
- vladoh 15y agoI'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 15y agoTrue. 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?
- chopsueyar 15y agoNo.
- jordanmessina 15y agoEveryone claims in a job interview they're willing to learn as needed. You hire programmers because they know how to program and will be valuable from the start. Not some novice who did some rails tutorial.
- Hominem 15y agoThis 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.
- gte910h 15y agoI'd do railsforzombies.org after tryruby.org (to perhaps interest the person in an application for ruby).
- michaelleland 15y agoI 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 15y agoIf 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.
- jshen 15y agoHere's my checklist. 1. Think of something useful you want to make and create it.
- chopsueyar 15y agoYour font styling is more pleasant, too.
- KirinDave 15y agoIt'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.
- BasDirks 15y agobody { 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?
- ohyes 15y agoIs '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.