Thread: "Is Programming Knowledge Related To Age?"

  1. #1
    Registered User
    Join Date
    Jun 2011
    Posts
    4,513

    "Is Programming Knowledge Related To Age?"

    Is Programming Knowledge Related To Age?

    Abstract - Becoming an expert at programming is thought to take an estimated 10,000 hours of deliberate practice. But what happens after that? Do programming experts continue to develop, do they plateau, or is there a decline at some point? A diversity of opinion exists on this matter, but many seem to think that aging brings a decline in adoption and absorption of new programming knowledge.
    This is an interesting study I saw today. The argument that older programmers have "stale" knowledge (a point challenged in the study) doesn't seem to make sense, with respect to programmers still active in the field. It stands to reason that active programmers must adapt to new technologies, even if it's just to maintain employment, and as such do not have the luxury of stagnation.

    I'm not entirely comfortable with the approach of this study, though, and the data analyzed is not the best metric for evaluating the questions at hand. For instance: "For the purposes of our analysis, we treat SO reputation as a proxy for programming knowledge." I also approach cluster sampling with a healthy dose of skepticism, as clustering may make general abnormalities seem more normal than they really are.

    To be fair, the authors are forthcoming with the weakness in their analysis:

    "High SO question and reputation scores may indicate a talent for explanation and for clever writing more than an ability to translate knowledge in to code"

    ...

    "We are not convinced that our means for answering RQ3 is fair, although we do not yet have a better procedure."

    ...

    "This also has implications for the age data; perhaps younger programmers join as a matter of course, while the older developers that join may only do so if they know themselves to be especially knowledgeable."

    ...

    "It is possible that the causation between age and programming knowledge exhibited in the data is because higher-knowledge individuals choose to stay active and engaged later in life, rather than because individuals gain knowledge over time"
    I also found it interesting to see the correlation that the median age of programmers (around 30) express knowledge of fewer technologies than the younger and older groups. Of course, the method of obtaining the data for this correlation (going by "tags") is weak, in my opinion.

    I do have one theory about those results though. People in their early 30's grew up with the internet back when it was largely "new" (during the teenage stage of intellectual development), and likely have a preference for anonymity, unlike younger people (who are used to providing more personal information on the internet thanks to "social networking" and the like) and older people (who might not be as cautious with personal information, as the instantaneous global access to their data is not something they grew up with). Therefore, a bulk of users in the median demographic might not have provided their age, ensuring they would not be included in the study. Of course, these are gross generalizations based on my own observations, so I could very well be way off base here.

  2. #2
    Master Apprentice phantomotap's Avatar
    Join Date
    Jan 2008
    Posts
    5,108
    I also found it interesting to see the correlation that the median age of programmers (around 30) express knowledge of fewer technologies than the younger and older groups.
    O_o

    People only stagnate if they so choose.

    I am not intending to belittle any contribution, but without question, a significant chunk of new research is done by people over the age here considered median.

    Of course, you do get quacks like Richard Stallman (I love the lunatic, but for reals the man is nuts.), but most developers move with the times. The legendary Donald Knuth is easily seen to have devoted himself to updating and maintaining his knowledge in that his papers and extensions to his published works have frequently sited new research for over 20 years.

    *shrug*

    Of course, to be fair, some of that new research he sited was done by an 11 year old.

    Still, the point is, if an old hat stops learning he stagnates, but that is a choice made by or for the individual; it isn't just something that happens by virtue of aging unless other issues related to age prevents the individual from updating and maintaining their knowledge.

    I do know a lot of people who've stagnated, and I even know some who've seemingly stagnate because they refuse to adapt, but many programmers I know with "stale" knowledge just have life, such as children and grandchildren, as focus.

    Being stubborn, a nut job, or having other things more important to the individual doesn't imply a necessary decline in adaptability, reasoning, or learning. I have a hard time believing that anyone would do a study; this seems self-evident.

    Soma

  3. #3
    Registered User
    Join Date
    Jun 2011
    Posts
    4,513
    Being stubborn, a nut job, or having other things more important to the individual doesn't imply a necessary decline in adaptability, reasoning, or learning.
    Indeed - from my own observations, the stagnation of skillsets are pretty much always self imposed, whether for good cause (i.e. family) or bad (i.e. television); usually a mixture of both. I definitely think it's harder for this to happen to knowledge workers, though - not just because it's absolutely necessary to keep learning to remain successful in whichever field they're in, but also because the drive to learn is what led them to become knowledge workers in the first place.

    I have a hard time believing that anyone would do a study; this seems self-evident.
    I get the sense that this study was done to help clear up a misconception. While it might be self-evident to someone who thinks for a living, it might not be as clear to others. Unforunately, the study is heavily skewed as it took data from a source that someone wouldn't be on if they didn't have a desire to continue learning.

    There is also the fact that this study was conducted by computer science majors, so there's probably a healthy degree of self-interest involved, as well.

  4. #4
    Master Apprentice phantomotap's Avatar
    Join Date
    Jan 2008
    Posts
    5,108
    someone who thinks for a living
    *gasp*

    I have... stuff to do!

    Soma ^_^

  5. #5
    Registered User
    Join Date
    May 2003
    Posts
    1,619
    I would guess this actually has many different factors at play.

    1. I don't think programming is necessarily that much of an exception; yes it's an evolving field where current knowledge is very important, but other studies have shown that other types of professionals do plateau. For example, doctors tend to show plateauing, even though they are also in an evolving field where current knowledge is very important. Generally, the brain tends to operate in a "learning" or "doing" mode, and above a certain point, learning almost stops. For example, most adults are little better at drawing pictures than they were at age 10 - even though their general motor skills have improved, they often still draw stick figures. Their brains have stopped trying to improve on drawing, and now simply repeat what they've done before. On a neurological level, it's the difference between forming and honing neural pathways and using the existing pathways as-is.

    2. One of the key factors that helps keep people growing is correction. Either one must be able (and willing) to frequently self-correct by introspection and analyzing how you could have done better, or (preferably) by getting other opinions. Radiologists, for example, show less plateauing of their skills than other doctors in part because they have peer review as part of their QC process - a certain percentage of their reports get reviewed by other doctors and any discrepancies in the interpretations are used as teaching moments. By looking at what you could have done better, you can keep your brain in the "learning" mode, rather than the "doing" mode. Peer review of code is an invaluable tool; I highly recommend you frequently get your code analyzed by people at least as good as you are. Their insight can help you see how you might have done things differently or better, and keep helping you learn new things.

    3. I wouldn't mistake constant novelty for constant growth. Yes, you can always learn new technologies, languages, APIs, etc., and you'll always have something to learn, but that doesn't mean your core programming skills are getting better just because of a greater breadth of experience. Someone who is competent in one area isn't necessarily going to become great by branching into a new area - they might just end up competent in two areas and great at neither. If you look back at a project you did three years ago, and were to re-do it today (using the same languages & tools you had available initially) - would you do exactly the same thing, or would you find a better solution today than you found back then?
    You ever try a pink golf ball, Wally? Why, the wind shear on a pink ball alone can take the head clean off a 90 pound midget at 300 yards.

  6. #6
    Registered User
    Join Date
    May 2003
    Posts
    1,619
    I should also say, I think there's a strong difference between breadth of knowledge and skill as a programmer. I think of it like the difference between speaking many (natural) languages, and being a great author. While every author needs at least one language, knowing more languages won't necessarily make one a better storyteller. Likewise, knowing more programming languages won't necessarily make one a better programmer. It can help, because it can expose you to new ideas and new ways of thinking, but just having breadth of knowledge doesn't guarantee skill.

    The original study seems to be more concerned with knowledge, while I think the skill is more interesting to consider. It's far harder to develop skill than knowledge, and lack of sufficient skill is a much more serious handicap than lack of sufficient knowledge.
    You ever try a pink golf ball, Wally? Why, the wind shear on a pink ball alone can take the head clean off a 90 pound midget at 300 yards.

  7. #7
    Master Apprentice phantomotap's Avatar
    Join Date
    Jan 2008
    Posts
    5,108
    [Edit]I realize Cat framed his response as considering what factors may have driven others to come to the conclusion "Old programmers have stale knowledge.". I've quoted Cat here for the sake of simplicity, and I intend a generic audience of "You." not Cat specifically, and even though I find certain words and phrases distasteful, I intend no offense to Cat.[/Edit]

    I don't think programming is necessarily that much of an exception; yes it's an evolving field where current knowledge is very important, but other studies have shown that other types of professionals do plateau.
    O_o

    What is a "plateau" in this context? I've only founds two distinct definitions in the material I've found since reading your post a few hours ago.

    One of the definitions I found was related to a series of "self-help" books which I don't care to discuss.

    One of those definitions use "plateau" in the sense of plots and graphs. Is that your definition? Is the "plateau" simply the flattening of the "learning curve" as one obtains mastery? If so, how does that have any place in the relationship of learning and age? Once one obtains significant mastery of a specific field, the "learning curve" necessarily flattens because what is yet available to be learned isn't as readily available as when just starting. The age of an individual simply does not factor into this definition of "plateau". If we start with an extremely specific field, we obtain mastery easily regardless of age so it would not unusual to find the very young with similar mastery.

    Let us consider briefly this area of study: the people who've played James Bond in a Hollywood film. Obviously, it doesn't take long to exhaust this area of study regardless the age of the student.

    I'll get to the "evolving field" bit later, but for now, while searching, I came across this familiar quote by Niels Bohr which seems extremely relevant: "An expert is a person who has made all the mistakes that can be made in a very narrow field.".

    Generally, the brain tends to operate in a "learning" or "doing" mode, and above a certain point, learning almost stops.
    Older people seem slower and less capable of learning for several reasons, but nearly every study done in the last decade shows that this isn't due to decaying cognitive ability in a healthy, functioning brain. (Feel free to search the internet for "older people think slow" or similar.)

    I'll ignore the general nonsense of "learning almost stops" to point out something crucial to this thread which is covered in many studies: reasoning, the ability to understand and manipulate complex relationships, never stops improving in a healthy, functioning brain. The ability to reason about problems and code is unquestionably a significant part of being a knowledgeable programmer.

    For example, most adults are little better at drawing pictures than they were at age 10 - even though their general motor skills have improved, they often still draw stick figures.
    How many of those adults actually expend effort learning to draw well?

    Their brains have stopped trying to improve on drawing
    Really? How confident are you that this is a failure of the aging human mind?

    I only ask because I'm extremely confident that such persons have simply made no conscious effort to improve their artistry.

    Do you give adults who don't dedicate themselves to the practice of playing a musical instrument a pass with "Their brains have stopped trying to play musical instruments."?

    now simply repeat what they've done before.
    Indeed.

    Rather that dedicate themselves to mastering artistry so that they may draw more than stick figures they have simply continued to draw stick figures.

    That is not a failing of the human mind! That is the failing of the person!

    On a neurological level, it's the difference between forming and honing neural pathways and using the existing pathways as-is.
    I'm going to ignore "neural pathways" because it has such a crap "New-Age" feel to it. (I'm sure someone is trying to sell someone else a plastic necklace with promises of "honing neural pathways" as I type.)

    A healthy, function brain never stops creating new neurons in the memory areas of the brain. (I'm to lazy to search for the proper names.) However, we don't really know if or how important the creation of neurons is to continued learning.

    Myelination, the insulation process which improves impulse response, doesn't seem to reach its peak until well into adulthood. (I'm pretty confident you are talking about this process instead of the creation of new neurons.) The myelination never seems to stop in a healthy, functioning brain. (I also want to point out that the peak is considered to be older than what the paper referenced in the original post considers the median age.) That said, what role this plays in continued learning isn't well-understood. There is demyelination of course, but that is born of disease so implies an unhealthy brain.

    By looking at what you could have done better, you can keep your brain in the "learning" mode, rather than the "doing" mode. Peer review of code is an invaluable tool; I highly recommend you frequently get your code analyzed by people at least as good as you are. Their insight can help you see how you might have done things differently or better, and keep helping you learn new things.
    I agree with this completely.

    Do you know what you, ultimately, just said? You said a person can keep learning by forcing themselves to learn.

    I wouldn't mistake constant novelty for constant growth.
    You said, basically, that growth by recognizing failure is one of the key factors of learning.

    What is a newly recognized failure? Is it not novel?

    Someone who is competent in one area isn't necessarily going to become great by branching into a new area - they might just end up competent in two areas and great at neither.
    Well, how does this scenario relate to your "plateau"? Is there a single core programmer "plateau" to be hit? Is there a "plateau" for each area?

    By studying what is unfamiliar, we are necessarily more likely to have failures. Assuming we make the effort to learn from our failure, wouldn't finding more fruitful areas of failure necessarily hasten the, according to my understanding of your definition, inevitable "plateauing" of the core programmer? Wouldn't finding failure in other areas also necessarily delay the inevitable "plateauing" of each area?

    Lastly, aren't these both good things?

    Certainly, the strange expertise with C++ meta-programming I have is nearly limitless and extremely pointless; sure, I can make C++ do basically anything which makes my experience uniquely valuable to those who are looking for something extremely specific. However, I'd almost certainly be more valuable as a general contractor seeking employment if instead of spending such a measure of my time climbing the last few rungs of my "plateauing" C++ "learning curve" I had spent time climbing my far steeper C# "learning curve".

    Again, aren't both of those avenues necessarily good? Aren't both avenues necessarily learning?

    Is the argument that "Old programmers have stale knowledge." not undeniably challenged by learning something that isn't "stale" precisely because the newer technology is novel by comparison?

    As for an earlier matter, who do you think is driving evolution? Sure, I suppose it is possible for a novice to find discovery, but isn't driving evolutionary discoveries far more likely to be the work of someone who has found himself resting on the "plateau" high on his "learning curve" whether by unique focus or diverse appetite?

    I don't buy anything you've said as an argument for "Old [professionals] have stale knowledge.".

    Soma
    Last edited by phantomotap; 05-28-2013 at 10:49 PM.

  8. #8
    Registered User
    Join Date
    May 2003
    Posts
    1,619
    Quote Originally Posted by phantomotap View Post
    [Edit]I realize Cat framed his response as considering what factors may have driven others to come to the conclusion "Old programmers have stale knowledge.". I've quoted Cat here for the sake of simplicity, and I intend a generic audience of "You." not Cat specifically, and even though I find certain words and phrases distasteful, I intend no offense to Cat.[/Edit]
    One of these days, you will reply to me and NOT include a disclaimer


    What is a "plateau" in this context? I've only founds two distinct definitions in the material I've found since reading your post a few hours ago.
    I was thinking more of in the 'Moonwalking with Einstein' sense of an "OK plateau", where you realize you're OK at doing something and become less critical of your own performance.

    How many of those adults actually expend effort learning to draw well?
    That's exactly the point; without considerable effort to continue to improve, people will reach a point after which they no longer progress.

    I'm going to ignore "neural pathways" because it has such a crap "New-Age" feel to it. (I'm sure someone is trying to sell someone else a plastic necklace with promises of "honing neural pathways" as I type.)

    A healthy, function brain never stops creating new neurons in the memory areas of the brain. (I'm to lazy to search for the proper names.) However, we don't really know if or how important the creation of neurons is to continued learning.

    Myelination, the insulation process which improves impulse response, doesn't seem to reach its peak until well into adulthood. (I'm pretty confident you are talking about this process instead of the creation of new neurons.) The myelination never seems to stop in a healthy, functioning brain. (I also want to point out that the peak is considered to be older than what the paper referenced in the original post considers the median age.) That said, what role this plays in continued learning isn't well-understood. There is demyelination of course, but that is born of disease so implies an unhealthy brain.
    Neural pathways is a term used in the primary literature, or it least it was back when I was minoring in neuroscience. I used that term that rather than neurogenesis because, while neurons are produced in the hippocampus and the olfactory bulb, long-term memories are not stored in either location (though the hippocampus, which you're thinking of, plays a critical role at integrating new memories into the brain, it's not the final storage place for memory). Myelination isn't really what I mean, either - more of what I'm talking about is long-term potentiation, or the modification of the strength of existing synapses, as well as synaptogenesis and dendritic pruning. Essentially, the creation, modification, or loss of connections between neurons. (Interestingly, many types of learning seem to be primarily driven by the pruning of existing neural connections rather than by the establishment of new connections.)

    By studying what is unfamiliar, we are necessarily more likely to have failures. Assuming we make the effort to learn from our failure, wouldn't finding more fruitful areas of failure necessarily hasten the, according to my understanding of your definition, inevitable "plateauing" of the core programmer? Wouldn't finding failure in other areas also necessarily delay the inevitable "plateauing" of each area?
    It's not just a matter of effort to learn from failure, it's also knowing how you might have done better. For example, say a doctor misdiagnoses a patient - a not too infrequent occurrence. Firstly, to have any chance of learning, the doctor needs to be aware of the failure. If the patient leaves and the doctor never knows the diagnosis was incorrect, the doctor can't learn; they don't even know they were wrong. Secondly, the doctor needs to understand how they might have done better. If the doctor realizes the diagnosis was wrong but can't see any way they could have known better, they also can't learn; they know they were wrong but they don't know how they could have been right.

    Only with both knowledge of failure and an understanding of how one could have succeeded can anyone learn. Neither piece of those are guaranteed to be available - the second one is particularly difficult to do by introspection and generally benefits strongly from outside peer review, especially by someone of greater expertise.

    Again, aren't both of those avenues necessarily good? Aren't both avenues necessarily learning?
    Yes, but not all learning is of equal value. I see knowledge and skill as two complementary areas of programming. Knowledge is the basic learning of the language - what tools does the language offer and how you use them. Skill is the act of taking a problem and coming up with a good approach to solving it. Any program of nontrivial complexity has many, many possible solutions that will meet the business requirements, some of which are far better than others. Having a lot of knowledge without a lot of skill isn't really useful - the most important thing in a project is to have good requirements, next is to have good design, and last (but still important) is to do well at coding the design.

    Knowledge is good, but skill is great.

    I don't buy anything you've said as an argument for "Old [professionals] have stale knowledge.".
    That's because that isn't my argument at all. My argument in one sentence is "Professionals tend to reach a point where they no longer improve upon their skills unless they make a concerted effort and get continued feedback on what they did wrong and how they can improve".
    You ever try a pink golf ball, Wally? Why, the wind shear on a pink ball alone can take the head clean off a 90 pound midget at 300 yards.

  9. #9
    Master Apprentice phantomotap's Avatar
    Join Date
    Jan 2008
    Posts
    5,108
    One of these days, you will reply to me and NOT include a disclaimer
    O_o

    I'd rather include the disclaimer than have you think I was mocking you when it is the intent behind the word in common use that I find distasteful.

    That's because that isn't my argument at all. My argument in one sentence is "Professionals tend to reach a point where they no longer improve upon their skills unless they make a concerted effort and get continued feedback on what they did wrong and how they can improve".
    ^_^

    Well, as I implied in the disclaimer you didn't like, I didn't imagine these were your actual views.

    Though, admittedly, I didn't imagine we agreed quite so strongly as it appears for this issue.

    Soma

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Replies: 5
    Last Post: 10-12-2012, 06:17 AM
  2. Replies: 2
    Last Post: 08-19-2012, 06:15 AM
  3. Replies: 9
    Last Post: 09-19-2011, 03:12 AM
  4. "itoa"-"_itoa" , "inp"-"_inp", Why some functions have "
    By L.O.K. in forum Windows Programming
    Replies: 5
    Last Post: 12-08-2002, 08:25 AM
  5. "CWnd"-"HWnd","CBitmap"-"HBitmap"...., What is mean by "
    By L.O.K. in forum Windows Programming
    Replies: 2
    Last Post: 12-04-2002, 07:59 AM