1. 程式人生 > >合格的程式設計師應該是怎樣的?

合格的程式設計師應該是怎樣的?

    從進入所在的公司至今,已經工作了大半年有餘。在這半年當中,我一點一滴地積累、一步一個腳印地實踐,順利完成了公司產品升級模式的轉變,從原有的純手工操作邁向半自動化的模式(伺服器端通過工程人員維護,客戶端實現自動安裝自動升級);同時亦接手了公司的“流媒體專案”,開始著手流媒體方面的研究及實現。
   
然而,畢竟公司在軟體這一行業還涉足不深,缺乏相應的軟體運作經驗,公司內部管理還處於相對混亂的狀態,軟體開發方面的高層次人才相對缺乏。種種因素,給剛進企業工作且亟需旁人指點的我,造成了不少困難。鑑於此,各種各樣的困難都要自己去面對,各種各樣的問題都要自己去解決,這就給了我嚴峻的考驗。
    這些天來,我一直在思考這樣一個問題,究竟應該怎樣才能成為一名合格的程式設計師?個人經過思考,總結了以下幾點。

    合格的程式設計師應該是一個會做計劃的人。在現在這個競爭激烈的社會,隨著IT行業的迅猛發展,對程式設計師提出了更高的要求。作為一名程式設計師,不管是普通的程式設計師還是高階程式設計師,都要求你必須會做計劃,只有做好計劃,或許你才能更好地勝任你所從事的工作。而就本人所接觸的同行,其中有一部分人對計劃並沒有非常清晰的認識,他們大都根據專案經理或領導的安排來開展工作,而完成工作後經常會陷入不知道接下來應該做什麼這樣一種境地。
    本人認為,只有做好計劃,才能更大程度地提升自身能力及水平,進而為公司創造更大的價值。這做好計劃從最基本的角度來看,至少可以劃分為年度計劃、月度計劃、周計劃和日計劃。年度計劃主要從巨集觀方面考慮,一般是一年的發展目標或在這一年之中應該做好的幾件大事(如在一年當中掌握一項新技術等)。月度計劃則是年度計劃的粗粒度劃分,將年度計劃的總體目標合理地劃分成不同的階段,即可以得出月計劃。周計劃是月計劃的更進一步細分,且在日常的工作開展中,周計劃是一個非常重要的階段,工作的績效以周來衡量是相對比較合適的。而日計劃則是細粒度的劃分了,這就是通常所說的工作日報,每天需要做什麼事情,都可以以日報的形式展現。有了這些計劃,最重要的還是貫徹執行,所以在工作當中,除了對計劃做合適的輕微的調整以外,應該不折不扣地堅決執行。
    有了合理的計劃安排,就有了清晰的工作目標,就有了源源不斷的工作激情和動力,從而可以有效地避免使自己處於無所事事的狀態,進而使自己的工作生活過得更加充實。

    合格的程式設計師應該是一個會做設計的人。或許很多人會認為,程式設計師應該只負責編寫程式碼,而不用去理會其他事情。對於這一點,我不敢苟同。也許,在一些大型的分工明確的專業的軟體公司,程式設計師確實只需要負責編寫程式碼和單元測試。但是我認為,如果一個程式設計師既會編碼,同時還會做設計,那麼試想一下,這樣編寫出來的程式碼質量是不是會更高呢?至少,懂得做設計的程式設計師,即使不需要他(她)做設計,也可以更好地理解設計人員的思路,從而做出更多有利於軟體實現的工作,這樣環境下開發出來的軟體不管怎麼說質量也不會差到哪裡去(一些特殊情況例外)。
    而在本人所在的公司,更是需要具備這方面的能力。因為公司軟體開發模式的獨特性,就決定了我必須在這方面不斷提高設計能力。而實際情況往往大家都非常清楚,要做一個編碼人員不難,但要成為一名好的設計人員就不是那麼容易了,這中間需要經過千錘百煉。正是因為這樣,作為一名程式設計師,更加要有意識地去提高自身的軟體(程式)設計水平,使得開發設計出來的軟體真正具備其應該有的價值。

    合格的程式設計師應該是一個對程式設計有極大熱情的人。在程式設計師這個詞彙當中,至少有兩類不同的程式設計師,一類是對程式設計有濃厚興趣且不受年齡增長的限制,通常稱為程式設計愛好者;另一類是為了謀求一份職位或者為了生活而程式設計的人員,這一類人將程式設計作為謀生的一種手段,當然其中仍有大部分人對程式設計是非常有激情的,不過這種激情會隨著年齡的增長而逐漸消失殆盡。
   
姑且不論這兩類程式設計人員的異同優劣,從程式設計師角度來講,作為一名程式設計師,對程式設計有熱情才能切切實實地將工作做好。你有沒有這樣的一種感覺,當你看到一種自己喜歡的新技術或新發明出現時,眼睛會有發亮的感覺,至少我曾經有過。因此,我個人認為,當一種新技術或新事物出現在軟體領域時,如果能夠讓你內心感到無比地興奮或激動,那麼可以說你是一個對軟體開發有極大熱情的人;當一門你所期待的程式語言發生變化時,或者當出現了一些你所關注的開源框架時,如果你的眼睛會發亮或者無法掩飾興奮之情,那麼可以說你是一個對程式設計有極大熱情的人。
    我一直以為,只有對程式設計有極大的熱情,對問題有孜孜不倦的鑽研求解精神,才能編寫出更好的程式出來。在這方面,我認為我自身還有很大的一段距離,仍有很長的一段路需要走。

合格的程式設計師應該是一個追求效率與質量的人。作為程式設計師,從總體來看,大都具有追求盡善盡美、精益求精的思想,誠然有這樣一種思想是非常好的,因為這會促使你時刻關注程式碼的質量併力求做到最好。但是,這種思想所延伸的做法在有些情況下卻又是行不通的,因為企業往往會追求效率,更加註重的是質量與完成時間,根本不可能有足夠的時間讓你將程式做到精品的程度。因此,作為一名程式設計師,在具備精益求精思想的同時,更加要具備追求效率與質量的思想,最好的情況就是在追求效率與質量的同時做到精益求精。
    很多時候,當匆匆忙忙趕出來一個軟體產品時,不僅不能得到客戶的好評,相反反饋回來的卻是不滿之聲,要麼是功能欠缺,要麼是不夠人性化,諸如此類。拋開管理方面的問題不談,僅僅從程式設計師角度去看待問題,我們會驚訝地發現,原來我們為了趕進度,很多問題都作了折衷處理,而當我們在後續有時間的時候,又常常不願意去調整優化或者是沒有這種意識。
    程式的好壞,效率重要,質量也重要。作為程式設計師,應該且必須具備這樣一種在允許的時間範圍內將程式做到最好的意識。

    合格的程式設計師應該是一個會溝通的人。普遍的一種看法是,程式設計師是一類不喜歡溝通、不善於溝通、不願意溝通的人。個人認為,在當今這個社會,程式設計師除了有很好的技術能力之外,還需要有一定的溝通能力。我們程式設計師當中有相當的一部分人,不善於言辭,只知道埋頭做工作,而忽略了與專案經理、老闆的溝通,這對專案工作的開展或多或少地帶來了一定的影響。
    定期地向你的上司彙報工作,可以帶來很多好處。首先,可以讓你的上司更清楚地瞭解你目前的工作情況,包括取得了哪些成果,遇到了哪些困難等。其次,可以為自身獲得更大的增值機會,說不定你的一些特長或能力被上司發現,繼而讓你到你更勝任、更喜歡的崗位工作。再次,還可以在溝通過程中矯正一些不正確的實現思路,等等。

    合格的程式設計師應該是一個懂得自我總結、自我反省的人。經常對自己所做的工作進行回顧總結,有利於程式設計師調整工作思路,有利於每一個工作目標的實現。總結自己工作的質量、效率及可取之處,可以對下一步的工作起到對照作用,而從更加明白如何去做才能達到最佳的效果。
    定期地進行自我反省,有利於提高自身的修養。考慮工作中失誤的地方,並在以後的工作中儘量避免再犯類似的錯誤,這有利於積累經驗教訓,從而使自己確確實實達到合格程式設計師的衡量標準。

    以上是本人在實際的工作中經過思考並總結出來的幾點膚淺想法。總之,我認為,要成為一名合格的程式設計師需要具備更多的條件,會思考、會學習、會動手是最基本的要求。在實際的工作當中,還要經常瞭解業界動態,活躍自己的思想,而不要閉門造車,封閉了自己的思想。經常性地加強學習,才能使得自身不會在這個變化太快的IT行業裡失去航向,才有資格成為一名合格的程式設計師,繼而向優秀的程式設計師邁進。