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

2023-02-01    分類: 網(wǎng)站建設(shè)

成都網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)(www.muchs.cn):本文節(jié)選自機(jī)械工業(yè)出版社《程序員成長(zhǎng)路線圖》一書。該書的作者N216、張磊和吉陽(yáng)一起回憶和總結(jié)了自己幾十年的程序員成長(zhǎng)經(jīng)歷,對(duì)當(dāng)前程序員關(guān)心的熱點(diǎn)、重點(diǎn)、難點(diǎn)問(wèn)題給出了自己的看法和建議。通過(guò)對(duì)程序員的成長(zhǎng)階段進(jìn)行劃分,使得各個(gè)階段的程序員都可以“按圖索驥”,解決自己所遇到的問(wèn)題。
圖書封面:
程序員成長(zhǎng)的必經(jīng)階段

程序員成長(zhǎng)的必經(jīng)階段
程序員的成長(zhǎng)經(jīng)歷往往很相似,大部分的人走過(guò)了最前面相同的一段路,而有的人則走得更遠(yuǎn)??偨Y(jié)自己這些年來(lái)的歷程,這也許能讓年輕的程序員少走一些彎路,成長(zhǎng)得更快;或許更好一些,能讓大家從中得到一些啟發(fā),早日進(jìn)入優(yōu)秀程序員的階段,實(shí)現(xiàn)夢(mèng)想,釋放激情。
第一階段,最初是在學(xué)校里學(xué)習(xí)計(jì)算機(jī)基礎(chǔ)知識(shí),學(xué)習(xí)經(jīng)典的程序設(shè)計(jì)語(yǔ)言,編寫測(cè)試用的小程序。這個(gè)過(guò)程可以說(shuō)是對(duì)計(jì)算機(jī)和程序設(shè)計(jì)的入門階段。這個(gè)階段主要是培養(yǎng)了自己對(duì)計(jì)算機(jī)軟件的興趣,打下了良好的計(jì)算機(jī)基礎(chǔ)知識(shí)。
第二階段,而后參加工作,從事計(jì)算機(jī)軟件開(kāi)發(fā)工作。按照工作要求,一邊學(xué)習(xí),一邊編程,終于可以讓自己的程序投入運(yùn)行了。在這個(gè)階段我突然感覺(jué)到了自己的價(jià)值,感覺(jué)到了軟件的神奇,并且自己編寫的軟件成為了實(shí)用產(chǎn)品。這個(gè)階段實(shí)現(xiàn)了學(xué)習(xí)到生產(chǎn)的過(guò)渡。
第三階段,隨著工作的增加,開(kāi)始編寫各種程序,開(kāi)發(fā)各種系統(tǒng),這時(shí)候忙于編程知識(shí)的積累和應(yīng)用。應(yīng)該說(shuō)在這個(gè)階段自我感覺(jué)很充實(shí),好像有做不完的事,程序設(shè)計(jì)水平還處在語(yǔ)言級(jí)階段。
第四階段,隨著積累了一定編程技巧之后,我開(kāi)始想這樣的問(wèn)題:我是不是好的程序員?我能否編寫出好的程序?這個(gè)過(guò)程是一個(gè)反思的階段。我對(duì)自己的要求是:不但要會(huì)編程序,而且要編好程序,從關(guān)注程序數(shù)量開(kāi)始轉(zhuǎn)向關(guān)注程序質(zhì)量。
第五階段,開(kāi)始在提高自己的軟件開(kāi)發(fā)水平上做文章。經(jīng)過(guò)各種系統(tǒng)開(kāi)發(fā),尤其 是大型系統(tǒng)的開(kāi)發(fā),發(fā)現(xiàn)了軟件中有許多功能是重復(fù)的。因此,有一段時(shí)間把精力花在編制各種庫(kù)函數(shù)上,通過(guò)不同系統(tǒng)調(diào)用相同的函數(shù),以便減少重復(fù)開(kāi)發(fā),實(shí)現(xiàn) 功能共享。當(dāng)時(shí)比較得意的是庫(kù)函數(shù)不是我一個(gè)人在調(diào)用,而是整個(gè)項(xiàng)目小組都在調(diào)用,甚至不同的系統(tǒng)也能調(diào)用,從而體會(huì)到編寫庫(kù)函數(shù)特別有價(jià)值。這個(gè)階段的 標(biāo)志是庫(kù)函數(shù),程序員水平上升到庫(kù)函數(shù)那一級(jí)。
第六階段,到了庫(kù)函數(shù)那一級(jí)后,很快就發(fā)現(xiàn),單單實(shí)現(xiàn)程序函數(shù)級(jí)的調(diào)用是遠(yuǎn) 遠(yuǎn)不夠的。當(dāng)你做了很多項(xiàng)目,包括大項(xiàng)目和小項(xiàng)目,尤其是做過(guò)跨行業(yè)的項(xiàng)目之后,你就會(huì)把庫(kù)函數(shù)的共享思想用于項(xiàng)目開(kāi)發(fā)。你就會(huì)想這樣一個(gè)問(wèn)題:為什么不 同項(xiàng)目不能有相同的架構(gòu)?如果有相同的架構(gòu),那么開(kāi)發(fā)就有了相對(duì)的標(biāo)準(zhǔn),我們就有可能通過(guò)配置的方法實(shí)現(xiàn)相同架構(gòu)的系統(tǒng)。于是我提出了IASG(交互式軟 件自動(dòng)生成器)思想,并在C語(yǔ)言和其他一些語(yǔ)言中實(shí)現(xiàn)了IASG實(shí)例。記得最快的一次是編寫一個(gè)系統(tǒng)(公安部門的自行車信息管理系統(tǒng),主要用于丟失自行車 信息登記)只用了3個(gè)小時(shí)(從需求到安裝盤)。這個(gè)事情對(duì)我影響很大。我在這個(gè)階段上升了一個(gè)很大的臺(tái)階,從程序上升到軟件。核心思想就從庫(kù)函數(shù)共享上升 到軟件共享。具體過(guò)程是建立一個(gè)通用的系統(tǒng)架構(gòu),架構(gòu)中有許多共同的功能,例如,參數(shù)設(shè)置、用戶權(quán)限管理、庫(kù)表管理等。另外還提供信息建立查詢開(kāi)發(fā)模板, 通過(guò)配置和特殊功能的編制就能很快完成了一個(gè)系統(tǒng)的開(kāi)發(fā)。現(xiàn)在想起來(lái)IASG距離我已經(jīng)有20年了。
第七階段,到了IASG階段后,我發(fā)現(xiàn)無(wú)論技術(shù)如何提高,都無(wú)法改變開(kāi)發(fā)落 后于需求的現(xiàn)實(shí)。通俗地說(shuō)就是:程序員水平再高,僅僅是拉車水平高,但是,應(yīng)該在什么路上拉車程序員并不知道。如果這條路是一條光明的路,則程序員越拉越 有勁,有前途;如果這是一條死胡同,則程序員白費(fèi)工夫;如果這是一條漫長(zhǎng)的路,前途不明,則程序員可能要累倒在路上?,F(xiàn)實(shí)中程序員水平低、收入低;系統(tǒng)需 求不明確,系統(tǒng)開(kāi)發(fā)周期一拖再拖;系統(tǒng)重復(fù)開(kāi)發(fā)多,信息甚至不能在一個(gè)企業(yè)內(nèi)實(shí)現(xiàn)共享,更不用說(shuō)在企業(yè)之間、行業(yè)之間實(shí)現(xiàn)共享了;各種企業(yè)級(jí)的軟件 ERP、CRM、BI層出不窮,也沒(méi)有哪個(gè)能滿足中國(guó)的市場(chǎng);各種新技術(shù)、新概念不斷出現(xiàn),卻沒(méi)有哪種技術(shù)或概念能真正發(fā)揮其內(nèi)在價(jià)值,最終還是處于被學(xué) 習(xí)、被運(yùn)用的階段。
這個(gè)過(guò)程是程序員脫離技術(shù)本身,開(kāi)始思索、開(kāi)始求源的階段。在這個(gè)階段的程序員的思想有了質(zhì)的飛躍。以前光拉車不看路,現(xiàn)在要抬頭看路了。
第八階段,有了抬頭看路的想法,于是我踏上尋路征程。我首先弄明白了我們腳 下的路是什么樣的,為什么這條路那么不平坦、不寬廣。從軟件生命周期來(lái)看,軟件主要由用戶需求發(fā)起,用戶需求是軟件生存的根本理由。由于企業(yè)、用戶的不同 而導(dǎo)致不同的需求——大量的無(wú)序的需求,這種需求驅(qū)動(dòng)方式必然造成了我前面介紹的各種現(xiàn)象。這個(gè)階段是尋找根源的階段。只要我們找到了根源,就可以有機(jī)會(huì) 解決問(wèn)題。這個(gè)過(guò)程相對(duì)來(lái)說(shuō)比較困難,這不僅需要編程技術(shù),還需要很多方面的知識(shí)。若要了解這個(gè)根源,就迫使你學(xué)習(xí)和積累更多程序以外的知識(shí)。
第九階段,當(dāng)我找到軟件是需求驅(qū)動(dòng)方式之后,就開(kāi)始考慮什么是用戶需求?用 戶為什么要提出這些需求?我們可以更深入地分析用戶需求產(chǎn)生的根源,我們能否讓無(wú)序需求變成有序需求呢?當(dāng)然針對(duì)這些問(wèn)題我們都進(jìn)行了深入分析,其過(guò)程也 很難在這里展開(kāi)說(shuō)明。我只能說(shuō),最后結(jié)論是用戶的需求來(lái)源于企業(yè)的經(jīng)營(yíng)。很多人思考問(wèn)題還是就需求而論,并沒(méi)有站在企業(yè)經(jīng)營(yíng)角度去考慮問(wèn)題。千萬(wàn)不要小看 這個(gè)變化,這個(gè)變化最終會(huì)產(chǎn)生一個(gè)理論。于是我們盡可能地站在企業(yè)經(jīng)營(yíng)角度看待企業(yè)經(jīng)營(yíng)方式、企業(yè)管理、企業(yè)信息化等。但是,我們最終要解決企業(yè)經(jīng)營(yíng)這個(gè) 概念問(wèn)題,如果我們都不能明確企業(yè)經(jīng)營(yíng)這個(gè)概念,或者我們不能科學(xué)地定義企業(yè)經(jīng)營(yíng)這個(gè)概念,那一切基于企業(yè)經(jīng)營(yíng)的各種具體現(xiàn)象就如同無(wú)本之源一樣無(wú)序泛 濫。就像ERP、CRM等所謂企業(yè)信息化產(chǎn)品一樣,由于沒(méi)有一個(gè)企業(yè)經(jīng)營(yíng)定義的支撐,只能就企業(yè)經(jīng)營(yíng)的某個(gè)方面提出解決方案。這些產(chǎn)品不缺乏需求的支持, 缺乏的是最基本的企業(yè)經(jīng)營(yíng)定義的支持。而這個(gè)概念就是EOM。
EOM是從定義企業(yè)經(jīng)營(yíng)角度入手,把我們今后要開(kāi)展的各種研究和開(kāi)發(fā)活動(dòng)都放在一個(gè)理論可支持的基礎(chǔ)上。只有定義了企業(yè)經(jīng)營(yíng)之后,我們才有可能分析 我們需要什么軟件,我們的軟件采用什么技術(shù)才能實(shí)現(xiàn)企業(yè)經(jīng)營(yíng)的目標(biāo)。而程序員則通過(guò)EOM了解到企業(yè)經(jīng)營(yíng)需要什么樣的軟件,這個(gè)軟件有多大的價(jià)值,這個(gè)軟 件采用什么技術(shù)才能實(shí)現(xiàn),自己要提高哪方面的技術(shù)水平才能獲得更大的價(jià)值。
這個(gè)過(guò)程就是EOM階段,通過(guò)EOM了解軟件的根源和有價(jià)值的軟件所在,進(jìn)而選擇自己未來(lái)的方向。
第十階段,當(dāng)我建立了EOM之后,便開(kāi)始了EOM實(shí)現(xiàn)階段。這個(gè)實(shí)現(xiàn)階段分為兩部分,通過(guò)這兩部分的結(jié)合,我們就可以逐步看到EOM軟件產(chǎn)品的實(shí)例,看到EOM的真正價(jià)值。
第一部分是EOM的技術(shù)實(shí)現(xiàn)。有了EOM并根據(jù)EOM理論構(gòu)建企業(yè)信息化的架構(gòu)后,我們就必須從技術(shù)上實(shí)現(xiàn)這個(gè) 架構(gòu),否則這個(gè)架構(gòu)將永遠(yuǎn)停留在理論階段,不具有可行性。我們可以采用現(xiàn)有的各種技術(shù)來(lái)實(shí)現(xiàn)這個(gè)架構(gòu),但是,現(xiàn)有的技術(shù)都是基于原有的業(yè)務(wù)需求而建立和發(fā) 展的,它適用于原來(lái)的應(yīng)用對(duì)象。目前的EOM是一個(gè)全新的企業(yè)經(jīng)營(yíng)理念,因此,我們必須建立一種新的軟件架構(gòu)來(lái)適應(yīng)和好地實(shí)現(xiàn)這個(gè)理念。幸運(yùn)的是,我們 找到了稱作NSS(New Software Structure)軟件新架構(gòu)的技術(shù),該技術(shù)體現(xiàn)了適應(yīng)企業(yè)經(jīng)營(yíng)發(fā)展方向,將軟件合理分層,用最新的軟件技術(shù)按照架構(gòu)的方式規(guī)范軟件開(kāi)發(fā)的模式,可以實(shí) 現(xiàn)大范圍的功能共享,實(shí)現(xiàn)軟件的可擴(kuò)展性。
第二部分是EOM的業(yè)務(wù)實(shí)現(xiàn)。當(dāng)我們明確了EOM之后,就可以根據(jù)EOM來(lái)重新規(guī)劃企業(yè)信息化的整體架構(gòu),可以 細(xì)分這個(gè)架構(gòu)中的各種平臺(tái)產(chǎn)品、通用產(chǎn)品、專業(yè)產(chǎn)品,可以細(xì)分出這個(gè)架構(gòu)實(shí)現(xiàn)的各種技術(shù)架構(gòu)和實(shí)現(xiàn)手段,可以細(xì)分出這個(gè)架構(gòu)中的各種標(biāo)準(zhǔn)功能和標(biāo)準(zhǔn)信息。 通過(guò)這樣的分析,我們的程序員就可以根據(jù)自己的特長(zhǎng)和愛(ài)好以及價(jià)值的判斷來(lái)選擇其中的軟件產(chǎn)品和技術(shù)。在明確目標(biāo)和方向的情形下,通過(guò)自己的努力,不斷提 高自己的各種技能水平,讓自己的價(jià)值和企業(yè)經(jīng)營(yíng)價(jià)值有機(jī)地結(jié)合在一起,從而實(shí)現(xiàn)自己的理想。
從我的程序員經(jīng)歷可以看出,程序員的成長(zhǎng)是無(wú)止境的,只要有的放矢地努力,就會(huì)一步步登高向上。我認(rèn)為程序員成長(zhǎng)經(jīng)歷主要有三大階段,即通用技術(shù)階段、市場(chǎng)階段、專業(yè)技術(shù)階段。
這個(gè)階段可以讓程序員在軟件產(chǎn)品業(yè)務(wù)設(shè)計(jì)或軟件產(chǎn)品技術(shù)實(shí)現(xiàn)上等多個(gè)方面進(jìn)行深入鉆研,并且成為領(lǐng)域?qū)<?。這和我們平時(shí)涉及的簡(jiǎn)單的需求分析和簡(jiǎn)單的技術(shù)實(shí)現(xiàn)有著本質(zhì)區(qū)別。
1)專用技術(shù)階段是程序員認(rèn)知了這個(gè)軟件和技術(shù)有很大的市場(chǎng)價(jià)值,全身心投入到這個(gè)領(lǐng)域中去,并在這個(gè)領(lǐng)域成為專家的階段。程序員不但要懂技術(shù),更要懂得客戶業(yè)務(wù),不同的程序員的技術(shù)和業(yè)務(wù)變得沒(méi)有可比性,這種稀缺性造就了程序員極大的價(jià)值。
2)通用技術(shù)階段是程序員專注編程水平提高的階段,也就是說(shuō)“只拉車不看路”階段。這個(gè)程序員能做的事情那個(gè)程序員也能做,程序員的替代性很強(qiáng),程序員市場(chǎng)價(jià)值相對(duì)較低,程序員只關(guān)注編程技術(shù)本身。
3)市場(chǎng)階段是程序員跳離技術(shù)層面開(kāi)始考慮為什么要開(kāi)發(fā)這個(gè)軟件,這個(gè)軟件有什么價(jià)值的階段,通過(guò)求軟件之源來(lái)重新認(rèn)知自己的方向。
這三個(gè)階段其實(shí)就是三個(gè)過(guò)程,每一個(gè)過(guò)程都是一次飛躍。程序員知道自己可以飛多高,依靠的是程序員的學(xué)習(xí)和眼界;而程序員能飛到哪里,那就要靠程序員自身的努力。一個(gè)程序員可以沒(méi)有能力,但是不可以沒(méi)有眼界。
本文發(fā)布于成都網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)http://www.muchs.cn/

本文標(biāo)題:程序員成長(zhǎng)的階段
分享鏈接:http://www.muchs.cn/news22/233922.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站網(wǎng)站建設(shè)、品牌網(wǎng)站建設(shè)品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站營(yíng)銷、響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁(yè)設(shè)計(jì)公司