如何教女朋友程式設計?

Sheng Gordon發表於2015-08-17

【2015-08-17 晚更新】:鑑於不少童鞋在說“首先得有個女朋友”。嗯,單身的程式設計師,請奔走相告並收藏 #物件導向# 的網址:http://date.jobbole.com/?sort=latest 。

自從我幾年前剛成為一個軟體開發者之後,我就一直夢想著有一個能和我一起討論工作的女朋友。我想和她討論我所從事的工作。不是像“對,我做計算機的”那樣,而是以真正深入的方式討論。就像你和同事間對話一樣。無論什麼時候,當我發現一些令我激動的新東西時,我希望她是我最先想告訴的人,並且能夠理解這個新東西。

回到我還是一個學生的日子,具體地說是大學時期,我曾經跟朋友們說過這些。我期望每個人的想法都和我一樣,但是出乎我的意料,我是那個瘋狂極客小組裡面唯一瘋狂的人。他們告訴我,他們不需要程式媛女朋友,那樣他們會發瘋的。但是我認為這是胡扯。

這只是他們不願意說罷了。每個人真正想的是,是否有可能找到一個既漂亮聰明,又對程式設計感興趣的女孩,並且會對你這個不懂社交的極客有好感。這一切發生的概率能有多大?

但是老兄,讓我告訴你一個祕密:她不需要懂這些東西。生活中的任何事情都是可以學會的。一些人可能會傾向於某些特定的事情,但是不代表其他人學不會、理解不了。我們對自己的職業非常自豪,因為我們花費了很多年來掌握它。但是說實話,如果你掌握了方法,很多需要你花費一年時間來理解的東西,可以在5分鐘內解釋清楚。

指標運算真的很難麼?還是因為我們最終理解了它,就認為自己的水平提高了呢?理解多型很難嗎?是 Monad(譯者注,Monad是為了消除副作用的一種模式,如函數語言程式設計中的鏈式結構,參見維基解釋真的很難理解,還是我們站在一個錯誤的角度來理解它?

智商達到 80 就足夠了。

如果你選擇了合適的比喻,你可以在幾個小時內解釋清楚指標、手動記憶體管理、棧/堆分配、垃圾回收等等知識。

伯樂線上注:問題來了,請用白話向外行解釋“指標”、”手動記憶體管理”、”棧/堆分配”、”垃圾回收”。

大家在評論中留言試試。精彩的解釋,我們會選為精華評論哦。:)

還是演算法很難呢?我打賭你不會希望有人在午夜叫醒你,讓你寫一個快速排序。但是假使你有幾把刀,並想教你的女朋友如何對它們排序(當然是按尺寸)呢?你可能不得不為她示範兩三次,從而讓她相信這個演算法真的管用,雖然演算法本身簡單到爆。

如果你遇到一個問題,在幾個小時後還是不能理解,去找你的女朋友,並向她解釋。不要像跟牆說話那樣,在你說話過程中意識到該如何做之後就中斷談話。(伯樂線上注:是不是想到了每個程式設計師都要知道的“小黃鴨除錯法”呢?)嘗試向她解釋,即使她一點兒都不懂技術。一旦你找到了合適的比喻,她就很容易理解了。

時刻記住,她需要有意願來學習,你不能把你的知識強推給她。這裡最大的障礙是,打破“我永遠也理解不了”的恐懼。

這不難,只需要一些時間

大約 6 個月之前,我女朋友正在為她的碩士學位學習政治學。在此之前,她真的沒有任何技術經歷。

有一天她決定要學習一些JavaScript中酷酷的東西,並在我為她做的個人網站上製作一些動畫。一週後我在教她Ruby on Rails。幾周後她已經在做自己的Web應用了。又幾周後她意識到需要更多底層的知識,因此我們開始學習一些基礎的技術。

我們開始學習諸如計算機如何工作,如何手動申請記憶體,棧和堆的區別,如何在Objective-C中做引用計數管理,垃圾回收機制如何工作,函數語言程式設計(我指的是Haskell),網路協議等等。她甚至知道了我在一年前還不知道的東西。

基本上,我能夠從我的知識裡面,選擇重要的東西,拋棄掉為了搞清楚什麼東西最重要而浪費的99.5%的時間,從而只教給她那些需要知道的知識。

讓一個人成為一個程式設計師,這些足夠了嗎?不。她仍然不得不經歷困難的部分,要理解許多東西,但是她僅僅在6個月後,就已經比在大學裡學習軟體工程專業的大多數學生掌握了更多的知識。

你是一個專業的老師

作為一個專業的開發者,在某種程度上意味著你也是一個專業的老師,因為我們的工作迫使我們不斷地向其他人解釋。我們不得不站在閱讀者的角度,使我們的程式碼可讀。我們不得不在我們所做的事情看起來沒意義時,解釋我們做了什麼。我們不得不教育實習生,讓他們成長得更優秀。

在工作中,我們做了很多複雜的事情,讓它看起來簡單(希望有些人喜歡做相反的事情)。學習某個知識需要花費很長時間,其中的一個原因是,你一直在迷失。你可能有一個老師會偶爾向你解釋,但是每週只有一次聽講的機會。

另一方面,如果你在教和你生活在一起的人,她將能無限次地接觸你,且能夠立即得到任何問題的答覆。

開發者很擅長Google,因為我們一直在迷失。我們一直在尋找答案。但是如果你有一個在同一個房間、知道所有答案的人一起,你的生產力會怎麼樣呢?

 

相關文章