做一個優秀的程式設計師沒那麼簡單

CSDN發表於2014-10-26

在這個日新月異的行業,對PHP開發人員,或其他任何方面的開發人員來說,每天學習和掌握新知識,從而不斷地提高自己是十分必要的。成功的開發者都有一個共同點,就是他們會關注很多程式設計,很專業,並且會將良好的程式設計習慣作為一種藝術來看待。

本文將為您介紹如何通過程式設計“規範”成為一個更優秀的開發人員,同時,也許您還可以利用這些資訊來幫助別人成為一個更優秀的人。

如何成為一個專業人士?

專業,不管你正在做什麼工作,從自身開始要求。專業人員首先要有自己的個性和特點。正如在生活的各個領域,專業的程式設計人士總是受到推崇,下面讓我們來看一下你是如何成為一個專業人士的吧。

不要自我為中心

由於我熟練掌握這門技術,曾經有過在一個大型團隊工作的機會。最重要的是我早期所學到的團隊活力,就是那種團隊間攜手並進的協作。

在一個團隊,大部分時間你要做的就是互相學習,這種工作環境應該被讚揚和共享。如果你是一個傲慢或者自我的人,而且不想分享你的工作和知識,那麼在這種工作環境下工作,你一定會覺得不適應。

要有責任心

非專業人士不需要為他們的工作負責,他們認為那是經理的事。因此一到下午5點,就會忘了剛剛分配給他們的工作。

而一個專業的程式設計師是絕對不能接受這一點的。如果因為你的bug造成公司損失數千萬美元,你感覺如何?這個問題還要取決於管理層的解決方案,以及公司如何處理。每個公司都應該鼓勵開發者為他們自己的行為負責,更重要的是為他們所寫的程式碼負責。

如果你的錯誤已經危及到了伺服器,那麼請盡你最大的努力盡快解決它,即使需要你熬夜處理。這將有可能使你擺脫非專業人士的稱呼,並且還可能會獲得更高的薪水。

接受批評

沒有bug的軟體是不存在的,我們或多或少都會犯一些愚蠢的錯誤。而重要的是我們如何處理像“作為開發者你是怎麼考慮的”這樣的批評。任何批評都應該有可取之處,都值得你去學習,因為那樣會讓你在自己所處的工作崗位上變得更優秀,尤其是被比你有著更豐富經驗的人批評。

有良好的職業道德

成為一名專業人士是不容懈怠的,學習也不只是朝九晚五的事。不斷的學習,實踐和提高自己是對自己的一種投資,並且這是你自己的責任,而不是你僱主的。

你應該利用工作之外的時間來學習(即是說你不能佔用你僱主的時間,來學習最新的SitePoint教程。)嘿!很簡單的!學習起來吧!

你也許會說沒有充足的時間。那麼你錯了,你當然有!你一定要相信你很聰明。如果你想認真對待你的事業,那麼請把它當回事兒,專注些。早上早點起床,下午下班晚點走,利用這些額外時間,在不影響你的健康和家庭的情況下,來擴充套件你的優勢。下班前的短短半小時,也就意味著你每週會額外多出5個小時來學習。

如何寫出優質程式碼?

多看原始碼

熟能生巧,程式碼也一樣。如果不經常練習看程式碼,自然學不會快速閱讀。開發人員的工作是寫出優秀的程式碼,但是如果不多看看那些優秀的程式碼,你可能會有些力不從心。

大多數開發者經常是在還沒有接觸到原始碼時,就盲目使用第三方庫。當然這也並不是說不可以,但是如果要了解要想深層次理解這個庫究竟有多大的幫助,還需要進行深度挖掘,比如研究原始碼,原始碼中的註釋,以及進行執行測試等。同時,多看程式碼還會幫助你快速找到其他開發者的錯誤,這對你以後做程式碼審查或程式設計都有一定的幫助。

學習新技術

不斷的學習會讓你成為一個更優秀的程式設計師。

時時刻刻接受新事物,瞭解最新動向。一切事物都是變化的,但不變的是留在你大腦中的知識。一個優秀的開發人員從未停止過學習,甚至是花上15-20年時間。

放慢速度

放慢速度意味著要在你試圖解決的問題上多花些時間,而不是一味追求速度。

我見過一些初級開發人員為了完成任務,很快得就編寫出了程式碼,雖然速度快但導致程式碼質量不高,bug頻出。然後不得不坐下來,花費更多的時間來解決bug。中級開發人員的不僅懶惰而且還沒速率,而這卻關乎著每個人的利益,因為一個好的程式設計師不希望同一個工作被重複做兩遍。對於高階開發人員來說,實際上編寫程式碼要佔用他們整個任務三分之一的時間,而剩下的時間則用來思考更好的問題解決方案。

測試

這雖然不是一個TDD或TDD辯論,但是請記住,要提交出高質量的程式碼,任何性質的測試都是十分必要的。

如果你不對一件事進行測試,你怎麼知道它是不是可行呢?你知道幾個月前你做的程式碼庫是實現什麼樣的特定功能嗎?而通過測試,你才會瞭解程式碼實際是如何執行的。就如同一本書的目錄指南,測試是一個開發人員的嚮導,它指示你應該看哪,尋找什麼。首先,測試程式碼很重要,也不簡單,但是從長遠來看,以及無數次的實踐證明中,它都是十分有幫助的。

瞭解你的工具

要清楚了的解什麼樣的工具,可以有效的幫你來解決問題。其實大多數工具,到最後都只會偏愛於某一個工具,但是要知道,一個好的工具或庫可以幫你很多忙。

仔細想下你在編輯器中花費了多少時間,比如一個完全成熟的IDE,或者只是一個突出顯示的語法文字編輯器。此外,你還應該確定該項工作是否值得使用專門的庫?是否值得使用PHP框架?有哪些優缺點?使用笨拙的CMS,就能使專案成功嗎?在開始寫程式碼前,這些問題都是你應該考慮的。

如何保持跟蹤?

克服疲倦期

無止境的不斷的敲程式碼著實令人心生厭煩。一部分在這行待的時間久了的開發人員,在他們職業生涯的某個時刻也經歷過疲倦期。

職業倦怠跟工作時長有著密切的聯絡,也就是所謂的綜合症,同時也意味著一個開發人員經常會這樣認為,他還不夠好,所以為了使自己變得更好,他需要更努力的工作。然而,事實是,做的更多並不意味著更好。

最好的辦法是退後一步,避開這個週期,去做一些其他的事情,一些比較有創意的事兒。休個假,哪怕只是一兩天。當然也有另一種解決方案,慢慢得克服倦怠期。你可以找一個一起程式設計的團隊成員,與另一個人進行社互動動是非常有效的。

程式碼維護

持續追蹤意味著保持一個乾淨整齊的程式碼庫,不僅是為了別人,也是為自己。沒有測試或文件的程式碼就像俄羅斯賭盤。

當你回過頭來審視自己之前走的路或做的事,你會想到什麼?對於任務本身而言,也許你會花更多的時間來弄清楚你真正要做的。

我曾經見過客戶與開發人員無數次重構他們的專案,因為之前的團隊失去了興趣或者不再繼續工作了。而新團隊幾乎大部分時間的回應都是,專案必須重新寫。之所以會發生這種情況,是因為之前的團隊沒有維持一個乾淨齊整的,堅實的程式碼庫,這種做法需要花費大量的時間。建議大家讀下這篇文章:《Web開發中的18個關鍵性錯誤》,其中涉及到了如何使程式碼保持整潔的方法,還有其他的一些好的辦法。

評估

對很多程式設計師和管理人員來說,評估是一件很敏感的事,而且他們不應該“評估”。我確信每個人都遇到過這種情況,經理詢問開發人員某個專案需要花費多長時間的時候,他們期望得到明確的答案,但是實際上做這項專案所花費的時間則是最初評估的一倍。

然而,大多數人沒有意識到的是,評估只是猜測而不是承諾。要成為一個更優秀的開發人員,你應該知道估計絕不是承諾,因為一旦你承諾了一些事情,那將意味著你要為它負責。

“評估”也從來沒有人會承諾,因為它是一個不確定的性質。對於一個給定的任務,人們討厭去估算時間,但是如果你的經理一定要你給出一個時間,你完全可以告訴他,你不能承諾能夠100%按時完成。你可以猜測或者預測所需要的時間,但是不要作任何承諾。

如何成為一個管理者?

溝通

溝通是所有問題的關鍵。我曾經見過專案和公司由於團隊成員溝通不暢,而導致鬧矛盾,甚至分解破裂。

忽略所有溝通中的“中間人”,簡單直接的溝通是最有效的。因為在溝通過程中,任何一箇中間人的資訊都有可能是不完全對的,從而容易導致資訊被曲解。

企業應該是最深有感受的,這也是它效率慢的原因,因為做出的每一個決定都必須經過十幾個人,而這正是小團隊的優勢所在。簡單明瞭的溝通方式意味著你可以比別人更快得到資訊,你可以更清晰明確得理解你的任務,對你來說這是一個優勢,所以千萬不要害怕去問一些具體的問題。

協作

除了成為一個好的交流者,你還需要一個好的合作者,讓我們面對現實吧,程式設計師其實並不是最社會的人。

你不僅需要和其他開發人員進行合作,還要與你的經理,也許還有你的直接客戶進行協作。合作不僅意味著共同協作完成工作,還意味著你要知道其中的利害攸關,這是一種很好的團隊協作精神。如果你覺得很難和其他人有效地合作,可以嘗試一下結對程式設計,結對程式設計的本質就是合作。

知識偏差

維基百科的解釋:“知識偏差是一種認知上的偏差,這種偏差導致聰明的人很難從知情人士的角度來正常思考問題。”

基本上,資深開發人員很難解釋一個簡單的問題,來讓初級開發人員理解。這是因為他們都非常熟悉這些問題,並且可以通過自己的技術來解決它,但是當他們嘗試去解釋給別人的時候,卻失敗了,因為他們的解釋只是他們腦中的一個總結。

簡單的說,當你認為知道一些東西的時候,其實你還沒有真正瞭解它。為了打破這點,你需要使用特定的語言。在解釋一個簡單的細節的時候,你可能會覺得很可笑,但是請繼續,因為你的心態並不等於接受者的心態。也許你認為很簡單,但是聽講的人可不一定這樣認為。

瞭解你的領域

如果你認為自己是程式設計專家,然後要做一個在程式設計領域有所建樹的專家。那麼請了解並熟知你的領域,不要害怕說不,即使你覺得說多了不合適。

簡而言之,作為一個專家,你要敢於說不,因為那意味著你在捍衛你的真理,在你的同齡人當中,你大多數時間都可能是對的。瞭解你的領域並不意味著你一定要有一個CS學位,而是說你要在你所在的領域中,有一定的經驗和實踐。你需要提高自己的技能,不僅僅侷限於程式設計,而是在整個計算機領域。作為一個專家也意味著你可以找到一個問題的最佳程式設計設計方案,這也是編碼的“副作用”。

瞭解你的業務

在不知道業務的問題,以及他們正在試圖解決你的程式碼的情況下,沒有人可以創造出良好的軟體。

你需要對你的業務積極主動,並且要有興趣,因為那將反映出你的工作狀態。如果沒有清晰的目標和具體的問題,程式碼會在不經意間變得很混亂,這就是程式碼如何運作的。你需要嚴控哪些功能,特別是如何控制,但是對於業務的價值,你必須十分清楚。

如果你覺得你的專業知識和業務目標調整的不是很好,那麼請不要接受這份工作。珍惜你的時間,因為它是無價的。

程式碼套路

要不斷完善自己,首先要清楚的知道自己處於什麼水平。

對於程式設計師來說,程式碼套路是種練習方式,通過實踐和尋找更好的不同問題的解決方案,來提高自己的技能。你可以在Euler、CodeKata或者Topcoder這些專案中試著研究程式碼套路。Topcoder甚至為那些找到更好的解決方案的程式設計人員提供了獎品。

總結

程式設計體現出的更多的則是社交技巧。要成為一個優秀的程式設計師,首先你必須獨立工作,如果你是一個比較內向的人。然後,熟練掌握程式設計原理。

你要不斷地提升自己,不斷地學習。要真正實現職業化,你需要了解你的業務,以及你正在試圖解決的程式碼問題。程式碼是整個問題解決方案的一個副產品,只是貢獻了一小部分力量。而解決方案的思路,協作技能,以及你解決問題需要使用的工具才是讓你成為一個受人尊敬的專業人士的關鍵。

更多關於成為一名專業人士的要素,或者任何你想新增到這個列表中的要素,大家都可以新增到評論中。

相關文章