如何進階爲職業程序員---三年程序員生涯的感悟

轉自:http://blog.csdn.net/j00105840/article/details/5829843php

如何從編程愛好者進階爲職業程序員:

1、簡單纔是美
好的代碼必定是最簡單的,這應該是每一個職業程序員心中萬世不變的箴言。一個簡單的「hello world」,能夠有十幾種實現,可是職業程序員絕對不會標新立異,他們會選擇最簡單最經常使用的那種。
爲何要寫簡單的程序?1、簡單的程序易於擴展;2、簡單的程序易於維護;3、簡單的程序易於發現問題…… 寫簡單程序的理由實在太多了。能用10行實現的,就不要寫100行;能用數組實現的,就不要用avl …..
總之,在能實現功能的狀況下,程序越簡單越好。

2、嚴格遵照編程規範
程序員入職時,都會獲得一本公司的編程規範。雖然每一個公司的編程規範不盡相同,可是基本都講的是排版格式、註釋、命名規範、可測試性、語法規範等方面的內容。編程規範是前人總結出來的經驗教訓,每一個職業程序員都應該嚴格遵照。在項目層面上來講,編程規範是項目成員應該遵照的約定,這樣項目代碼纔會風格統一,盡力約束我的風格,避免出現10我的的項目出現11種風格的狀況。
嚴格遵照編程規範,還能夠避免出現一些低級錯誤。如:編程規範中有一條,條件判斷式使用雙等號」==」時,應該將常量放在雙等號左側,變量放在右側。遵照該條規範能夠避免出現所謂的「差一錯誤」,即將雙等號寫成等號。這種狀況下,編譯器會報錯。
職業程序員寫出來的代碼應該是風格一致的,這樣的代碼便於維護,便於其餘程序員的閱讀,也能夠規避一些低級錯誤,因此,嚴格遵照編程規範是程序員職業化的重要體現。

3、代碼的質量屬性
代碼的質量屬性主要有三個方面:功能、可擴展性、性能。功能:是對一段程序最基本的要求。程序首先要正確實現預期的功能,才能談其餘的質量屬性。可擴展性:對於一個大型地,須要長期維護的軟件來講,程序會不停地加入一些新的特性。若是程序的可擴展性差,就會致使系統的頻繁重構,浪費大量的人力物力。可擴展性應該是在程序的設計階段就考慮到。固然,沒有誰能在設計之初就考慮到全部的擴展性,可是咱們必須儘可能考慮周全,這就涉及到設計的方法和理論了,這裏不討論。性能:好的程序應該考慮性能。可是,這因應用場景而論。好比:一個簡單的計算器程序,咱們不必花太多地精力去提升它的性能。可是,對於一個大型的平臺系統(電信軟件、操做系統、數據庫系統等),咱們就得花精力去考慮性能問題了。
三個質量屬性的優先級應該是:功能正確>擴展性好>性能高。
一般,某些質量屬性之間自己是矛盾的。有時候,咱們顧得了性能,程序的可擴展性就會變差。反之,可擴展性好了,可是就會影響性能。通常狀況下,咱們會按照上面的優先級別來取得質量屬性的平衡。

4、常常review你的代碼
程序員都是心高氣傲的,他們每每對本身寫的代碼充滿了自信,以致於寫好之後不再願意去多看一眼。可是,既是是大牛,也不能保證代碼零缺陷。一個職業的程序員,應該按期review本身的代碼,不斷髮現本身代碼的bug

5、職業程序員必定是優秀的測試人員
我在公司幾年以來,親眼看見公司開發和測試人員之間關係的幾回變革。剛入公司時,發現問題的數量是考覈測試人員績效的惟一標準,某些部門甚至出現給測試人員下達日發現問題數量的指標,不達標直接影響年終獎。測試人員和開發人員水火不容,常常出現爲了一個問題是否該提單爭得面紅耳赤。一年之後,狀況有所改變,測試人員再也不惟問題單是從。到了如今,公司已經大力提倡開發測試融合了。開發和測試人員聯合績效考覈,考覈的標準是版本的穩定性以及遺留缺陷密度。開發和測試人員辦公區已經徹底融合在一塊兒,測試人員常常給開發人員培訓測試方法,開發人員也主動投入到測試發現問題。
我說自身的經歷,只是想說明一個事實,開發和測試之間並無不可逾越的差異。
不少開發人員對測試不屑,以爲那是沒有技術含量的活。其實否則,測試人員是站在客戶的角度考慮問題,他們每每能考慮到不少研發人員考慮不到的場景。測試有一套很是完善的理論。若是研發人員可以瞭解一些測試方法和理論,對於軟件的設計會有很大幫助。
職業程序員必定是優秀的測試人員。

6、站在設計的高度編碼
站在設計的高度編碼,這話說得有點抽象了,可是這確實是我多年來感覺最深的一點。軟件開發一般分爲三個階段:設計、編碼、測試。不少人認爲設計是設計師架構師的事情、測試是測試人員的事情,程序員的工做便是編碼。因此,不少致力於成爲職業程序員的同窗都將所有的精力放在了編程語言的學習上。編程語言只是一個工具,學得好,只能說明你學會使用了一門工具而已。舉個不是很恰當的例子,對於一個畫家來講,光學會使用畫筆是不夠的,還得要有藝術靈感。學會了編碼只能說明你會使用畫筆了,可是離畫家還遠着呢。
有篇很著名的論文叫作《源碼既是設計》(http://www.feifanbbs.com/frame.php?frameon=yes&referer=http%3A//www.feifanbbs.com/),我很是認同。架構師在設計階段會輸出設計文檔,可是對於軟件來講源碼纔是最直接的工程文檔,一份好的源碼賽過千百篇工程文檔----這也是敏捷開發的思想。好的源碼必定是通過設計的,架構師站在架構的角度設計,可是他很難考慮到代碼級別的事情,代碼的實現最終要靠編程人員。大到一個流程,小至一個函數,這些是要靠實際編程人員來設計的。編程人員也應該學會設計,懂得一些設計模式和理論。
作一個設計者,而不是代碼工人。程序員

相關文章
相關標籤/搜索