[雜談] 不要放棄自己主動思考的權利
隨著關注『程序人生』的童鞋越來越多,我收到的留言中各種各樣的問題也越來越多。我能回答的基本上當時就回答了;我覺得可以寫成文章進一步討論的,也記錄在我的repo中;還有一些,真是不知道怎麼回答,或者讓我哭笑不得,比如說:
- 程序君,問你個問題。校園網客戶端有時候會顯示電腦網卡被禁然後又突然恢復,驅動更新了,殺毒了都沒用。。。。會造成突然斷網,不過大部分時間是好的。怎麼破?
- 程序君,用xxx語言寫這樣一個程序,blablabla,該怎麼寫?
- 我想去xxx公司或者xxx研究所,xxx語言要學到什麼程度才能去?
- 好不容易掌握了OOP的皮毛,現在FP又很流行,請問FP究竟有什麼好處?我做xxx的話OOP和FP哪個好?
- 求xxx的腳本
我想說:
(1) 程序君不是機器貓
(2) 有些問題google/stackoverflow/知乎/quora/etc.,效果要比問程序君好得多
(3) 請不要偷懶,放棄自己主動思考的權利
問對問題是門學問。問的問題決定了答案的方向。同樣的思考,你的問題是為了尋找唾手可得的答案,還是透過問題看本質?
程序君曾經有這樣的經歷:幾年前我對管理諮詢行業非常痴迷,買了不下十本相關的圖書,在各大論壇里(如21manager)廝混,看各種各樣的帖子,不斷得搜羅這個領域我所能獲得的一切資料。我花了很大的功夫尋找各種各樣的電子書,PPT,讀書筆記,經驗總結,多達上百G,為了便於管理,我甚至將它們分門別類,妥妥噹噹地整理在硬碟里。然而,我百分之九十的功夫都用在了搜集和整理上,真正學習的時間少之又少。甚至,大部分內容我只粗讀了前言,緒論,或者第一章。那段日子我過得緊張而又「充實」,每天都是「我又學到了xxx」的喜悅感。實際上,我的時間都浪費了,我守著一座金山卻不去挖掘,偏偏在論壇里看別人嚼過的內容;我花費的時間精力越多,找到的內容越豐富,我就越沒時間去閱讀。
後來我想通了一件事:我是要學習管理諮詢呢,還是要讓自己成為管理諮詢的檢索工具?於是我不再混論壇,刪除了所有下載的內容,抱起『波士頓戰略觀點』和『管理諮詢的神話』兩本一正一反的書閱讀。兩步大作讀下來,我才明白:之前我太想走捷徑,尋求唾手可及的答案,反而繞了彎路。
做軟體開發也是同樣的道理。
編程是件很苦的事。層出不窮的軟體開發思想、概念、語言、框架等會讓你疲於奔命。我相信很多程序員硬碟里也有數百G的資料,買了不下數十種系統、語言、框架的入門或拔高書籍。在辛辛苦苦網羅了這麼多資源後,卻把他們擱置在一旁,在各種各樣的社區里諮詢自己眼前碰到的問題。
如果你僅僅是為了應付眼前的問題,那你的答案僅僅停留在鼻尖上。你這次尋找到的答案,並不會解決你下次遇到的同類問題,它不會跳入你的大腦,和思維產生一系列的火花,然後激蕩出美妙的鏈式反應。不會!
探求問題的本質,不是去爭論OOP和FP誰好誰差,而是真正搞明白這些思想背後的推力是什麼。
比如說其中一個推力是:DRY(Dont Repeat Yourself)。也就是說,系統的每一個功能都應該有唯一的實現 —— 如果多次遇到同樣的問題,就應該抽象出一個共同的解決方法,不要重複開發同樣的功能。
那你再想想二者是如何達到DRY的,在不同的方向上,各有什麼優缺點。
這樣思考下去,要遠比機械地背誦FP「支持閉包和高階函數,支持惰性計算(lazy evaluation)。使用遞歸作為控制流程的機制。加強了引用透明性。沒有副作用。」這樣毫無意義的文字要強得多。
更比動不動就在社區里問「我做xxx,究竟是FP好還是OOP好」要有意義得多。
程序人生沒有捷徑,別放棄自己主動思考的權利。
如果你對本文感興趣,歡迎訂閱公眾號『程序人生』(搜索微信號 programmer_life)。每天一篇原汁原味的文章,早8點與您相會。
推薦閱讀:
※緣分天註定?
※等待還是放下?
※面對壓力:凡殺不死我的,都使我強大
※想讓伺服器跑得快,並不是換個編程語言那麼簡單
※被虐,並快樂著
TAG:迷思 |