剑客
关注科技互联网

程序员的大脑有什么不同?

程序员的大脑有什么不同?

编者按:21世纪是程序员的世纪。对程序员的需求比大部分岗位的需求都要高。那么程序员需要掌握哪些技能呢?程序员的大脑跟一般人有什么不同呢?菜鸟和专家程序员的大脑又有什么不同呢?如何才能提高程序员的能力呢?《JavaScript应用编程》作者通过引用神经科学的若干研究给出了他的 答案

关于软件开发者的大脑,神经科学能告诉我们什么呢?很多。

软件开发是美国增长最快的岗位之一,据预计2014到2024年间的增长率将达17%(比同期预测7%的一般工作增长率要快很多)。

为了做好劳动力储备以应对此需求,大家开始考虑如何对编程技能进行分类。特定类型的人会不会更有可能在编程的角色取得成功呢?

在这个主题上目前好没有太多的科学研究。这是个问题,因为在争取学校对计算机科学课程提供更多支持的努力当中,政府在尝试利用现有的核心技能学分制对计算机科学进行分类,比如肯塔基就把计算机科学当作外语来计算学分,这引起了争议,现在已经被撤销了。

关于软件开发,我们所知道的是它需要若干重要的核心技能:

  • 分析——开发者必须分析需求然后做出满足这些需求的解决方案。

  • 创造力——软件开发者必须能够设计软件组件和系统,并且让这些东西共同满足需求。

  • 沟通——软件开发者必须能写出易于理解的软件,给软件写文档,并就软件功能与同事及潜在用户进行沟通。

  • 人际技巧——软件开发者频繁地以小组的方式一起工作,需要跟若干其他开发者就系统展开协作,要跟经理或者客户进行沟通,还要跟视觉设计师进行交流等……

  • 学习——技术的变化之快令人眼花缭乱。软件开发者必须成为专家级的学习者,要能够适应不熟悉的框架,并且迅速形成生产力。

  • 面向细节——开发者必须考虑周到,既要考虑快乐路径或者说理想情况下的用户交互,又要照顾到连接失败、预期之外的输入等情况

  • 面向大局——开发者必须能够把控好应用的整体架构:确保不同组成部分拼凑到一起能够运作和交互。

  • 数学与抽象——软件开发者必须对抽象和计算模型感到舒服。功能代表了一切,数学公式、网络通信、屏幕显示,还要处理用户输入。

  • 逻辑——开发者必须能读写可能很复杂的逻辑,对切换和流控制进行处理。

考虑到沟通和人际技巧对于软件开发者来说是重要技能,再考虑到事实上“语言”也属于“编程语言”的一部分,所以在对计算机科学专业的学生在阅读代码过程中进行fMRI(功能核共振成像) 研究 时,发现他们的大脑语言中心被自己活也就不足为奇了。

研究发现,大脑跟语言处理、工作记忆以及注意力相关的特别区域被激活了。而尽管阅读代码涉及到数学、迭代以及条件分支,但是 大脑通常跟数学和逻辑相关的区域并没有被激活

这样看来肯塔基政府(把计算机语言认定为外语)的做法似乎并不出格。但是我们是不是就可以认定这些就是软件开发所需的大脑的唯一,或者主要区域了呢?还不能。

这项研究只是研究了源代码阅读,并没有衡量开发者在编写代码时大脑被激活的区域。而且它也只是考察了计算机科学专业的学生,而没有去看看成功的、专业的软件开发者是什么情况。这些是很重要的。

专家大脑与菜鸟大脑

专家大脑和新手的大脑通常是很不一样的。比方说,菜鸟钢琴手开始学习一段新乐谱时,他更多要考虑的是怎么弹——这项任务主要就是把琴键按对就行。

而专家级钢琴家在弹奏已经转化为肌肉记忆的曲目时,乐曲几乎到可以自行弹奏的地步了。这有点像学骑自行车跟有经验的骑手来一次急转的区别。菜鸟自行车骑手会担心摔倒而努力保持平衡。而有经验的自行车骑手知道,只要轮子还在转并且身子重心还保持在车上,车子基本上就不会倒。可以说基本上他们已经进入了自动驾驶模式,并且很可能根本就不会考虑平衡或者摔倒的事情。

随着你学习新技能,你的大脑就会发生改变,可以适应新的挑战,并且学会重新调整自己,以便迎接这些挑战的同时少费一些功夫。

换句话说,当你在学习的时候,你的大脑正在忙着对你交给它的新任务进行自动化。它不仅仅让你那自觉的、负责高级动作的前额叶手动地处理一切事务。同时它还会征募大脑擅长提供自动答案的其他部分来响应最常见的查询。

对专业级高尔夫球手运动计划的 研究 发现,专家的大脑活动跟菜鸟的有着极大的不同:

后扣带回(posterior cingulate)、杏仁核—前脑复合体,以及基地神经节只在新手的大脑被激活,而专家大脑的激活主要发生在顶上小叶、背外侧运动前区以及后头区。

在更聚焦认知的任务上专家和新手大脑也存在差异。对伦敦的士司机的一项著名 研究 明确了一件事,即学习伦敦街道的“知识”会导致大脑发生结构性改变。这项研究跟踪了实习生从培训到通过的士司机考试的全过程。那些通过考试的人大脑海马体的后半部分会出现增长。

即便到了成人阶段人类大脑仍然具有可塑性,这使得它在我们学习新任务的时候可以适应。

就像运动员可以让自己的身体适应来表现更好一样,程序员也可以塑造自己的大脑让他们的编码更好。

音乐家的大脑与软件开发

前面我们说过,计算机科学专业学生阅读源代码的时候会激活大脑与工作记忆相关的区域。有研究 表明 ,音乐家的大脑强化了 工作记忆 能力。

我夫人是一位技术代理,而我是她的技术顾问。在跟软件开发者合作的这几年当中,我们注意到其中的很多也是音乐人。在南湾Facebook园区那里有一个专门的音乐室,里面放满了乐器。我搬到旧金山的时候,就是去跟一家音乐技术初创企业合作的。从此以后几乎每次跟软件公司合作时,我都会跟合作者开玩笑说一起组个办公室乐队吧。

过去一年,大约30%的美国人口都弹奏过乐器,但在我的Twitter粉丝(几乎全都是软件开发者或者写代码的人)当中,将近一半都是音乐人。

那有没有可能音乐人的大脑已经组织成了正好有利于软件开发者的形式?科学家对音乐家的大脑进行了功能磁共振成像研究, 结果发现演奏乐器可以让大脑得到最好的认知练习 ,效果比研究过的大部分其他活动都要好。

演奏乐器激活了大脑的许多区域,并且在大脑的不同区域建立起了更强的联系,包括左脑(负责逻辑、分析、语言等)与右脑(负责创意、想象、直觉、可视化等)之间的连接,而高效软件开发就需要左右脑的配合。

考虑到软件开发者需要不同的认知技能,我们开始发现,弹奏乐器也许是练习大脑的很好方式,可以有利于你的软件开发工作。

结论

程序员的大脑是不是跟别人不一样?有很好的迹象表明,程序员强化了自身的工作记忆能力,提高了语言处理技能,增强了分析技能,可能还强化了海马体能力(这个区域我们还需要大量新研究来验证这些猜想)。

好消息是,同样也有很好的迹象表明,神经可塑性、练习以及训练对于软件开发者的认知能力强化是有帮助的——未必需要遗传素质(尽管这很可能也扮演了一定角色)。

换句话说,如果你希望成为健身者,你需要锻炼肌肉。如果你想要成为软件开发者,你需要练习你的大脑。

程序员需要像运动员训练身体一样锻炼自己的大脑。

只要加以练习,你的大脑就会强化并且重新组织自己来为你的工作提供火力支持。

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址