程序員的大腦有什麼不同?

編者按:21世紀是程序員的世紀。對程序員的需求比大部分崗位的需求都要高。那麼程序員需要掌握哪些技能呢?程序員的大腦跟一般人有什麼不同呢?菜鳥和專家程序員的大腦又有什麼不同呢?如何才能提高程序員的能力呢?《JavaScript應用編程》作者通過引用神經科學的若干研究給出了他的答案

關於軟件開發者的大腦,神經科學能告訴我們什麼呢?很多。

軟件開發是美國增長最快的崗位之一,據預計2014到2024年間的增長率將達17%(比同期預測7%的一般工作增長率要快很多)。

為了做好勞動力儲備以應對此需求,大家開始考慮如何對編程技能進行分類。特定類型的人會不會更有可能在編程的角色取得成功呢?

在這個主題上目前好沒有太多的科學研究。這是個問題,因為在爭取學校對計算機科學課程提供更多支持的努力當中,政府在嘗試利用現有的核心技能學分制對計算機科學進行分類,比如肯塔基就把計算機科學當作外語來計算學分,這引起了爭議,現在已經被撤銷了。

關於軟件開發,我們所知道的是它需要若干重要的核心技能:

  • 分析——開發者必須分析需求然後做出滿足這些需求的解決方案。
  • 創造力——軟件開發者必須能夠設計軟件組件和系統,並且讓這些東西共同滿足需求。
  • 溝通——軟件開發者必須能寫出易於理解的軟件,給軟件寫文檔,並就軟件功能與同事及潛在用户進行溝通。
  • 人際技巧——軟件開發者頻繁地以小組的方式一起工作,需要跟若干其他開發者就係統展開協作,要跟經理或者客户進行溝通,還要跟視覺設計師進行交流等……
  • 學習——技術的變化之快令人眼花繚亂。軟件開發者必須成為專家級的學習者,要能夠適應不熟悉的框架,並且迅速形成生產力。
  • 面向細節——開發者必須考慮周到,既要考慮快樂路徑或者説理想情況下的用户交互,又要照顧到連接失敗、預期之外的輸入等情況
  • 面向大局——開發者必須能夠把控好應用的整體架構:確保不同組成部分拼湊到一起能夠運作和交互。
  • 數學與抽象——軟件開發者必須對抽象和計算模型感到舒服。功能代表了一切,數學公式、網絡通信、屏幕顯示,還要處理用户輸入。
  • 邏輯——開發者必須能讀寫可能很複雜的邏輯,對切換和流控制進行處理。

考慮到溝通和人際技巧對於軟件開發者來説是重要技能,再考慮到事實上“語言”也屬於“編程語言”的一部分,所以在對計算機科學專業的學生在閲讀代碼過程中進行fMRI(功能核共振成像)研究時,發現他們的大腦語言中心被自己活也就不足為奇了。

研究發現,大腦跟語言處理、工作記憶以及注意力相關的特別區域被激活了。而儘管閲讀代碼涉及到數學、迭代以及條件分支,但是大腦通常跟數學和邏輯相關的區域並沒有被激活

這樣看來肯塔基政府(把計算機語言認定為外語)的做法似乎並不出格。但是我們是不是就可以認定這些就是軟件開發所需的大腦的唯一,或者主要區域了呢?還不能。

這項研究只是研究了源代碼閲讀,並沒有衡量開發者在編寫代碼時大腦被激活的區域。而且它也只是考察了計算機科學專業的學生,而沒有去看看成功的、專業的軟件開發者是什麼情況。這些是很重要的。

專家大腦與菜鳥大腦

專家大腦和新手的大腦通常是很不一樣的。比方説,菜鳥鋼琴手開始學習一段新樂譜時,他更多要考慮的是怎麼彈——這項任務主要就是把琴鍵按對就行。

而專家級鋼琴家在彈奏已經轉化為肌肉記憶的曲目時,樂曲幾乎到可以自行彈奏的地步了。這有點像學騎自行車跟有經驗的騎手來一次急轉的區別。菜鳥自行車騎手會擔心摔倒而努力保持平衡。而有經驗的自行車騎手知道,只要輪子還在轉並且身子重心還保持在車上,車子基本上就不會倒。可以説基本上他們已經進入了自動駕駛模式,並且很可能根本就不會考慮平衡或者摔倒的事情。

隨着你學習新技能,你的大腦就會發生改變,可以適應新的挑戰,並且學會重新調整自己,以便迎接這些挑戰的同時少費一些功夫。

換句話説,當你在學習的時候,你的大腦正在忙着對你交給它的新任務進行自動化。它不僅僅讓你那自覺的、負責高級動作的前額葉手動地處理一切事務。同時它還會徵募大腦擅長提供自動答案的其他部分來響應最常見的查詢。
對專業級高爾夫球手運動計劃的研究發現,專家的大腦活動跟菜鳥的有着極大的不同:

引用後扣帶回(posterior cingulate)、杏仁核—前腦複合體,以及基地神經節只在新手的大腦被激活,而專家大腦的激活主要發生在頂上小葉、背外側運動前區以及後頭區。

在更聚焦認知的任務上專家和新手大腦也存在差異。對倫敦的士司機的一項著名研究明確了一件事,即學習倫敦街道的“知識”會導致大腦發生結構性改變。這項研究跟蹤了實習生從培訓到通過的士司機考試的全過程。那些通過考試的人大腦海馬體的後半部分會出現增長。

引用即便到了成人階段人類大腦仍然具有可塑性,這使得它在我們學習新任務的時候可以適應。

就像運動員可以讓自己的身體適應來表現更好一樣,程序員也可以塑造自己的大腦讓他們的編碼更好。

音樂家的大腦與軟件開發

前面我們説過,計算機科學專業學生閲讀源代碼的時候會激活大腦與工作記憶相關的區域。有研究表明,音樂家的大腦強化了工作記憶能力。

我夫人是一位技術代理,而我是她的技術顧問。在跟軟件開發者合作的這幾年當中,我們注意到其中的很多也是音樂人。在南灣Facebook園區那裏有一個專門的音樂室,裏面放滿了樂器。我搬到舊金山的時候,就是去跟一家音樂技術初創企業合作的。從此以後幾乎每次跟軟件公司合作時,我都會跟合作者開玩笑説一起組個辦公室樂隊吧。

過去一年,大約30%的美國人口都彈奏過樂器,但在我的Twitter粉絲(幾乎全都是軟件開發者或者寫代碼的人)當中,將近一半都是音樂人。

那有沒有可能音樂人的大腦已經組織成了正好有利於軟件開發者的形式?科學家對音樂家的大腦進行了功能磁共振成像研究,結果發現演奏樂器可以讓大腦得到最好的認知練習,效果比研究過的大部分其他活動都要好。

演奏樂器激活了大腦的許多區域,並且在大腦的不同區域建立起了更強的聯繫,包括左腦(負責邏輯、分析、語言等)與右腦(負責創意、想象、直覺、可視化等)之間的連接,而高效軟件開發就需要左右腦的配合。

考慮到軟件開發者需要不同的認知技能,我們開始發現,彈奏樂器也許是練習大腦的很好方式,可以有利於你的軟件開發工作。

結論

程序員的大腦是不是跟別人不一樣?有很好的跡象表明,程序員強化了自身的工作記憶能力,提高了語言處理技能,增強了分析技能,可能還強化了海馬體能力(這個區域我們還需要大量新研究來驗證這些猜想)。

好消息是,同樣也有很好的跡象表明,神經可塑性、練習以及訓練對於軟件開發者的認知能力強化是有幫助的——未必需要遺傳素質(儘管這很可能也扮演了一定角色)。

換句話説,如果你希望成為健身者,你需要鍛鍊肌肉。如果你想要成為軟件開發者,你需要練習你的大腦。

引用程序員需要像運動員訓練身體一樣鍛鍊自己的大腦。

只要加以練習,你的大腦就會強化並且重新組織自己來為你的工作提供火力支持。


資料來源:36Kr

如果喜歡我們的文章,請即分享到︰