Twitter, text messages and facebook have trained our minds to work differently. Have you been keeping up?
Have you?
> In a much-cited 2009 paper* in Proceedings of the National Academy of Sciences, for example, Stanford's Eyal Ophir, Clifford Nass, and Anthony D. Wagner show that heavy media multitaskers demonstrate significantly less cognitive control than light multitaskers. The heavy multitaskers "have greater difficulty filtering out irrelevant stimuli from their environment" and are also less able to suppress irrelevant memories from intruding on their work. The heavy multitaskers were actually less efficient at switching between tasks - in other words, they were worse at multitasking.
* http://memorylab.stanford.edu/Publications/papers/OPH_PNAS09...
Let me be more specific.
So when I talk about the asynchronous nature twitter/texting/facebook what I mean is that there are people now (usually young people) who are comfortable with carrying out multiple conversations with different people/groups of people that occur at different rates of time. I am not suggesting that someone who is frequently using twitter/texting/facebook while at work would be more productive than someone who doesn't, but that this experience helps them be able to manage multiple workflows better.
From my own experience, when I talk about multi-tasking as far as it relates to a developer anyway, let me give you an example of something that I can do all the time: I get assigned a bug, I look at the bug board to see what other similar or related bugs there might be, and I assign them to me. Usually this means that some or all of the steps to reproduce the bug are the same, so that if I have to step into the debugger to identify the problem I can set breakpoints in places that should help me figure out more than one bug at a time. In the middle of this, a co-worker sends me an instant message asking for something. I don't immediately know the answer, but I know the general area of the code to look for the answer, so I dig around for a few minutes and then either reply with what was asked or a "I don't know but xyz worked with that code and might be able to help you better." Then I go back to my debugging. I find the bug, or I find a clue that will lead me to the bug, and I write some code, deploy it on the test server, and start a test, which I know will take 20 minutes or so. In the meantime I might reply to some e-mail, do some code review to see what might be refactored to be more readable and/or maintainable, or work on another set of bugs. Then when the earlier test completes I go back to check on it. I might not immediately go back to it after 20 minutes depending on where I am with my other tasks, I would probably find a good natural stopping point first, but the point is at the end of the day I am able to finish all these tasks much faster than if I did them one at a time sequentially.
I don't think what I just described takes particular mental prowess and most of the younger people at my work (and a few of the older ones too) do the same as well. But there are enough older workers who just get hopelessly lost if you ask them to do more than one thing at a time, whereas if I ask a younger co-worker to do the same thing they have no problems, that I have noticed it.
Would it be fair to say you believe that your high level of interaction with various social media sites and technologies has 'trained' your mind's agility? If so, several useful questions arise which I'd love to know answers too;
1) Can you produce more lines of production code over unit time?
If you use a source repository you might be able to analyze this by check-ins. I suspect a large open source project like KDE or Hadoop etc where you could correlate 'agility' of committer with the commits could shed some light here.
2) Do the designs and implementations produced have similar, better, or worse levels of qualities than designs and implementations done by 'less agile' developers?
I'd probably track bug reports and rewrites against lines of code committed.
3) Does the scale of problem change the effectiveness ratio? Which is to say if you're coding/designing/implementing at the top level of a big project vs at the fringe, does the difference between people trained with social media exposure continue?
Bascially correlating the above two data points across all levels of the code and design.
But I see where you are going there.
I mean come on, if you are comparing a fresh out-of-school graduate with someone with 10 years experience I think most people will agree that the older guy in this case will be more productive. There are things you need to know about working with a large code base that can't be taught by school but can only be learnt with experience.
When I say "older" developer, I mean the 40-50 year old who probably was a really good developer 10 years ago, got a steady, cushy job, with a salary that he/she is more than happy with, and stopped learning because he didn't need to anymore.
I know a lot of exceptions to the rule. The older programmer who got into it because he loves to code, who stayed in it because he loves to code, he keeps up with the times and continues to be relevant. The older programmer who just wants to make a buck and go home to his family? He fell behind a long time ago and doesn't want to catch up.
Which I'd agree with, but that eviscerates your thesis about the new mind training regimen does it not? After all the learning engaged developer missed out on the training you got from social media.
I think everyone here knows 'bad' developers, I was astonished at the number of people who I knew responded to the question "Why computer science?" with "I hear it pays well."[1] I suspect those folks stop being developers as quickly as they can and move into management (since it has a higher pay cap). So whether you are 20 something and programming by 'cut-n-paste' or 40 something and 'retired-in-grade'
It's wrong to generalize, and it's often a prelude to discrimination to generalize an opinion based on race, color. religion, sex, or age.
I'd love to get better tools and insights into developer productivity. I think it could be a useful differentiating factor on a source code control system.
[1] This contrasts with the people who respond "What? They'll pay me to do this? Cool."