做一名優秀的開發者可沒有說的那么簡單
英文原文:How to be a Good Developer
在這個日新月異的行業,對 PHP 開發人員,或其他任何方面的開發人員來說,每天學習和掌握新知識,從而不斷地提高自己是十分必要的。成功的開發者都有一個共同點,就是他們會關注很多編程,很專業,并且會將良好的編程習慣作為一種藝術來看待。
本文將為您介紹如何通過編程“規范”成為一個更優秀的開發人員,同時,也許您還可以利用這些信息來幫助別人成為一個更優秀的人。
如何成為一個專業人士?
專業,不管你正在做什么工作,從自身開始要求。專業人員首先要有自己的個性和特點。正如在生活的各個領域,專業的編程人士總是受到推崇,下面讓我們來看一下你是如何成為一個專業人士的吧。
不要自我為中心
由于我熟練掌握這門技術,曾經有過在一個大型團隊工作的機會。最重要的是我早期所學到的團隊活力,就是那種團隊間攜手并進的協作。
在一個團隊,大部分時間你要做的就是互相學習,這種工作環境應該被贊揚和共享。如果你是一個傲慢或者自我的人,而且不想分享你的工作和知識,那么在這種工作環境下工作,你一定會覺得不適應。
要有責任心
非專業人士不需要為他們的工作負責,他們認為那是經理的事。因此一到下午 5 點,就會忘了剛剛分配給他們的工作。
而一個專業的程序員是絕對不能接受這一點的。如果因為你的 bug 造成公司損失數千萬美元,你感覺如何?這個問題還要取決于管理層的解決方案,以及公司如何處理。每個公司都應該鼓勵開發者為他們自己的行為負責,更重要的是為他們所寫的代碼負責。
如果你的錯誤已經危及到了服務器,那么請盡你最大的努力盡快解決它,即使需要你熬夜處理。這將有可能使你擺脫非專業人士的稱呼,并且還可能會獲得更高的薪水。
接受批評
沒有 bug 的軟件是不存在的,我們或多或少都會犯一些愚蠢的錯誤。而重要的是我們如何處理像“作為開發者你是怎么考慮的”這樣的批評。任何批評都應該有可取之處,都 值得你去學習,因為那樣會讓你在自己所處的工作崗位上變得更優秀,尤其是被比你有著更豐富經驗的人批評。
有良好的職業道德
成為一名專業人士是不容懈怠的,學習也不只是朝九晚五的事。不斷的學習,實踐和提高自己是對自己的一種投資,并且這是你自己的責任,而不是你雇主的。
你應該利用工作之外的時間來學習(即是說你不能占用你雇主的時間,來學習最新的 SitePoint 教程。)嘿!很簡單的!學習起來吧!
你也許會說沒有充足的時間。那么你錯了,你當然有!你一定要相信你很聰明。如果你想認真對待你的事業,那么請把它當回事兒,專注些。早上早點起 床,下午下班晚點走,利用這些額外時間,在不影響你的健康和家庭的情況下,來擴展你的優勢。下班前的短短半小時,也就意味著你每周會額外多出 5 個小時來學習。
如何寫出優質代碼?
多看源代碼
熟能生巧,代碼也一樣。如果不經常練習看代碼,自然學不會快速閱讀。開發人員的工作是寫出優秀的代碼,但是如果不多看看那些優秀的代碼,你可能會有些力不從心。
大多數開發者經常是在還沒有接觸到源碼時,就盲目使用第三方庫。當然這也并不是說不可以,但是如果要了解要想深層次理解這個庫究竟有多大的幫 助,還需要進行深度挖掘,比如研究源碼,源碼中的注釋,以及進行運行測試等。同時,多看代碼還會幫助你快速找到其他開發者的錯誤,這對你以后做代碼審查或 編程都有一定的幫助。
學習新技術
不斷的學習會讓你成為一個更優秀的程序員。
時時刻刻接受新事物,了解最新動向。一切事物都是變化的,但不變的是留在你大腦中的知識。一個優秀的開發人員從未停止過學習,甚至是花上 15-20 年時間。
放慢速度
放慢速度意味著要在你試圖解決的問題上多花些時間,而不是一味追求速度。
我見過一些初級開發人員為了完成任務,很快得就編寫出了代碼,雖然速度快但導致代碼質量不高,bug 頻出。然后不得不坐下來,花費更多的時間來解決 bug。中級開發人員的不僅懶惰而且還沒速率,而這卻關乎著每個人的利益,因為一個好的程序員不希望同一個工作被重復做兩遍。對于高級開發人員來說,實際 上編寫代碼要占用他們整個任務三分之一的時間,而剩下的時間則用來思考更好的問題解決方案。
測試
這雖然不是一個 TDD 或 TDD 辯論,但是請記住,要提交出高質量的代碼,任何性質的測試都是十分必要的。
如果你不對一件事進行測試,你怎么知道它是不是可行呢?你知道幾個月前你做的代碼庫是實現什么樣的特定功能嗎?而通過測試,你才會了解代碼實際 是如何運行的。就如同一本書的目錄指南,測試是一個開發人員的向導,它指示你應該看哪,尋找什么。首先,測試代碼很重要,也不簡單,但是從長遠來看,以及 無數次的實踐證明中,它都是十分有幫助的。
了解你的工具
要清楚了的解什么樣的工具,可以有效的幫你來解決問題。其實大多數工具,到最后都只會偏愛于某一個工具,但是要知道,一個好的工具或庫可以幫你很多忙。
仔細想下你在編輯器中花費了多少時間,比如一個完全成熟的 IDE,或者只是一個突出顯示的語法文本編輯器。此外,你還應該確定該項工作是否值得使用專門的庫?是否值得使用 PHP 框架?有哪些優缺點?使用笨拙的 CMS,就能使項目成功嗎?在開始寫代碼前,這些問題都是你應該考慮的。
如何保持跟蹤?
克服疲倦期
無止境的不斷的敲代碼著實令人心生厭煩。一部分在這行待的時間久了的開發人員,在他們職業生涯的某個時刻也經歷過疲倦期。
職業倦怠跟工作時長有著密切的聯系,也就是所謂的綜合癥,同時也意味著一個開發人員經常會這樣認為,他還不夠好,所以為了使自己變得更好,他需要更努力的工作。然而,事實是,做的更多并不意味著更好。
最好的辦法是退后一步,避開這個周期,去做一些其他的事情,一些比較有創意的事兒。休個假,哪怕只是一兩天。當然也有另一種解決方案,慢慢得克服倦怠期。你可以找一個一起編程的團隊成員,與另一個人進行社交互動是非常有效的。
代碼維護
持續追蹤意味著保持一個干凈整齊的代碼庫,不僅是為了別人,也是為自己。沒有測試或文檔的代碼就像俄羅斯賭盤。
當你回過頭來審視自己之前走的路或做的事,你會想到什么?對于任務本身而言,也許你會花更多的時間來弄清楚你真正要做的。
我曾經見過客戶與開發人員無數次重構他們的項目,因為之前的團隊失去了興趣或者不再繼續工作了。而新團隊幾乎大部分時間的回應都是,項目必須重 新寫。之所以會發生這種情況,是因為之前的團隊沒有維持一個干凈齊整的,堅實的代碼庫,這種做法需要花費大量的時間。建議大家讀下這篇文章:《18 Critical Oversights in Web Development》,其中涉及到了如何使代碼保持整潔的方法,還有其他的一些好的辦法。
評估
對很多程序員和管理人員來說,評估是一件很敏感的事,而且他們不應該“評估”。我確信每個人都遇到過這種情況,經理詢問開發人員某個項目需要花費多長時間的時候,他們期望得到明確的答案,但是實際上做這項項目所花費的時間則是最初評估的一倍。
然而,大多數人沒有意識到的是,評估只是猜測而不是承諾。要成為一個更優秀的開發人員,你應該知道估計絕不是承諾,因為一旦你承諾了一些事情,那將意味著你要為它負責。
“評估”也從來沒有人會承諾,因為它是一個不確定的性質。對于一個給定的任務,人們討厭去估算時間,但是如果你的經理一定要你給出一個時間,你完全可以告訴他,你不能承諾能夠 100% 按時完成。你可以猜測或者預測所需要的時間,但是不要作任何承諾。
如何成為一個管理者?
溝通
溝通是所有問題的關鍵。我曾經見過項目和公司由于團隊成員溝通不暢,而導致鬧矛盾,甚至分解破裂。
忽略所有溝通中的“中間人”,簡單直接的溝通是最有效的。因為在溝通過程中,任何一個中間人的信息都有可能是不完全對的,從而容易導致信息被曲解。
企業應該是最深有感受的,這也是它效率慢的原因,因為做出的每一個決定都必須經過十幾個人,而這正是小團隊的優勢所在。簡單明了的溝通方式意味著你可以比別人更快得到信息,你可以更清晰明確得理解你的任務,對你來說這是一個優勢,所以千萬不要害怕去問一些具體的問題。
協作
除了成為一個好的交流者,你還需要一個好的合作者,讓我們面對現實吧,程序員其實并不是最社會的人。
你不僅需要和其他開發人員進行合作,還要與你的經理,也許還有你的直接客戶進行協作。合作不僅意味著共同協作完成工作,還意味著你要知道其中的利害攸關,這是一種很好的團隊協作精神。如果你覺得很難和其他人有效地合作,可以嘗試一下結對編程,結對編程的本質就是合作。
知識偏差
維基百科的解釋:“知識偏差是一種認知上的偏差,這種偏差導致聰明的人很難從知情人士的角度來正常思考問題。”
基本上,資深開發人員很難解釋一個簡單的問題,來讓初級開發人員理解。這是因為他們都非常熟悉這些問題,并且可以通過自己的技術來解決它,但是當他們嘗試去解釋給別人的時候,卻失敗了,因為他們的解釋只是他們腦中的一個總結。
簡單的說,當你認為知道一些東西的時候,其實你還沒有真正了解它。為了打破這點,你需要使用特定的語言。在解釋一個簡單的細節的時候,你可能會覺得很可笑,但是請繼續,因為你的心態并不等于接受者的心態。也許你認為很簡單,但是聽講的人可不一定這樣認為。
了解你的領域
如果你認為自己是編程專家,然后要做一個在編程領域有所建樹的專家。那么請了解并熟知你的領域,不要害怕說不,即使你覺得說多了不合適。
簡而言之,作為一個專家,你要敢于說不,因為那意味著你在捍衛你的真理,在你的同齡人當中,你大多數時間都可能是對的。了解你的領域并不意味著 你一定要有一個 CS 學位,而是說你要在你所在的領域中,有一定的經驗和實踐。你需要提高自己的技能,不僅僅局限于編程,而是在整個計算機領域。作為一個專家也意味著你可以找 到一個問題的最佳編程設計方案,這也是編碼的“副作用”。
了解你的業務
在不知道業務的問題,以及他們正在試圖解決你的代碼的情況下,沒有人可以創造出良好的軟件。
你需要對你的業務積極主動,并且要有興趣,因為那將反映出你的工作狀態。如果沒有清晰的目標和具體的問題,代碼會在不經意間變得很混亂,這就是代碼如何運作的。你需要嚴控哪些功能,特別是如何控制,但是對于業務的價值,你必須十分清楚。
如果你覺得你的專業知識和業務目標調整的不是很好,那么請不要接受這份工作。珍惜你的時間,因為它是無價的。
代碼套路
要不斷完善自己,首先要清楚的知道自己處于什么水平。
對于程序員來說,代碼套路是種練習方式,通過實踐和尋找更好的不同問題的解決方案,來提高自己的技能。你可以在 Euler、CodeKata 或者 Topcoder 這些項目中試著研究代碼套路。Topcoder 甚至為那些找到更好的解決方案的編程人員提供了獎品。
總結
編程體現出的更多的則是社交技巧。要成為一個優秀的程序員,首先你必須獨立工作,如果你是一個比較內向的人。然后,熟練掌握編程原理。
你要不斷地提升自己,不斷地學習。要真正實現職業化,你需要了解你的業務,以及你正在試圖解決的代碼問題。代碼是整個問題解決方案的一個副產 品,只是貢獻了一小部分力量。而解決方案的思路,協作技能,以及你解決問題需要使用的工具才是讓你成為一個受人尊敬的專業人士的關鍵。
更多關于成為一名專業人士的要素,或者任何你想添加到這個列表中的要素,大家都可以添加到評論中。
<span id="shareA4" class="fl">
</span>