溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

編程生涯 21 載,那些我踩過(guò)的坑

發(fā)布時(shí)間:2020-08-09 22:15:31 來(lái)源:ITPUB博客 閱讀:115 作者:千鋒Python唐小強(qiáng) 欄目:web開發(fā)

“作為一個(gè)有著21歲編程年齡的中年程序員,我可以自豪地說(shuō),我成功地經(jīng)歷了軟件行業(yè)這個(gè)充滿變數(shù)的世界的高峰和低谷。這篇文章記錄了迄今為止我在軟件開發(fā)的職業(yè)生涯中所犯的錯(cuò)誤,同時(shí)也是如何避免這些錯(cuò)誤的一本指南。”

編程生涯 21 載,那些我踩過(guò)的坑

感覺一切就像發(fā)生在昨天一樣。今天我在這里,作為一個(gè)有著21歲編程年齡的中年程序員,可以在博客上自豪地說(shuō),我成功地經(jīng)歷了軟件行業(yè)這個(gè)充滿變數(shù)的世界的高峰和低谷。是的,至少我可以說(shuō),今天對(duì)我來(lái)說(shuō)是一個(gè)標(biāo)志性的時(shí)刻。

俗話說(shuō),犯錯(cuò)是通向偉大的學(xué)習(xí)之路的一部分,快速而經(jīng)常的失敗是成功的標(biāo)志。人們應(yīng)該優(yōu)先考慮的是:如何避免犯一次以上的同樣的錯(cuò)誤。

是的,從自己的經(jīng)歷中吸收經(jīng)驗(yàn)和教訓(xùn)是最有效的學(xué)習(xí)方式,但是通過(guò)借鑒他人的經(jīng)驗(yàn)而獲得知識(shí)是一種更快,更聰明的方法,它可以減輕痛苦。畢竟,生命是短暫的,你不可能在一輩子的時(shí)間里犯下所有可能的錯(cuò)誤。

從事一份軟件開發(fā)工作是掌握你的技術(shù)之旅的開始。和任何領(lǐng)域一樣,你會(huì)面臨各種挑戰(zhàn),你有機(jī)會(huì)做正確的事,同樣你也有可能做完全錯(cuò)誤的事。這篇文章記錄了迄今為止我在軟件開發(fā)的職業(yè)生涯中所犯的錯(cuò)誤,同時(shí)也是如何避免這些錯(cuò)誤的一本指南。

不把薪水存起來(lái),以備不時(shí)之需

你的職業(yè)生涯的軌跡在很大程序上取決于你決定如何花掉你最初的薪水。你會(huì)很想把這些錢花在買一輛更好的汽車,更換你的衣服,和去更高檔的餐廳上。

雖然偶爾揮霍并沒有錯(cuò),但你需要計(jì)劃把錢花在獲取知識(shí)上。這不僅能給你帶來(lái)最大的投資回報(bào),而且還會(huì)隨著時(shí)間的流逝持續(xù)給你帶來(lái)好處。

讓自己變得不可或缺

盡管對(duì)擁有讓自己變成不可或缺的力量的追求會(huì)很誘人,但如果你一直這樣做,你會(huì)傷害到你自己的成長(zhǎng)。

永遠(yuǎn)記住,如果你想追求更高的目標(biāo),你需要讓自己從低的目標(biāo)中解脫出來(lái),培養(yǎng)并指導(dǎo)一個(gè)接班人來(lái)接替你。

自斷退路

即使你已經(jīng)成為一個(gè)優(yōu)秀的、舉足輕重的、炙手可熱的開發(fā)人員,你也不可以燒掉自己的“橋”(譯注:自斷退路)和挑起不必要的爭(zhēng)斗。軟件開發(fā)行業(yè)是一個(gè)小圈子,你現(xiàn)在正在燒掉的“橋”會(huì)在你最需要它們的時(shí)候給你帶來(lái)麻煩。

即使是和你不喜歡的人相處,你也要謙虛,誠(chéng)懇并維持良好的關(guān)系。

不分享知識(shí)

根據(jù)我的經(jīng)驗(yàn),精通技術(shù)是贏得團(tuán)隊(duì)成員尊重的最可持續(xù)的方式。話雖如此,但是精通技術(shù)而不與團(tuán)隊(duì)成員分享知識(shí),必然會(huì)給你帶來(lái)災(zāi)難性的后果。

精通知識(shí)是成功的一半,而分享它則是成功的另一半。優(yōu)秀的程序員會(huì)和新手程序員交流,并向他們展示解決問(wèn)題的方法。他們不僅會(huì)告訴新人們?nèi)绾谓鉀Q問(wèn)題,而且會(huì)解釋為什么他們采用這種方式解決問(wèn)題。

忽視“軟”技能

程序員有時(shí)會(huì)忘記軟件開發(fā)是一項(xiàng)團(tuán)隊(duì)運(yùn)動(dòng),而一個(gè)項(xiàng)目是一群人的共同任務(wù),他們必須并肩工作,互相支持,朝著一個(gè)共同的目標(biāo)前進(jìn)。

因此,如果一個(gè)程序員過(guò)于自大,對(duì)工作沒有熱情,或者不能有效地進(jìn)行溝通,那么這不僅僅會(huì)對(duì)他自己的工作產(chǎn)生負(fù)面影響,而且還會(huì)拖慢整個(gè)項(xiàng)目進(jìn)度或搞砸部分工作,從而對(duì)整個(gè)項(xiàng)目產(chǎn)生負(fù)面影響。因此,“軟”技能是必不可少的。

拘泥于一種技術(shù)

軟件行業(yè)永遠(yuǎn)不會(huì)停止發(fā)展。同樣,專業(yè)的軟件開發(fā)人員也應(yīng)該隨著行業(yè)的發(fā)展而不斷提升自己,并且必須與行業(yè)保持同步,與時(shí)俱進(jìn),以確保不被行業(yè)拋棄。

記住關(guān)鍵點(diǎn)是:你不需要對(duì)每項(xiàng)新技術(shù)都熟練地掌握,而是要獲取新的概念,并且學(xué)會(huì)以新的方式解決問(wèn)題。優(yōu)秀的程序員不僅僅會(huì)編寫代碼,而且還會(huì)不斷學(xué)習(xí)一些新的關(guān)鍵概念,以幫助他們以新的方式解決問(wèn)題,并找到最有效的解決方案。

偷工減料

沒有所謂的“快速又骯臟的代碼”。骯臟的代碼就是壞代碼,不要偷工減料,也不要接受任何低質(zhì)量的東西。

作為一名優(yōu)秀的程序員,你的真正能力是在危機(jī)中體現(xiàn)的。如果在危機(jī)中你的表現(xiàn)和平時(shí)不一致,那么你就不能稱為一個(gè)好的程序員。

不寫軟件文檔

你的軟件有多好并不是唯一重要的。因?yàn)槿绻浖臋n不夠好,人們也不會(huì)使用它。

不管最后期限是什么,不管工作量有多大,也不管不寫文檔的借口有多少,任何沒有文檔的軟件都是一只死渡渡鳥。道理就是這么簡(jiǎn)單!??!

回避政治

我們經(jīng)常聽到技術(shù)人員說(shuō):“把我排除在政治斗爭(zhēng)之外,我只想實(shí)現(xiàn)這項(xiàng)技術(shù)?!钡@是行不通的。

哪里有技術(shù),哪里就有改變。哪里有改變,就會(huì)有人將自己視為贏家或輸家。那就是政治開始的地方。你需要管理好它,找到繞開它的方法,并且成為贏家。除此之外,別無(wú)它路。

編碼前過(guò)度設(shè)計(jì)

在編碼之前進(jìn)行良好的設(shè)計(jì)是一件好事,但是如果花費(fèi)太多的時(shí)間在它上面,你會(huì)陷入“分析癱瘓”的境地。

不要試圖找到一個(gè)完美的設(shè)計(jì),它在編程世界中是不存在的。尋找一個(gè)足夠好的設(shè)計(jì),然后你就可以從它來(lái)開始。一個(gè)好的設(shè)計(jì)就像一張地圖,它應(yīng)該進(jìn)化,而不是一成不變。

低估“代碼感知”的重要性

根據(jù)Robert Martin的說(shuō)法,“編寫干凈的代碼需要有意識(shí)地使用無(wú)數(shù)的小技巧,并且通過(guò)痛苦地獲得‘干凈’的感知來(lái)應(yīng)用這些技巧。這些小技巧統(tǒng)稱為代碼感知(code-sense)。”

“代碼感知”不僅能夠幫助我們區(qū)分好代碼和壞代碼,而且還能夠幫助我們形成將壞代碼轉(zhuǎn)換成好代碼的策略。

選擇第一個(gè)解決方案

第一個(gè)解決方案(最容易想到的解決方案)很誘人,可能它是一個(gè)簡(jiǎn)單的解決方案。但是,一旦你開始質(zhì)疑你找到的所有解決方案,通常就會(huì)發(fā)現(xiàn)好的解決方案。

記住,作為一個(gè)程序員,你的工作不僅僅是要找到問(wèn)題的解決方案,而是要找到最簡(jiǎn)單、最優(yōu)化的解決方案。

不知道什么時(shí)候不做某事

最好的程序員能夠確切地知道什么時(shí)候不做某事。

他們知道,從頭開始重寫一個(gè)庫(kù)只是為了使其更具可讀性,或者從較舊的框架切換到最新的框架并非總是明智的選擇。代碼的目的應(yīng)該足夠清楚,以便在幾分鐘甚至幾秒鐘內(nèi)掌握。

關(guān)鍵不是要規(guī)避風(fēng)險(xiǎn),而是要謹(jǐn)慎地選擇做正確的事。

不承認(rèn)自己知識(shí)的欠缺

你可能是個(gè)技術(shù)天才,但即使是一個(gè)天才也不會(huì)完全掌握所有的技術(shù)。這幾乎是不可能的。

而另一方面,即使是辦公室里最沒有經(jīng)驗(yàn)的程序員也可能會(huì)想出一個(gè)可持續(xù)的、高效的解決方案來(lái)解決當(dāng)前的問(wèn)題。優(yōu)秀的程序員不會(huì)把他們的解決方案強(qiáng)加于團(tuán)隊(duì),相反,他們會(huì)建立一種民主制度,在這種制度中,最好的解決方案將獲勝。

對(duì)壓力低頭

代碼就像食物一樣。它可以是快速、良好或廉價(jià)的,一次實(shí)現(xiàn)它們中的任意兩個(gè)不難。但是,一個(gè)被壓力壓得喘不過(guò)氣來(lái)的糟糕程序員可能試圖讓團(tuán)隊(duì)一次完成所有這三件事。他們受截止日期和其他人做出的承諾所壓迫,盡管他們非常清楚那是不可行的。

一個(gè)好的程序員要做的就是“弄清真實(shí)”,并以最快的方式向所有利益相關(guān)者傳達(dá)這個(gè)真實(shí)。

不建立人際關(guān)系和信任關(guān)系

程序員可以孤軍奮戰(zhàn),但是,最好的程序員是那些精通人際關(guān)系的人。

建立信任和良好的人際關(guān)系的最簡(jiǎn)單的方法是幫助其他團(tuán)隊(duì)解決難題,這樣他們就開始欠你的“人情”,你可以在適當(dāng)?shù)臅r(shí)候毫不猶豫地要求他們的幫助。自愿主動(dòng)幫助別人,或盡可能多地幫助別人完成他們的工作,這不僅能夠培養(yǎng)你的專業(yè)技能,而且還能在組織內(nèi)建立你的影響力。

不看大局

作為一個(gè)程序員,大多數(shù)時(shí)候,你將在一段代碼上工作,或者可能在現(xiàn)有代碼中解決一些生產(chǎn)問(wèn)題。你只是在做那些分配給你的工作,這沒有什么不對(duì)的。但是如果你想成為整個(gè)項(xiàng)目的一部分,你需要花點(diǎn)時(shí)間去了解項(xiàng)目的全部?jī)?nèi)容。

最好和最簡(jiǎn)單的方法是得到一位導(dǎo)師的幫助,他可以幫助你更快地提高你的技能,讓你堅(jiān)定地站在更大的項(xiàng)目視角上。

重復(fù)造輪子

優(yōu)秀的程序員不會(huì)重復(fù)造輪子,他們總是盡可能地重用和構(gòu)建現(xiàn)有的功能。這不僅僅會(huì)節(jié)省時(shí)間,而且會(huì)在共享代碼的開發(fā)人員之間建立起某種友誼。

對(duì)于你試圖解決的問(wèn)題,很可能已經(jīng)有了現(xiàn)成的解決方案。因此,當(dāng)你試圖完成一項(xiàng)任務(wù)時(shí),檢查一下是否有其他人已經(jīng)解決了這個(gè)問(wèn)題。這樣做,你不是在偷工減料,你是在減少工作量。

對(duì)業(yè)務(wù)規(guī)則不夠了解

程序員們有時(shí)會(huì)低估業(yè)務(wù)規(guī)則的復(fù)雜性。如果我們不清楚業(yè)務(wù)規(guī)則,我們就不知道如何有效地實(shí)現(xiàn)解決方案。

請(qǐng)記住,在進(jìn)行編程時(shí),你需要采用業(yè)務(wù)思維,并以業(yè)務(wù)術(shù)語(yǔ)創(chuàng)建一個(gè)可行的解決方案,以實(shí)現(xiàn)其目標(biāo),而不是專注于一個(gè)強(qiáng)大的技術(shù)解決方案。

不與團(tuán)隊(duì)溝通

雖然對(duì)于溝通沒有固定的規(guī)則(事實(shí)上,在Limbo軟件項(xiàng)目中,“人員”被稱為資源),但作為向智人進(jìn)化旅途的一部分,在工作中獲得一些和人相關(guān)的信息是必需的。

了解其他程序員的能力和局限性,再加上了解他們的興趣的話,將能夠讓你以更好的方式規(guī)劃開發(fā)。

不看重身體健康

身體健康是提升你的一切生活品質(zhì)的基礎(chǔ),包括你的事業(yè)。它能提高你的創(chuàng)造力、活力和勇氣,讓你度過(guò)不可避免的起起落落。

優(yōu)先考慮你的健康狀況不是一次性的工作。這意味著你要把它安排到你的日常生活中,投資購(gòu)買正確的食物和定期鍛煉,甚至放棄其他壞習(xí)慣。

結(jié)束語(yǔ)

任何職業(yè)都有起起落落,這完全取決于你的態(tài)度。你要么被消極的事情打倒,要么以積極的方式接受,并從中學(xué)習(xí)到經(jīng)驗(yàn)和知識(shí),提升自己。

正如Carlton Fisk所說(shuō):

“不是你獲得了什么,而是你戰(zhàn)勝了什么。就是它決定了你職業(yè)生涯的高度。”

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI