Being a good software developer is very very difficult. Only a few percent of the population have the wiring, the wattage and the inclination to do it for long enough to be very productive.
Compare coding with portrait painting or composition for orchestra or pro golf—anyone can learn the basics of them, but very few can become good enough to be paid for them.
The thing is, you don’t have to actually be particularly good at software development in order to get a high-paying programming job. Even mediocre or very junior programmers can easily break six figures, something that’s much harder even in other intellectual labor positions in the Bay Area (e.g. technical writing, which is what I do). So, while I don’t disagree that being a good software developer is very difficult, I definitely don’t think that explains away the issue discussed in the OP, and I definitely disagree that “very few can become good enough to be paid for” software development.
(Source: I work for a software recruiting company where I have access to information on both the skill level and the salary of thousands of software developers.)
I don’t know how to say this except, you are wrong.
I’ve been trying to prove you correct since 2011 by teaching every low-ranking society person and I succeeded every time. I saw a college dropout (with multiple Fs on her transcript) become a good engineer, I saw a 40 year old become a good engineer.
Last year my dad (60 years old with 0 coding experience) picked up coding and I think he’s gonna do great.
I had hoped that you are right so I could have the same sense of job security, but the belief that “being a good software developer is very very difficult” is wrong.
It may be helpful for you to start seeing things from a different perspective, better sooner than later.
randomsong describes at least 15 successes and zero failures, which is certainly not what I would have predicted in advance. If we take this at face value, either they have a pretty strong filter for who they teach[1] or it’s pretty decent evidence that “anybody” can learn programming, at least for colloquial definitions of “anyone”.
[1] Which is the opposite of what they’re trying to have, though of course that doesn’t rule out that they have one anyway.
Yes, my immediate assumption was that they have a strong filter on who they teach. I don’t find it terribly implausible that someone would know 15 people who are smart enough to code. But I think they’re going to be unpleasantly surprised if they start teaching strangers from the public library.
Perhaps so. If I fail I will write about it. One thing I can confidently say is that teaching is very difficult, so failure is a real possibility. I sure hope this works out though.
10 / 15 original students were random people who raised their hand on a facebook group when I posted a potential pilot program. I think this prepared me well for the coding bootcamp at our local public library that was launched last week. I hope to keep this going throughout 2020 and see what happens.
Last year, my dad (60 years old with 0 coding experience) picked up coding and I think he’s gonna do great
That’s not the question being posed. The question being posed is whether your dad is now in a similar enough reference class to you to be considered a substitute for you, and thereby lower your salary.
I’m inclined to agree with Mark Roberts here. Not everyone has the mental horsepower and right ticket in the lottery of fascinations to be a programmer. It’s like with any other trade skill. Can I do woodworking? Absolutely. I can knock together small projects fairly easily. But do I have the aptitude and interest in woodworking to become a professional carpenter? Absolutely not. Can I do plumbing? Sure. I’ve replaced my own sinks and faucets. But do I have the aptitude and interest to become a professional plumber? No way. Why is programming any different?
You touched on something important here. The most important hurdle I have to overcome with students is making them feel empowered and needed so they care about coding. Afterwards, the problem solving skills become easier to teach.
If you are the only carpenter in town and your family needs a home, you can absolutely care enough to become a professional carpenter.
You can also develop the aptitude and interest to become a professional plumber if you feel valued and people around you needed a great plumber.
If you are the only carpenter in town and your family needs a home, you can absolutely care enough to become a professional carpenter.
I disagree and what I’ve seen and read of people doing their own construction work seems to back me up. If you’re the only skilled person in town and you need a home, then you’ll probably be able to knock something together. But will that structure be safe? Will it keep out the rain in a storm? Will it keep out the wind in winter? Will it work reasonably well immediately after you’ve built it or will it require constant patching for months or year before it finally becomes usable?
All of these questions have fairly direct analogs to programming. I do think there are differences between programmers that speak to aptitude differences, rather than differences of experience. When comparing two programmers with roughly equivalent amounts of experience, I have noticed that some programmers just “get it”, whereas others don’t. Their first solutions are faster (often algorithmically faster). They’ve thought through more edge conditions. Their code is simpler and easier to read.
I agree that even a less talented programmer, perhaps with coaching and assistance, will eventually be able to arrive at the solution that the more talented programmer arrives at immediately. But it doesn’t matter. By the time the less talented programmer has found the best solution for problem 1, the more talented programmer has moved on to problems 2, 3, 4 and 5. This is definitely noticeable over a 6-12 month period, and it’s likely that the less talented programmer will be eased out of the organization.
I don’t know if these differences are due to IQ or the lottery of fascinations. I suspect it’s both. However, it is plain to me that there are differences in ability between programmers who have equivalent experience, and these differences do go some way towards determining who is successful as a programmer and who isn’t.
Nature vs nurture. I agree there are less competent people. I believe their incompetence is due to nurture. Anything nurtured can be unlearned.
One year is a long time. I believe that less competent people, over time, could be nurtured into great people with the right mentorship. 10 years of good strong mentorship could make incompetent person a great person.
We may have a disagreement based on 1st principles, which is okay. I’m glad we got down to that.
Being a good software developer is very very difficult. Only a few percent of the population have the wiring, the wattage and the inclination to do it for long enough to be very productive.
Compare coding with portrait painting or composition for orchestra or pro golf—anyone can learn the basics of them, but very few can become good enough to be paid for them.
The thing is, you don’t have to actually be particularly good at software development in order to get a high-paying programming job. Even mediocre or very junior programmers can easily break six figures, something that’s much harder even in other intellectual labor positions in the Bay Area (e.g. technical writing, which is what I do). So, while I don’t disagree that being a good software developer is very difficult, I definitely don’t think that explains away the issue discussed in the OP, and I definitely disagree that “very few can become good enough to be paid for” software development.
(Source: I work for a software recruiting company where I have access to information on both the skill level and the salary of thousands of software developers.)
I don’t know how to say this except, you are wrong.
I’ve been trying to prove you correct since 2011 by teaching every low-ranking society person and I succeeded every time. I saw a college dropout (with multiple Fs on her transcript) become a good engineer, I saw a 40 year old become a good engineer.
Last year my dad (60 years old with 0 coding experience) picked up coding and I think he’s gonna do great.
I had hoped that you are right so I could have the same sense of job security, but the belief that “being a good software developer is very very difficult” is wrong.
It may be helpful for you to start seeing things from a different perspective, better sooner than later.
I don’t think your experiment gives much evidence that “anybody” can learn coding, just that it isn’t very strongly correlated with social status.
randomsong describes at least 15 successes and zero failures, which is certainly not what I would have predicted in advance. If we take this at face value, either they have a pretty strong filter for who they teach[1] or it’s pretty decent evidence that “anybody” can learn programming, at least for colloquial definitions of “anyone”.
[1] Which is the opposite of what they’re trying to have, though of course that doesn’t rule out that they have one anyway.
Yes, my immediate assumption was that they have a strong filter on who they teach. I don’t find it terribly implausible that someone would know 15 people who are smart enough to code. But I think they’re going to be unpleasantly surprised if they start teaching strangers from the public library.
Perhaps so. If I fail I will write about it. One thing I can confidently say is that teaching is very difficult, so failure is a real possibility. I sure hope this works out though.
10 / 15 original students were random people who raised their hand on a facebook group when I posted a potential pilot program. I think this prepared me well for the coding bootcamp at our local public library that was launched last week. I hope to keep this going throughout 2020 and see what happens.
Here’s the meetup group, if you are around the area come say hi! https://www.meetup.com/San-Jose-C0D3/
I’m fascinated to hear how this went. Well done, Randomsong, and please let us know what happened!
That’s not the question being posed. The question being posed is whether your dad is now in a similar enough reference class to you to be considered a substitute for you, and thereby lower your salary.
I’m inclined to agree with Mark Roberts here. Not everyone has the mental horsepower and right ticket in the lottery of fascinations to be a programmer. It’s like with any other trade skill. Can I do woodworking? Absolutely. I can knock together small projects fairly easily. But do I have the aptitude and interest in woodworking to become a professional carpenter? Absolutely not. Can I do plumbing? Sure. I’ve replaced my own sinks and faucets. But do I have the aptitude and interest to become a professional plumber? No way. Why is programming any different?
You touched on something important here. The most important hurdle I have to overcome with students is making them feel empowered and needed so they care about coding. Afterwards, the problem solving skills become easier to teach.
If you are the only carpenter in town and your family needs a home, you can absolutely care enough to become a professional carpenter.
You can also develop the aptitude and interest to become a professional plumber if you feel valued and people around you needed a great plumber.
I disagree and what I’ve seen and read of people doing their own construction work seems to back me up. If you’re the only skilled person in town and you need a home, then you’ll probably be able to knock something together. But will that structure be safe? Will it keep out the rain in a storm? Will it keep out the wind in winter? Will it work reasonably well immediately after you’ve built it or will it require constant patching for months or year before it finally becomes usable?
All of these questions have fairly direct analogs to programming. I do think there are differences between programmers that speak to aptitude differences, rather than differences of experience. When comparing two programmers with roughly equivalent amounts of experience, I have noticed that some programmers just “get it”, whereas others don’t. Their first solutions are faster (often algorithmically faster). They’ve thought through more edge conditions. Their code is simpler and easier to read.
I agree that even a less talented programmer, perhaps with coaching and assistance, will eventually be able to arrive at the solution that the more talented programmer arrives at immediately. But it doesn’t matter. By the time the less talented programmer has found the best solution for problem 1, the more talented programmer has moved on to problems 2, 3, 4 and 5. This is definitely noticeable over a 6-12 month period, and it’s likely that the less talented programmer will be eased out of the organization.
I don’t know if these differences are due to IQ or the lottery of fascinations. I suspect it’s both. However, it is plain to me that there are differences in ability between programmers who have equivalent experience, and these differences do go some way towards determining who is successful as a programmer and who isn’t.
Nature vs nurture. I agree there are less competent people. I believe their incompetence is due to nurture. Anything nurtured can be unlearned.
One year is a long time. I believe that less competent people, over time, could be nurtured into great people with the right mentorship. 10 years of good strong mentorship could make incompetent person a great person.
We may have a disagreement based on 1st principles, which is okay. I’m glad we got down to that.