如何教女朋友一起程式設計

2 贊 回覆發表於2015-08-21

本文由碼農網 – 小峰原創翻譯,轉載請看清文末的轉載要求,歡迎參與我們的付費投稿計劃

若干年前,在我還是一個小小的軟體開發人員的時候,我就夢想有一個女孩能讓我與之暢談我喜歡的東西。我想和她談論我做了什麼。不是簡單地說我在做與電腦相關的東西,而是能夠更深層次地暢所欲言。就像和同事一起的那種談話。我希望當我發現了什麼令人興奮的新玩意兒的時候,當我興致勃勃地講給她聽的時候,她能理解我。

回想我還在上大學的時候,我也經常將我這個夢想說給朋友聽。我以為他們會和我想的一樣,但讓我吃驚的是,我是這群極客中唯一一個這麼想的人。他們中的每一個人都告訴我,他們不想找一個女程式設計師做女朋友,他們說這會讓他們會發瘋。但我認為他們是在自欺欺人。

他們內心真正的想法是,要找到一個既好看、聰明,又對程式設計感興趣,以及最重要的是,對你有意思的女孩,那是不可能的。概率微乎其微?!!

讓我告訴你一個祕密,兄弟,她其實並不需要知道程式設計。生活中的一切東西都是可以學習的。的確,有些人可能更擅長於程式設計這些理科類的東西,但這並不意味著其他人就無法學習和理解這些內容了。我們能驕傲地宣稱自己是個程式設計師,是軟體工程師,那是因為我們用了很多年的時間去學習和掌握這些知識。但是我要告訴你一個真相,許多你花了一年時間才明白的東西,其實可以在5分鐘內被解釋得清清楚楚,如果你知道怎麼解釋的話。

指標運算真的很難嗎,還是我們需要這麼說以便於自吹自擂,炫耀自己的能耐,因為我們自己是好不容易才明白它是如何工作的?理解多型性困難嗎?是真的很難理解,還是我們自己理解的角度不對?

思維角度相當於80分智商。

你完全能在短短几個小時內就將指標,手動記憶體管理,棧和堆分配,垃圾收集等等等等解釋得一清二楚,如果你選擇了正確的形容和比喻方式。

演算法難嗎?我敢打賭,你肯定不希望有人半夜吵醒你要你寫一個快速排序。但是,如果你有很多小刀,然後教你的女朋友如何對它們進行排序(明顯是按大小來)?你可能依然需要示範個兩三次,才能讓她真正認同這種排序方法是有效的,但其實這個演算法本身不要太簡單。

如果你有一個問題,想了幾個小時還是搞不明白,那麼不妨試試解釋給你的女朋友聽。不要以為這是在對“牛”彈琴(各位美眉勿噴),如果你在句子中突然有所發現,可以中斷談話。試著真正地解釋給她聽,就算她一點兒也不懂技術。如果你能用一個正確的比喻手段來解釋的話,她理解起來其實是很容易的。

記住得是她自願學習這些東西,你不能強迫灌輸知識給她,自己想學才能學得進去。你需要打破的最大障礙是,克服她“我永遠不會明白”的憂慮。

這並不難,只是需要時間

大約6個月前,我的女朋友還正在學習政治學,攻讀她的碩士學位。她真的沒有任何技術經驗。

然而突然有一天,她決定要學一些很酷的東西,以便於用JavaScript在我給她製作的個人網站上面放一些動畫。於是我開始教她Ruby on Rails。兩週之後,她建立了自己的web app。幾個星期後,她意識到,她需要一些更深層次的知識,於是我開始教她更多基本的東西。

我們學習瞭如計算機如何工作,如何手動分配記憶體,棧和堆分配之間的差異,如何在Objective-C做到正確地引用計數,垃圾收集器是如何工作的,函數語言程式設計(此處指Haskell),網路協議以及更多。她甚至知道了我在一年前還不知道的東西。

基本上我採取的方式是,對於我知道的內容,提取重要的東西,扔掉99.5%用於說明什麼重要的浪費時間的玩意兒,只教她需要知道的東西。

不過這還不足以讓人成為一個程式設計師,她還需要了解硬體部分,但即使這樣,她已經比大多數在學校中學習軟體工程的人懂得更多了,僅僅學了6個月之後。

你是一個專業的老師

作為一個專業的開發人員,也意味著在一定程度上你是一個專業的老師,因為我們的工作迫使我們需要不斷地解釋給其他人聽。我們必須將自己代入閱讀者的角色以便於讓我們的程式碼更易於理解。我們必須解釋我們做的事情,當別人不知道這有什麼用的時候。我們必須教實習生如何邁向自己的偉大之路。

我們在工作中能做的就是將複雜的事情簡單化(話說,有些人恰喜歡反其道而行)。之所以需要這麼長的學習時間,其原因之一就是因為我們經常迷路。你可能有一個偶爾會給你解釋一些東西的教授,但是很遺憾每週只有一節課。

但是話說回來,如果你教你的女朋友——因為是住在一起的——那麼她隨時就可以問你,因為你隨傳隨到,立馬可以給她解答問題。

開發人員通常之所以非常擅於谷歌搜尋,是因為經常陷入迷途。總是需要自己去尋找答案。但是,如果在同一個房間裡,對方隨時能提供答案的話,那生產效率還能不高嗎?

譯文連結:http://www.codeceo.com/article/how-tech-girlfriend-programming.html
英文原文:How to Teach Your Girlfriend Programming
翻譯作者:碼農網 – 小峰
轉載必須在正文中標註並保留原文連結、譯文連結和譯者等資訊。]

相關文章