|
對我來說,一個好的程序員的定義應(yīng)該是渴望更少錯誤的代碼。 一些人也許認(rèn)為好的程序員是那些懂得多門編程語言,懂得很牛技術(shù)的程序員,是的,這在某些情況下是對的。但歸根到底,無論你用什么樣的技術(shù),什么樣的語言,所有的程序被寫出來,其功能都要盡可能地沒有錯誤。 如果一個能力普通的程序員有足夠多的時間來做測試和發(fā)布程序,那么,其所有的代碼都會是沒有錯誤的。
但是,很明顯,所有的已經(jīng)開發(fā)出來項目都是在不完美的條件下開發(fā)出來的,一般來說,幾乎所有的項目都是在壓榨程序員去盡可能地達(dá)到最大化軟件產(chǎn)品成果。而且,軟件工業(yè)界對于深度測試和壓力測試并不關(guān)心,所以,我們總是期望那些趕工出來的代碼可以正常工作。 下面是是五個程序員可以在這種不完美的情況下做得更好的觀點(它們都和語言和技術(shù)沒什么關(guān)系,只不過是一種你的工作行為,能夠和所有的行業(yè)相通)
- 尋找不同觀點:程序員好像并不喜歡技術(shù)上有異見的人,他們特別喜歡爭論各自的技術(shù)觀點。但是,他們忽略了不同觀點的價值。任何事情都有好有壞,我們應(yīng)該學(xué)會在不同觀點中學(xué)習(xí)和平衡。這樣才會更多的了解編程和技術(shù)。要經(jīng)常在做事之前問自己和別人,這么做對不對?做完事后問自己,還可不可以改進(jìn)?努力去尋找別一個觀點。程序員應(yīng)該經(jīng)常上網(wǎng),經(jīng)常和同事討論不同的實現(xiàn)方法,不同的技術(shù)觀點,這樣才能取長補短。然而,在實際工作中,我發(fā)現(xiàn)程序員們并不喜歡互相請教,因為請教的人怕別人看不起他,而被請教的人總是先貶低對方的能力,哎……(參看《十個讓你變成糟糕的程序員的行為》),如果有這樣的文化氛圍的話,那也沒有關(guān)系。上網(wǎng)吧,網(wǎng)上的人誰也不認(rèn)識誰,可以盡情地問一些愚蠢的問題。呵呵。總之,一定要明白,如果某些事情只有一個觀點,那么你一定要懷疑一下了,沒有觀點和技術(shù)方案的比較,沒有百花齊放的情況,你就無法知道是否還有更好的東西。真正的和諧不是只有一種聲音,真正的和諧而是在不同的觀點聲音下取長補短,百家爭鳴(參看《十條不錯的編程觀點》)。否則,你永遠(yuǎn)都不會接受到新的觀點,也就無法進(jìn)步和成長了。
- 千萬別信自己的代碼: 在任何時候,一定要高度懷疑自己的代碼。很多時候,錯誤總是自己造成的。所以,當(dāng)出現(xiàn)問題的時候,要學(xué)會review代碼中所有的可疑點,千萬別覺得某段代碼很簡單,可以略過。事實證明,很多疏忽大意都是在陰溝里翻的船,都是那些很低級的錯誤。在查錯的過程中,切忌過早下結(jié)論,切忌四處亂改(參看《各種流行的編程風(fēng)格》),停下來,想一想,會是哪兒的代碼有重大嫌疑,然后查看一下代碼,捋一捋程序的邏輯,調(diào)試并驗證一下程序的邏輯和變量在運行時是否是正確的。很多時候,對于那些難纏的問題,最后解決了總是因為我們開始認(rèn)真回頭審視所有的代碼。只有對自己的代碼保持著高度的懷疑,這樣我們才會想著如何讓其運行得更好更穩(wěn)定,也會讓我們在單元測試中下更多的功夫,這樣才能更能在那忙碌的環(huán)境中節(jié)省時間。相信我,在集成測試中fix bug的成本要比在單元測試Fix bug的成本大得多的多。一個簡單的例子就是memory leak。程序員對自己的程序需要有憂患意識,這樣才會越來越成熟,而自己的能力也會越來越強。
- 思考和放松: 做事前多想一想,這樣做事的時候就不會顧此失彼,手忙腳亂,一旦事情一亂,你的心情也會更亂,于是,事情也就會更亂。最后,你只得重寫,這種事情太多了。而且,在工作中要學(xué)會享受,要學(xué)會放松心情,我并不是讓你工作的時候聊QQ,我只是說,有時候,心態(tài)過于緊張,壓力過大,你的工作成果反而更不好,從而又反過來造成新一輪的焦慮和緊張。我個人認(rèn)為,思考和放松是可以完美統(tǒng)一的,思考其實就是一種放松,停下來,休息一下,回頭看看走過的路,喝口水,登個高,看看過去走的對不對?總體是個什么樣?總結(jié)一下,然后看看前路怎么樣好走,這會你才會越走越好,越走越快。好的程序員都不是那種埋頭苦干的人,好的程序員總是那些善于總結(jié)成敗得失,善于思考,善于調(diào)整,善于放松的人(參看《優(yōu)秀程序員的十個習(xí)慣》)。不然,我能看到的情形是,你很快地把事干完,回到家剛坐下來,老板或是客戶就打電話來告訴你你的程序出問題了。總之,深思熟慮,動作會很慢,但是你可以保證你工作成果的質(zhì)量,反而能讓你更多的節(jié)約時間。
- 學(xué)習(xí)歷史,跟上時代: 如果你是從十年前開始編程的,那么,今天的這門語言或是技術(shù)會有很多很多的改進(jìn)和改善。你以前開發(fā)一個功能或函數(shù),今天早已被集成進(jìn)了語言中,而且做得比你的版本要好得多。以前你需要100行代碼完成的事情,今天只需要1行代碼。這樣的事情在未來還會發(fā)生,所以,今天的你一定要學(xué)會如何跟上時代。但是,你也不要放棄歷史,我現(xiàn)在看到很多程序員對一些現(xiàn)代的語言和技術(shù)使用的非常好,他們可以很容易地跟上時代。但不要忘了,計算機(jī)世界的技術(shù)更新和技術(shù)淘汰也是非常猛的。所以,你一定要學(xué)習(xí)歷史,這些歷史不是產(chǎn)商的歷史,而是整個計算機(jī)文化的歷史(參見《Unix傳奇》)。只有通過歷史,你才能明白歷史上出現(xiàn)的問題,新技術(shù)出來的原因,這樣才能夠?qū)裉斓倪@些新的技術(shù)更了解,也才能明白明天的方向在哪里。學(xué)習(xí)歷史和跟上時代都是相當(dāng)重要的。使用新型的技術(shù),停下來接受培訓(xùn),可以讓你工作得更快,更高效(參看《未來五年程序員需要掌握的10項技能》)。而學(xué)習(xí)和總結(jié)歷史,才會讓你在紛亂的世界中找到方向。
- 積極推動測試活動: 只有測試才能保證軟件可以正常工作,只有測試才能保證軟件的質(zhì)量。無論什么產(chǎn)品,都需要經(jīng)過或多或少的測試。測試地充分的產(chǎn)品,你會發(fā)現(xiàn)其質(zhì)理總是那么好,測試的不充的產(chǎn)品,質(zhì)量總是那么次。德系汽車,日系汽車質(zhì)量怎么樣,關(guān)鍵還是在于怎么去測試的,測試的是否充分。所以,在你開發(fā)軟件的過程中,如果你說你的程序?qū)懙睾茫|(zhì)量高,那么請你拿出實實在在的測試報告。在整個軟件開發(fā)過程中,做為一個好的程序員,你應(yīng)該積極地在各個環(huán)節(jié)推動項目組進(jìn)行測試活動。不要以為技術(shù)需求階段和設(shè)計階段不需要測試,一樣的,只要你要release什么,release的這個東西都需要進(jìn)行測試。技術(shù)需求怎么做測試?用戶案例就是測試案例。在軟件開發(fā)的整個過程中,保證產(chǎn)品質(zhì)量有時候比實現(xiàn)需求更重要,尤其是那些非常重要甚至人命關(guān)天的產(chǎn)品。
it知識庫:五個方法成為更好的程序員,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。