日本电影一区二区_日本va欧美va精品发布_日本黄h兄妹h动漫一区二区三区_日本欧美黄色

干貨 – 軟件開發(fā)從業(yè)18年,我總結(jié)了9個(gè)最有價(jià)值的經(jīng)驗(yàn)(軟件開發(fā)的職業(yè)前景如何)

★★★建議星標(biāo)我們★★★

干貨 - 軟件開發(fā)從業(yè)18年,我總結(jié)了9個(gè)最有價(jià)值的經(jīng)驗(yàn)(軟件開發(fā)的職業(yè)前景如何)干貨 - 軟件開發(fā)從業(yè)18年,我總結(jié)了9個(gè)最有價(jià)值的經(jīng)驗(yàn)(軟件開發(fā)的職業(yè)前景如何)

2020年Java原創(chuàng)面試題庫連載中

【000期】Java最全面試題庫思維導(dǎo)圖

【020期】JavaSE系列面試題匯總(共18篇)

【028期】JavaWeb系列面試題匯總(共10篇)

【042期】JavaEE系列面試題匯總(共13篇)

【049期】數(shù)據(jù)庫系列面試題匯總(共6篇)

【053期】中間件系列面試題匯總(共3篇)

【065期】數(shù)據(jù)結(jié)構(gòu)與算法面試題匯總(共11篇)

【076期】分布式面試題匯總(共10篇)

【077期】綜合面試題系列(一)

【078期】綜合面試題系列(二)

【079期】綜合面試題系列(三)

【080期】綜合面試題系列(四)

【081期】綜合面試題系列(五)

【082期】綜合面試題系列(六)

【083期】綜合面試題系列(七)

【084期】綜合面試題系列(八)

【085期】綜合面試題系列(九)

【086期】綜合面試題系列(十)

【087期】綜合面試題系列(十一)

【088期】綜合面試題系列(十二)

【089期】綜合面試題系列(十三)

更多內(nèi)容,點(diǎn)擊上面藍(lán)字查看干貨 - 軟件開發(fā)從業(yè)18年,我總結(jié)了9個(gè)最有價(jià)值的經(jīng)驗(yàn)(軟件開發(fā)的職業(yè)前景如何)

作者 | Fernando Doglio

譯者 | 張健欣

策劃 | 褚杏娟

從 14 歲起,我就開始在父母的臥室里寫代碼。當(dāng)時(shí),通過非常慢的網(wǎng)絡(luò),我閱讀任何能夠獲得的東西。20 歲時(shí),作為一名 Web 開發(fā)人員,我簽了人生中的第一份勞動(dòng)合同,當(dāng)時(shí)學(xué)的是 PHP 和 JavaScript。

在這個(gè)領(lǐng)域,我花了 18 年時(shí)間,才發(fā)現(xiàn)編程只是職業(yè)的一小部分。即使是空閑時(shí)間出于興趣,我也不會(huì)停止編碼,但工作中還有很多其它事情。有些事情,開發(fā)者往往很晚才能領(lǐng)悟到,這也是為什么我想和大家分享我的經(jīng)歷,以及我覺得很重要的 9 個(gè)經(jīng)驗(yàn)教訓(xùn)。

1 放下自負(fù)

開發(fā)者通常很自負(fù)。這是事實(shí)。

為什么呢?我認(rèn)為,任何認(rèn)真對(duì)待自己職業(yè)的人都會(huì)認(rèn)為自己有點(diǎn)兒像藝術(shù)家。我們雖然不會(huì)在數(shù)百萬人面前唱歌或者作畫,但我們有時(shí)候在以一種非常優(yōu)雅高效的方式編寫代碼、解決非常復(fù)雜的問題,我們同樣為自己的工作感到自豪。

開發(fā)者和數(shù)學(xué)家一樣,解決問題的方式都有點(diǎn)兒像藝術(shù)家。

正因如此,我們很維護(hù)自己的代碼——就像熊媽媽照顧她的后代那樣。親手寫下這些代碼的我們,無法忍受別人對(duì)他指指點(diǎn)點(diǎn)。

但這對(duì)任何人都沒有幫助。我們熱愛自己的工作,但更重要的是我們正在解決問題。通過與其他人討論我們的想法和方案,可能會(huì)出現(xiàn)更好的替代方案。這沒有什么不對(duì)的。事實(shí)上,合作通常會(huì)產(chǎn)生最佳解決方案。

我見過各種各樣自負(fù)的開發(fā)者,但沒有見過哪種自負(fù)對(duì)開發(fā)者會(huì)有所幫助。

因此我的建議是:當(dāng)你開始作為一名開發(fā)者工作時(shí),請(qǐng)把你的自負(fù)拋掉,多聽聽其他人對(duì)你工作的看法。學(xué)會(huì)接受這樣一個(gè)事實(shí):更好的想法可能來自你的頭腦之外,它們只會(huì)幫你提高自己的技能。只有傾聽反饋,你才能贏。

2 語言只是工具

如果你只懂 JavaScript,所有的問題都會(huì)像釘子一樣。不要再稱自己是一名 Java 開發(fā)者或 JavaScript 開發(fā)者。

由于某些語言的特性或語法,你可能會(huì)偏愛一些語言,這很正常。然而,如果你能學(xué)點(diǎn)別的東西,就會(huì)受益匪淺。學(xué)習(xí)新語言,尤其與你日常工作所用的范式不同的語言,會(huì)幫助你打開思路,發(fā)現(xiàn)解決問題的不同辦法。

這一點(diǎn)我怎么強(qiáng)調(diào)也不過分:學(xué)習(xí)多種語言并使用一段時(shí)間,你會(huì)從中受益。

我?guī)啄昵白x過一本書《七周七語言》,展示了各種可用的選項(xiàng),這讓我思路大開。很多選擇是我從來沒有想到過的,因?yàn)槲姨珜W⒂谧约旱娜粘H蝿?wù)和日常工具,從來沒有停下來看看其它東西。

我們是開發(fā)者,知道如何通過代碼來解決問題,但不要把自己放到一個(gè)盒子中,你會(huì)被那個(gè)盒子的大小所限制??纯茨莻€(gè)盒子外面的東西,跳出那個(gè)盒子思考,試試其它選項(xiàng)、其它語言、其它解決問題的方法。即使只是一會(huì)兒,你也會(huì)帶著新的想法和更大的心態(tài)做出更好的抉擇。

3 編程不需要記下所有的東西

有時(shí)候,開發(fā)新手認(rèn)為他們需要把所有事情都記在心里,因此當(dāng)他們意識(shí)到自己開始忘記如何寫一個(gè)簡(jiǎn)單的 for 語句時(shí),就會(huì)感到很糟糕。

這不僅是正常的,而且我認(rèn)為這也是健康的。

有太多東西需要記憶了,但我們其實(shí)不需要記憶,我們只需要擁抱這樣一個(gè)事實(shí):互聯(lián)網(wǎng)是另一個(gè)有力的工具。就像我們需要 IDE 一樣,我們需要互聯(lián)網(wǎng)來尋找答案。

我們都這樣做,如果你一開始就感覺不好,就不要在這種感覺上浪費(fèi)時(shí)間。只需要尋找你的答案并解決你的問題。

這樣想一想:每一種語言都有一種類似但又稍有不同的觀察者(Observer)模式的實(shí)現(xiàn)方式。你認(rèn)為什么更現(xiàn)實(shí)?理解觀察者模式有什么好處以及它能解決什么問題,還是記住你所使用的每一種語言如何實(shí)現(xiàn)它?

如果你知道它能解決你的問題,那么你就真的解決了你的問題。剩下的只是搜索實(shí)現(xiàn)它的最佳方法。

其它搜索也是一樣。只專注于我們職業(yè)中重要的解決問題的方面,讓谷歌幫你慢慢回憶。這才是正確的方式。

4 你需要終身學(xué)習(xí)

或者說,“你應(yīng)該終身學(xué)習(xí)”,這完全取決于你自己是否要跟上行業(yè)的最新發(fā)展。如果你想要保持相關(guān)性,那么你就必須一直學(xué)習(xí)。

技術(shù)在發(fā)展,語言在變化,這都很正常。誠(chéng)然,有些生態(tài)系統(tǒng)比其它生態(tài)系統(tǒng)變化得更快,跟上他們的步伐似乎是一項(xiàng)艱巨的任務(wù)。但是,記住你只是一個(gè)人,不可能無所不知,只需專注于重要的事情。如果你必須學(xué)會(huì)一件事情,那么我的建議是學(xué)會(huì)如何學(xué)習(xí)。

這聽起來很傻,但這可能是一名開發(fā)人員需要的首要技能。我們必須在快速學(xué)習(xí)新技能方面表現(xiàn)得更好。否則,你將陷入被標(biāo)記為“過時(shí)”的風(fēng)險(xiǎn)。

同時(shí),這也是本文提到的其它經(jīng)驗(yàn)發(fā)揮作用的地方。變化、改變、新的挑戰(zhàn)、沒有自負(fù)——所有這些都會(huì)幫助你學(xué)習(xí)并拓展技能范圍。你做的越多,效果就會(huì)越好。最終,你會(huì)發(fā)現(xiàn)所有的語言都是類似的。你將開始看到它們公共的根本,你將能夠用其中任何一種語言工作。你所要做的就是閱讀一些關(guān)鍵的東西。

你的整個(gè)職業(yè)生涯都要學(xué)習(xí):

  • 新語言

  • 新(老)編程范式

  • 新工作方法

  • 解決問題的新方法

  • 與團(tuán)隊(duì)互動(dòng)的新方法

  • 檢查和測(cè)試代碼的新方法

如果你還沒有準(zhǔn)備好永遠(yuǎn)當(dāng)一名學(xué)生,那你需要考慮下這個(gè)職業(yè)是否適合你。請(qǐng)注意,我不是說“立刻辭職”,而是考慮下是否愿意開放思維來持續(xù)學(xué)習(xí)。

5 代碼要解決問題,而非完美

這個(gè)問題我說過很多次,但是作為開發(fā)者,我們傾向于認(rèn)為自己的代碼在發(fā)布之前需要是完美的。雖然這并沒有什么不對(duì),但也可能是一個(gè)潛在的問題。

早期優(yōu)化是一個(gè)問題,因?yàn)槟憧赡茉谀臣赡懿⒉恍枰獌?yōu)化的事上花費(fèi)大量時(shí)間,而且在某些情況下執(zhí)行優(yōu)化時(shí),你會(huì)做出破壞功能的假設(shè)。

所以,把注意力集中在需要做的工作和你正在嘗試解決的問題上,一旦問題修復(fù),立馬測(cè)試、迭代結(jié)果,看看團(tuán)隊(duì)對(duì)你的解決方案有什么想法——即使你已經(jīng)看到了改進(jìn)的方法。如果你需要花費(fèi)兩天以上的時(shí)間來讓它完美,但它現(xiàn)在就可以投入生產(chǎn),很有可能現(xiàn)在就應(yīng)該投入生產(chǎn)。

歸根結(jié)底,你是在解決問題。解決問題越快,對(duì)你的用戶就越好。

6 先讓代碼起作用,然后再優(yōu)化

跟上面提到的觀點(diǎn)一樣,不要陷入早期優(yōu)化的黑洞。

即使你認(rèn)為你可以快速優(yōu)化,但一旦你開始做,你就會(huì)發(fā)現(xiàn)時(shí)間膨脹效應(yīng)是真的。

作為軟件開發(fā)人員的首要任務(wù)是寫一個(gè)功能或修復(fù)一個(gè) bug 來讓它起作用——無論代碼看起來多丑或者你的方案可能多么低效。如果它起作用了,你就證明了它是可行的。這就成功了一半。

第二步是優(yōu)化它。這是可選的一步。一些人容易忘記的細(xì)節(jié),你可以用來優(yōu)化代碼的時(shí)間取決于很多變量,這些變量有時(shí)候不受你的控制。因此,集中精力讓它起作用,然后再看看你是否真有時(shí)間來優(yōu)化它。

早期優(yōu)化意味著要邊寫代碼邊優(yōu)化,這是一種危險(xiǎn)的方式,因?yàn)閮?yōu)化時(shí),我們都是在對(duì)執(zhí)行時(shí)間、數(shù)據(jù)要求、內(nèi)存需求以及其它我們尚未看到的因素進(jìn)行假設(shè),任何這樣的假設(shè)都可能是錯(cuò)誤的,最終會(huì)在你的邏輯中引入 bug。

想想 TDD 工作流:

  • 編寫測(cè)試來理解你的功能需要做的所有事情(它將失?。?。

  • 編寫代碼來通過測(cè)試。

  • 現(xiàn)在考慮優(yōu)化你的代碼。

步驟 2 是必需的。你首先需要考慮通過測(cè)試,也就是說讓功能起作用。測(cè)試不關(guān)心你使用的算法或者你是否使用了三層嵌套的 if 語句。稍后才會(huì)做那些,可能是代碼評(píng)審過程中的一部分。

7 項(xiàng)目最后的 10% 往往要花費(fèi) 90% 的時(shí)間

如果你一個(gè)人獨(dú)自工作,這一點(diǎn)尤其重要,但是團(tuán)隊(duì)也會(huì)有這種細(xì)節(jié)計(jì)算失誤的問題。

任何一個(gè)做完項(xiàng)目的人都會(huì)告訴你同樣的事情(這不僅僅適用于我們行業(yè)):你一開始會(huì)略過很多細(xì)節(jié),最后才不得不考慮它們。

這很正常。我們都傾向于一開始專注于重大的功能,將比較小的細(xì)節(jié)或已知的 bug 留到最后。但是它們?nèi)匀恍枰鉀Q,這就是額外 90% 的工作。精細(xì)的工作比較花時(shí)間。你需要測(cè)試、修復(fù)、重新測(cè)試、寫文檔、執(zhí)行用戶培訓(xùn)、展示最終方案等等。

當(dāng)然,這取決于你的環(huán)境、客戶以及很多其它因素,但總會(huì)有一些東西。所以記住:當(dāng)你認(rèn)為你已經(jīng)寫完代碼的時(shí)候,你很可能忘記了一些東西。

8 寫過一次以上的代碼,需要進(jìn)行抽象

編碼是關(guān)于抽象的行為。通過抽象通用邏輯,我們可以在其它地方復(fù)用它,但是一開始的時(shí)候,我們有時(shí)會(huì)注意不到抽象的重要性。

這是我個(gè)人的經(jīng)驗(yàn)法則:如果我在兩個(gè)地方寫了相同的代碼,那么就將它們放到一個(gè)函數(shù)中(或者一個(gè)方法,一個(gè)模塊等等… 你懂的)。

即使數(shù)字二對(duì)你來說很低,但是要考慮到將來你可能在其它地方使用抽象后的代碼。而且通過把它放到一個(gè)常用的地方,你現(xiàn)在就可以使用它了。

抽象和規(guī)模有關(guān)。一段抽象的邏輯可以用很少的精力就被復(fù)用很多次,而到處復(fù)制粘貼代碼雖然很容易,但用的越多需要的精力就越多。想想,如果你因?yàn)橐粋€(gè) bug 不得不改變一段邏輯,而它在你的項(xiàng)目中被重復(fù)了 5 次,會(huì)發(fā)生什么?你在修復(fù)這個(gè) bug 時(shí),會(huì)有 5 次機(jī)會(huì)犯錯(cuò)。

同樣的邏輯也適用于你的日常任務(wù)。如果你發(fā)現(xiàn)自己做某件事一次以上,那么它可能就可以用某種方式自動(dòng)化。這是效率的關(guān)鍵,因此不要僅僅在代碼中尋找重復(fù)模式,在你的動(dòng)作中也可以尋找重復(fù)模式。如果你能自動(dòng)化完成一項(xiàng)每天需要 10 分鐘的任務(wù),你一個(gè)月就能節(jié)省 5 個(gè)小時(shí)。

9 副業(yè)項(xiàng)目不是必需的,但它們確實(shí)有幫助

有人說,如果你想要成為一名成功的開發(fā)人員,你需要?jiǎng)?chuàng)建副業(yè)項(xiàng)目。我并不認(rèn)同這一點(diǎn)。我個(gè)人認(rèn)識(shí)很多優(yōu)秀的開發(fā)者,他們只在朝九晚五工作時(shí)寫代碼。

老實(shí)說,我很欽佩他們。他們能夠在做好工作的同時(shí),享受他們的空閑時(shí)間做其它事情。這絕對(duì)沒有什么問題。

然而,有時(shí)候你需要一些額外的練習(xí)。有時(shí)候你覺得自己落后于其它同事。而這時(shí),副業(yè)項(xiàng)目就會(huì)有所幫助。

我不是說構(gòu)建一個(gè)新項(xiàng)目,讓數(shù)以百萬計(jì)的人使用,或者對(duì)產(chǎn)業(yè)進(jìn)行革命性改變,當(dāng)然如果你喜歡的話,就去做。但是我討論的是拷貝其他人的項(xiàng)目,以便從中學(xué)習(xí)。我說的是通過解決 bug 或者增加額外功能來向其他人的項(xiàng)目做貢獻(xiàn)。

你可以用副業(yè)項(xiàng)目來體驗(yàn)?zāi)悴唤?jīng)常看到的地方。如果你每天寫 8 小時(shí)的單元測(cè)試,也許可以考慮從頭創(chuàng)建一些東西并且開發(fā)一些功能。如果你厭倦了獨(dú)自工作,可以考慮為現(xiàn)有的項(xiàng)目做貢獻(xiàn),體驗(yàn)一下如何與其他人協(xié)調(diào)工作。

你可以使用副業(yè)項(xiàng)目來強(qiáng)化自己的薄弱環(huán)節(jié),從而幫助你提高自己的技能。但同樣,不要為了被認(rèn)為是一名嚴(yán)肅的開發(fā)人員,而認(rèn)為你需要為他們工作或者擁有一個(gè)綠色的 GitHub 活動(dòng)圖。那太傻了。

10 結(jié)論

這是我作為一名開發(fā)者在過去 18 年中學(xué)到的最難的 9 個(gè)經(jīng)驗(yàn)教訓(xùn),希望通過我的分享,能對(duì)你的新(或者已經(jīng)從事的)職業(yè)有所啟示。

原文鏈接:

https://medium.com/better-programming/9-hard-lessons-i-struggled-to-learn-during-my-18-years-as-a-software-developer-14f28512f647

干貨 - 軟件開發(fā)從業(yè)18年,我總結(jié)了9個(gè)最有價(jià)值的經(jīng)驗(yàn)(軟件開發(fā)的職業(yè)前景如何)

之前,給大家發(fā)過三份Java面試寶典,這次新增了一份,目前總共是四份面試寶典,相信在跳槽前一個(gè)月按照面試寶典準(zhǔn)備準(zhǔn)備,基本沒大問題。

  • 《java面試寶典5.0》(初中級(jí))

  • 《350道Java面試題:整理自100 公司》(中高級(jí))

  • 《資深java面試寶典-視頻版》(資深)

  • 《Java[BAT]面試必備》(資深)

分別適用于初中級(jí),中高級(jí)資深級(jí)工程師的面試復(fù)習(xí)。

內(nèi)容包含java基礎(chǔ)、javaweb、mysql性能優(yōu)化、JVM、鎖、百萬并發(fā)、消息隊(duì)列,高性能緩存、反射、Spring全家桶原理、微服務(wù)、Zookeeper、數(shù)據(jù)結(jié)構(gòu)、限流熔斷降級(jí)等等。

干貨 - 軟件開發(fā)從業(yè)18年,我總結(jié)了9個(gè)最有價(jià)值的經(jīng)驗(yàn)(軟件開發(fā)的職業(yè)前景如何)

看到這里,證明有所收獲

相關(guān)新聞

聯(lián)系我們
聯(lián)系我們
公眾號(hào)
公眾號(hào)
在線咨詢
分享本頁
返回頂部
晋州市| 泽库县| 梨树县| 承德县| 江永县| 册亨县| 蒙城县| 英超| 济源市| 铜川市| 江达县| 平原县| 泗阳县| 海门市| 天津市| 东乡县| 常熟市| 乐山市| 中山市| 尖扎县| 于田县| 淮北市| 无锡市| 兴隆县| 宜君县| 本溪| 黑龙江省| 固镇县| 孝感市| 和平县| 平和县| 桂东县| 华阴市| 富平县| 毕节市| 鄂托克前旗| 郓城县| 武邑县| 洛扎县| 平陆县| 宜川县|