1. 程式人生 > >五個方法成為更好的程式設計師 .

五個方法成為更好的程式設計師 .

 

對我來說,一個好的程式設計師應該是努力去追求儘可能無錯的高質量的符合需求的程式碼實現。 一些人也許認為好的程式設計師是那些懂得多門程式語言,懂得很牛技術的程式設計師,是的,這在某些情況下是對的。但歸根到底,無論你用什麼樣的技術,什麼樣的語言,所有的程式被寫出來,其功能都要符合需求以及儘可能地健壯無錯和高質量。  我們可以想像一下,如果一個能力普通的程式設計師有足夠多的時間來做測試,那麼,其也可以保證他的程式碼的質量。所以,有一種觀點這樣認為——要達到質量高的程式碼只需要有足夠多的時間來做測試。這對於以結果為導向的商業軟體開發中是可以理解的(我們可以看到那些制汽車的產商在汽車測試上花費的精力和時間就可以明白這一道理)。

但是,很明顯,所有的已經開發出來專案都是在不完美的條件下開發出來的,一般來說,幾乎所有的專案都是在最大化程式設計師軟體的開發速度。而且,很多情況下,我們似乎對深度測試和壓力測試並不是很關心,所以,我們總是在祈禱並期望那些趕工出來的程式碼可以正常工作,尤其是在上線的時候,這種唯心主義的價值觀更為強烈。  其實,開發速度和軟體產品質量並不矛盾。好的程式設計師並一定是技術強的程式設計師,而是那些可以在不完美的工作環境下保證軟體質量和工作效率的程式設計師。下面是是五個程式設計師可以在這種不完美的情況下做得更好的觀點(它們都和語言和技術沒什麼關係,只不過是一種你的工作行為,能夠和所有的行業相通),這五個觀點也許可以讓你成為這樣的好程式設計師。

  • 尋找不同觀點:程式設計師好像並不喜歡技術上有異見的人,他們特別喜歡爭論各自的技術觀點。但是,他們忽略了不同觀點的價值。任何事情都有好有壞,我們應該學會在不同觀點中學習和平衡。這樣才會更多的瞭解程式設計和技術。要經常在做事之前問自己和別人,這麼做對不對?做完事後問自己,還可不可以改進?努力去尋找別的不同的觀點或方法。程式設計師應該經常上網,經常和同事討論不同的實現方法,不同的技術觀點,這樣才能取長補短。然而,在實際工作中,我發現程式設計師們並不喜歡互相請教,因為請教的人怕別人看不起他,而被請教的人總是先貶低對方的能力,哎……(參看《十個讓你變成糟糕的程式設計師的行為》),如果有這樣的文化氛圍的話,那也沒有關係。上網咖,網上的人誰也不認識誰,可以盡情地問一些愚蠢的問題。呵呵。總之,一定要明白,如果某些事情只有一個觀點,那麼你一定要懷疑一下了,沒有觀點和技術方案的比較,沒有百花齊放的情況,你就無法知道是否還有更好的東西。真正的和諧不是隻有一種聲音,真正的和諧而是在不同的觀點聲音下取長補短,百家爭鳴(參看《
    十條不錯的程式設計觀點
    》)。否則,你永遠都不會接受到新的觀點,也就無法進步和成長了。
  • 千萬別信自己的程式碼: 在任何時候,一定要高度懷疑自己的程式碼。很多時候,錯誤總是自己造成的。所以,當出現問題的時候,要學會review程式碼中所有的可疑點,千萬別覺得某段程式碼很簡單,可以略過。事實證明,很多疏忽大意都是在陰溝裡翻的船,都是那些很低階的錯誤。在查錯的過程中,切忌過早下結論,切忌四處亂改(參看《各種流行的程式設計風格》),停下來,想一想,會是哪兒的程式碼有重大嫌疑,然後檢視一下程式碼,捋一捋程式的邏輯(參看《橡皮鴨程式除錯法》),除錯並驗證一下程式的邏輯和變數在執行時是否是正確的。很多時候,對於那些難纏的問題,最後解決了總是因為我們開始認真回頭審視所有的程式碼。只有對自己的程式碼保持著高度的懷疑,這樣我們才會想著如何讓其執行得更好更穩定,也會讓我們在單元測試中下更多的功夫,這樣才能更能在那忙碌的環境中節省時間。相信我,在整合測試中fix bug的成本要比在單元測試Fix bug的成本大得多的多。一個簡單的例子就是memory leak。程式設計師對自己的程式需要有憂患意識,這樣才會越來越成熟,而自己的能力也會越來越強。
  • 思考和放鬆: 做事前多想一想,這樣做事的時候就不會不顧此失彼,手忙腳亂,一旦事情一亂,你的心情也會更亂,於是,事情也就會更亂。最後,你只得重寫,這種事情太多了。而且,在工作中要學會享受,要學會放鬆心情,我並不是讓你工作的時候聊QQ,我只是說,有時候,心態過於緊張,壓力過大,你的工作成果反而更不好,從而又反過來造成新一輪的焦慮和緊張。我個人認為,思考和放鬆是可以完美統一的,思考其實就是一種放鬆,停下來,休息一下,回頭看看走過的路,喝口水,登個高,看看過去走的對不對?總體是個什麼樣?總結一下,然後看看前路怎麼樣好走,這會你才會越走越好,越走越快。好的程式設計師都不是那種埋頭苦幹的人,好的程式設計師總是那些善於總結成敗得失,善於思考,善於調整,善於放鬆的人(參看《優秀程式設計師的十個習慣》)。不然,我能看到的情形是,你很快地把事幹完,回到家剛坐下來,老闆或是客戶就打電話來告訴你你的程式出問題了。總之,深思熟慮,動作會很慢,但是你可以保證你工作成果的質量,反而能讓你更多的節約時間。
  • 學習歷史,跟上時代: 如果你是從十年前開始程式設計的,那麼,今天的這門語言或是技術會有很多很多的改進和改善。你以前開發一個功能或函式,今天早已被整合時了語言中,而且做得比你的版本要好得多。以前你需要100行程式碼完成的事情,今天只需要1行程式碼。這樣的事情在未來還會發生,所以,今天的你一定要學會如何跟上時代。但是,你也不要放棄歷史,我現在看到很多程式設計師對一些現代的語言和技術使用的非常好,他們可以很容易地跟上時代。但不要忘了,計算機世界的技術更新和技術淘汰也是非常猛的。所以,你一定要學習歷史,這些歷史不是產商的歷史,而是整個計算機文化的歷史(參見《Unix傳奇》)。只有通過歷史,你才能明白歷史上出現的問題,新技術出來的原因,這樣才能夠對今天的這些新的技術更瞭解,也才能明白明天的方向在哪裡。學習歷史和跟上時代都是相當重要的。使用新型的技術,停下來接受培訓,可以讓你工作得更快,更高效(參看《未來五年程式設計師需要掌握的10項技能》)。而學習和總結歷史,才會讓你在紛亂的世界中找到方向。
  • 積極推動測試活動: 只有測試才能證明軟體可以正常工作,只有測試才能保證軟體的質量。無論什麼產品,都需要經過或多或少的測試。測試地充分的產品或模組,你會發現其質量總是那麼好,測試的不充的產品,質量總是那麼次。德系汽車,日系汽車質量怎麼樣,關鍵還是在於怎麼去測試的,測試的是否充分。所以,在你開發軟體的過程中,如果你說你的程式寫地好,質量高,那麼請你拿出實實在在的測試報告。在整個軟體開發過程中,做為一個好的程式設計師,你應該積極地在各個環節推動專案組進行測試活動。不要以為技術需求階段和設計階段不需要測試,一樣的,只要你要release什麼,release的這個東西都需要進行測試。技術需求怎麼做測試?使用者案例就是測試案例。在軟體開發的整個過程中,保證產品質量有時候比實現需求更重要,尤其是那些非常重要甚至人命關天的產品。

上面這些五個觀點都是可能讓你在不完美的工作環境中可以工作得更好,更快,更高效,希望能夠對你有用。另外,也歡迎你留下你的觀點!