本文由碼農(nóng)網(wǎng) – 小峰原創(chuàng)翻譯,轉(zhuǎn)載請(qǐng)看清文末的轉(zhuǎn)載要求,歡迎參與我們的付費(fèi)投稿計(jì)劃!
老實(shí)說(shuō),如果你google搜索“程序員的好習(xí)慣”這方面的內(nèi)容,那么就會(huì)有很多大同小異的文章映入你的眼簾。
但是今天我想從一個(gè)略有不同的角度來(lái)探討這個(gè)主題。不是關(guān)于如何更擅長(zhǎng)編程,而是如何使程序員更有市場(chǎng)競(jìng)爭(zhēng)力。
不要曲解我上面的意思。更擅長(zhǎng)編程肯定能讓程序員賺更多的錢。但這方面的提高可能最終會(huì)受到邊際報(bào)酬遞減的影響。我今天要談?wù)摰囊恍?shí)踐方法,在程序員要求加薪或?qū)で笮鹿ぷ鞯臅r(shí)候,搞不好會(huì)讓收益產(chǎn)生巨大的爆炸。
我將從與人直覺(jué)相反的這一方面開(kāi)始。我已經(jīng)數(shù)不清我碰到過(guò)多少人認(rèn)為編寫(xiě)一些不可思議的、復(fù)雜的代碼可以為他們提供工作的保障。“如果除了我其他人都不知道薪資報(bào)告模塊是如何工作的話,上面就肯定不敢炒我魷魚(yú)!”
當(dāng)然,這在理論上可能是對(duì)的(盡管有太多的人在說(shuō)這句話的時(shí)候往往高估了自己)。雖然企業(yè)老板可能不會(huì)炒掉你,但他們也不會(huì)支付你很多薪水。如果公司不能在薪資報(bào)告模塊上失去你,那么自然而然也不會(huì)晉升你。它不會(huì)把你放到另一個(gè)更受人矚目的項(xiàng)目上。這樣做只會(huì)讓你牢固地待在當(dāng)前位置,就像死水一樣波瀾不驚。
而且,不要自欺欺人地以為這也可以測(cè)試市場(chǎng)反應(yīng)。企業(yè)總是希望程序員能夠編寫(xiě)干凈、可維護(hù)的代碼。他們需要刷掉不合格的人以滿足業(yè)務(wù)需求。如果你的簡(jiǎn)歷主要特點(diǎn)是“精通尋租行為”,那么你就不會(huì)有很多選擇,因?yàn)樵谝淮斡忠淮蔚臅x升考驗(yàn)中,你的老板總是會(huì)略過(guò)你。
不要走那條錯(cuò)誤的路。與之相反,你需要編寫(xiě)能夠使其他人受益的代碼,并讓業(yè)務(wù)靈活起來(lái),無(wú)論是在項(xiàng)目人員配置上還是在對(duì)代碼進(jìn)行更改的時(shí)候。
在編程世界中,所謂的“快樂(lè)路徑”提出了一種高度樂(lè)觀的情景。沿著快樂(lè)路徑行進(jìn),沒(méi)有出錯(cuò)的地方,也沒(méi)有錯(cuò)誤發(fā)生。
很多時(shí)候,程序員在編程中犯錯(cuò)誤卻反而發(fā)現(xiàn)了快樂(lè)路徑。比如說(shuō),他們實(shí)現(xiàn)一個(gè)用戶登錄頁(yè)面,當(dāng)用戶鍵入正確的用戶名和密碼時(shí),登錄成功。但是,如果她輸入錯(cuò)誤的話,app就會(huì)崩潰。但如果她有一個(gè)沒(méi)填的話,那么app就會(huì)將其作為管理員登錄。哇哦。
不能說(shuō)明不快樂(lè)路徑的場(chǎng)景是程序員面臨的一個(gè)常見(jiàn)陷阱。事實(shí)上,之所以會(huì)產(chǎn)生這樣的思維是因?yàn)槲覀冊(cè)谲浖_(kāi)發(fā)的過(guò)程中嵌入了自己的假設(shè)。于是就算是寫(xiě)代碼的同一個(gè)人也無(wú)法來(lái)測(cè)試代碼。
在編寫(xiě)和測(cè)試代碼時(shí),學(xué)會(huì)廣泛地去推理不快樂(lè)路徑的場(chǎng)景。如果作為開(kāi)發(fā)者的你能夠因?yàn)樵谕评聿豢鞓?lè)路徑方面一次成功而出名,那么你對(duì)細(xì)節(jié)的注重將為你賺到更多的酬勞。
也許你一直堅(jiān)持反對(duì)軟件行業(yè)自動(dòng)化測(cè)試的安裝驗(yàn)收。也許你甚至能編寫(xiě)比那些TDD和ATDD程序員更好的代碼。在某種意義上,兩者之間真的沒(méi)有關(guān)系。
不要誤會(huì)我。我是自動(dòng)測(cè)試的瘋狂支持者,因?yàn)樗τ镁薮蟛⑶铱梢愿倪M(jìn)代碼庫(kù)。我不但自己實(shí)踐TDD,還會(huì)去教別人這樣去做。
但是,大家對(duì)于職業(yè)生涯中關(guān)于功用是否應(yīng)該排在錢包后面的討論,各執(zhí)一詞。抵制者還是支持者是否正確變得無(wú)關(guān)緊要。企業(yè)越來(lái)越多地要求這種技能出現(xiàn)在求職者的簡(jiǎn)歷上,但卻沒(méi)有一家公司的職位說(shuō)明上會(huì)寫(xiě)“絕不能編寫(xiě)單元測(cè)試”。學(xué)會(huì)寫(xiě)自動(dòng)化測(cè)試,然后見(jiàn)證工作前景的蓬勃發(fā)展。
為什么你要在這里使用工廠模式?為什么你選擇那個(gè)特定的Javascript框架?如果你在回答這類問(wèn)題時(shí)使用“因?yàn)檫@是正確方法”諸如此類的答案,那么就不會(huì)給你帶來(lái)任何好處。
這個(gè)世界在很大程度上依賴于軟件和軟件開(kāi)發(fā)者的傳遞性。我們擁有經(jīng)常使我們處于權(quán)威地位的專業(yè)知識(shí),特別是在與非技術(shù)人員或不太有經(jīng)驗(yàn)的利益相關(guān)者打交道的時(shí)候。因此,你會(huì)發(fā)現(xiàn),你經(jīng)常采取的是那種大家嘗試的做法,“我說(shuō)怎么做就怎么做”。
抵制這樣做的沖動(dòng)。至少,要解釋你的推理。使用類比和其他方式來(lái)幫助人們理解,即使他們?nèi)狈δ銚碛械募夹g(shù)經(jīng)驗(yàn)。最重要的是,學(xué)習(xí)從經(jīng)驗(yàn)出發(fā)去做案例,同時(shí)借鑒研究、實(shí)驗(yàn)數(shù)據(jù)或?qū)<乙庖?jiàn)。職業(yè)生涯需要在技術(shù)的氛圍中才能發(fā)展,所以那些學(xué)習(xí)將編程決策證明也是商業(yè)決策的人會(huì)發(fā)現(xiàn)他們占據(jù)了領(lǐng)導(dǎo)地位。
說(shuō)到業(yè)務(wù)對(duì)你自己的錢包的重要性,那么你能描述你寫(xiě)的某一行給定代碼是如何幫助業(yè)務(wù)嗎?你剛添加的用于停止SQL注入的代碼行——是幫助你避免砸自己的招牌嗎?避免被訴訟嗎?如果它實(shí)際上并不能提供任何幫助,那怎么辦?
如果有人付錢讓你寫(xiě)軟件,那么你的輸出結(jié)果就應(yīng)該產(chǎn)出經(jīng)濟(jì)效益。學(xué)習(xí)并了解這個(gè)利益關(guān)系。發(fā)展向任何人解答這方面內(nèi)容的能力。
對(duì)最新的客戶端技術(shù)或在云中進(jìn)行加速的能力感到興奮的開(kāi)發(fā)人員比比皆是。對(duì)這些東西感到興奮,并且了解如何使用這些能力來(lái)賺錢的開(kāi)發(fā)者就少見(jiàn)的多了。
如果你能針對(duì)產(chǎn)品特征好好培養(yǎng)對(duì)業(yè)務(wù)動(dòng)機(jī)的理解,那么你就能做得更好。你會(huì)找到既能節(jié)省時(shí)間又同樣能實(shí)現(xiàn)業(yè)務(wù)目標(biāo)的替代方法。或者,當(dāng)有一個(gè)產(chǎn)品特征證明不可能實(shí)現(xiàn)時(shí),你可以提出能降低一部分成本的建議。
企業(yè)(特別是真正支付薪水的大boss)喜歡這種軟件人的思維。這將意味著你可以晉升,提供咨詢服務(wù)以及擔(dān)任領(lǐng)導(dǎo)角色。
正如我前面提到的,擅長(zhǎng)編程代表了職業(yè)生涯的其中一個(gè)方面,并且是一個(gè)重要的方面。建議大家多考慮許多其他的方面,并且有目的地去發(fā)展和培養(yǎng)那些習(xí)慣。在你自己的時(shí)間里,你應(yīng)該通過(guò)一切手段,愛(ài)上這個(gè)職業(yè)。當(dāng)然還要確保你可以為他人和為自己賺到錢。
譯文鏈接:http://www.codeceo.com/article/habits-pay-off-for-programmer.html
英文原文:Habits That Pay Off for Programmers
翻譯作者:碼農(nóng)網(wǎng) – 小峰
[ 轉(zhuǎn)載必須在正文中標(biāo)注并保留原文鏈接、譯文鏈接和譯者等信息。]
聯(lián)系客服