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."
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"
> 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.
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! =)
Suppose the person hasn't already asked this question to google:
Take the opportunity to provide them some good resources. Teach them some basics. Teach them how to use google well to find their own resources. Here's the kicker - when people ask questions like this, maybe they aren't autodidacts, maybe they just need some support getting over the fear of the unknown, maybe they just want feedback from someone who actually knows (something JFGI doesn't provide too well...)
Now suppose they have:
The course of action is surprisingly similar, but ask them what they've already learned and what the confusion is before showing them stuff. Perhaps the person asking has done this but doesn't know where to start -- there is a lot of conflicting and bad advice on the web. Perhaps they don't have the framework to filter things that are and aren't related. Maybe they don't even know what they actually want to do -- there have been plenty of times I've asked someone how to $X only to discover that I really wanted to do $Y that I didn't even know about (even though Google will happily provide 100000 how to $X guides).
Half of understanding anything is understanding the vocabulary surrounding it. If a person doesn't know the vocabulary, they can't just google it. (Also, those of us who spend all day programming and basically live in front of the computer at places like HN have a surprisingly deep understanding of who to trust and who not to trust and apply these filters without even realizing it when scouring google results, as well as a good social network of chatrooms and twitter etc to ask for pointers at, which a noob may well be trying to establish when asking the question).
That is the point of this post, to get them over the fear, to give them the confidence to do it.
Having a personal tutor can accelerate the learning process dramatically. Even if you can teach yourself, you can learn faster if someone just tells you the answer. But, you can also just do it. And, the process will teach you the benefits of being precise with your searches and that if you know to use the work "toggle" rather than "switch back and forth", you'll get to the answer faster next time (though, you'll get to it both ways and you'll learn a lot while you're reading).
I was fortunate enough to have great engineers accelerate my learning but I also did a lot on my own and that process gave me a deeper understanding and taught me the right mindset to now continue improving on my own forever.
Agree with most of it except its not that thats the wrong question its just that the answer is to try.
Get started and build something. Stumbling and not knowing already but figuring it out are part of the process and are valuable skills.
Also the whole buy a mac thing. It never ceases to amaze me how many people completely fail to realize how much privilege it takes to have the money to purchase a mac. Or the time it can take to save the money. When someone can get started on things that are a fraction of the cost.
You can get a cheap office depot or walmart laptop and an entire year of linode or whatever vps you like for the cost of a used mac
"You buy a Mac because you’re embarrassed that you ever used anything else."
The assumption there is that using a Mac will make you orders of magnitude more productive as an engineer. Possibly, if you're comparing it to Windows, but that's a real stretch for Linux, particularly given the level of support online and cost (likely $0, if you can snag an old PC).
Although there's the argument that that's likely what they're already used to, and trying to learn two things at once is probably going to stunt their growth.
A pity, since most of the rest of the article was spot-on.
It doesn't take that much privilege to save $350 within a reasonable amount of time. It's probably unreasonable if you're in poverty, but even much of the lower class in America has things like TVs that cost in excess of the price of a Mac.
The only difference between the advice given and the strawman argued against is giving the urls of search engines to find tutorials and answer questions rather than giving specific resources.
The idea of cultivating a self starter, motivated to research mindset is good, for people halfway through the beginner stage. The idea that a complete beginner even knows how to "bounce around between [different search results] to find the best ones" is silly, even starting with generally high quality content like quora and stack overflow. It leads people to learn the easiest things rather than walking the line between motivation through fast results and pushing themselves to learn good techniques and challenging subjects. There is a reason that good educators, who design curricula walking this line, are respected.
This type of "ignore the so called 'experts' and absorb the lowest common denominator crap soup of online programming advice" learning plan is doomed. The best case is that it wastes the persons time and saps their motivation. The probable case is that they end up learning a large number of bad habits, do things like reimplement a bubble sort based on advice from the comments on the php documentation site and forever end up as hack intermediate coders.
People asking for this kind of advice want some guidelines from people who've done this before and have perspective on good paths to learning and how to avoid mistakes that no one needs to repeat.
I am a proponent of branching out early in your programming career to learn different languages, toolsets and problem domains because it makes you a better programmer. But only once you've got a base level of knowledge as to how coding works and even then they will need advice on what other paths to take to help the most.
That process of drinking the soup and learning what to swallow and what to spit out is an incredible learning experience. That is a skill and comes from trial and error, reading everything, and trying things. And you are training yourself in that process and mindset of learning on your own.
Agree though that learning best practices is difficult without some guidance and working with others.
I don't get it. Is your point Don't ask a person, ask google?
This article promotes introversion more than its own point of "don't ask, do", asking Mr. Computer isn't much different than asking a person. If I ask someone how to get started doing X; I'm not fucking asking permission. I'm looking for some resources, a knowledgeable person is a much better at steering a beginner than a search engine.
For some reason, you're equating drive with choice of resource. You're answering "RTFM" when the question is "Wheres the manual?" I get that your point centers on leaning on others vs figuring it out on your own, but you thoroughly overshot.
The problem with using google to answer an open-ended question like this is that it's very hard to sort the results. And it's not just the first question, that question will lead to more questions and you will waste an enormous amount of time asking lots of wrong questions and getting lots of bad answers.
Bad answers can be ad-ridden, no-content crap, bikeshedding pundits, obsolete documentation, overkill solutions, corporate labyrinth websites selling overkill solutions, incomplete fragmented mailing list archives, or material way too dense and advanced to be consumed without guidance. But they lead to frustration and often to more bad questions.
Sometimes the answers aren't bad, they're just decidedly suboptimal. If your friend wanted to make a website, and you left it up to them to go google the answer, there's a good chance they'll end up using GoDaddy.
Chances are if you see this question, it means someone thinks you, either individually or as part of some community, will give them better answers than a machine will.
Something I've found in getting people started in this direction is that they don't know what words to use when googling for their problem.
You can give them a huge leg up by giving them a programming vocabulary to help them on their way.
There's that famous saying about once you have a name for something the problem is pretty much solved...
You can also help them heaps by telling them what's important and what is not important. Most books on programming languages etc start with a whole bunch of stuff they should probably put into the basket of "computer trivia I don't need to know yet"...
If someone asks that question, they're in 1 of 2 categories:
1) Dreamers. They have something that nobody will do for them, so they're going to see how easy it is to do for themselves. They won't make it.
2) Doers. They don't have a single project. They have multiple projects. The projects are swimming in their head and they need to get them out. They just need a nudge in the right direction, but more help is almost always better.
Notice that neither of them are asking the wrong question. It's just a matter of follow-through. Given even a tiny bit of direction, the doers will make it there... But you can't start walking until you have some idea where the destination is. That's all they want.
I always answer this question by asking back what it is that they want to make, and also if they're willing to dig for most of the answers themselves because programming is, essentially, solving for an unknown alone.
The aptitude of a programmer is also the same that allows him to self-learn much of the art of programming by himself.
If they have an answer to the first question, I can work backwards with them to narrow it down to tools and languages that possibly make sense. Going with Python is a generic and common choice because there aren't many things you can't do in Python.
If they don't have an answer, it might not be a case lost. Some people truly need just about anything to work on, in order to impose a reason to start tinkering with programming. However, usually it's about overcoming fear for programming but in that case they probably won't make it, either.
For the rest 99% of people I just mumble something and point vaguely to teaching yourself to program in ten years.
While I get the gist of this post, it seems to exit the gate by contradicting itself. Asking Google is no different than asking "someone". After all, Google results are just a bunch of "someones" competing for your attention.
As a person who has just recently undertaken the skill of programming, I (personally) feel that Google isn't much help in the beginning. As someone mentioned below, you can't ask what you don't know. Nor can you trust every bit of advice dished out in Google search results. If you rely on Google, you'll likely get 100 competing views on everything under the sun, which often leads to analysis paralysis or just sheer overwhelm.
As much as some people might tire of hearing "I want to learn to code, what should I do?", it's a question that I'd hope people aren't ashamed to ask, because It's an honest question. Pointing them to Google and advising them to figure it out just doesn't help them in any concrete way. I'm new to programming, but I'll never get sick of helping people learn the things that I already know- in fact I LOVE doing just that.
As a beginner, it's comforting to know that a real person is helping you along and not just an anonymous page picked out of the SERPs.
I found this advice to be useful and inspiring. It reminds me of when i first started out in my present business. We originally started as an IT support company. My IT skills were just average while my business partner was very highly skilled in IT.
Often, we would have issues with client servers, and i would spend hours trying to find the root cause of the problem, with not too much luck. When i would pass the job onto him, he'd figure out the cause of the problem in a much shorter amount of time, and therefore come to conclusion for a possible solution very quickly and with some conviction.
I always thought he was a complete genius, and wish that i was as clever and intelligent as him, and felt a little cheated by the universe that i hadnt been blessed with such great IT skills, especially since i had great passion for IT.
Its only after much frustration, that i learned that the only thing that differed between he and i was his approach. Whereas i would check the virus state, and processor usage and look for anything suspect on the desktop, he would check the event logs and then look up the error codes at the microsoft knowledgebase.
One i started taking the same approach as he, i found myself fixing problems even faster than him and coming up with even better solutions to the problem (all the while experiencing much lesser stress).
When i decided to learn programming , i observed the same thing. His approach to attacking programming problems was different to mine, and now i am learning to assess the problems in the same way as him.
I've also seen this in my cousin. He starts a project, and takes one step at a time, and breaks the larger problem done, all the while telling himself that there is an answer for each component problem he faces.
I am trying to foster the same mindset now, and this blog post is an inspiration for that.
Bottom line is, the approach is more important than existing skill set.
I love this post and really identify with it, especially, "That mindset separates people who do from people who don’t." I've always been a person to do, but find it's more common to come across people who allow fear to prevent them from doing. They see the obstacles, the worst case scenarios, never the potential, the opportunities or if they see them, they seem too difficult to reach. I agree that it's mindset that distinguishes the leaders from the followers. Keep on leadin'!
As someone who has always wanted to learn to code, but never set the time aside to teach myself I resonated with this kick in the pants. At some point you have to stop making excuses and do it. I might not agree that google will teach everyone, but there are enough resources out there (friends, family, iTunes U, tutorials etc) that the real deciding factor is whether you dive in or spend your time asking everyone in the pool if the water is cold.
I learned to program when a misconfigured web server spit out the source code to the web application I was trying to use. At first it all looked like gobbledygook (it was written in Perl), but I was ultimately intrigued. The more I observed it, the more it started to make sense. I started by making modifications and testing their results and eventually had enough knowledge to build my own, albeit simple, application. It all snowballed from there.
What I took away from the experience is to jump right in to the most advanced stage possible and work your way back to understanding. Baby steps only serve to hide the big picture and ultimately hinder your ability to understand. This is something I have applied to all of my learning since that day and I feel it has served me well. I always struggled in a formal education setting and I found out why: They teach backwards.
When you are learning to cook you don't mix flour and water together and look at the scientific properties that cause them to interact the way they do. No, you find a delicious recipe and prepare the entire dish. Each time you subsequently make it you add a twist to see how it affects the overall taste. Eventually you start to increase your understanding how the pieces fit together and can begin to come up with new combinations of your own. You will probably want to know why flour and water behave the way they do, but that comes later.
In my opinion, the way to learn how to program is to start with a recipe (i.e. source code). The rise of open source makes that easy. Make some small changes of your own. Break it down to understand why the original author did what he did. Once you are armed with the basics, you can start to apply that knowledge to meaningful Google searches.
> If you want to learn to code and build stuff and you’re starting by asking someone else what you should do, you’re already thinking about it the wrong way.
If someone asks for help and this is the first thing you say, you're already thinking about it the wrong way.
What is their background? Their aptitude? Why do they want to learn? How do they learn best? Are their expectations reasonable? In short, what would be the smartest way to help this individual? One suboptimal way is to post essentially a multi-paragraph lmgtfy and assume that everybody will hound down the knowledge they need with the same geeky obsessiveness you would.
Edit: I meant to mention that remark about getting a Mac. "Embarrassed" to have considered anything else? I'm a big Mac fan (Cocoa developer) but that is ridiculous enough that I'm tempted to see the whole post as a joke.
While this advice makes sense in most cases it is just as important to learn where, how, whom and when to ask.
Also as a beginner it is often very difficult to separate good from bad advice, so it can make a lot of sense to ask even simple questions in e.g. an IRC channel even if you could find an answer with Google.
You can learn to code on your own, but it will probably take you a lot longer then going and hiring a tutor or even just taking a class. This "Teach yourself whatever the hell you want on Google" advice is about the worst advice I have ever read. I guess I could tell my cousin that he can teach himself how to be a doctor by watching Youtube videos and playing Operation, But I wouldn't let him be my doctor.
Actually, I think that is the perfect question to ask. Knowing what you want to learn about is a huge step in the right direction.
The author presumes that everyone interested in coding should have a high level of confidence already. I disagree, and feel that if someone wants to learn about a subject, asking questions about that subject is exactly what they should be doing.
[+] [-] spacemanaki|14 years ago|reply
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."
[+] [-] mscarborough|14 years ago|reply
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"
[+] [-] niels_olson|14 years ago|reply
> 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.
[+] [-] perlpimp|14 years ago|reply
Be honest why you want to get out of it make a plan/schedule for achievables, get focused and get started! =)
[+] [-] sophacles|14 years ago|reply
Suppose the person hasn't already asked this question to google:
Take the opportunity to provide them some good resources. Teach them some basics. Teach them how to use google well to find their own resources. Here's the kicker - when people ask questions like this, maybe they aren't autodidacts, maybe they just need some support getting over the fear of the unknown, maybe they just want feedback from someone who actually knows (something JFGI doesn't provide too well...)
Now suppose they have:
The course of action is surprisingly similar, but ask them what they've already learned and what the confusion is before showing them stuff. Perhaps the person asking has done this but doesn't know where to start -- there is a lot of conflicting and bad advice on the web. Perhaps they don't have the framework to filter things that are and aren't related. Maybe they don't even know what they actually want to do -- there have been plenty of times I've asked someone how to $X only to discover that I really wanted to do $Y that I didn't even know about (even though Google will happily provide 100000 how to $X guides).
Half of understanding anything is understanding the vocabulary surrounding it. If a person doesn't know the vocabulary, they can't just google it. (Also, those of us who spend all day programming and basically live in front of the computer at places like HN have a surprisingly deep understanding of who to trust and who not to trust and apply these filters without even realizing it when scouring google results, as well as a good social network of chatrooms and twitter etc to ask for pointers at, which a noob may well be trying to establish when asking the question).
[+] [-] itsjaredc|14 years ago|reply
Having a personal tutor can accelerate the learning process dramatically. Even if you can teach yourself, you can learn faster if someone just tells you the answer. But, you can also just do it. And, the process will teach you the benefits of being precise with your searches and that if you know to use the work "toggle" rather than "switch back and forth", you'll get to the answer faster next time (though, you'll get to it both ways and you'll learn a lot while you're reading).
I was fortunate enough to have great engineers accelerate my learning but I also did a lot on my own and that process gave me a deeper understanding and taught me the right mindset to now continue improving on my own forever.
[+] [-] wh-uws|14 years ago|reply
Get started and build something. Stumbling and not knowing already but figuring it out are part of the process and are valuable skills.
Also the whole buy a mac thing. It never ceases to amaze me how many people completely fail to realize how much privilege it takes to have the money to purchase a mac. Or the time it can take to save the money. When someone can get started on things that are a fraction of the cost.
You can get a cheap office depot or walmart laptop and an entire year of linode or whatever vps you like for the cost of a used mac
[+] [-] anthonyb|14 years ago|reply
Although there's the argument that that's likely what they're already used to, and trying to learn two things at once is probably going to stunt their growth.
A pity, since most of the rest of the article was spot-on.
[+] [-] chc|14 years ago|reply
[+] [-] kaganmerkin|14 years ago|reply
[+] [-] pnathan|14 years ago|reply
[+] [-] freshhawk|14 years ago|reply
The idea of cultivating a self starter, motivated to research mindset is good, for people halfway through the beginner stage. The idea that a complete beginner even knows how to "bounce around between [different search results] to find the best ones" is silly, even starting with generally high quality content like quora and stack overflow. It leads people to learn the easiest things rather than walking the line between motivation through fast results and pushing themselves to learn good techniques and challenging subjects. There is a reason that good educators, who design curricula walking this line, are respected.
This type of "ignore the so called 'experts' and absorb the lowest common denominator crap soup of online programming advice" learning plan is doomed. The best case is that it wastes the persons time and saps their motivation. The probable case is that they end up learning a large number of bad habits, do things like reimplement a bubble sort based on advice from the comments on the php documentation site and forever end up as hack intermediate coders.
People asking for this kind of advice want some guidelines from people who've done this before and have perspective on good paths to learning and how to avoid mistakes that no one needs to repeat.
I am a proponent of branching out early in your programming career to learn different languages, toolsets and problem domains because it makes you a better programmer. But only once you've got a base level of knowledge as to how coding works and even then they will need advice on what other paths to take to help the most.
[+] [-] itsjaredc|14 years ago|reply
Agree though that learning best practices is difficult without some guidance and working with others.
[+] [-] cbs|14 years ago|reply
This article promotes introversion more than its own point of "don't ask, do", asking Mr. Computer isn't much different than asking a person. If I ask someone how to get started doing X; I'm not fucking asking permission. I'm looking for some resources, a knowledgeable person is a much better at steering a beginner than a search engine.
For some reason, you're equating drive with choice of resource. You're answering "RTFM" when the question is "Wheres the manual?" I get that your point centers on leaning on others vs figuring it out on your own, but you thoroughly overshot.
[+] [-] Goladus|14 years ago|reply
Bad answers can be ad-ridden, no-content crap, bikeshedding pundits, obsolete documentation, overkill solutions, corporate labyrinth websites selling overkill solutions, incomplete fragmented mailing list archives, or material way too dense and advanced to be consumed without guidance. But they lead to frustration and often to more bad questions.
Sometimes the answers aren't bad, they're just decidedly suboptimal. If your friend wanted to make a website, and you left it up to them to go google the answer, there's a good chance they'll end up using GoDaddy.
Chances are if you see this question, it means someone thinks you, either individually or as part of some community, will give them better answers than a machine will.
[+] [-] Terry_B|14 years ago|reply
You can give them a huge leg up by giving them a programming vocabulary to help them on their way.
There's that famous saying about once you have a name for something the problem is pretty much solved...
You can also help them heaps by telling them what's important and what is not important. Most books on programming languages etc start with a whole bunch of stuff they should probably put into the basket of "computer trivia I don't need to know yet"...
[+] [-] wccrawford|14 years ago|reply
1) Dreamers. They have something that nobody will do for them, so they're going to see how easy it is to do for themselves. They won't make it.
2) Doers. They don't have a single project. They have multiple projects. The projects are swimming in their head and they need to get them out. They just need a nudge in the right direction, but more help is almost always better.
Notice that neither of them are asking the wrong question. It's just a matter of follow-through. Given even a tiny bit of direction, the doers will make it there... But you can't start walking until you have some idea where the destination is. That's all they want.
[+] [-] yason|14 years ago|reply
The aptitude of a programmer is also the same that allows him to self-learn much of the art of programming by himself.
If they have an answer to the first question, I can work backwards with them to narrow it down to tools and languages that possibly make sense. Going with Python is a generic and common choice because there aren't many things you can't do in Python.
If they don't have an answer, it might not be a case lost. Some people truly need just about anything to work on, in order to impose a reason to start tinkering with programming. However, usually it's about overcoming fear for programming but in that case they probably won't make it, either.
For the rest 99% of people I just mumble something and point vaguely to teaching yourself to program in ten years.
[+] [-] ISeemToBeAVerb|14 years ago|reply
As a person who has just recently undertaken the skill of programming, I (personally) feel that Google isn't much help in the beginning. As someone mentioned below, you can't ask what you don't know. Nor can you trust every bit of advice dished out in Google search results. If you rely on Google, you'll likely get 100 competing views on everything under the sun, which often leads to analysis paralysis or just sheer overwhelm.
As much as some people might tire of hearing "I want to learn to code, what should I do?", it's a question that I'd hope people aren't ashamed to ask, because It's an honest question. Pointing them to Google and advising them to figure it out just doesn't help them in any concrete way. I'm new to programming, but I'll never get sick of helping people learn the things that I already know- in fact I LOVE doing just that.
As a beginner, it's comforting to know that a real person is helping you along and not just an anonymous page picked out of the SERPs.
[+] [-] krmmalik|14 years ago|reply
Often, we would have issues with client servers, and i would spend hours trying to find the root cause of the problem, with not too much luck. When i would pass the job onto him, he'd figure out the cause of the problem in a much shorter amount of time, and therefore come to conclusion for a possible solution very quickly and with some conviction.
I always thought he was a complete genius, and wish that i was as clever and intelligent as him, and felt a little cheated by the universe that i hadnt been blessed with such great IT skills, especially since i had great passion for IT.
Its only after much frustration, that i learned that the only thing that differed between he and i was his approach. Whereas i would check the virus state, and processor usage and look for anything suspect on the desktop, he would check the event logs and then look up the error codes at the microsoft knowledgebase.
One i started taking the same approach as he, i found myself fixing problems even faster than him and coming up with even better solutions to the problem (all the while experiencing much lesser stress).
When i decided to learn programming , i observed the same thing. His approach to attacking programming problems was different to mine, and now i am learning to assess the problems in the same way as him.
I've also seen this in my cousin. He starts a project, and takes one step at a time, and breaks the larger problem done, all the while telling himself that there is an answer for each component problem he faces.
I am trying to foster the same mindset now, and this blog post is an inspiration for that. Bottom line is, the approach is more important than existing skill set.
[+] [-] aziza|14 years ago|reply
[+] [-] frankiewarren|14 years ago|reply
[+] [-] randomdata|14 years ago|reply
What I took away from the experience is to jump right in to the most advanced stage possible and work your way back to understanding. Baby steps only serve to hide the big picture and ultimately hinder your ability to understand. This is something I have applied to all of my learning since that day and I feel it has served me well. I always struggled in a formal education setting and I found out why: They teach backwards.
When you are learning to cook you don't mix flour and water together and look at the scientific properties that cause them to interact the way they do. No, you find a delicious recipe and prepare the entire dish. Each time you subsequently make it you add a twist to see how it affects the overall taste. Eventually you start to increase your understanding how the pieces fit together and can begin to come up with new combinations of your own. You will probably want to know why flour and water behave the way they do, but that comes later.
In my opinion, the way to learn how to program is to start with a recipe (i.e. source code). The rise of open source makes that easy. Make some small changes of your own. Break it down to understand why the original author did what he did. Once you are armed with the basics, you can start to apply that knowledge to meaningful Google searches.
[+] [-] snoozer|14 years ago|reply
If someone asks for help and this is the first thing you say, you're already thinking about it the wrong way.
What is their background? Their aptitude? Why do they want to learn? How do they learn best? Are their expectations reasonable? In short, what would be the smartest way to help this individual? One suboptimal way is to post essentially a multi-paragraph lmgtfy and assume that everybody will hound down the knowledge they need with the same geeky obsessiveness you would.
Edit: I meant to mention that remark about getting a Mac. "Embarrassed" to have considered anything else? I'm a big Mac fan (Cocoa developer) but that is ridiculous enough that I'm tempted to see the whole post as a joke.
[+] [-] jeffreymcmanus|14 years ago|reply
I wrote about this last month, in fact:
http://blog.codelesson.com/why-learn-by-google-is-a-mistake/
[+] [-] DasIch|14 years ago|reply
Also as a beginner it is often very difficult to separate good from bad advice, so it can make a lot of sense to ask even simple questions in e.g. an IRC channel even if you could find an answer with Google.
[+] [-] lwhi|14 years ago|reply
If you can't teach yourself and 'self start' - you're not going to be able to get very far.
[+] [-] IAnsari|14 years ago|reply
[+] [-] c4m|14 years ago|reply
The author presumes that everyone interested in coding should have a high level of confidence already. I disagree, and feel that if someone wants to learn about a subject, asking questions about that subject is exactly what they should be doing.