“作為一個(gè)有著21歲編程年齡的中年程序員,我可以自豪地說(shuō),我成功地經(jīng)歷了軟件行業(yè)這個(gè)充滿(mǎn)變數(shù)的世界的高峰和低谷。
這篇文章記錄了迄今為止我在軟件開(kāi)發(fā)的職業(yè)生涯中所犯的錯(cuò)誤,同時(shí)也
是如何避免這些錯(cuò)誤的一本指
南。
”
今天
對(duì)我來(lái)說(shuō)是個(gè)大日子,因?yàn)槲业木幊躺慕K于已經(jīng)走過(guò)了21年。
感覺(jué)一切就像發(fā)生在昨天一樣。今天我在這里,作為一個(gè)有著21歲編程年齡的中年程序員,可以在博客上自豪地說(shuō),我成功地經(jīng)歷了軟件行業(yè)這個(gè)充滿(mǎn)變數(shù)的世界的高峰和低谷。是的,至少我可以說(shuō),今天對(duì)我來(lái)說(shuō)是一個(gè)標(biāo)志性的時(shí)刻。
俗話(huà)說(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ò)誤。
從事一份軟件開(kāi)發(fā)工作是掌握你的技術(shù)之旅的開(kāi)始。和任何領(lǐng)域一樣,你會(huì)面臨各種挑戰(zhàn),你有機(jī)會(huì)做正確的事,同樣你也有可能做完全錯(cuò)誤的事。這篇文章記錄了迄今為止我在軟件開(kāi)發(fā)的職業(yè)生涯中所犯的錯(cuò)誤,同時(shí)也是如何避免這些錯(cuò)誤的一本指南。
你的職業(yè)生涯的軌跡在很大程序上取決于你決定如何花掉你最初的薪水。你會(huì)很想把這些錢(qián)花在買(mǎi)一輛更好的汽車(chē),更換你的衣服,和去更高檔的餐廳上。
雖然偶爾揮霍并沒(méi)有錯(cuò),但你需要計(jì)劃把錢(qián)花在獲取知識(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)秀的、舉足輕重的、炙手可熱的開(kāi)發(fā)人員,你也不可以燒掉自己的“橋”(譯注:自斷退路)和挑起不必要的爭(zhēng)斗。軟件開(kāi)發(fā)行業(yè)是一個(gè)小圈子,你現(xiàn)在正在燒掉的“橋”會(huì)在你最需要它們的時(shí)候給你帶來(lái)麻煩。
即使是和你不喜歡的人相處,你也要謙虛,誠(chéng)懇并維持良好的關(guān)系。
根據(jù)我的經(jīng)驗(yàn),精通技術(shù)是贏得團(tuán)隊(duì)成員尊重的最可持續(xù)的方式。話(huà)雖如此,但是精通技術(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ì)忘記軟件開(kāi)發(fā)是一項(xiàng)團(tuán)隊(duì)運(yùn)動(dòng),而一個(gè)項(xiàng)目是一群人的共同任務(wù),他們必須并肩工作,互相支持,朝著一個(gè)共同的目標(biāo)前進(jìn)。
因此,如果一個(gè)程序員過(guò)于自大,對(duì)工作沒(méi)有熱情,或者不能有效地進(jìn)行溝通,那么這不僅僅會(huì)對(duì)他自己的工作產(chǎn)生負(fù)面影響,而且還會(huì)拖慢整個(gè)項(xiàng)目進(jìn)度或搞砸部分工作,從而對(duì)整個(gè)項(xiàng)目產(chǎn)生負(fù)面影響。因此,“軟”技能是必不可少的。
軟件行業(yè)永遠(yuǎn)不會(huì)停止發(fā)展。同樣,專(zhuān)業(yè)的軟件開(kāi)發(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ì)編寫(xiě)代碼,而且還會(huì)不斷學(xué)習(xí)一些新的關(guān)鍵概念,以幫助他們以新的方式解決問(wèn)題,并找到最有效的解決方案。
沒(méi)有所謂的“快速又骯臟的代碼”。骯臟的代碼就是壞代碼,不要偷工減料,也不要接受任何低質(zhì)量的東西。
作為一名優(yōu)秀的程序員,你的真正能力是在危機(jī)中體現(xiàn)的。如果在危機(jī)中你的表現(xiàn)和平時(shí)不一致,那么你就不能稱(chēng)為一個(gè)好的程序員。
你的軟件有多好并不是唯一重要的。因?yàn)槿绻浖臋n不夠好,人們也不會(huì)使用它。
不管最后期限是什么,不管工作量有多大,也不管不寫(xiě)文檔的借口有多少,任何沒(méi)有文檔的軟件都是一只死渡渡鳥(niǎo)。道理就是這么簡(jiǎn)單?。?!
我們經(jīng)常聽(tīng)到技術(shù)人員說(shuō):“把我排除在政治斗爭(zhēng)之外,我只想實(shí)現(xiàn)這項(xiàng)技術(shù)。”但這是行不通的。
哪里有技術(shù),哪里就有改變。哪里有改變,就會(huì)有人將自己視為贏家或輸家。那就是政治開(kāi)始的地方。你需要管理好它,找到繞開(kāi)它的方法,并且成為贏家。除此之外,別無(wú)它路。
在編碼之前進(jìn)行良好的設(shè)計(jì)是一件好事,但是如果花費(fèi)太多的時(shí)間在它上面,你會(huì)陷入“分析癱瘓”的境地。
不要試圖找到一個(gè)完美的設(shè)計(jì),它在編程世界中是不存在的。尋找一個(gè)足夠好的設(shè)計(jì),然后你就可以從它來(lái)開(kāi)始。一個(gè)好的設(shè)計(jì)就像一張地圖,它應(yīng)該進(jìn)化,而不是一成不變。
根據(jù)Robert Martin的說(shuō)法,“編寫(xiě)干凈的代碼需要有意識(shí)地使用無(wú)數(shù)的小技巧,并且通過(guò)痛苦地獲得‘干凈’的感知來(lái)應(yīng)用這些技巧。這些小技巧統(tǒng)稱(chēng)為代碼感知(code-sense)?!?/span>
“代碼感知”不僅能夠幫助我們區(qū)分好代碼和壞代碼,而且還能夠幫助我們形成將壞代碼轉(zhuǎn)換成好代碼的策略。
第一個(gè)解決方案(最容易想到的解決方案)很誘人,可能它是一個(gè)簡(jiǎn)單的解決方案。但是,一旦你開(kāi)始質(zhì)疑你找到的所有解決方案,通常就會(huì)發(fā)現(xiàn)好的解決方案。
記住,作為一個(gè)程序員,你的工作不僅僅是要找到問(wèn)題的解決方案,而是要找到最簡(jiǎn)單、最優(yōu)化的解決方案。
最好的程序員能夠確切地知道什么時(shí)候不做某事。
他們知道,從頭開(kāi)始重寫(xiě)一個(gè)庫(kù)只是為了使其更具可讀性,或者從較舊的框架切換到最新的框架并非總是明智的選擇。代碼的目的應(yīng)該足夠清楚,以便在幾分鐘甚至幾秒鐘內(nèi)掌握。
關(guān)鍵不是要規(guī)避風(fēng)險(xiǎn),而是要謹(jǐn)慎地選擇做正確的事。
你可能是個(gè)技術(shù)天才,但即使是一個(gè)天才也不會(huì)完全掌握所有的技術(shù)。這幾乎是不可能的。
而另一方面,即使是辦公室里最沒(méi)有經(jīng)驗(yàn)的程序員也可能會(huì)想出一個(gè)可持續(xù)的、高效的解決方案來(lái)解決當(dāng)前的問(wèn)題。優(yōu)秀的程序員不會(huì)把他們的解決方案強(qiáng)加于團(tuán)隊(duì),相反,他們會(huì)建立一種民主制度,在這種制度中,最好的解決方案將獲勝。
代碼就像食物一樣。它可以是快速、良好或廉價(jià)的,一次實(shí)現(xiàn)它們中的任意兩個(gè)不難。但是,一個(gè)被壓力壓得喘不過(guò)氣來(lái)的糟糕程序員可能試圖讓團(tuán)隊(duì)一次完成所有這三件事。他們受截止日期和其他人做出的承諾所壓迫,盡管他們非常清楚那是不可行的。
一個(gè)好的程序員要做的就是“弄清真實(shí)”,并以最快的方式向所有利益相關(guān)者傳達(dá)這個(gè)真實(shí)。
程序員可以孤軍奮戰(zhàn),但是,最好的程序員是那些精通人際關(guān)系的人。
建立信任和良好的人際關(guān)系的最簡(jiǎn)單的方法是幫助其他團(tuán)隊(duì)解決難題,這樣他們就開(kāi)始欠你的“人情”,你可以在適當(dāng)?shù)臅r(shí)候毫不猶豫地要求他們的幫助。自愿主動(dòng)幫助別人,或盡可能多地幫助別人完成他們的工作,這不僅能夠培養(yǎng)你的專(zhuān)業(yè)技能,而且還能在組織內(nèi)建立你的影響力。
作為一個(gè)程序員,大多數(shù)時(shí)候,你將在一段代碼上工作,或者可能在現(xiàn)有代碼中解決一些生產(chǎn)問(wèn)題。你只是在做那些分配給你的工作,這沒(méi)有什么不對(duì)的。但是如果你想成為整個(gè)項(xiàng)目的一部分,你需要花點(diǎn)時(shí)間去了解項(xiàng)目的全部?jī)?nèi)容。
最好和最簡(jiǎn)單的方法是得到一位導(dǎo)師的幫助,他可以幫助你更快地提高你的技能,讓你堅(jiān)定地站在更大的項(xiàng)目視角上。
優(yōu)秀的程序員不會(huì)重復(fù)造輪子,他們總是盡可能地重用和構(gòu)建現(xiàn)有的功能。這不僅僅會(huì)節(jié)省時(shí)間,而且會(huì)在共享代碼的開(kāi)發(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),而不是專(zhuān)注于一個(gè)強(qiáng)大的技術(shù)解決方案。
雖然對(duì)于溝通沒(méi)有固定的規(guī)則(事實(shí)上,在Limbo軟件項(xiàng)目中,“人員”被稱(chēng)為資源),但作為向智人進(jìn)化旅途的一部分,在工作中獲得一些和人相關(guān)的信息是必需的。
了解其他程序員的能力和局限性,再加上了解他們的興趣的話(huà),將能夠讓你以更好的方式規(guī)劃開(kāi)發(fā)。
身體健康是提升你的一切生活品質(zhì)的基礎(chǔ),包括你的事業(yè)。它能提高你的創(chuàng)造力、活力和勇氣,讓你度過(guò)不可避免的起起落落。
優(yōu)先考慮你的健康狀況不是一次性的工作。這意味著你要把它安排到你的日常生活中,投資購(gòu)買(mǎi)正確的食物和定期鍛煉,甚至放棄其他壞習(xí)慣。
任何職業(yè)都有起起落落,這完全取決于你的態(tài)度。你要么被消極的事情打倒,要么以積極的方式接受,并從中學(xué)習(xí)到經(jīng)驗(yàn)和知識(shí),提升自己。
“不是你獲得了什么,而是你戰(zhàn)勝了什么。就是它決定了你職業(yè)生涯的高度?!?/span>
原文:https://levelup.gitconnected.com/21-bad-mistakes-in-my-21-year-programming-career-6d25c5b34908
我學(xué)的技術(shù),過(guò)時(shí)?被淘汰?
做技術(shù)的,這些觀點(diǎn)真的扯淡!
若覺(jué)得文章不錯(cuò),轉(zhuǎn)發(fā)分享,也是我們繼續(xù)更新的動(dòng)力。
5T資源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,PCB、FPGA、DSP、labview、單片機(jī)、等等!
在公眾號(hào)內(nèi)回復(fù)「
更多資源
」,即可免費(fèi)獲取,期待你的關(guān)注~
長(zhǎng)按識(shí)別圖中二維碼關(guān)注
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!