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

程序員生存定律--成長(zhǎng)路上常見(jiàn)的坑

移動(dòng)開(kāi)發(fā)
假設(shè)說(shuō)一個(gè)人的學(xué)習(xí)已經(jīng)聚焦,并且學(xué)習(xí)的內(nèi)容和自己實(shí)際參與的項(xiàng)目也相吻合,那么是不是就沒(méi)有問(wèn)題了?很不幸,答案仍然是否定的,在任何一個(gè)子領(lǐng)域里,仍然需要進(jìn)一步去考慮“博”與“專(zhuān)”的均衡。

[[117979]]

1.“博”與“專(zhuān)”上的迷失

 

假設(shè)說(shuō)一個(gè)人的學(xué)習(xí)已經(jīng)聚焦,并且學(xué)習(xí)的內(nèi)容和自己實(shí)際參與的項(xiàng)目也相吻合,那么是不是就沒(méi)有問(wèn)題了?很不幸,答案仍然是否定的,在任何一個(gè)子領(lǐng)域里,仍然需要進(jìn)一步去考慮“博”與“專(zhuān)”的均衡。

 

對(duì)于軟件開(kāi)發(fā)而言,設(shè)計(jì)是再常見(jiàn)不過(guò),再簡(jiǎn)單不過(guò)的一個(gè)詞了。可如果把視角拔高一點(diǎn)就會(huì)發(fā)現(xiàn),單以設(shè)計(jì)而論仍然是一個(gè)不可窮盡的領(lǐng)域,我們可以快速掃描一下和設(shè)計(jì)相關(guān)的部分概念:

 

(1)面向?qū)ο蠓治雠c設(shè)計(jì)

 

(2) 結(jié)構(gòu)化分析與設(shè)計(jì)

 

(3) 模型驅(qū)動(dòng)開(kāi)發(fā)

 

(4) 契約式編程

 

(5) 面向方面的開(kāi)發(fā)

 

(6)基于組件的開(kāi)發(fā)

 

(7)元編程

 

有些時(shí)候方法論也會(huì)和設(shè)計(jì)牽扯到一起:

 

(1)測(cè)試驅(qū)動(dòng)開(kāi)發(fā)

 

(2)敏捷軟件開(kāi)發(fā)

 

如果感覺(jué)這個(gè)還不夠多,那可以去Wiki上查編程的范式(paradigms)這個(gè)條目,那里列了47種范式,每個(gè)都和設(shè)計(jì)多少有點(diǎn)關(guān)系。

 

上述這些還只是說(shuō)了設(shè)計(jì),如果橫向展開(kāi),那么在特定領(lǐng)域中必然還會(huì)牽涉到框架的選用、輔助工具的使用等等。這也就意味著,從博的角度來(lái)看,即使是在設(shè)計(jì)這樣一個(gè)看似狹小的領(lǐng)域中仍然是沒(méi)邊界的。

 

與此同時(shí),把一個(gè)API研究的再透,也是低值人群,因?yàn)檫@種深入理解和單純會(huì)用某個(gè)API相比,從創(chuàng)造價(jià)值的角度看,差別不大。

 

 

這也就意味著對(duì)于大多數(shù)軟件開(kāi)發(fā)人員而言,要去尋找廣博與精專(zhuān)間的均衡點(diǎn):既不能閉上眼睛,也不能就用顯微鏡來(lái)看世界。而這一均衡點(diǎn)的價(jià)值則可用反木桶原理來(lái)說(shuō)明:木桶原理說(shuō)的是桶里的水是由最短的一塊板決定的,但考量人的價(jià)值時(shí)卻是適用于反木桶原理,即人的價(jià)值往往由最長(zhǎng)的一塊板決定。

 

 

考慮博和專(zhuān)的問(wèn)題不能離開(kāi)產(chǎn)品開(kāi)發(fā)進(jìn)行考慮,前面曾經(jīng)提到過(guò),產(chǎn)品開(kāi)發(fā)往往和公司的現(xiàn)金流綁定的更緊,能為現(xiàn)金流貢獻(xiàn)力量的技術(shù)才是有價(jià)值的技術(shù)。而產(chǎn)品開(kāi)發(fā)本身事實(shí)上對(duì)博和專(zhuān)的程度提出了最基本的要求,這種要求往往具有迭代的特質(zhì)。為了形象的說(shuō)明這一點(diǎn),這里舉一個(gè)通用的例子來(lái)進(jìn)行一點(diǎn)說(shuō)明:

 

 

在第一次跌代里,往往需要達(dá)到兩個(gè)最基本的目標(biāo)。第一個(gè)目標(biāo)是可以為產(chǎn)品貢獻(xiàn)自己力量,但代碼質(zhì)量普通。這個(gè)目標(biāo)如果達(dá)不到,一個(gè)人會(huì)失去自己的存在價(jià)值。

 

 

這時(shí)候最少需要了解某種語(yǔ)言(比如:C++)、某個(gè)平臺(tái)(比如:Windows)、某個(gè)IDE(比如:VisualStudio)和某些業(yè)務(wù)相關(guān)的知識(shí)(比如:打印體系)。這個(gè)范圍可以盡可能圈的小點(diǎn),但用到的則要學(xué)透。比如:不管接觸到那個(gè)框架,都要去了解它的內(nèi)存機(jī)制、線程機(jī)制、異常處理組件構(gòu)建和國(guó)際化處理這些全局性的機(jī)制,而不能只是了解某個(gè)接口怎么用。

 

 

這并非是很高的要求,沒(méi)有這些就變成了“靠運(yùn)氣編程”,寫(xiě)完程序后還要祈禱他能跑起來(lái)。了解這些之后就可以負(fù)擔(dān)起部分開(kāi)發(fā)工作,否則的話只能做旁觀者,沒(méi)法參與到實(shí)際工作中來(lái)。

 

 

第二個(gè)目標(biāo)是把事情做好,并能負(fù)擔(dān)些層次更高的工作。這時(shí)候要比較深入的了解面向?qū)ο蟆⒔Y(jié)構(gòu)化方法、設(shè)計(jì)模式、理解設(shè)計(jì)原則,并能把它們用好。至少要能判定,這個(gè)程序?qū)懙暮?,那個(gè)程序?qū)懙牟缓?,同時(shí)面對(duì)需求能把工作進(jìn)行下去。

 

 

前兩個(gè)目標(biāo)是基礎(chǔ),一般來(lái)講學(xué)校中基礎(chǔ)打的越好,這個(gè)階段越短。達(dá)成這兩個(gè)基本目標(biāo)之后就可以結(jié)合情境來(lái)做進(jìn)一步的選擇,可以認(rèn)為這是博與專(zhuān)選擇上的第二次迭代。當(dāng)然這時(shí)候也要謹(jǐn)記不要和實(shí)踐分開(kāi)。

 

 

完成上述兩個(gè)層次后,可以有兩個(gè)方向可供選擇:

 

(1)可以進(jìn)一步考慮專(zhuān)的問(wèn)題,比如在特定領(lǐng)域里把知識(shí)深化下去。做驅(qū)動(dòng)就要理解操作系統(tǒng)的核心機(jī)制,做打印的就要了解頁(yè)面描述語(yǔ)言等,但這個(gè)時(shí)候要適當(dāng)警惕邊際效應(yīng)。

 

 

邊際效應(yīng)是說(shuō),你讓一畝地從畝產(chǎn)500斤增加到1000斤可能只需要投入100塊;讓畝產(chǎn)從1000增加到1500可能就需要200塊;讓畝產(chǎn)從1500增加到2000則需要400塊了。

 

 

一個(gè)典型的例子是對(duì)C++的學(xué)習(xí),C++是公認(rèn)的復(fù)雜,如果想做C++的律師,那么估計(jì)搞個(gè)10年可能夠資格了,但問(wèn)題是把時(shí)間都投在這個(gè)上,投入產(chǎn)出比可能不好。而停在那里合適則是個(gè)尺度問(wèn)題,大致來(lái)講是可以靠時(shí)間彌補(bǔ)的細(xì)節(jié)問(wèn)題,并不適合專(zhuān)到最底層。比如對(duì)于100萬(wàn)行的程序,預(yù)先花時(shí)間去了解每一處細(xì)節(jié),就有點(diǎn)過(guò)了。

 

 

(2)可以把博再推進(jìn)一步,比如:熟悉專(zhuān)門(mén)領(lǐng)域的專(zhuān)業(yè)知識(shí)、熟悉多種既存框架的特性、熟悉提高用戶(hù)體驗(yàn)的關(guān)鍵點(diǎn)。熟悉多種既存框架的特性的具體含義是:

 

 

設(shè)計(jì)某一種解決方案時(shí),首先要考慮的就是是自己開(kāi)發(fā)還是使用現(xiàn)有的模塊。一旦決定使用現(xiàn)有的模塊(包,框架等),那就要進(jìn)一步考慮究竟用那個(gè)。

 

 

做這類(lèi)工作時(shí),如果沒(méi)有一定廣博的知識(shí),做選擇的時(shí)候就會(huì)特別的艱難。

 

 

假使說(shuō)現(xiàn)在公司內(nèi)部要導(dǎo)入一套項(xiàng)目管理系統(tǒng),那么做決定的負(fù)責(zé)人必須至少考慮所有下面這些事情:

 

(1)自己從頭造,還是用現(xiàn)成的做二次開(kāi)發(fā)?

 

(2)用現(xiàn)成的,是用開(kāi)源產(chǎn)品,微軟的還是其他公司的?

 

(3)用微軟的話,是用MSProject還是基于SharePoint,還是混合?考慮License費(fèi)用的話真的劃算么?

 

(4)用開(kāi)源產(chǎn)品,有這么多選項(xiàng)究竟導(dǎo)入那一個(gè)?

 

(5)如果自己從頭造,那么是基于微軟的技術(shù),還是基于LAMP這樣的技術(shù)?

 

(6)使用什么框架?

 

(7)如果要做,用什么語(yǔ)言?

 

 

一個(gè)人很難精通上面所有的領(lǐng)域,但當(dāng)做選擇時(shí),完全沒(méi)有概念也是災(zāi)難性的。

 

 

此外,考慮博與專(zhuān)平衡點(diǎn)時(shí)似乎有一種特例,鉆研特定算法的人,從一開(kāi)始就只往專(zhuān)的方向發(fā)展,并不會(huì)考慮其他。比如:鉆研TTS的人,可能幾十年如一日只要專(zhuān)注于TTS就完了。

 

 

至于具體選擇那個(gè)方向,則要根據(jù)自身情形來(lái)定。總的原則是要以當(dāng)下工作為根基,以實(shí)用為目的甄選各種知識(shí),并追求平衡點(diǎn)。

 

 

大致上講,期望做技術(shù)專(zhuān)家的更適合前一個(gè)方向,而期望做技術(shù)管理的則更適合后一類(lèi)方向。

 

 

學(xué)習(xí)軟件工程的時(shí)機(jī)與必要性

 

 

簡(jiǎn)單來(lái)講越是沒(méi)實(shí)踐經(jīng)驗(yàn)的人越不適合學(xué)習(xí)軟件工程,越需要規(guī)劃整體把握全局的時(shí)候越需要學(xué)習(xí)軟件工程。

 

 

軟件工程中覆蓋的元素非常繁雜,可以有管理、流程、開(kāi)發(fā)模型、估算、分析設(shè)計(jì)方法等。這無(wú)疑會(huì)把知識(shí)面擴(kuò)展的很寬,一旦沒(méi)有根底,就很容易變成紙上談兵,夸夸其談。

 

 

在眾多軟件相關(guān)的知識(shí)中,軟件工程絕對(duì)是很特別的一個(gè)。很多人很鄙視軟件工程,說(shuō):我一看到軟件工程的書(shū)就直接略過(guò);與之相對(duì)應(yīng),很多人很推崇軟件工程,會(huì)花很大的心思去研究敏捷、CMMI等。

 

 

剛?cè)肼殘?chǎng)的程序員大致上是討厭軟件工程的,因?yàn)檫@東西離自己的實(shí)踐有點(diǎn)遠(yuǎn),并且主要是添加束縛。但既然更加復(fù)雜紛繁的歷史都可以總結(jié)出規(guī)律,忽視軟件開(kāi)發(fā)的內(nèi)在規(guī)律無(wú)疑的對(duì)有志于成為管理者的人是不利的。

 

 

真要學(xué)習(xí)軟件工程,不太適合從抽象層次很高的教科書(shū)開(kāi)始,而適合從《代碼大全》這樣與實(shí)際關(guān)聯(lián)比較緊密的書(shū)籍開(kāi)始。

 

 

在國(guó)內(nèi)軟件工程的落地似乎始終困難,軟件工程相關(guān)名詞始終在不停的變換(ISO,CMMI,敏捷等),但實(shí)際能落地起作用的卻不多,這最終導(dǎo)致了一種吊詭的局面:剛對(duì)一個(gè)絕望,就開(kāi)始對(duì)新的一個(gè)報(bào)以希望,并在這兩個(gè)簡(jiǎn)單的步驟上做無(wú)限循環(huán)。這種狀況也許有其更深層次的原因,比如生存壓力過(guò)于強(qiáng)大導(dǎo)致工程力量的長(zhǎng)遠(yuǎn)價(jià)值被漠視,進(jìn)而使方法論并不為解決現(xiàn)實(shí)問(wèn)題而存在,而是為了證書(shū)而存在。很難據(jù)此就說(shuō)軟件工程毫無(wú)價(jià)值。

 

 

2.錯(cuò)過(guò)人生中的好時(shí)機(jī)

 

 

沒(méi)畢業(yè)的程序員或者剛畢業(yè)的程序員往往感覺(jué)空余時(shí)間比較充沛,還很苦惱不知道如何打發(fā)時(shí)間,但實(shí)際上一個(gè)人一生中可以用于充電的時(shí)間遠(yuǎn)比想的少。一旦錯(cuò)過(guò)時(shí)機(jī),往往悔之莫及。

 

 

對(duì)于大多數(shù)人而言,人生就像個(gè)模板,小處還有偏差,大處卻基本相同。

 

 

20~30歲這個(gè)階段可以講是黃金時(shí)期,這個(gè)階段里,家庭負(fù)擔(dān)較小,可以自由支配的時(shí)間較多。當(dāng)然撞到了很特別的、需要瘋狂加班的公司只能另算。

 

 

30歲之后因?yàn)橥尥蕹錾?,家庭上的時(shí)間開(kāi)銷(xiāo)增加,個(gè)人可支配時(shí)間變少。其中很大一部分人還有很大可能會(huì)面對(duì)電視劇里常說(shuō)的婆媳矛盾,讓你每天心緒不寧。

 

 

40歲之后,家庭瑣事會(huì)進(jìn)一步增加,典型的上有老下有小。實(shí)在運(yùn)氣不好的自己也會(huì)生點(diǎn)病---頸椎病、腰間盤(pán)突出、胃病大概可以入選程序員的三大職業(yè)病。

 

 

50歲之后,時(shí)間上會(huì)再次解脫,但可惜的是自己也老了,時(shí)機(jī)不在。

 

 

如果把人生按照年齡畫(huà)一條拋物線的話,40歲左右一個(gè)人可以達(dá)到的人生的頂點(diǎn),未來(lái)再突破的幾率則變小。從歷史人物來(lái)看,大器晚成的不是沒(méi)有,但真的很少。

 

 

用心觀察就會(huì)發(fā)現(xiàn),招聘啟示里經(jīng)常會(huì)注明年齡要在35周歲以下或者40周歲以下,除非是招聘高層。這反過(guò)來(lái)意味著如果沒(méi)有到高層,人生會(huì)在40之前定型,之后有下滑危險(xiǎn)(如遭遇不景氣、公司倒閉等)。對(duì)程序員而言,這種風(fēng)險(xiǎn)尤其的大,因?yàn)楹芸赡苣阈量嗾莆盏闹R(shí)體系被更迭掉了。

 

 

學(xué)習(xí)本身無(wú)疑的是需要順應(yīng)這種自然規(guī)律的。

 

 

很多人很大的一個(gè)錯(cuò)誤在于,在黃金時(shí)期,沒(méi)做什么積累,就顧得享受生活了,而一旦意識(shí)到積累的必要性時(shí),卻又受困于諸多瑣事而欲振乏力,最終人生高度有限,并迅速走低。這就是現(xiàn)代程序員版的“少壯不努力,老大徒傷悲”。

 

 

基本上講,35歲以前要把需要花大量時(shí)間,比較硬的技能,學(xué)習(xí)曲線陡的技能掌握,具備工作所需要的所有主要技能,而35歲之后則主要關(guān)注知識(shí)的更新和某些軟技能。

 

 

學(xué)習(xí)時(shí)添水戰(zhàn)術(shù)效率真的很差,每次點(diǎn)一根火柴燒水,一億年水也燒不開(kāi)一壺。同時(shí),比較硬的技能(比如:DonaldKnuth的《計(jì)算機(jī)程序設(shè)計(jì)藝術(shù)》)往往是需要大塊時(shí)間投入的,但年紀(jì)越大時(shí)間越呈現(xiàn)為碎片化,越難搞定硬的知識(shí)---先天就容易造就添水戰(zhàn)術(shù)。比較軟的技能,則可以用碎片時(shí)間來(lái)學(xué)習(xí),比如:提高PPT的制作水平,提高表達(dá)能力。

 

 

如果能夠安排好自己的時(shí)間和軟硬知識(shí)的關(guān)系,那么就可以在特定基礎(chǔ)上做積累,小步前進(jìn),使自己的價(jià)值越來(lái)越高。從這個(gè)角度看,年輕絕對(duì)是一種債務(wù),大多數(shù)人必須在他沒(méi)完全結(jié)束前,還掉所欠的東西。

 

 

那么具體來(lái)講那些東西是比較硬的,要在35歲前搞定呢?這因目標(biāo)而異,但下面這些項(xiàng)目應(yīng)該具有非常高的通用性:

 

(1)精通一門(mén)最常用的語(yǔ)言

 

(2) 了解一個(gè)最常用平臺(tái)的基本機(jī)制,比如:內(nèi)存管理、線程機(jī)制等

 

(3)UML圖和面向?qū)ο蠓治鲈O(shè)計(jì)方法

 

(4) 設(shè)計(jì)原則,如:職責(zé)單一等

 

(5) 設(shè)計(jì)模式

 

(6)《代碼大全》里講的一切

 

(7)精讀一個(gè)知名的,但有點(diǎn)規(guī)模的程序。這點(diǎn)上要感謝開(kāi)源項(xiàng)目給我們提供了這么多優(yōu)秀程序。但要謹(jǐn)防好高騖遠(yuǎn),動(dòng)輒挑戰(zhàn)Linux內(nèi)核,精讀是關(guān)鍵。

 

(8) 累積一定的代碼量,比如:獨(dú)立的完整做過(guò)一個(gè)數(shù)萬(wàn)代碼行的東西。這里的關(guān)鍵是完全自己打造,一定不要拷貝粘貼。

 

(9) 掌握基本算法和數(shù)據(jù)結(jié)構(gòu)(可以不自己寫(xiě),但至少要知道其復(fù)雜度和區(qū)別)

 

(10) 養(yǎng)成一種清晰的編碼風(fēng)格

 

(11) 有自己的專(zhuān)業(yè)(金融、高并發(fā)網(wǎng)站,圖像處理,TTS等)

 

 

學(xué)習(xí)英語(yǔ)的時(shí)機(jī)和必要性

 

總的來(lái)看,程序員學(xué)習(xí)英語(yǔ)是一項(xiàng)投資回報(bào)率相對(duì)比較好的投入。從目標(biāo)上來(lái)看,程序員未必一定要口語(yǔ)流利,但最低要達(dá)到閱讀英文資料沒(méi)有障礙的程度。這里面有一個(gè)微妙的事情,一旦英語(yǔ)閱讀問(wèn)題較大,查找問(wèn)題會(huì)習(xí)慣用百度,這天然會(huì)限制一個(gè)人的視野。不是說(shuō)百度自身有多不好,而是說(shuō)英語(yǔ)的世界里有著更多更精彩的內(nèi)容。不管喜歡不喜歡,我們必須承認(rèn)一種現(xiàn)實(shí),在IT的世界里英語(yǔ)是一種世界語(yǔ),一方面是由于美國(guó)公司的強(qiáng)大,一方面則是由于開(kāi)源選擇了英語(yǔ)。這最終導(dǎo)致IT世界里的新動(dòng)向、解決問(wèn)題的小技巧、網(wǎng)站的架構(gòu)等等都要到英語(yǔ)的世界里去找。在StackOverlow很容易找到各種小問(wèn)題的答案,在Quora則很容易找到各種網(wǎng)站的架構(gòu)。

 

 

從學(xué)習(xí)時(shí)機(jī)來(lái)看,這件事情特別應(yīng)該在大學(xué)里面搞定,如果不行至少也要在畢業(yè)1~2年內(nèi)達(dá)到閱讀無(wú)障礙的程度,當(dāng)然希望加入外企還需要額外的付出。從學(xué)習(xí)方法來(lái)看,學(xué)習(xí)外語(yǔ)真沒(méi)什么特別的竅門(mén),堅(jiān)持并投入時(shí)間即可。

 

 

3.停止知識(shí)更新

 

 

對(duì)程序員的增值而言,人生里最大的陷阱也許是為安全的假象所欺騙而徹底的放松自己。這種狀況在生存環(huán)境比較惡劣的情形下不太會(huì)發(fā)生,但在壟斷企業(yè)或某一領(lǐng)域中絕對(duì)領(lǐng)先的企業(yè)里則容易滋生。發(fā)現(xiàn)自己是否停止知識(shí)更新了并不困難,比如:一年一本書(shū)沒(méi)看,一年一點(diǎn)新知識(shí)沒(méi)接觸,一年中工作負(fù)荷基本不滿(mǎn)等都可以成為一種信號(hào)。

 

 

這真的是溫水煮青蛙,一旦到了三十幾歲,并在這種環(huán)境中呆習(xí)慣了,那么再想跳出來(lái),基本沒(méi)可能。唯一能做的事情是,祈禱公司不要掛掉,公司也不要來(lái)場(chǎng)運(yùn)動(dòng),進(jìn)行人員的大換血。孔夫子說(shuō):日當(dāng)三省吾身,這是很有必要的,至于認(rèn)識(shí)危險(xiǎn)后能否做點(diǎn)什么,那就是事在人為了。

 

 

(1)技術(shù)人員的知識(shí)更新

 

接觸一個(gè)新的崗位后,大致要經(jīng)歷一個(gè)學(xué)習(xí)并逐漸勝任的過(guò)程,這個(gè)時(shí)間段里大多數(shù)人的學(xué)習(xí)熱情是很高的。一旦基本勝任之后,事情就有了變化。

 

 

很大一部分人可能會(huì)感覺(jué),反正工作也就用到這么些知識(shí),學(xué)習(xí)其他的也用不上,因此開(kāi)始把自己封閉起來(lái),不太看書(shū),不太看技術(shù)新聞。

 

 

這其實(shí)很危險(xiǎn),因?yàn)檫@種做法等于把自己綁死在當(dāng)前這份工作上。而任何一個(gè)產(chǎn)品都有自己的生命周期,一旦一個(gè)產(chǎn)品的生命周期結(jié)束時(shí),碰巧其所用的技術(shù)也已經(jīng)過(guò)時(shí),那么當(dāng)事人就會(huì)很尷尬。因?yàn)楫a(chǎn)品可以結(jié)束,生活卻還得繼續(xù)。

 

 

這里面一個(gè)非常經(jīng)典的例子是MFC。微軟的這款產(chǎn)品的歷史非常悠久,從1992年發(fā)布到2012年幾近存在了20年時(shí)間。隨著90后程序員的逐漸出現(xiàn),馬上這款技術(shù)就要變得比程序員的年紀(jì)還要大了。

 

 

即使到今天,很多桌面應(yīng)用仍然是基于MFC開(kāi)發(fā)的,這可以通過(guò)查看程序包的dll依賴(lài)來(lái)很容易的進(jìn)行驗(yàn)證。MFC是一個(gè)很大的池子,有深度、有歷史。想把MFC的類(lèi)繼承關(guān)系、消息機(jī)制、框架結(jié)構(gòu)、RTTI、序列化都搞清楚還是要很花一點(diǎn)時(shí)間的。

 

 

現(xiàn)在我們假設(shè)一款龐大的企業(yè)應(yīng)用是基于MFC開(kāi)發(fā)的,一個(gè)程序員也通過(guò)幾年的努力了解了MFC,了解了應(yīng)用本身,并可以負(fù)擔(dān)起B(yǎng)ug修正,新功能追加等任務(wù)了。

 

 

接下來(lái)這個(gè)程序員似乎沒(méi)什么好學(xué)的了。因?yàn)镸FC的更新幾乎已經(jīng)停滯,因此對(duì)MFC的學(xué)習(xí)幾乎不需要花太多的時(shí)間了?,F(xiàn)有代碼也理清楚了,也不需要再花很多時(shí)間學(xué)習(xí)了?,F(xiàn)有程序也比較好的滿(mǎn)足了企業(yè)的需求,推倒重來(lái)的可能性幾乎沒(méi)有。

 

 

那這個(gè)時(shí)候這個(gè)程序員不需要學(xué)習(xí)了么?答案一定是否定的。

 

 

這里面蘊(yùn)藏著一個(gè)天大的矛盾。

 

 

從企業(yè)的角度看,一定是需要一個(gè)團(tuán)隊(duì)來(lái)維持這個(gè)程序的開(kāi)發(fā)的。但從個(gè)人的角度看,如果把所有的青春都耗費(fèi)在老技術(shù)上,那么一旦老技術(shù)退出歷史舞臺(tái),個(gè)人該何去何從?

 

 

還是上面的例子,假設(shè)說(shuō)一個(gè)人持續(xù)投入在這類(lèi)開(kāi)發(fā)上,當(dāng)他45歲的時(shí)候,當(dāng)前產(chǎn)品生命周期結(jié)束,世界變的只有移動(dòng)開(kāi)發(fā)和云端開(kāi)發(fā),那么只擅長(zhǎng)MFC的他該何去何從?

 

 

如果真的如此,這個(gè)人就被逼到了死角里,人生很可能產(chǎn)生巨大滑落。所以一定不能認(rèn)為所學(xué)足夠而停止技能的更新與學(xué)習(xí)。

 

 

從具體應(yīng)對(duì)措施來(lái)看,一是要參照知識(shí)的地圖,橫向擴(kuò)展知識(shí)的廣度,比如不只要盯著代碼,也要了解業(yè)務(wù);不只關(guān)注開(kāi)發(fā)也關(guān)注一點(diǎn)估算;二是提升可流動(dòng)性比較好的東西的掌握程度,比如:面向?qū)ο蠓治雠c設(shè)計(jì),這樣跨越到其他技術(shù)時(shí)就能夠比較平緩的進(jìn)行過(guò)渡。三是要爭(zhēng)取輪換崗位,爭(zhēng)取多種實(shí)踐機(jī)會(huì)。

 

 

(2)管理者的知識(shí)更新

 

 

到現(xiàn)在為止大部分人認(rèn)同,管理者是需要懂技術(shù)的。從邏輯上看“懂”基本上是不瞎指揮的前提,所以這可以稱(chēng)為中國(guó)版的“現(xiàn)場(chǎng)主義”,估計(jì)爭(zhēng)議不大。

 

 

那關(guān)鍵問(wèn)題就是究竟要“懂”到什么程度?

 

 

如果說(shuō)兩個(gè)人,一個(gè)選擇了管理方向,一個(gè)選了技術(shù)方向。接下來(lái)要求管理方向上的人技術(shù)水平要和技術(shù)方向的一樣,那么除非這個(gè)人特別天才,否則不太可能。正像前面所說(shuō),這是由于這兩個(gè)方向的“Key”不同所造成的。

 

 

如果把目標(biāo)設(shè)定為確保最終產(chǎn)品的成功,同時(shí)假設(shè)管理者有更高的決策權(quán),那么管理者必須在下面這些方面有技術(shù)感覺(jué)。

 

 

從做產(chǎn)品來(lái)看,要想成功,有兩個(gè)關(guān)鍵維度需要同時(shí)進(jìn)行把握,一是產(chǎn)品的概念完整性的把握;一是用合適的手段去實(shí)現(xiàn)這個(gè)產(chǎn)品。

 

 

前一個(gè)話題很老,《人月神話》就有提及,但實(shí)踐中卻總是被人忘記。好的產(chǎn)品必須貫徹某一種統(tǒng)一意志,iPhone、微信又重新驗(yàn)證了這一個(gè)老的原則。機(jī)械拼湊的產(chǎn)品雖然融合了很多人的想法,但往往是平庸的,并且在項(xiàng)目執(zhí)行過(guò)程中,往往是出錯(cuò)的根源。很像是雖然有法律,但每個(gè)人有自己的理解,各行其是這樣一個(gè)狀態(tài)。這種概念完整性是管理者第一個(gè)需要有所把握的事情,其次就是解決如何去構(gòu)建產(chǎn)品這個(gè)問(wèn)題。為達(dá)成這一目標(biāo)在下面這幾個(gè)方面上,管理者要有自己的理解,至少要有自己的原則:

 

 

下面簡(jiǎn)單列舉幾個(gè)比較關(guān)鍵的考量,這和前面論及的如何往博的方向發(fā)展有點(diǎn)重疊:

 

(1)使用現(xiàn)有產(chǎn)品還是自己開(kāi)發(fā)

 

比如:那些模塊適合自己搞定而那些購(gòu)入就可以了。購(gòu)入的時(shí)候要遵循怎么樣的標(biāo)準(zhǔn)去選擇。

 

 

(2)使用那種平臺(tái)技術(shù)

 

比如:是使用微軟的技術(shù),還是開(kāi)源的技術(shù)。

 

 

(3)現(xiàn)行架構(gòu)是否可以達(dá)成產(chǎn)品目標(biāo)

 

比如:在硬件加軟件可以同時(shí)支撐的并發(fā)數(shù)目。

 

 

(4)代碼可維護(hù)性如何約束

 

這要求必須熟練掌握一些原則性的東西,比如:什么信息隱藏、正交分解、抽象是否充分等。以及一些無(wú)歧義指標(biāo),比如:圈復(fù)雜度,單元測(cè)試的收益平衡。

 

 

(5)那些環(huán)節(jié)必須固化為流程,那些一定要團(tuán)隊(duì)自由決定

 

比如文檔化要到什么程度才合適,不同階段間什么是必須的輸入輸出。

 

 

......

 

 

假設(shè)說(shuō)有人不這么認(rèn)為,而是在做了管理后,表現(xiàn)出足夠的惰性,不再持續(xù)更新自己的知識(shí)體系了,那么會(huì)發(fā)生什么事情?

 

 

這時(shí)候會(huì)很可能會(huì)管理倒置。即管理者是名義上的上級(jí),但基本失去對(duì)現(xiàn)場(chǎng)的把握,所有的決策完全依賴(lài)于下屬。得力下屬不在,各種決定就只能靠瞎蒙,最終變成只會(huì)溝通的管理者---即使被食人族吃了也不會(huì)有人注意到,因?yàn)榇嬖趦r(jià)值已經(jīng)被無(wú)限稀釋?zhuān)兂闪艘粋€(gè)象征性的符號(hào)。也可能會(huì)和下屬爆發(fā)激烈沖突。因?yàn)檫@類(lèi)管理者沒(méi)有自己的立場(chǎng),上面有任務(wù)只能下壓。結(jié)果同實(shí)際情況偏離萬(wàn)里,不具有可實(shí)現(xiàn)性,這類(lèi)管理者無(wú)法對(duì)自己的上司陳述,也就只能向下轉(zhuǎn)移壓力。

 

 

不管是那種,一旦到這種地步,其實(shí)是趨于失敗,只能祈禱食人族不要來(lái)。

 

 

為什么中層管理者也要堅(jiān)持知識(shí)更新?

 

在IT行業(yè)流傳著一個(gè)很有名的關(guān)于食人族的笑話,這個(gè)笑話說(shuō)的是:

 

 

兩個(gè)食人族的人應(yīng)聘進(jìn)了某家大公司,公司人事主管知道這兩個(gè)這伙每天都要吃人,于是警告他們:“如果你們膽敢在公司吃一個(gè)人,你們就會(huì)立即被炒掉!”兩個(gè)食人族唯唯喏喏地答應(yīng),表示絕不會(huì)在公司吃人。兩個(gè)月過(guò)去了,公司平安無(wú)事。

 

 

突然有一天,公司發(fā)現(xiàn)負(fù)責(zé)打掃公司衛(wèi)生的清潔工不見(jiàn)了。于是人事主管非常氣憤,找來(lái)兩個(gè)食人族怒斥,并當(dāng)場(chǎng)炒掉了他們。出了公司大門(mén),一個(gè)食人族馬上對(duì)另一個(gè)抱怨起來(lái):“我一直警告你不要吃有在做事的人,你就是不聽(tīng)!我們兩個(gè)月來(lái)每天吃一個(gè)經(jīng)理,沒(méi)人發(fā)現(xiàn)。你看現(xiàn)在吃了清潔工,他們馬上就發(fā)現(xiàn)了!你真是個(gè)豬!”

 

 

這個(gè)笑話嘲諷的是某些大公司大企業(yè)病發(fā)作,人浮于事。大企業(yè)病的成因很難一下子說(shuō)的清楚,但結(jié)果卻比較明顯,一定會(huì)導(dǎo)致較多人成為中層管理者。如果說(shuō)成功的企業(yè)天然有感染大企業(yè)病的趨勢(shì),那無(wú)疑的中層管理者也天然有著膨脹趨勢(shì)。從個(gè)人角度看,成為被食人魔吃掉也沒(méi)有人在意的經(jīng)歷并非是什么好事,因?yàn)檫@意味著存在價(jià)值減弱,也不需要什么知識(shí)更新。一旦面臨裁員這類(lèi)事情,這個(gè)人很可能已經(jīng)失去了面對(duì)殘酷競(jìng)爭(zhēng)的能力。

本文鏈接:http://www.cocoachina.com/gamedev/misc/2014/0811/9354.html

 

責(zé)任編輯:chenqingxiang 來(lái)源: cocoachina
相關(guān)推薦

2014-08-05 10:22:16

程序員職場(chǎng)

2015-04-03 09:38:32

程序員前人挖坑后人填坑

2015-08-18 15:22:59

程序員成長(zhǎng)階段

2009-02-24 09:58:45

程序員成長(zhǎng)開(kāi)竅

2020-06-12 07:40:30

程序員源碼設(shè)計(jì)

2014-10-17 18:31:05

PHP

2017-03-02 09:37:36

PHP程序員成長(zhǎng)規(guī)劃

2018-02-06 08:36:02

簡(jiǎn)歷程序員面試

2013-03-28 15:50:37

程序員Java

2012-08-15 10:47:27

2015-09-16 09:57:41

swoolePHP程序員

2015-04-08 10:57:15

程序員程序員四年經(jīng)歷

2014-09-28 15:13:21

程序員代碼行數(shù)

2011-05-11 17:49:12

PHP

2011-12-23 09:16:19

2021-07-30 10:41:57

程序員IT互聯(lián)網(wǎng)

2010-10-18 09:59:22

PHP程序員Web開(kāi)發(fā)

2015-08-12 14:39:47

程序員問(wèn)題

2012-09-29 10:54:10

程序員謊話Quora

2024-03-13 13:10:48

JavaInteger緩存
點(diǎn)贊
收藏

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