程序員在經歷了若干年編程工做以後,很想知道本身水平到底如何?本身是否已經成爲成熟的程序員?雖然程序員會對本身有一個自我評價,可是,本身的評 價和社會的評價、專業的評價會有差別,因此程序員本身並不能確定這個評價。現實中,除了各類證書以外,不多有人會專門給出一個程序員的成熟度的評價。人們每每是偶發性地就事論事地對程序員的工做做出好與很差,行與不行的評論。所以,程序員對此感到很茫然,不知道要從那些方面去評價本身的能力。程序員
若是程序員不會編程序那決不是程序員,程序員至少要掌握一門程序設計語言,要可以用這種語言去編寫程序去解決他想解決的問題。可是,成熟的程序員每每掌握不止一種程序語言,三到四種語言的掌握是必須的,一種二種語言的精通也是必須的。
除了從掌握程序設計語言個數以外,咱們還能夠從其餘幾個方面去看看程序員在技術上水平。例如,函數編寫能力(命名、格式、大小、分類、參數、複用等),面 向過程的能力,面向對象的能力,數據庫技術能力,效率處理能力,安全處理能力,網絡處理能力,軟件構架能力,人機交互能力,通用軟件能力,軟件文檔能力等 等。尤爲是面向對象技術的掌握和運用,以及面向服務的技術都是成熟程序員所必需掌握的。算法
雖然程序員的天資、素質、基礎知識各不相同,所經歷的工做內容以及環境也不相同,可是,時間也是程序員成熟程度的標誌之一。通常程序員須要通過三到五年的 時間才能日趨成熟。其中入門須要一年,成長鬚要兩年。這是我通過長期觀察獲得平均數據。我並不認爲成熟時間越短程序員就越聰明,就越了不得。享受每一個階段 充分的時間,會讓本身成長更加充實、更加成熟。固然,也有超期而不成熟的狀況,這也是很正常的。數據庫
程序員的社會性是程序員成熟的標誌之一。沒有參加過項目的程序員,程序編得再好,只能是純程序類的程序員,是一個孤獨的高手,是一種我的型的程序員,遠沒 有成熟。項目做爲社會性活動,體現了項目的社會價值。因此項目能力也是程序員成熟的重要標誌之一:項目能力包括參加項目的個數、項目的大小、在項目中承擔 的角色等等。就項目承擔的角色而言,主持開發(項目經理)3個以上項目是必須的,這是一個必要條件。一個程序員若是沒有主持過開發,不管參加過多少項目的 開發,不管是在程序編寫或項目設計上發揮了多大的做用,是很難被稱之爲成熟的,由於項目的組織、協調和管理是反映一個程序員成熟程度的又一個標誌。就如同 一個程序員能參與過10個以上大大小小的項目或能參加或能主持兩個以上大型項目的開發,其成熟程度是能夠信賴的。若低於此數,則說明程序員離成熟還有至關 的空間。「咱們在項目中成長」可見項目對於程序員的意義是多麼的巨大。r
另外,通常程序員只是爲一個企業客戶進行開發一個或多個項目,或同行業的企開發項目,若是程序員可以若是程序員可以開發過多個行業的項目,其成熟度要比通常人要高一些。編程
幼稚和成熟在思惟方式上仍是有很明顯的區別的。就程序員而言,不成熟的程序員邏輯性不強,程序編得沒有條理,即便程序員本身進行了解釋也沒人能看懂。而成 熟的程序員應該具備很強的邏輯性,程序編得層次分明,不用解釋別人也能看得懂。這種邏輯性還體如今軟件的構架設計、數據庫設計、算法設計等多個方面。程序 員經過全集子集概念、時間概念、順序概念、重點非重點概念等對各類事物進行邏輯分析。例如,以順序概念爲例,不成熟的程序員每每會採用自底向上的思惟方式 來開發程序。他們先考慮程序的具體實現,而後再考慮功能設計、最後考慮構架設計。而成熟的程序員則採用自頂向下思惟方式,先考慮構架設計、再考慮功能設 計、最後才考慮編程的具體實現。前者思惟方式主要是出於工做慣性,只適合入門階段,然後者思惟方式反映了後者的進步,適用於各類項目開發或大型項目的開發。
除了在思惟內容上的邏輯性以外,程序員還應該處理好動腦和動手的關係。重視思惟自己就是一種成熟的標誌。成熟的程序員的思考時間要大於動手編程時間,想好 以後只要一次就編程成功,而不成熟的程序員每每動手編程時間要遠大於思考時間,並且是邊作邊想,經過反覆來逼近最終目標。
另外,在思惟範圍上,成熟的程序員要比普通的程序員有更開放視野。他們更容易去接受新的東西,更容易不受各類約束去考慮問題,更敢於去挑戰本身和高手。安全
不少人認爲程序員是和計算機打交道的行業。這只是這個職業的特色。可是,只要是工做必然就是一種社會勞動。而社會勞動則必須和人進行交流和溝通。盡 管程序員的勞動工具是計算機,但並不意味着程序員只想着這個工具。從這個工具的下游來看,程序員仍是要考慮用這個勞動工具生產出來的軟件產品是否有人購 買,是否有人使用,是否運行正常,從這個工具的上游來看,是誰讓程序員瞭解設計方案的,是誰讓程序員編程序的,是誰讓程序員程序經過驗收的等等。所以程序 員在軟件製做各個環節都會與其餘人打交道。只有和人進行有效的交流和溝通咱們的工做才能進行下去才能作的更好。
若是一個程序員還沉浸在我的勞動的意境之中,對外界持有冷漠、無奈、恐懼的心理,心裏裏不肯意和外界打交道,不管本身感受本身的技術水平有多高,還 是一個不成熟的程序員。而成熟的程序員必定是特別重視與人的交往,不管是上級領導、外部客戶、項目經理、團隊同伴這些與自身工做密切相關的人仍是那些非同 單位同行朋友、網友等他們都會認真去聽取別人的闡述、要求、意見、建議、反饋等。從中獲得更多的工做上的、技術上的、生活上的好的想法,以便本身參考和吸 收。與此同時,與人交往也反映你有好的想法和好的技術水平交流出去,而這些想法和技術水平也是你成熟度一種反映。那些沒有想法和技術水平的程序員的確是怕 和別人交流的。
與人交流的有兩個基本能力,一個是理解能力,一個是表達能力。二者缺一不可。例如,有的程序員理解能力差,不能理解項目經理提出的要求,有的程序員表達能力差,無邏輯,無重點,囉裏囉唆,讓別人不知所云。這都是不成熟的表現。網絡
別人的評價尤爲是單位同事以及對本身工做狀況比較瞭解的人對本身的評價是有參考價值的。通常而言,評價差的,必定是不行的,是不成熟的。評價好的要 看狀況而定,單位同事對人的評價會從兩個方面來考慮,一個是這我的的爲人狀況,一個是這我的的工做能力。若是二者都不錯,咱們有理由認爲這個程序員是成熟 的。反之,不管是工做能力強,但爲人很差,爲人很好,工做能力不強,我看都不能算一個成熟的程序員。
因此,程序員要注重別人對本身的評價,在提升本身技術水平的同時,學會作人,作好人,學會與他人分享,這樣別人纔會給本身更好的評價。
無視別人評價其實,也是一種不成熟的表現。只有本身感受好,你們感受好,那纔是真的好。
其實,別人的評價若是僅限於本身單位的話,恐怕這種評價的價值會打折扣,若是這個單位技術人員的人數不多,水平廣泛很低,即便你鶴立雞羣,你們對你的評價很好,可是,你和其餘公司和單位的程序員來比,你真的不必定的成熟。因此,我說別人的評價僅僅是一個參考。數據庫設計
收入也是成熟程序員一個參考標誌。收入的大小每每是對程序員社會價值的承認度,代表程序員的勞動值這個價錢。通常而言,成熟的程序員可以掙得軟件業 平均收入的中上水平,或者在一個單位或部門中可以掙得比80%左右員工要高的收入。而剛參加工做不久的程序員收入應該與其相差很大的。另外,單位的項目獎 金髮放也能夠看出程序員在項目中的地位和做用。
現實中,咱們知道程序員的收入和其付出是否是正比的,並且,越是能力強的、貢獻大的程序員,可能不必定比那些不如其它能力不如他的程序員高出許多。 這不是軟件行業的通病,幾乎全部行業都存在這種狀況。經過分析咱們認爲程序員成熟度應該是和其收入高低掛鉤的。若是,咱們知道咱們能力和貢獻大大超出咱們 的收入,咱們就有理由向上級領導提出本身的收入要求。函數
程序員經常面對各類各樣的成功和失敗,尤爲是失敗更是多於成功,這也是程序員這個職業特色之一。以編程爲例,幾乎沒有一我的一次就能把程序給編好的,它總 是要遇到各類語法錯誤,總要遇到各類遺漏,一個程序要反覆屢次修改調試才能無缺。有的程序員因找不出來程序的bug,束手無措,哀聲嘆氣,內心極其不爽。 以工做爲例,有的程序員因工做進度和程序出錯經常受到別人的批評和指責,內心極其不滿,認爲批評人不瞭解形成這個結果的客觀緣由,批評錯了人。從而對人產 生意見,甚至對工做形成了影響。面對失敗和挫折,成熟的程序員會坦然面對:編程時出現問題不可怕,有什麼問題就解決問題,解決不了的問題能夠想其餘方法進 行解決,不在一棵樹上吊死。面對別人的批評和指責,首先從自身查問題,是本身的問題,那就要主動承擔責任,並儘快改正。不是本身的問題,應該換位思考,理 解批評人的焦急心態,並找機會給予說明。良好的心理素質在面對困難和挫折的時候,就會很坦然,很堅強,很自信。工具