十年程式設計經驗凝結 與新人們分享

2021-06-27 16:25:50 字數 1812 閱讀 9959

有天和朋友聊天,朋友是國內一家大型網際網路企業的一位技術主管,朋友把他將近十年研發工作積累的心血總結成兩點,這兩點朋友剛一提出來我並沒有馬上明白,只是大約有這麼乙個概念,我還沒達到朋友在技術領域的那種高度,不能徹底領悟他深刻的思想。但我想與眾多剛剛踏入it技術研發領域的新人們分享一下這位朋友的思想,我盡全力來解釋闡述朋友的話語,希望能給大家帶來一些啟發。

第一點是:不斷抽象已知的東西。現實生活總是包括很多零散的東西,待解決的問題不會只有一面,所以抽取零散東西的共同屬性,聚合不同角度的同一面向,成為從問題領域進入程式設計領域的第一步。抽象的層次越高,你架構設計就越簡單。

第二點是:面對未知的東西用已有的抽象經驗來模擬體驗,從而不斷調整直至達到可以控制未知東西的程度。有了上面第一點的基礎,才可能到達這第二點的境界。現實問題總是不斷變化著的推陳出新的,從未知到半知到已知,是人認識客觀世界的乙個過程,恰如人生從天真到懵懂到成熟的過程。

天才是什麼?聊著聊著我們突然說到比爾蓋茨,說到那些天才黑客,朋友和我都很興奮。我問朋友,從他總結的兩點來看天才是怎麼實踐這兩點的?朋友想了一下說,天才就是生來就有那種抽象的能力,他並不一定侷限於計算機領域的空間來看待問題,他擁有從這個世界其他領域來模擬體驗計算機領域的天賦,他甚而可以抽象整個世界。

朋友的思想太博大高深,如我這般入行不久的初級程式設計師怎能領會?但我還是裝作深有體會的不斷點頭,同時把朋友從山巔拉到山腳下。我說:「你說得太抽象了,不如你告訴乙個起步階段的程式設計師應該怎麼慢慢通過實踐來逐步達到這種境界吧。」我知道朋友在這方面頗有體會,他以前曾跟我提起他畢業後在第一家公司是怎麼接受錘煉的。果然朋友很快開始闡述:「很簡單,起步階段就是專心的模仿。切記不要被那些亂七八糟的東西晃花了眼,什麼j2ee與.net之爭,什麼soa的革命等等,你不要去關心這些東西。當你在公司上班時,會有這樣乙個矛盾,當你完成公司交待的乙個任務時,你可能為了盡快完成任務用了很多別人現成的框架。這本身沒問題,但何謂專心的模仿?就是說你在工作之餘,需要來研究這些框架,你可以不用這些框架,而是用最原始的方式來寫,你會慢慢體會到框架的約束,進而有對框架進行改進的慾望。但是最終你也會發現:其實任何乙個框架都比你自己寫的要好。然而在你不斷模仿的同時你就得到不斷的提高。」朋友越講越起勁,又開始分析高手和低手在起步階段的差異,「其實所謂學得快,所謂高手,就是說他在模仿的過程中不斷比較自己寫的東西和框架本身的差異,不斷發現問題,想盡辦法解決問題,思考得越多,你碰到的問題就會越多,這是乙個正向迴圈,最終你的技術能力就會螺旋式的上公升;而低手只會被動的等待問題,一旦問題自己覺得解決得差不多就放下了,這樣自然就不會產生更多的問題,最終技術能力就始終停留在那個菜鳥階段。」

朋友的話讓我慚愧不已,我就是典型的不求甚解啊,問題解決得差不多就行,能執行就萬歲,總是不去深究,這樣給系統留下多大的隱患啊,而且也是對自己極大的不負責任。

聊完了技術方面的東西,我們想聊點輕鬆的,但是話題仍然離不開那些搞技術的新人們。朋友正好最近替公司招聘人才,面試了很多名校的計算機相關專業的一些畢業生。朋友說他們技術功底不夠紮實,我說他們除了這個,心態也很浮躁,恨不得一參加工作就拿大幾千的工資,一進公司就做專案經理,太眼高手低。朋友也深有同感,說面試的時候就有一種怪怪的感覺,而且朋友進一步將這種心態問題提公升到程式設計提公升到認識論的高度,「其實我覺得他們本質上是乙個不能夠正確認識自己的問題。認識論其實很簡單,首先認識問題,然後解決問題。你說你想做專案經理,那麼你需要具備哪些技能,技術上的,管理上的等,你需要多長時間來磨鍊這些技能等。程式設計不也就是這樣嘛,認識問題,抽象問題,進行設計編碼最終解決問題,其實做所有的事情都是如此。」

跟朋友的這番聊天讓我受益匪淺,而讓我感受最深的不是上面提及的這些關於程式設計和心態兩方面的道理,而是我體會到:技術人員並不像人們想象中的那麼呆板,每個人都在以自己的方式活著,不斷參悟人生的玄妙,而技術人員以一種更為奇特的方式和電腦搏鬥,付出了更多的心血,當然體悟得也更加深刻,然而最終每個人都會殊途同歸。

十年程式設計經驗凝結 與新人們分享

有天和朋友聊天,朋友是國內一家大型網際網路企業的一位技術主管,朋友把他將近十年研發工作積累的心血總結成兩點,這兩點朋友剛一提出來我並沒有馬上明白,只是大約有這麼乙個概念,我還沒達到朋友在技術領域的那種高度,不能徹底領悟他深刻的思想。但我想與眾多剛剛踏入it技術研發領域的新人們分享一下這位朋友的思想,...

十年程式設計經驗凝結 與新人們分享

有天和朋友聊天,朋友是國內一家大型網際網路企業的一位技術主管,朋友把他將近十年研發工作積累的心血總結成兩點,這兩點朋友剛一提出來我並沒有馬上明白,只是大約有這麼乙個概念,我還沒達到朋友在技術領域的那種高度,不能徹底領悟他深刻的思想。但我想與眾多剛剛踏入it技術研發領域的新人們分享一下這位朋友的思想,...

十年程式設計經驗凝結 與新人們分享

有天和朋友聊天,朋友是國內一家大型網際網路企業的一位技術主管,朋友把他將近十年研發工作積累的心血總結成兩點,這兩點朋友剛一提出來我並沒有馬上明白,只是大約有這麼乙個概念,我還沒達到朋友在技術領域的那種高度,不能徹底領悟他深刻的思想。但我想與眾多剛剛踏入it技術研發領域的新人們分享一下這位朋友的思想,...