The rivers of nonsense questions coming into stackoverflow from well meaning people who are not able to describe the difference between a variable and a browser and who don't have the capabilities to care unless it solves their immediate problem at hand leads me to believe that not everyone should program. in fact, many people who do program should be politely asked not to.
Stackoverflow needs a "entrence barrier" test where if you can't communicate or have no ability to think rationally about the words being typed there to solve problems, your question goes to the "dumb" section of the site.
point is, stop encouraging everyone to be programmers. You're slowing progress by doing so.
we've got 4.4 million questions, 90% of it from novices that should be asked not to program. you can go take a look at them, they are little better than "how is babby formed" type questions. These people are trying to program when they should be told that it's too hard.
I couldn't disagree more. It's very elitist to say that interested minds shouldn't pursue the field you're in because they're asking the wrong questions. The better and more productive approach would be to educate them by answering their question and at the same time pointing out the preferred way to look at it.
I know when I was first starting out there were obvious cliffs that I confronted when growing as a developer. The first cliff is going from syntax to understanding how to piece syntax together. Then further down the line is learning best practices and how more seasoned developers do things. This is something that you can only learn from practice and by asking questions on sites such as Stack Overflow and your peers. How else are you going to learn?
How did you learn programming? How did you learn about browsers and computers etc.?
Did you NEVER ask anybody any questions at the beginning?
You surely did. Why do you feel the need to keep the joy of programming just for yourself or just for the ones who came before now and learnt it a few years ago? Am I stealing your work when I learn programming? Do you absolutely HAVE to answer dumb questions on stackoverflow? You can just ignore the stuff you don't like, you know.
I had to ask seemingly "dumb" questions a lot when I started programming. I switched to software after having been a classical musician for many years and the transition in just learning a whole new world of vocabulary and how everything worked was pretty rough for about a year. Luckily, there were enough patient people to help me get through that and answer my questions. I wanted to learn to program pretty badly, I just didn't have the background to converse fluently right away.
Users who have contributed to the SO community have the ability to close and delete questions. Just because you've got to a stage where these "dumb" questions seem obvious to you, doesn't mean they're not valid questions. You can tell them to improve their question or show that they've put some effort so that they understand that it's ultimately a Q & A site and not a code production service.
As for the stats, is it really that suprising that newcomers ask more questions? I'd imagine those who have been programming for some time are more confident in their ability to research answers, check the usual resources (e.g. MDSN), read and understand open source code, and then use SO as a form of last resort.
You must be kidding. The worst thing about stackoverflow is not the naive questions but the obnoxious answers. Ask a question on SO, and the first priority of the Red Guards isn't to find an answer for you but to find a reason why your question doesn't even deserve an answer.
I've made good money over the decades as a programmer, but the technologies come and go like presidential administrations. I'm always a newbie at something. That's part of the fun. I'm always the guy who "doesn't know the difference between a variable and a browser" in something despite simultaneously serving on an "experts committee" in something else. I've lost count of the number of times I've spotted a "related question" on the SO sidebar while grazing for useful info, thought, Oh, yeah, what IS the answer to that one?, clicked it, and been informed by SO that they won't allow it to be answered because the question is "not constructive". Hunh?? The answer would have been constructive. Stopping people from answering a question that others are wondering about: THAT's what's not constructive.
Oh, but what if people are allowed to ask dumb questions, where dumb means questions that you already know the answer to? Well, then, it might be hard for you to find answers to your "smart" questions, right?
It sounds to me as though the solution is to worry less about dumb questions and more about the dumb search technology they have for matching incoming questions to their answers. With better technology than a bunch of tags and a 1980s-quality search engine, they wouldn't have to put so much effort into blocking questions and could put that effort into providing more answers.
This is very good advice: "My opinion is that if you're fortunate to have friends that know how to program then you should learn to program in the language they're best in."
I'm of the belief that while not everyone may be able to code in a way that contributes to their startup's codebase, knowing the point and power of programming can vastly help the direction you pour your resources in.
For example, understanding how loops and iterative tasks work will help you understand why changing the text on one specific product page (out of a 1000) isn't as easy as popping open the text-editor and changing that page's text. It helps you figure out a sensible data-model on the back-end (so that your frustrated coder isn't writing a special if-statement that breaks on the next iteration of the site)
This is so true. I've only been programming for around a year, but I now have a much better understanding of what goes on under the hood. In the last few months, I've gone from doing 100% to 20% of the coding as I'm now working with a better developer than myself, but the understanding alone has given me a huge leg up on other CEOs/product people who have no experience programming.
This was great to read - I'm the same age as you and changed majors away from CS about 10 years ago because of similar reasons to what you described. Being young and not knowing much about the world meant that I didn't have any passion for what I was building, and after getting some real life experiences under my belt, I've come back to learn programming again because, well, I just can't help myself.
I've thought about trying to learn programming again for the past few years, but gave up on the idea by telling myself it was too late and that I could never really succeed without a structured learning environment. But once I started looking into it, I'm dumbfounded by the amount of resources out there that not having access to knowledge is simply not a valid excuse. These massive open online courses out there are revolutionary and having just finished one, I felt much more passionate, thirsty, and focused than I ever was as an undergraduate.
And to echo the point in your article, what has kept me learning is a project I want to build. Learning backwards by figuring out what I want to do then researching how to do it works great for me. But, what's been challenging is staying grounded to the task of building the product rather than letting my mind wander off into a daydreamy state of wondering how I'm going to manage/promote/monetize the product once it's finished. Baby steps...
We have similar life experiences it seems. I'd suggest putting off all thoughts of managing, promotion and monetization when you're learning to code by building your first project. If that stuff happens. Great. If it doesn't happen, then you'll at least come away with an awesome understanding of programming and then the next time around you can focus on the other stuff. It's a win-win.
Wasn't meant as an "ego leak" as you say. It was only meant to emphasize that I've been doing this for a long time and had many stops and starts. I was only really able to start learning when I figured out the when and why for me.
Another business guy turned programmer here. It's good to see that there are more of us out there and that I'm not the only crazy one. Some advice I would give to anybody who wants to learn to code from scratch:
- Focus. Don't do it on the side, it would take too long. Treat learning to code as if it was your regular job(I tried to do 40-60hrs per week, I did about 2000hrs of coding in my first year)
- Don't hurry. Don't obsess about efficiency and how you use your time. You will waste tons of time on stupid bugs and knowledge you don't really need, that's just part of the learning process. Focus on putting in those hours week after week and you will see results.
- Work on a project. The only way to truely understand how things work is to actually use them. Don't hide yourself behind books, try to apply everything you learn asap.
- Give yourself permission to suck. This is really hard if you're older (I was 30 when I started to code). If you already have a career, you're not accustomed to be utterly clueless anymore. I had already forgotten how slow and painful it is to learn something from scratch. So give yourself a break and judge yourself the same way you would judge a stranger. Don't expect to become stellar in a matter of months just because you're smart. Hint: so is everybody else who is coding for a living.
What about the suggestion to learn Ruby? I've been trying to decide which language to start on... I thought JavaScript, since I know nothing about Ruby on Rails.
I definitely also have a project in mind, but I don't know where to start aside from the HTML and CSS I've learned.
I think that python is the easiest and best for random english speaker to learn. The syntax is presented in a way that is extremely intuitive i.e. english everywhere -- not brackets everywhere, and the fact that you are force to write with proper indentions creates good habits. (full disclosure: i learned with python and really only know javascript well, and some ruby)
Couldn't agree more - you absolutely need an idea that you are passionate about enough to turn into a project, loads of drive, and long chunks of time to yourself.
I taught myself the basics of rails in about 2 months using Lynda.com because after numerous failed attempts I realised I would struggle to get anything off the ground - mostly because it is extremely difficult to transfer passion to another party.
I tried what I believed was a good idea with my one and only developer friend, but he just didn't have the drive that I did, and months slipped by with little or no progress (I gave him 50% share of the company, I wasn't paying him - a mistake with hindsight).
The challenge was I couldn't outsource the build on Elance (etc) because I had no idea what to ask for - and mocked up screenshots simply don't portray a vision of where you see your product going, and I didn't have the technical nous to judge whether I would be getting good value for money.
After "learning" Rails my first creation is still going strong, it's a free site but one that has taught me so much and I'm super proud of it.
Moving forward my basic skills in Rails can mostly get me to MVP for testing my second project, and if it's successful I'll source a developer for short projects via Elance until I can afford a full time dev.
So in a nutshell, you either have to be completely cashed up, or you have to get your hands dirty to MVP status by cutting code, even if you consider yourself primarily a biz dev guy like I do. I prefer the latter solution - it's just too difficult for me to predict everything you need to build until you start building.
21 comments
[ 1.9 ms ] story [ 42.5 ms ] threadStackoverflow needs a "entrence barrier" test where if you can't communicate or have no ability to think rationally about the words being typed there to solve problems, your question goes to the "dumb" section of the site.
point is, stop encouraging everyone to be programmers. You're slowing progress by doing so.
we've got 4.4 million questions, 90% of it from novices that should be asked not to program. you can go take a look at them, they are little better than "how is babby formed" type questions. These people are trying to program when they should be told that it's too hard.
I know when I was first starting out there were obvious cliffs that I confronted when growing as a developer. The first cliff is going from syntax to understanding how to piece syntax together. Then further down the line is learning best practices and how more seasoned developers do things. This is something that you can only learn from practice and by asking questions on sites such as Stack Overflow and your peers. How else are you going to learn?
Did you NEVER ask anybody any questions at the beginning?
You surely did. Why do you feel the need to keep the joy of programming just for yourself or just for the ones who came before now and learnt it a few years ago? Am I stealing your work when I learn programming? Do you absolutely HAVE to answer dumb questions on stackoverflow? You can just ignore the stuff you don't like, you know.
It's rather odd to find someone on a "hacker" site advocating any sort of discouragement of autodidacticism.
As for the stats, is it really that suprising that newcomers ask more questions? I'd imagine those who have been programming for some time are more confident in their ability to research answers, check the usual resources (e.g. MDSN), read and understand open source code, and then use SO as a form of last resort.
I've made good money over the decades as a programmer, but the technologies come and go like presidential administrations. I'm always a newbie at something. That's part of the fun. I'm always the guy who "doesn't know the difference between a variable and a browser" in something despite simultaneously serving on an "experts committee" in something else. I've lost count of the number of times I've spotted a "related question" on the SO sidebar while grazing for useful info, thought, Oh, yeah, what IS the answer to that one?, clicked it, and been informed by SO that they won't allow it to be answered because the question is "not constructive". Hunh?? The answer would have been constructive. Stopping people from answering a question that others are wondering about: THAT's what's not constructive.
Oh, but what if people are allowed to ask dumb questions, where dumb means questions that you already know the answer to? Well, then, it might be hard for you to find answers to your "smart" questions, right?
It sounds to me as though the solution is to worry less about dumb questions and more about the dumb search technology they have for matching incoming questions to their answers. With better technology than a bunch of tags and a 1980s-quality search engine, they wouldn't have to put so much effort into blocking questions and could put that effort into providing more answers.
For example, understanding how loops and iterative tasks work will help you understand why changing the text on one specific product page (out of a 1000) isn't as easy as popping open the text-editor and changing that page's text. It helps you figure out a sensible data-model on the back-end (so that your frustrated coder isn't writing a special if-statement that breaks on the next iteration of the site)
I've thought about trying to learn programming again for the past few years, but gave up on the idea by telling myself it was too late and that I could never really succeed without a structured learning environment. But once I started looking into it, I'm dumbfounded by the amount of resources out there that not having access to knowledge is simply not a valid excuse. These massive open online courses out there are revolutionary and having just finished one, I felt much more passionate, thirsty, and focused than I ever was as an undergraduate.
And to echo the point in your article, what has kept me learning is a project I want to build. Learning backwards by figuring out what I want to do then researching how to do it works great for me. But, what's been challenging is staying grounded to the task of building the product rather than letting my mind wander off into a daydreamy state of wondering how I'm going to manage/promote/monetize the product once it's finished. Baby steps...
Aside from that, stuff like:
"Here's why I finally learned to code: I've been a web entrepreneur since I was eleven years old — for over sixteen years now..."
Makes me discount just about everything that was written. I just have a bitter taste left over from this massive ego leak.
- Focus. Don't do it on the side, it would take too long. Treat learning to code as if it was your regular job(I tried to do 40-60hrs per week, I did about 2000hrs of coding in my first year)
- Don't hurry. Don't obsess about efficiency and how you use your time. You will waste tons of time on stupid bugs and knowledge you don't really need, that's just part of the learning process. Focus on putting in those hours week after week and you will see results.
- Work on a project. The only way to truely understand how things work is to actually use them. Don't hide yourself behind books, try to apply everything you learn asap.
- Give yourself permission to suck. This is really hard if you're older (I was 30 when I started to code). If you already have a career, you're not accustomed to be utterly clueless anymore. I had already forgotten how slow and painful it is to learn something from scratch. So give yourself a break and judge yourself the same way you would judge a stranger. Don't expect to become stellar in a matter of months just because you're smart. Hint: so is everybody else who is coding for a living.
I definitely also have a project in mind, but I don't know where to start aside from the HTML and CSS I've learned.
I taught myself the basics of rails in about 2 months using Lynda.com because after numerous failed attempts I realised I would struggle to get anything off the ground - mostly because it is extremely difficult to transfer passion to another party.
I tried what I believed was a good idea with my one and only developer friend, but he just didn't have the drive that I did, and months slipped by with little or no progress (I gave him 50% share of the company, I wasn't paying him - a mistake with hindsight).
The challenge was I couldn't outsource the build on Elance (etc) because I had no idea what to ask for - and mocked up screenshots simply don't portray a vision of where you see your product going, and I didn't have the technical nous to judge whether I would be getting good value for money.
After "learning" Rails my first creation is still going strong, it's a free site but one that has taught me so much and I'm super proud of it.
Moving forward my basic skills in Rails can mostly get me to MVP for testing my second project, and if it's successful I'll source a developer for short projects via Elance until I can afford a full time dev.
So in a nutshell, you either have to be completely cashed up, or you have to get your hands dirty to MVP status by cutting code, even if you consider yourself primarily a biz dev guy like I do. I prefer the latter solution - it's just too difficult for me to predict everything you need to build until you start building.