http://www.codeceo.com/article/habits-pay-off-for-programmer.htmlhtml
*******************************************************程序員
老實說,若是你google搜索「程序員的好習慣」這方面的內容,那麼就會有不少大同小異的文章映入你的眼簾。編程
可是今天我想從一個略有不一樣的角度來探討這個主題。不是關於如何更擅長編程,而是如何使程序員更有市場競爭力。app
不要曲解我上面的意思。更擅長編程確定能讓程序員賺更多的錢。但這方面的提升可能最終會受到邊際報酬遞減的影響。我今天要談論的一些實踐方法,在程序員要求加薪或尋求新工做的時候,搞很差會讓收益產生巨大的爆炸。框架
我將從與人直覺相反的這一方面開始。我已經數不清我碰到過多少人認爲編寫一些難以想象的、複雜的代碼能夠爲他們提供工做的保障。「若是除了我其餘人都不知道薪資報告模塊是如何工做的話,上面就確定不敢炒我魷魚!」單元測試
固然,這在理論上多是對的(儘管有太多的人在說這句話的時候每每高估了本身)。雖然企業老闆可能不會炒掉你,但他們也不會支付你不少薪水。若是公司不能在薪資報告模塊上失去你,那麼天然而然也不會晉升你。它不會把你放到另外一個更受人矚目的項目上。這樣作只會讓你牢固地待在當前位置,就像死水同樣波瀾不驚。學習
並且,不要自欺欺人地覺得這也能夠測試市場反應。企業老是但願程序員可以編寫乾淨、可維護的代碼。他們須要刷掉不合格的人以知足業務需求。若是你的簡歷主要特色是「精通尋租行爲」,那麼你就不會有不少選擇,由於在一次又一次的晉升考驗中,你的老闆老是會略過你。測試
不要走那條錯誤的路。與之相反,你須要編寫可以使其餘人受益的代碼,並讓業務靈活起來,不管是在項目人員配置上仍是在對代碼進行更改的時候。google
在編程世界中,所謂的「快樂路徑」提出了一種高度樂觀的情景。沿着快樂路徑行進,沒有出錯的地方,也沒有錯誤發生。spa
不少時候,程序員在編程中犯錯誤卻反而發現了快樂路徑。好比說,他們實現一個用戶登陸頁面,當用戶鍵入正確的用戶名和密碼時,登陸成功。可是,若是她輸入錯誤的話,app就會崩潰。但若是她有一個沒填的話,那麼app就會將其做爲管理員登陸。哇哦。
不能說明不快樂路徑的場景是程序員面臨的一個常見陷阱。事實上,之因此會產生這樣的思惟是由於咱們在軟件開發的過程當中嵌入了本身的假設。因而就算是寫代碼的同一我的也沒法來測試代碼。
在編寫和測試代碼時,學會普遍地去推理不快樂路徑的場景。若是做爲開發者的你可以由於在推理不快樂路徑方面一次成功而出名,那麼你對細節的注重將爲你賺到更多的酬勞。
也許你一直堅持反對軟件行業自動化測試的安裝驗收。也許你甚至能編寫比那些TDD和ATDD程序員更好的代碼。在某種意義上,二者之間真的沒有關係。
不要誤會我。我是自動測試的瘋狂支持者,由於它功用巨大而且能夠改進代碼庫。我不但本身實踐TDD,還會去教別人這樣去作。
可是,你們對於職業生涯中關於功用是否應該排在錢包後面的討論,各執一詞。抵制者仍是支持者是否正確變得可有可無。企業愈來愈多地要求這種技能出如今求職者的簡歷上,但卻沒有一家公司的職位說明上會寫「毫不能編寫單元測試」。學會寫自動化測試,而後見證工做前景的蓬勃發展。
爲何你要在這裏使用工廠模式?爲何你選擇那個特定的Javascript框架?若是你在回答這類問題時使用「由於這是正確方法」諸如此類的答案,那麼就不會給你帶來任何好處。
這個世界在很大程度上依賴於軟件和軟件開發者的傳遞性。咱們擁有常常使咱們處於權威地位的專業知識,特別是在與非技術人員或不太有經驗的利益相關者打交道的時候。所以,你會發現,你常常採起的是那種你們嘗試的作法,「我說怎麼作就怎麼作」。
抵制這樣作的衝動。至少,要解釋你的推理。使用類比和其餘方式來幫助人們理解,即便他們缺少你擁有的技術經驗。最重要的是,學習從經驗出發去作案例,同時借鑑研究、實驗數據或專家意見。職業生涯須要在技術的氛圍中才能發展,因此那些學習將編程決策證實也是商業決策的人會發現他們佔據了領導地位。
說到業務對你本身的錢包的重要性,那麼你能描述你寫的某一行給定代碼是如何幫助業務嗎?你剛添加的用於中止SQL注入的代碼行——是幫助你避免砸本身的招牌嗎?避免被訴訟嗎?若是它實際上並不能提供任何幫助,那怎麼辦?
若是有人付錢讓你寫軟件,那麼你的輸出結果就應該產出經濟效益。學習並瞭解這個利益關係。發展向任何人解答這方面內容的能力。
對最新的客戶端技術或在雲中進行加速的能力感到興奮的開發人員比比皆是。對這些東西感到興奮,而且瞭解如何使用這些能力來賺錢的開發者就少見的多了。
若是你能針對產品特徵好好培養對業務動機的理解,那麼你就能作得更好。你會找到既能節省時間又一樣能實現業務目標的替代方法。或者,當有一個產品特徵證實不可能實現時,你能夠提出能下降一部分紅本的建議。
企業(特別是真正支付薪水的大boss)喜歡這種軟件人的思惟。這將意味着你能夠晉升,提供諮詢服務以及擔任領導角色。
正如我前面提到的,擅長編程表明了職業生涯的其中一個方面,而且是一個重要的方面。建議你們多考慮許多其餘的方面,而且有目的地去發展和培養那些習慣。在你本身的時間裏,你應該經過一切手段,愛上這個職業。固然還要確保你能夠爲他人和爲本身賺到錢。
譯文連接:http://www.codeceo.com/article/habits-pay-off-for-programmer.html
英文原文:Habits That Pay Off for Programmers
翻譯做者:碼農網 – 小峯