5 ms·
I couldn't agree more. When I first started out studying CS I was constantly afraid that I wouldn't be able to cut it because I didn't always immediately see ho
by mcafeeryan92 11y ago
I couldn't agree more. When I first started out studying CS I was constantly afraid that I wouldn't be able to cut it because I didn't always immediately see how to solve algorithmic problems or write code that would work. I got bogged down in thinking about programming as a problem of learning syntax, and missed 'obvious' things. I couldn't reverse a string or write FizzBuzz and in fact part of the reason for that was that I was so sure that programming was a magical ability that I didn't have because I compared myself to people who had been writing code since their childhoods, and this created nerves which made it hard to really think about solving these problems instead of feeling helpless when I didn't immediately 'know' their solutions.
I powered through that and ended up doing very well in my CS program at Northwestern, and now am a professional software developer that my peers consider to be a 'rockstar' programmer, although I still contend that I am mediocre and there is always SO much more to learn. At my job I frequently mentor our college interns, and many of them when they come into the job would be laughed out of the room by 'good' programmers, but after a little bit of mentoring and consistent daily practice on the job, in 2 months they emerge 'rockstar' programmers themselves, and in reality they are still probably about average.
Most of the 'bad' programmers many of us come into contact with are just farther behind on their journey to being great software developers, and may only be as bad as they are because of fear to ask questions and be judged by those who think there are only 2 types of programmers.
- pjc50 11y agoOn magical ability: there's a joke image going around which tells you how you can easily learn to draw an owl. http://knowyourmeme.com/memes/how-to-draw-an-owl http://knowyourmeme.com/memes/how-to-draw-an-owl 1. Draw two circles. 2. Draw the rest of the owl. This is a common problem in art, music, sport and programming - you have an expert trying to teach newbies, and they say "just do this". The newbies have no idea how to begin to do it and the expert knows it so intuitively they cannot break it down further. Everyone ends up staring blankly at one another. Getting people past that point seems to be a skill of its own. Certainly it's not been easily packaged for programming. Learning involves a lot of guided experimentation, and keeping the student's morale up is just as important as the material itself.
- mod 11y agoI find that it's commonly best to learn from someone not too far past your own ability. My father is a very talented pool player, but he was not the best teacher until my own skill became pretty considerable. He's so far removed from the things that are important to beginners. He says "you have to hit that shot with a medium-power, really good draw stroke." They have no real idea what medium power is, and no idea what a stroke really is, and possibly can't draw the ball. It's possible he's just a poor instructor--that's probably not very related to his own playing ability. Some people can convey complex ideas in a very simple manner, and I think they make the best teachers.
- bps4484 11y agoI've called this concept in teaching "remembering the struggle". If a person is so far removed or such an expert in a field, they may not even remember what a person trips up on when they first get started. They may even have been so talented they didn't even been tripped up at all. Lacking this ability to empathize and relate can make teaching very difficult.
- mod 11y agoExactly! I remember very well the painful process of my dad trying to teach me to drive stick shift (on his new truck). He never mentioned that the clutch had a catch point (that wasn't all the way at the floor), but gave instructions that really hinged on that fact (give it gas, let it out slowly at first, etc). After an hour of us being very frusrated, I went out alone and taught myself. I later taught two friends, explaining the clutch's catch point, and they were 'getting it' within a couple of minutes. A few accidental stalls, sure, but they understood why. 20 minutes or so and they were legitimately ready to drive on the road (both had been driving automatics for years). My dad had already been driving for 40 years, he totally forgot the catch point even exists.
- jmagoon 11y agoThe bimodal distribution that people talk about seems like a dramatic simplification of a series of continually developing sub-competencies. So, the only real weakness I've found is when someone considers themselves to be done learning. At that point, they are basically done being a "programmer".
- mannykannot 11y agoThe difficulties that beset you initially are not the same as those that make programming effectively a difficult task. For anything but toy problems, 'soft' skills like being able to organize your thoughts and having good judgement become important, and not all quick-starters make the transition easily.
- hn_ 11y ago>Most of the 'bad' programmers many of us come into contact with are just farther behind on their journey to being great software developers, and may only be as bad as they are because of fear to ask questions and be judged by those who think there are only 2 types of programmers. In my experience I'm not so sure about that. I've meet (and worked with!) bad programmers very much my senior. After working with them I know why they are bad - they don't learn. Even with asking tons of questions and having their work critiqued constructively. I don't know why this is but I've observed it a few times. It seems some small subset of people, no matter how much they do something just don't get better at it. They spend 20-30 years writing software like an amateur who just learning. Someone I know said about this - "experience isn't a measure of time spent doing something."
- mcafeeryan92 11y agoWell that's the only metric that most of us should be considering...whether or not someone considers that they have more to learn. If they don't, they will never be great. But anyone who wants to learn can become a good programmer, and being called a 'bad' programmer early on just because they haven't reached that competency yet is the problem that we're really talking about.