自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

優(yōu)秀的程序員如何思考、學(xué)習(xí)新技術(shù)的原則和方式

開發(fā) 前端
最近了解了幾個(gè)MVC的框架,其中有兩個(gè)是公司內(nèi)部的。發(fā)現(xiàn)這些東西都是類似的,從處理邏輯到頁(yè)面渲染;從service到layout;配置的實(shí)現(xiàn)無(wú)非就是XML,或者annotation……我有種感覺,興許已經(jīng)跳不出這個(gè)思維圈子了?
先看下面這樣的困惑:

最近了解了幾個(gè)MVC的框架,其中有兩個(gè)是公司內(nèi)部的。發(fā)現(xiàn)這些東西都是類似的,從處理邏輯到頁(yè)面渲染;從service到layout;配置的實(shí)現(xiàn)無(wú)非就是XML,或者annotation……我有種感覺,興許已經(jīng)跳不出這個(gè)思維圈子了?

[[131476]]

如今的時(shí)代,是一個(gè)概念翻飛的時(shí)代,oschina里的開源軟件數(shù)量就已經(jīng)超過(guò)了兩萬(wàn),五花八門的技術(shù)層出不窮,到底什么技術(shù)才是值得學(xué)習(xí)的?

有位朋友說(shuō),他想學(xué)習(xí)一些關(guān)于Android上的開發(fā)技術(shù),興趣驅(qū)使。幾個(gè)月過(guò)去了,他說(shuō)他已經(jīng)能做出許多小程序了,可是他現(xiàn)在回想起來(lái),掌握一門技術(shù)是好,可興趣之外還有什么呢?他說(shuō),“如果我的工作中不使用Android平臺(tái),我學(xué)它還有何用?”。

學(xué)習(xí)技術(shù)到底是一件有意思的事,還是一件痛苦的事?讀書的時(shí)候,我曾經(jīng)買過(guò)侯捷翻譯的《深入淺出MFC》,對(duì)那時(shí)的我來(lái)說(shuō),似乎太困難了一點(diǎn),我強(qiáng)迫自己看完了三分之一,實(shí)在是沒有毅力繼續(xù)往下讀了。我在其中察覺不到快樂,這本書在當(dāng)時(shí)似乎充滿了生澀。

如上這樣的故事太多了,很多時(shí)候,程序員們(包括我在內(nèi))辛苦地學(xué)習(xí),有的沒有好的效果,有的過(guò)程充滿痛苦,有的更是不知道我學(xué)它的目的是什么。

國(guó)內(nèi)的教育體制,培養(yǎng)了這樣一批人:

他們努力、奮進(jìn),熱愛技術(shù),愿意投身軟件行業(yè),愿意寫出高質(zhì)量的代碼,他們對(duì)業(yè)界的東西很感興趣,他們?cè)敢鈱W(xué)習(xí)扎實(shí)的基礎(chǔ)知識(shí),他們渴求火熱的新技術(shù)……

幾年以后,他們擁有廣泛的視野,閱歷寬闊、經(jīng)驗(yàn)老到、言辭犀利,對(duì)行業(yè)動(dòng)態(tài)了如指掌,顯然,他們是行業(yè)的博學(xué)者。

然而……

他們卻缺乏這樣一種能力——思考。

欠缺思考容易導(dǎo)致這樣的現(xiàn)象:

不會(huì)做設(shè)計(jì)

遇到了問題,拿見到過(guò)的、學(xué)到了的熟悉的框架、方案、模式往上套,而不仔細(xì)分析其中的利弊,只是盡可能地尋找最接近當(dāng)前問題的解決途徑。

有的是不會(huì)做系統(tǒng)設(shè)計(jì)。和少數(shù)所謂的“架構(gòu)師”接觸過(guò),他們“只懂業(yè)務(wù),不懂技術(shù)”,這樣設(shè)計(jì)出來(lái)的系統(tǒng)只能滿足功能性需求;而論壇上的一些具體問題的討論話題,則暴露出一些跟帖討論者“只談技術(shù),不提業(yè)務(wù)”,譬如“XXX大容量的解決方案”、“秒殺系統(tǒng)的***架構(gòu)”,企圖對(duì)某一類寬泛的問題,設(shè)計(jì)出一套放之四海皆準(zhǔn)的通用解決方案。

還有的則是不會(huì)做面向?qū)ο笤O(shè)計(jì),缺少抽象和解耦的能力,這樣的例子就更多了。朋友告訴我,他的單位有一位寫Ruby的老員工,一個(gè)龐大的工程,代碼里面居然只有一個(gè)上帝類,就搞定了所有的問題。

不能堅(jiān)持自己的觀點(diǎn)

這一點(diǎn)在面試中最容易觀察到。應(yīng)聘者有剛畢業(yè)的學(xué)生,也有工作超過(guò)10年的有豐富經(jīng)驗(yàn)的從業(yè)者。他給出一個(gè)粗略的方案以后,在方案沒有細(xì)化到一定程度以前,很難給出優(yōu)劣的評(píng)論,但是,如果你輕輕地challenge一下,他就迅速放棄本來(lái)的構(gòu)思,跑到你的思路上來(lái)。

例如,SNS系統(tǒng)中,服務(wù)端有消息要怎樣通知到客戶端,這樣的一個(gè)問題,解決方案有很多種,比如客戶端輪詢、服務(wù)端hold住連接推送等,各有利弊。應(yīng)聘者應(yīng)當(dāng)有自己的觀點(diǎn)。

不能細(xì)化一個(gè)問題解決方案

怎樣區(qū)分一個(gè)空談家和一個(gè)實(shí)干家?給他一個(gè)具體的問題是***的辦法。在我剛工作的時(shí)候,我曾經(jīng)很欽佩那些在活動(dòng)中、討論中高談闊論的人,我覺得他們很能說(shuō)??墒呛髞?lái)我逐漸發(fā)現(xiàn),能說(shuō)的人實(shí)在是太多太多了。細(xì)化設(shè)計(jì)、甚至落到編碼,才是對(duì)一個(gè)程序員真實(shí)的檢驗(yàn)。當(dāng)然,如果你覺得做軟件設(shè)計(jì)的人可以不熟悉編碼、架構(gòu)師可以不首先是一名高級(jí)程序員,那我們也沒有什么可談了:)。

如果你會(huì)學(xué)習(xí),你可以成長(zhǎng)得很快;如果你不會(huì)思考,你永遠(yuǎn)只能跟在別人后面。

在新技術(shù)的學(xué)習(xí)上我認(rèn)為也應(yīng)當(dāng)多思考,不同的人有不同的學(xué)習(xí)動(dòng)機(jī)。在非外界所迫的情況下,對(duì)于新技術(shù)的學(xué)習(xí),我的觀點(diǎn)可以概括為:

它要解決什么問題,就是所謂的問題域,是我關(guān)心的嗎?

我沒有去研究操作系統(tǒng)底層的實(shí)現(xiàn),并非這沒有價(jià)值,而是我沒有興趣,這就是問題域的影響(不過(guò)現(xiàn)在我有興趣了,我想做一些這方面的事情)。

和過(guò)往解決方案它的優(yōu)勢(shì)在哪里,是否顯著?

這是competition,重復(fù)的技術(shù)是沒有生存空間的(當(dāng)然,你是微軟的話除外:)),就像互聯(lián)網(wǎng)同一個(gè)類型的網(wǎng)站,競(jìng)爭(zhēng)到***就那么兩三家。就像Groovy,我很喜歡它,但是有了Scala以后,我覺得興許有一個(gè)要死掉(Groovy創(chuàng)始人說(shuō),如果他早些知道Scala的話,就沒有Groovy什么事了。具體的報(bào)道請(qǐng)去Google上搜他的blog)。

它的實(shí)現(xiàn)和帶來(lái)的效果上看,有沒有很有意思的思路,是值得借鑒和思考的?

這是最難講的一個(gè)問題。以去年初開始接觸的Node.js為例,它可以做到把后端的聚合(譬如portlet之流)放到前端來(lái),后端只保留一種類型的頁(yè)面服務(wù)——頁(yè)面模板,以及若干易于管理的API接口,大大簡(jiǎn)化了后端體系的復(fù)雜度,而且還能把壓力分散到前端來(lái),這是我早些年不曾見到的。

這三個(gè)問題想過(guò)之后,覺得有價(jià)值,我才去學(xué)習(xí)。要不然,對(duì)我而言就是不想深入的東西,了解了解也就罷了。

新技術(shù)學(xué)習(xí)的方式呢,我想說(shuō)這么幾點(diǎn):

尋找切入點(diǎn)

我很喜歡BlueDavy的blog上的一句話:“理論不懂就實(shí)踐,實(shí)踐不會(huì)就學(xué)理論!”。

******是要落到動(dòng)手實(shí)踐上去的,但是倘若習(xí)慣從那些原理介紹的文字入手,未嘗不是一種不好的選擇。而且,現(xiàn)實(shí)情況會(huì)有一些約束,例如在了解幾家互聯(lián)網(wǎng)公司的云平臺(tái)的時(shí)候(Amazon的EC2,M$的Azure等等),除非你是這幾家公司的員工,否則是很難深入其中的。

尋找自己的興趣點(diǎn)

學(xué)習(xí)應(yīng)當(dāng)是一件有意思的事情,當(dāng)你的大腦排斥它的時(shí)候,我不相信可以很容易地掌握這門新技術(shù)。如果你找不到興趣點(diǎn),那么,不妨回到我前文對(duì)于新技術(shù)是否值得你學(xué)習(xí)的觀點(diǎn)上去,既然你沒有什么興趣,你學(xué)它干嘛?西安軟件培訓(xùn)

善于比較

比較是一種非常容易上手的思考方式,和什么比較?和相似技術(shù)比較,和操作系統(tǒng)、網(wǎng)絡(luò)這些基礎(chǔ)設(shè)施上面的例子比較,***,和生活中的例子比較(譬如,JAVANIO的實(shí)現(xiàn)是一個(gè)很好的例子)。

不斷獲得回饋

回饋是什么?做出一個(gè)HelloWorld的例子,就是一個(gè)極好的回饋;理解某一項(xiàng)實(shí)現(xiàn)原理,聯(lián)想到其它類似的實(shí)現(xiàn),產(chǎn)生一種恍然大悟的感覺,也是一種回饋。在學(xué)習(xí)的過(guò)程中,不斷產(chǎn)生回饋,意味著你不斷地收獲成就感,這是繼續(xù)下去的動(dòng)力之一。

責(zé)任編輯:王雪燕 來(lái)源: 搜狐
相關(guān)推薦

2013-05-16 10:27:03

技術(shù)學(xué)習(xí)新技術(shù)學(xué)習(xí)建議

2017-11-14 21:30:15

2012-11-08 11:19:38

2009-03-18 13:08:08

程序員新技術(shù)焦慮癥

2017-10-22 16:16:03

程序員編程代碼

2023-11-27 09:25:42

程序員思維

2013-07-25 09:47:40

程序員職業(yè)發(fā)展

2013-07-09 09:11:50

程序員

2012-09-17 09:25:28

程序員學(xué)習(xí)非程序

2012-11-01 13:46:54

程序員

2009-07-24 13:09:57

ASP.NET程序員

2012-11-12 10:46:37

2014-11-10 09:46:57

程序員

2015-11-24 16:33:05

程序員思考分享

2020-03-29 08:19:56

程序員代碼

2011-05-31 10:50:36

程序員

2012-05-25 10:54:24

程序員

2015-06-17 14:24:48

優(yōu)秀程序員整潔代碼

2021-05-29 07:32:14

優(yōu)秀程序員代碼

2015-10-12 08:56:37

程序員成長(zhǎng)法則
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)