一個(gè)程序員到底成熟不成熟,我想從以下幾個(gè)方面談?wù)勛约旱目捶ā?/p>
1、技術(shù)標(biāo)志
如果程序員不會(huì)編程序那決不是程序員,程序員至少要掌握一門(mén)程序設(shè)計(jì)語(yǔ)言,要能夠用這種語(yǔ)言去編寫(xiě)程序去解決他想解決的問(wèn)題。但是,成熟的程序員往往掌握不止一種程序語(yǔ)言,三到四種語(yǔ)言的掌握是必須的,一種二種語(yǔ)言的精通也是必須的。
除了從掌握程序設(shè)計(jì)語(yǔ)言個(gè)數(shù)之外,我們還可以從其他幾個(gè)方面去看看程序員在技術(shù)上水平。例如,函數(shù)編寫(xiě)能力(命名、格式、大小、分類(lèi)、參數(shù)、復(fù)用等),面 向過(guò)程的能力,面向?qū)ο蟮哪芰?,?shù)據(jù)庫(kù)技術(shù)能力,效率處理能力,安全處理能力,網(wǎng)絡(luò)處理能力,軟件構(gòu)架能力,人機(jī)交互能力,通用軟件能力,軟件文檔能力等 等。尤其是面向?qū)ο蠹夹g(shù)的掌握和運(yùn)用,以及面向服務(wù)的技術(shù)都是成熟程序員所必需掌握的。
2、時(shí)間標(biāo)志
雖然程序員的天資、素質(zhì)、基礎(chǔ)知識(shí)各不相同,所經(jīng)歷的工作內(nèi)容以及環(huán)境也不相同,但是,時(shí)間也是程序員成熟程度的標(biāo)志之一。一般程序員需要經(jīng)過(guò)三到五年的 時(shí)間才能日趨成熟。其中入門(mén)需要一年,成長(zhǎng)需要兩年。這是我經(jīng)過(guò)長(zhǎng)期觀察得到平均數(shù)據(jù)。我并不認(rèn)為成熟時(shí)間越短程序員就越聰明,就越了不起。享受每個(gè)階段 充分的時(shí)間,會(huì)讓自己成長(zhǎng)更加充實(shí)、更加成熟。當(dāng)然,也有超期而不成熟的情況,這也是很正常的。
3、項(xiàng)目標(biāo)志
程序員的社會(huì)性是程序員成熟的標(biāo)志之一。沒(méi)有參加過(guò)項(xiàng)目的程序員,程序編得再好,只能是純程序類(lèi)的程序員,是一個(gè)孤獨(dú)的高手,是一種個(gè)人型的程序員,遠(yuǎn)沒(méi) 有成熟。項(xiàng)目作為社會(huì)性活動(dòng),體現(xiàn)了項(xiàng)目的社會(huì)價(jià)值。所以項(xiàng)目能力也是程序員成熟的重要標(biāo)志之一:項(xiàng)目能力包括參加項(xiàng)目的個(gè)數(shù)、項(xiàng)目的大小、在項(xiàng)目中承擔(dān) 的角色等等。就項(xiàng)目承擔(dān)的角色而言,主持開(kāi)發(fā)(項(xiàng)目經(jīng)理)3個(gè)以上項(xiàng)目是必須的,這是一個(gè)必要條件。一個(gè)程序員如果沒(méi)有主持過(guò)開(kāi)發(fā),無(wú)論參加過(guò)多少項(xiàng)目的 開(kāi)發(fā),無(wú)論是在程序編寫(xiě)或項(xiàng)目設(shè)計(jì)上發(fā)揮了多大的作用,是很難被稱(chēng)之為成熟的,因?yàn)轫?xiàng)目的組織、協(xié)調(diào)和管理是反映一個(gè)程序員成熟程度的又一個(gè)標(biāo)志。就如同 一個(gè)程序員能參與過(guò)10個(gè)以上大大小小的項(xiàng)目或能參加或能主持兩個(gè)以上大型項(xiàng)目的開(kāi)發(fā),其成熟程度是可以信賴(lài)的。若低于此數(shù),則說(shuō)明程序員離成熟還有相當(dāng) 的空間?!拔覀?cè)陧?xiàng)目中成長(zhǎng)”可見(jiàn)項(xiàng)目對(duì)于程序員的意義是多么的巨大。
另外,一般程序員只是為一個(gè)企業(yè)客戶(hù)進(jìn)行開(kāi)發(fā)一個(gè)或多個(gè)項(xiàng)目,或同行業(yè)的企開(kāi)發(fā)項(xiàng)目,如果程序員能夠如果程序員能夠開(kāi)發(fā)過(guò)多個(gè)行業(yè)的項(xiàng)目,其成熟度要比一般人要高一些。
4、思維標(biāo)志
幼稚和成熟在思維方式上還是有很明顯的區(qū)別的。就程序員而言,不成熟的程序員邏輯性不強(qiáng),程序編得沒(méi)有條理,即使程序員自己進(jìn)行了解釋也沒(méi)人能看懂。而成 熟的程序員應(yīng)該具有很強(qiáng)的邏輯性,程序編得井井有條,不用解釋別人也能看得懂。這種邏輯性還體現(xiàn)在軟件的構(gòu)架設(shè)計(jì)、數(shù)據(jù)庫(kù)設(shè)計(jì)、算法設(shè)計(jì)等多個(gè)方面。程序 員通過(guò)全集子集概念、時(shí)間概念、順序概念、重點(diǎn)非重點(diǎn)概念等對(duì)各種事物進(jìn)行邏輯分析。例如,以順序概念為例,不成熟的程序員往往會(huì)采用自底向上的思維方式 來(lái)開(kāi)發(fā)程序。他們先考慮程序的具體實(shí)現(xiàn),然后再考慮功能設(shè)計(jì)、最后考慮構(gòu)架設(shè)計(jì)。而成熟的程序員則采用自頂向下思維方式,先考慮構(gòu)架設(shè)計(jì)、再考慮功能設(shè) 計(jì)、最后才考慮編程的具體實(shí)現(xiàn)。前者思維方式主要是出于工作慣性,只適合入門(mén)階段,而后者思維方式反映了后者的進(jìn)步,適用于各種項(xiàng)目開(kāi)發(fā)或大型項(xiàng)目的開(kāi)發(fā)。
除了在思維內(nèi)容上的邏輯性之外,程序員還應(yīng)該處理好動(dòng)腦和動(dòng)手的關(guān)系。重視思維本身就是一種成熟的標(biāo)志。成熟的程序員的思考時(shí)間要大于動(dòng)手編程時(shí)間,想好 之后只要一次就編程成功,而不成熟的程序員往往動(dòng)手編程時(shí)間要遠(yuǎn)大于思考時(shí)間,而且是邊做邊想,通過(guò)反復(fù)來(lái)逼近最終目標(biāo)。
另外,在思維范圍上,成熟的程序員要比普通的程序員有更開(kāi)放視野。他們更容易去接受新的東西,更容易不受各種約束去考慮問(wèn)題,更勇于去挑戰(zhàn)自己和高手。
5、與人交往
很多人認(rèn)為程序員是和計(jì)算機(jī)打交道的行業(yè)。這只是這個(gè)職業(yè)的特點(diǎn)。但是,只要是工作必然就是一種社會(huì)勞動(dòng)。而社會(huì)勞動(dòng)則必須和人進(jìn)行交流和溝通。盡 管程序員的勞動(dòng)工具是計(jì)算機(jī),但并不意味著程序員只想著這個(gè)工具。從這個(gè)工具的下游來(lái)看,程序員還是要考慮用這個(gè)勞動(dòng)工具生產(chǎn)出來(lái)的軟件產(chǎn)品是否有人購(gòu) 買(mǎi),是否有人使用,是否運(yùn)行正常,從這個(gè)工具的上游來(lái)看,是誰(shuí)讓程序員了解設(shè)計(jì)方案的,是誰(shuí)讓程序員編程序的,是誰(shuí)讓程序員程序通過(guò)驗(yàn)收的等等。因此程序 員在軟件制作各個(gè)環(huán)節(jié)都會(huì)與其他人打交道。只有和人進(jìn)行有效的交流和溝通我們的工作才能進(jìn)行下去才能做的更好。
如果一個(gè)程序員還沉浸在個(gè)人勞動(dòng)的意境之中,對(duì)外界持有冷漠、無(wú)奈、恐懼的心理,內(nèi)心里不愿意和外界打交道,無(wú)論自己感覺(jué)自己的技術(shù)水平有多高,還 是一個(gè)不成熟的程序員。而成熟的程序員一定是特別重視與人的交往,無(wú)論是上級(jí)領(lǐng)導(dǎo)、外部客戶(hù)、項(xiàng)目經(jīng)理、團(tuán)隊(duì)同伴這些與自身工作密切相關(guān)的人還是那些非同 單位同行朋友、網(wǎng)友等他們都會(huì)認(rèn)真去聽(tīng)取別人的闡述、要求、意見(jiàn)、建議、反饋等。從中得到更多的工作上的、技術(shù)上的、生活上的好的想法,以便自己參考和吸 收。與此同時(shí),與人交往也反映你有好的想法和好的技術(shù)水平交流出去,而這些想法和技術(shù)水平也是你成熟度一種反映。那些沒(méi)有想法和技術(shù)水平的程序員的確是怕 和別人交流的。
與人交流的有兩個(gè)基本能力,一個(gè)是理解能力,一個(gè)是表達(dá)能力。兩者缺一不可。例如,有的程序員理解能力差,不能理解項(xiàng)目經(jīng)理提出的要求,有的程序員表達(dá)能力差,無(wú)邏輯,無(wú)重點(diǎn),啰里啰唆,讓別人不知所云。這都是不成熟的表現(xiàn)。
6、別人評(píng)價(jià)
別人的評(píng)價(jià)尤其是單位同事以及對(duì)自己工作情況比較了解的人對(duì)自己的評(píng)價(jià)是有參考價(jià)值的。一般而言,評(píng)價(jià)差的,一定是不行的,是不成熟的。評(píng)價(jià)好的要 看情況而定,單位同事對(duì)人的評(píng)價(jià)會(huì)從兩個(gè)方面來(lái)考慮,一個(gè)是這個(gè)人的為人情況,一個(gè)是這個(gè)人的工作能力。如果兩者都不錯(cuò),我們有理由認(rèn)為這個(gè)程序員是成熟 的。反之,無(wú)論是工作能力強(qiáng),但為人不好,為人很好,工作能力不強(qiáng),我看都不能算一個(gè)成熟的程序員。
所以,程序員要注重別人對(duì)自己的評(píng)價(jià),在提高自己技術(shù)水平的同時(shí),學(xué)會(huì)做人,做好人,學(xué)會(huì)與他人分享,這樣別人才會(huì)給自己更好的評(píng)價(jià)。
無(wú)視別人評(píng)價(jià)其實(shí),也是一種不成熟的表現(xiàn)。只有自己感覺(jué)好,大家感覺(jué)好,那才是真的好。
其實(shí),別人的評(píng)價(jià)如果僅限于自己?jiǎn)挝坏脑挘峙逻@種評(píng)價(jià)的價(jià)值會(huì)打折扣,如果這個(gè)單位技術(shù)人員的人數(shù)很少,水平普遍很低,即使你鶴立雞群,大家對(duì)你的評(píng)價(jià)很好,但是,你和其他公司和單位的程序員來(lái)比,你真的不一定的成熟。所以,我說(shuō)別人的評(píng)價(jià)僅僅是一個(gè)參考。
7、收入標(biāo)志
收入也是成熟程序員一個(gè)參考標(biāo)志。收入的大小往往是對(duì)程序員社會(huì)價(jià)值的認(rèn)可度,表明程序員的勞動(dòng)值這個(gè)價(jià)錢(qián)。一般而言,成熟的程序員能夠掙得軟件業(yè) 平均收入的中上水平,或者在一個(gè)單位或部門(mén)中能夠掙得比80%左右員工要高的收入。而剛參加工作不久的程序員收入應(yīng)該與其相差很大的。另外,單位的項(xiàng)目獎(jiǎng) 金發(fā)放也可以看出程序員在項(xiàng)目中的地位和作用。
現(xiàn)實(shí)中,我們知道程序員的收入和其付出是不是正比的,而且,越是能力強(qiáng)的、貢獻(xiàn)大的程序員,可能不一定比那些不如其它能力不如他的程序員高出許多。 這不是軟件行業(yè)的通病,幾乎所有行業(yè)都存在這種情況。通過(guò)分析我們認(rèn)為程序員成熟度應(yīng)該是和其收入高低掛鉤的。如果,我們知道我們能力和貢獻(xiàn)大大超出我們 的收入,我們就有理由向上級(jí)領(lǐng)導(dǎo)提出自己的收入要求。
8、心理素質(zhì)
程序員常常面對(duì)各種各樣的成功和失敗,尤其是失敗更是多于成功,這也是程序員這個(gè)職業(yè)特點(diǎn)之一。以編程為例,幾乎沒(méi)有一個(gè)人一次就能把程序給編好的,它總 是要遇到各種語(yǔ)法錯(cuò)誤,總要遇到各種遺漏,一個(gè)程序要反復(fù)多次修改調(diào)試才能完好。有的程序員因找不出來(lái)程序的bug,束手無(wú)措,哀聲嘆氣,心里極其不爽。 以工作為例,有的程序員因工作進(jìn)度和程序出錯(cuò)常常受到別人的批評(píng)和指責(zé),心里極其不滿(mǎn),認(rèn)為批評(píng)人不了解造成這個(gè)結(jié)果的客觀原因,批評(píng)錯(cuò)了人。從而對(duì)人產(chǎn) 生意見(jiàn),甚至對(duì)工作造成了影響。面對(duì)失敗和挫折,成熟的程序員會(huì)坦然面對(duì):編程時(shí)出現(xiàn)問(wèn)題不可怕,有什么問(wèn)題就解決問(wèn)題,解決不了的問(wèn)題可以想其他方法進(jìn) 行解決,不在一棵樹(shù)上吊死。面對(duì)別人的批評(píng)和指責(zé),首先從自身查問(wèn)題,是自己的問(wèn)題,那就要主動(dòng)承擔(dān)責(zé)任,并盡快改正。不是自己的問(wèn)題,應(yīng)該換位思考,理 解批評(píng)人的焦急心態(tài),并找機(jī)會(huì)給予說(shuō)明。良好的心理素質(zhì)在面對(duì)困難和挫折的時(shí)候,就會(huì)很坦然,很堅(jiān)強(qiáng),很自信。