神譯局:當(dāng)程序員這么多年,我學(xué)到了25條人生經(jīng)驗
編者按:作者踏上開發(fā)人員的職業(yè)之路某種程度上具有偶然性,但是也跟自己平時對編碼方面的知識進(jìn)行的儲備有很大的關(guān)系,作為一名自學(xué)的開發(fā)人員,作者雖然從業(yè)時間不長,但對大家也許仍然能夠從作者對這個行業(yè)的體會和經(jīng)驗中找到共鳴。本文譯自medium,文章作者Aphinya Dechalert,原文標(biāo)題25 Lessons I’ve Learned as a Developer。

圖片來源:Pixabay from Pexels
實際上,在我從事自己人生中第一份開發(fā)人員的工作之前,我就已經(jīng)開始寫代碼了,為朋友們以及朋友們的朋友們搞定網(wǎng)站事宜。我是經(jīng)歷了撥號上網(wǎng)和和聽著磁帶那個年代長大的——典型的90后,晚餐時間的桌子上,還循環(huán)著清新的Prince of Bel-Air主題曲。
我作為開發(fā)人員的第一份真正的工作多少有點意外。我本來是作為一位營銷人員進(jìn)入公司的,但在得到這份工作的六個月內(nèi),我就重構(gòu)了公司整個手機app的前端。
真是一次職業(yè)經(jīng)歷的奇怪跳躍和學(xué)習(xí)曲線的巨大躍升,不過,多虧了我平時那些自己學(xué)習(xí)和準(zhǔn)備的東西幫我打開了新的大門。
時光飛逝,半年過去了,我的職業(yè)和人生未來還會繼續(xù)前進(jìn),而我作為一名開發(fā)人員的反思和思考同樣不會停止。
以下25條經(jīng)驗,是基于我的經(jīng)歷和我至今為止從中學(xué)到的教訓(xùn)總結(jié)出來的,希望對大家有幫助。
1.在這個行業(yè)里,每個人基本上都是自學(xué)成才的。對于傳統(tǒng)的教育機構(gòu)來說,科技的發(fā)展速度實在是太快了。如果你想快速上手一些東西,你最好自己立刻開始學(xué)習(xí),而不是又去教室里聽三年的課。
2.傳統(tǒng)教育在基礎(chǔ)研究中仍然占有一席之地。獲得學(xué)士學(xué)位是踏入職場的一種方式,但并不是唯一的方式。如果你的大腦更注重實際,而不是更偏好理論,而且你無法償還未來10年的助學(xué)貸款,那么你可以在現(xiàn)在的互聯(lián)網(wǎng)上找到更多的學(xué)習(xí)資源和指導(dǎo)。
3.要想進(jìn)入這個行業(yè),你必須永遠(yuǎn)保持好奇心。你需要不停地問自己這一切是如何運作的,為什么會這樣——尤其是當(dāng)一切終于有了眉目的時候。
4.在很長一段時間內(nèi),你可能會覺得自己并沒有多少真正的進(jìn)步——直到你回過頭去看自己原來寫的舊代碼,或者必須向其他人解釋一些東西的時候。
5.作為初級開發(fā)人員,還是要多寫寫代碼才好。學(xué)習(xí)編程就像學(xué)習(xí)寫作一樣。你
寫得越多,你就越能發(fā)現(xiàn)其中的套路、你的短板之所在以及修正它們的方法。
6.作為行業(yè)新手,一開始你會處于一個自大的階段,認(rèn)為自己什么都知道。然后隨著你寫的代碼越來越多,你會發(fā)現(xiàn)曾經(jīng)那個膨脹的自我正在逐漸縮小。然后,當(dāng)你越來越得心應(yīng)手、經(jīng)驗也越來越足的時候,你甚至有能力引導(dǎo)那些經(jīng)驗不足的同齡人朝正確的方向前進(jìn),但你也會讓他們稍微“掙扎”一下,因為這是他們學(xué)習(xí)和創(chuàng)造過程的一部分。
7.漏洞的出現(xiàn)在所難免,發(fā)生漏洞是因為知識上的差距。代碼在轉(zhuǎn)換成“計算機語言”的時候或多或少總會出點問題,不要慌。當(dāng)出現(xiàn)漏洞的時候,很可能只是因為“轉(zhuǎn)換過程”中出現(xiàn)了一個小問題。
8.當(dāng)人們告訴你你在做敏捷開發(fā),但不讓你參與對此會產(chǎn)生的直接影響計劃階段時,那一定不是真正的敏捷開發(fā)。
9.作為一名開發(fā)人員,你在工作時將長期處于一種不斷了解但同時又不怎么了解的狀態(tài)。
10.在可讀性方面,格式是決定性因素。
11.代碼
是一種通信工具,一種以一種人類可讀的方式編寫的通信工具,而不是只有初學(xué)者才能理解的密碼名。
12.面向函數(shù)編程模式可以使事情變得不那么復(fù)雜。面向?qū)ο缶幊棠J皆谧鳛榻M織和分類工具方面也頗為有用。這兩種模式并不是相互排斥的,而是在必要時是共存的。
13.寫代碼要穩(wěn)扎穩(wěn)打,從長遠(yuǎn)來看,當(dāng)前以“最佳實踐”為目的的過度取巧可能導(dǎo)致未來有太多的技術(shù)短板要補。
14.所有的軟件迭代都很快。5個月前的“完美”代碼可能會由于需求的變化、依賴關(guān)系的升級以及邏輯上的未知漏洞和小問題而變得低效和過時。
15.數(shù)據(jù)庫就是一切。如果過度設(shè)計,很有可能會給后端帶來不必要的負(fù)面影響。
16.當(dāng)你身處團隊中時,工作組織扁平化和自動化會對你的工作效率產(chǎn)生影響。扁平的組織結(jié)構(gòu)意味著你可以更快地在與人溝通協(xié)作,而自動化則意味著用于單擊、鍵入和等待事情完成的時間會大大縮短。
17.收拾別人留下的亂七八糟的代碼也是一種人生經(jīng)歷,每個人在職業(yè)生涯的某個階段都會碰上這種事。這也是一個從別人的錯誤中學(xué)習(xí)的機會,更是一個為軟件的未來方向進(jìn)行摸索的過程。
18.你會不斷地清理別人和你過去創(chuàng)造的東西。這是因為代碼就像食物一樣——如果不及時“使用”它,它就會成為過眼云煙,逐漸毫無用處。
19.學(xué)習(xí)平衡工作與生活對開發(fā)人員來說仍然很重要,因為我們畢竟是人類。不要墨守成規(guī),忽視自己、朋友或家人。照顧好自己,不要讓代碼控制了你的整個生活。
20.如果你覺得自己快要精疲力盡了,那就停下來,休息一下,哪怕不久之后再回來——但記住,千萬不要粗制濫造,要編寫出對你更具個人意義的代碼。軟件是客戶和業(yè)務(wù)之間的接口,作為開發(fā)人員,我們是架構(gòu)起這個借口的力量。如果你覺得自己并沒有真正為公司做出貢獻(xiàn),或者你根本不相信自己能為公司做出什么貢獻(xiàn),跳槽也沒什么大不了的。你需要為自己的所作所為感到自豪。不管你最終在哪里,你都能掙到一筆可觀的收入。
21.不要太在意別人的代碼寫的怎么樣。利用你所擁有的條件,專注于提升自己的技能,在自己擅長的領(lǐng)域里獨樹一幟。
22.如果沒有人邀請你參加面試,那就去創(chuàng)造吧。如果你沒有可以寫進(jìn)簡歷的經(jīng)驗,那就去創(chuàng)造吧。如果你有一個空閑的周末并且正好有一個想法,那就去創(chuàng)造吧。作為開發(fā)人員,我們的業(yè)務(wù)是創(chuàng)建代碼。當(dāng)我們停下來的那一刻,我們就有可能成為管理團隊的一員。
23.不要只是學(xué)習(xí)編程。你的知識領(lǐng)域越廣闊,編寫項目代碼就越容易。這是因為代碼的編寫過程就是一個把世界、它的規(guī)則和運轉(zhuǎn)過程轉(zhuǎn)換成數(shù)字表達(dá)的過程。試想,你怎么能得心應(yīng)手地創(chuàng)造自己不理解的東西呢?
24.關(guān)于代碼,你總會有知識的盲區(qū)存在,但是我希望你最好擁有大量的想法,并將它們作為代碼創(chuàng)建過程的指導(dǎo)原則,最終你會收獲相當(dāng)多的回報。
25.你需要花一些時間去閱讀軟件領(lǐng)域的書籍,相信我,這個時間值得花,你可以在閱讀中發(fā)現(xiàn)許多有深度的想法——比如Robert C. Martin和Martin Fowler的作品,你一定會從中受益良多的。
作為一名開發(fā)人員,我現(xiàn)在所處的階段既有著良莠不齊的代碼,也有著有趣的項目解決方案,還有許許多多需要繼續(xù)完善的架構(gòu)。
當(dāng)我開始獨當(dāng)一面、接手更多的自由職業(yè)或者合同工作的時候,我作為一名開發(fā)人員的經(jīng)驗肯定會更加豐富,人生的軌跡也會有所不同。
這是我到目前為止對自己職業(yè)的一點感想,未來當(dāng)然還會有的,謝謝大家的閱讀。
譯者:喜湯
本文來自翻譯, 來源神譯局。
| 留言與評論(共有 0 條評論) |

.jpg)



