Hacker News new | ask | show | jobs
by spacemanaki 5401 days ago
I think the assumption here is that if someone asks you, “I want to learn to code, what should I do?” they know you already, since if they were asking the anonymous internet hordes, they're already basically doing what this post suggests.

If you ask someone you know for advice, you aren't going to get the same thing you get if you ask Google, and you aren't even necessarily looking for the same thing. I was in exactly this situation earlier in the summer, when my brother asked me, after taking MIT's intro to programming class using Python, "What language should I learn next?". When he asked me that, he wasn't looking for the best possible answer from the best engineers who are posting to Stack Overflow, he was asking his brother, who might be able to help him when he stumbles, since I would likely recommend languages I know. I also know that he's not a CS student, he's studying urban planning, so I could reply with that understanding, and say that he might not need to learn another language at all, but instead could branch out with Python to hack on stuff he didn't get to work on in his CS and GIS classes, like web programming or games.

So no, don't just point them at Google. Tell them YOUR story about how you learned to program, and tell them what YOU would do differently. Tell them to learn a language that you know, so you can help them. Or a language you want to learn, so you can learn with them. I know that teaching yourself via Google can be extremely gratifying, and I think it works great for some people, myself included. However it doesn't work for everyone, and sometimes it's nice to have a personal connection like this: "I learned to program when X helped me to do Y."

edit

as I was writing this I was itching to reach for something I'd read before, and I remembered now that it was probably Norvig's "Teach Yourself Programming in Ten Years". There he suggests a way to choose a language: "Use your friends."

3 comments

Exactly. This is the worst advice I have seen on entering coding, maybe ever:

The answer to every question is out there. Engineers know that better than anyone. Even the best engineers ask Google questions all the time. The biggest difference between you and an engineer is the mindset.

After you have the right mindset, here is how the execution will go:

You start asking Google questions, which leads you to all sorts of resources on StackExchange and Quora and a million blogs and other websites. You find twelve tutorials on HTML and nine on CSS, and you bounce around between them to find the best ones

Unless you're a pretty amazing auto-didact this is terrible advice. The author posits his advice as learning how to learn on your own (which is good to a certain degree), but what this advice requires is to first become an expert in querying Google and not only sorting results but going through all the different recommendations? How would someone without programming experience effectively evaluate which are 'the best ones' from the spam and the outright wrong articles?

Over the last few years < 10 people have asked me "how would i become a programmer" or "what's the best way to learn SQL", or something similar. The first questions I ask are 'what do you want to do' and 'why do you want to be a programmer'.

I'd never really considered "go google some keywords, read everything on the first page, and let me know how that works out for you"

well, but i can see the point of the author. and this is the way i learned everything i know. perhaps is not suitable for everyone.
> don't just point them at Google. Tell them YOUR story ... and .. what YOU would do differently ...

> Use your friends

These are good bits of advice. I would also encourage folks here to realize just how far programming is from what most people do all day. When you live in Windows XP all day, grew up with Windows, and spend your time talking with people about, in my case, medicine, and family in the evenings, programming isn't even on the periphery. It's on the other side of a freaking ocean. In the few occasions I've actually met a programmer and talked with them, it is a fantastically rare luxury, and I have learned to try and ask the best questions I can when I have those moments. Most don't want to "talk about work".

It can be a long (years) slog. In my case I had to figure out enough networking to be given an old CPU in exchange for setting up a router. Then figuring out how to burn and load a SuSE on it (10.3, with a very broken Zypper -- imagine suffering with that as your first distro when you don't even know if it's your fault and don't know anyone who can help). Then I had to figure out enough command line stuff to not be totally lost (and forget huge numbers of one-liners, not sure if they would be useful in the future). Then try about 10 different languages trying to find what works. Oh, did I mention learning Vi and Emacs with nothing but Google?

To anyone out there alone in the woods, trying to learn this on their own, I definitely recommend buying Lutz's Learning Python and read what of it you need to while working through Zed Shaw's Learn Python the Hard Way. And have questions ready in case you ever find yourself sitting next to a professional programmer on a bus in Okinawa.

Absolutely, there is a major difference between 'ask Google' and 'ask a mentor'.

I don't get a lot of chance to code, but I do enjoy scripting. Google is fantastic at answering questions when I know what it is I want to do. But it's terrible at preventing bad habits. "But this guy on this website said do -foo- and it works perfectly!", to which my mentor says "yuk yuk yuk yuk. do not do that. It does not scale. It relies on -bar-. And most importantly, it's revealed that you do not understand the concepts behind why you are doing -foo- and what it is you actually want to achieve".

I'm extremely fortunate in that I have access to a very good mentor who loves chewing the tech fat with me and genuinely loves sharing tech info with anyone at any level. I don't take enough time to take advantage of him, but I recognise that it's really rare to have someone who is both highly skilled, a good teacher, and motivated.

Google is great for the things that google is great at. But it does not take the place of a good mentor. I've read code sample after code sample and made a script do -foo-, but my mentor has picked up some subtely as to why I should be doing -bar- instead.

To some extent, it's reflected in the "RTFM" ideology. Man pages are great... if you already know what you're doing. If you're new to a concept, they vary from 'great' to 'fucking abysmal', as they take all sorts of knowledge for granted. Telling someone "just go learn from the documentation" is slightly evil, in my opinion. Yes, absolutely, there must be a culture where you go for the documentation early and often, but guidance and direction from experts is extremely important.

> don't just point them at Google. Tell them YOUR story ... and .. what YOU would do differently ...

> Use your friends

These are good bits of advice. I would also encourage folks here to realize just how far programming is from what most people do all day.

It's interesting for me to read this thread because you could find/replace programming insert any number of other activities, like writing (the one I'm closest too), but music, photography, cooking, and many others probably apply too.

Theoretically, you could be a steppenwolfe and teach yourself how to write without any direct interaction from others, or others from the Internet hordes. But it would be so damn difficult and time consuming that you'd be better off finding a friend—any friend—who is already at least moderately proficient and getting her to read your stuff.

I'm a grad student in English lit, so when I tell people I spend a lot of time writing and they reply by saying, "I write" or "I want to write better" and are curious about what's going on, I'll talk about my experience and what I've done and so on. If they want me to read their stuff I will, provided they pass the (very low) barriers described here: http://jseliger.com/2010/10/02/how-to-get-your-professors%E2... .

The mentor / mentee or teacher / student paradigm exists for a reason. Yeah, a lot of its official manifestations in the school system don't work real well, but there's a reason it's there.

I feel I routinely go the extra mile to make friends who know what I'm interested in. I go to meetups, I moved to a city where there are a lot of hackers, I participate in forums like this. I've kept myself engaged in the few software-related projects I've had to opportunity to be involved in, and those are some of my closest friends. I try to ask good questions. But there are no programmers in either of the buildings I work in. I couldn't make lunch buddies or work-out buddies with a hacker if I tried. Dentist? Doctor? Sure. Hacker, not so much. Don't get me wrong, I've got great work-out buddies, and by the Stallman definition, they're hackers, but not the computational sort.
It is a question of character and what the person wants to get out of next learned language. Sometimes people want to impress peers, get a raise - reasons can be many. Honesty is important factor here. Sometimes there's the superior coder in the peer group, it may worth the time to ask him/her whatever is the neat language to learn, so in process there is someone to discuss peculiar bits of whatever the person is learning.

Be honest why you want to get out of it make a plan/schedule for achievables, get focused and get started! =)