日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > > 大魚機器人
[導(dǎo)讀]回顧十年之前,有一些事情,我希望當(dāng)初剛?cè)胄挟?dāng)程序員的我就能明白,并盡早養(yǎng)成這些習(xí)慣。它們可以幫助我更快、更專注地成長。本文是我的一些建議,給當(dāng)年剛找到第一份程序員工作的我。

點擊上方“大魚機器人”,選擇 置頂或星標(biāo)公眾號

福利干貨,第一時間送達!

作者 | Gergely Orosz
譯者 | 王強
策劃 | 小智
回顧十年之前,有一些事情,我希望當(dāng)初剛?cè)胄挟?dāng)程序員的我就能明白,并盡早養(yǎng)成這些習(xí)慣。它們可以幫助我更快、更專注地成長。以下是我的一些建議,給當(dāng)年剛找到第一份程序員工作的我。
1每年花時間讀兩本關(guān)于軟件工程的書??
我每次花時間緩慢而認真地閱讀別人推薦的軟件工程書籍時,自身都會得到提升。所謂認真閱讀,我的意思是要做筆記、與他人交談、寫寫畫畫、動手嘗試、回過頭來重新閱讀。
我希望我在成為開發(fā)人員的頭幾年就閱讀與軟件相關(guān)的書籍。 但我是在從業(yè)第 5 年左右才開始這樣做的。諸如《C#深入》,《簡潔代碼》和《Javascript:The Good Parts》之類的書都幫助我提升了技術(shù)水平。我并不是在推薦具體的書名——不管怎么說,其中有些都已經(jīng)過時了。我的建議是尋找比你現(xiàn)有知識更深入的書籍,可以是關(guān)于特定技術(shù)或關(guān)于軟件工程實踐的著作。
看這些書時我不會一目十行。實際上,我看得很慢。我通常每次坐下來只讀一兩章??吹臅r候,我會做筆記或把重點劃出來;看完后,我會回顧并經(jīng)常與他人討論。我也開始寫一些書評放在自己的個人博客:
https://blog.pragmaticengineer.com/my-reading-list/
主要是反思我學(xué)到的東西。過去幾年,我養(yǎng)成了這些習(xí)慣。這些習(xí)慣幫助我以技術(shù)經(jīng)理的身份迅速成長:它們對工程師來說也非常有益。想找推薦書單嗎?這里是我已經(jīng)看過的和正在看的 書籍清單。
為什么書籍要好過博文、視頻或演講?其實我認為書籍比其他加起來都要好。無論什么樣的主題內(nèi)容,與書籍相比,其他的格式都會流于表面。書籍里的知識更深入,而且組織良好。像本文這樣的帖子,我只需要花費幾個小時來寫,但是我花費在 我寫的這本關(guān)于軟件工程師成長的書籍上 已經(jīng)將近一年。我認為讀書可以更緩慢但深入地消化知識。
不要太貪心:每六個月讀完一本書已經(jīng)很棒了。挑選一本好書,多花一些時間好好閱讀。在讀了一兩本書之后,我還建議你閱讀《如何讀一本書:智能閱讀的經(jīng)典指南》一書,強烈推薦。
2精研你工作中主打的編程語言,學(xué)到底層??
我剛開始時主要用 PHP,兼寫一點初級 JavaScript。我在大學(xué)里學(xué)過 C 和 C ++,都不喜歡。我的第一份全職工作用的是 C#。我了解很多種語言,但是沒有一種語言學(xué)得非常好。
兩年后,我開始遇到一些麻煩,在調(diào)試 C#代碼時不得不找高級開發(fā)人員幫忙。其中一個總是幫我調(diào)試程序的高級工程師,他似乎非常了解這種語言,他向我推薦了一本書《C#深度學(xué)習(xí)》讓我去看。然后我看了。我一路學(xué)到線程、垃圾回收和泛型的工作方式,這些都是底層知識。我花了數(shù)不清的時間去了解協(xié)方差(covariance)、逆方差(contravariance)和其他艱深的主題。
精研我工作中主打的語言是我做出的最佳決定之一。 在我的第一份工作中,這種研究只是無意為之的,并且還得靠那位高級工程師指點;但是,這些知識在工作中,以及面試其他工作時都成了一種優(yōu)勢。在我職業(yè)生涯的后期,我有意深入研究新的語言和框架。我是作為 C # 程序員加入 Skype 的,但是,我們需要改用 JavaScript 和 WinJS。因此,我又深入學(xué)習(xí)了 JS,并掌握了 WinJS,以至于我可以 在 Pluralsight 上開課。
你懂的語言越多,就越了解它們各自的長處和短處。 當(dāng)我轉(zhuǎn)移到 iOS 時,我已經(jīng)精通好幾種語言。Swift 出現(xiàn)時,我簡單關(guān)注并參與了語言討論,并 建議添加讀寫反射這項能力 到 swift 的未來規(guī)劃中。了解了該語言的特性后,就可以更容易地找出讓我的團隊 從 Objective-C 遷移到 Swift 的最佳策略。而且,你知道的語言越多,就越容易掌握新的語言——并且在需要時更輕松地深入學(xué)習(xí)。
3多與他人結(jié)對編程??
我覺得最近結(jié)對編程已經(jīng)過時了。當(dāng)年我們開始時,長期結(jié)對的極限編程、測試驅(qū)動開發(fā)和 mob 編程都很受歡迎。與人結(jié)對之后,我獲得了職業(yè)生涯中一些最大的躍升。這些躍升比讀書更重要。
我曾與一位開發(fā)人員有過一次難忘的結(jié)對編程經(jīng)歷。他對包括我在內(nèi)的所有人都進行了嚴格的代碼審查。有一天我受夠了代碼審查工具上的評論,決定不再在上面答復(fù),而是坐在這些評論者旁邊,要求他們當(dāng)面向我說明他們的評論。我最終學(xué)到了很多東西——同時還告訴他們,我認為他們的評論不公平。他們注意到了這點,建議我每當(dāng)有這種情況時就結(jié)對編程。然后我就去做了。這位開發(fā)人員對性能有所了解,我通過跟他結(jié)對編程,了解到了潛在的性能瓶頸的來龍去脈——然后我教給他們有關(guān)可維護性方面的知識作為回報。
與另一位工程師進行測試驅(qū)動開發(fā)經(jīng)歷,是我在結(jié)對編程中的另一個美好回憶。我們輪流編寫代碼和測試代碼。我們做了兩天,實現(xiàn)了系統(tǒng)中一個棘手的部分。那次經(jīng)歷實在令我大開眼界。我們在驗證所有邊界值的過程中,甚至反過來完全改變了實現(xiàn)方法。我們還與該開發(fā)商建立了牢固的紐帶并持續(xù)了數(shù)月之久。
4編寫單元測試用例,并在持續(xù)集成中運行??
高級工程師們經(jīng)常談?wù)搯卧獪y試的重要性。但是單元測試似乎太違反直覺了:為什么要花更多的時間編寫看起來很簡單的測試?這是我在某段時間里對單元測試的看法。
為了領(lǐng)略單元測試的價值,你需要擁有“啊哈!”時刻——當(dāng)你編寫的單元測試為你節(jié)省了一天的時間,那就是“啊哈!”時刻。在到達這一步之前,你需要腳踏實地,好好編寫這些測試,并使它們在持續(xù)集成中運行。而且,你可能需要持續(xù)做上幾個月,才會得到一個“啊哈!”時刻。
我有兩個這樣的時刻。第一個發(fā)生在我為一個小型在線賭場構(gòu)建后端引擎(作為輔助項目)時。該 API 正在管理真金白銀,我因為害怕犯錯誤,所以用單元測試覆蓋了所有代碼。該項目交付比我預(yù)想要晚——部分原因歸咎于測試,它們耗費了很多時間。但是這樣做是正確的。我在合同結(jié)束時將項目移交給了客戶,兩年后,他們告訴我,這些測試多次挽救了團隊——如果不是因為測試失敗,代碼漏洞將會擴散到生產(chǎn)環(huán)境中。
我的另一個“啊哈”時刻是在 Web 上構(gòu)建 Skype。我們在 web.skype.com 上給 Google Hangouts 創(chuàng)造了一個新的競爭對手。我們團隊是一支強大的團隊,擁有完整的單元覆蓋范圍和嚴格的集成測試。進入項目三個月后,工程師決定重構(gòu)整個項目的結(jié)構(gòu)。這是非常冒險的重構(gòu),我們所有人都投票反對這樣做。
那位工程師指出,基于現(xiàn)有的測試覆蓋率,這次重構(gòu)應(yīng)該是小菜一碟,只要測試通過,重構(gòu)就沒問題。我對此表示懷疑。但這正是測試用例的用處。經(jīng)過為期一周的重構(gòu),他推動了一次巨大的變革……一切都沒有中斷,當(dāng)時沒有,之后也沒有。所有測試均通過。就在那刻,我意識到了一套強大的測試用例所能提供的安全保障,以及它能夠讓我們不害怕重構(gòu)的事實。
5養(yǎng)成重構(gòu)習(xí)慣并掌握重構(gòu)工具??
多年來,當(dāng)我與團隊合作時,我傾向于在代碼庫中進行盡可能小的更改。對于我自己的個人項目,我進行了大量的重構(gòu)——但是我從來不在我不完全掌控的代碼庫上做這種事情。
然后,我在 Skype 遇到了一位工程師,他會不斷進行小型或大型重構(gòu)。他們都有道理,并且代碼總是變得更好。而且他們從不搞亂事情。他們是如何做到的呢?
當(dāng)我與他們結(jié)對編程時,發(fā)現(xiàn)他們非常了解自己的 IDE,并添加了用于重構(gòu)的插件。提取方法、改變量名、提取成常量..……他們只需要花一秒鐘。
我意識到,我害怕重構(gòu),既錯過了實踐,又錯過了能幫助我重構(gòu)的工具。 于是當(dāng)我開始養(yǎng)成每周重構(gòu)一次的習(xí)慣時,我在這兩個方面都提升了。這個習(xí)慣后來對我很有幫助——我多么希望自己在很多年前就開始這么做啊。
6學(xué)習(xí)良好的軟件工程經(jīng)驗,這使我獲益良多??
在我剛開始做軟件工程師的時候,我曾經(jīng)被高級工程師唬到了。他們看出了我沒看出來的錯誤,他們知道我不知道的答案。我當(dāng)時以為他們比我更聰明,并且接受了這一切。
現(xiàn)在,我已經(jīng)與許多著名的軟件工程師緊密合作過,并擔(dān)任了另外幾位的導(dǎo)師,我發(fā)現(xiàn)沒有那么唬人。最好的軟件工程師會把學(xué)到的知識和實際經(jīng)驗結(jié)合在一起——知識,你可以去學(xué);經(jīng)驗,你需要去實踐。
找機會在不同的技術(shù)棧、不同的領(lǐng)域和具有挑戰(zhàn)性的項目里工作。 我花了七八年的時間才達到我認為的“高級”水平。我看到有些人加入了像 Uber 這種高成長性的公司,三四年就達到了。這中間的區(qū)別是什么?這些人從事具有挑戰(zhàn)性的項目,力求跟上周圍其他人的步伐,并經(jīng)常在中途更換團隊,重新開始。他們自愿參與新項目,并在團隊中率先嘗試新技術(shù)。雖然我最終還是成為了這樣的人,但那是后來的事,不是在最初的幾年中。
7把所學(xué)教給他人??
學(xué)習(xí)某些東西,最好的方法是把它們教給別人。我是很偶然發(fā)現(xiàn)這一點的。在 2010 年,我開始在.NET 和 Windows Phone 用戶組中 做演示。我的演講效果不佳,但是我僅在準(zhǔn)備階段就學(xué)到了很多東西。
現(xiàn)在,當(dāng)我想學(xué)好東西時,就會報名參加了一次公開討論。 加入 Uber 一年后,我提出做一個演講,介紹在 2017 年 Uber 如何大規(guī)模推出后端更改。當(dāng)時,我還不完全了解我們是如何做到的——在那之前,我主要從事移動開發(fā),并管理一個移動團隊。通過演講,我別無選擇,只能學(xué)習(xí)所有細節(jié)。我這樣做的壓力很大:大約有 100 個本地開發(fā)人員報名要來聽我的演講。
許多其他人也說這種方法很有效——Shawn“Swyx” Wang 是 #LearnInPublic approach 的杰出代表。他的成長故事遠比我的經(jīng)歷令人印象深刻:改行后在四年里做到 Netlify 和 AWS 的高級工程師職位,并 撰寫了一本 關(guān)于他學(xué)習(xí)經(jīng)歷的書。教別人你只會得到好處。你不僅可以通過教學(xué)來學(xué)到東西,而且還可以幫助和啟發(fā)他人。
而且我認識的所有經(jīng)驗豐富的模范開發(fā)人員,都是合格的老師和導(dǎo)師。越早開始回饋和教導(dǎo),就會越自然而然地成為這樣的開發(fā)人員。
延伸閱讀
https://blog.pragmaticengineer.com/advice-to-myself-when-starting-as-a-software-developer/


-END-

|?整理文章為傳播相關(guān)技術(shù),版權(quán)歸原作者所有?|
|?如有侵權(quán),請聯(lián)系刪除?|


往期好文合集

硬核妹子的創(chuàng)意設(shè)計:舌頭控制器
CPU為什么是方形而不是圓形的?
只有6個引腳的單片機,居然可以玩游戲。

??最 后 ??
?

若覺得文章不錯,轉(zhuǎn)發(fā)分享,也是我們繼續(xù)更新的動力。
5T資源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,PCB、FPGA、DSP、labview、單片機、等等
在公眾號內(nèi)回復(fù)「更多資源」,即可免費獲取,期待你的關(guān)注~

免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀

上海2026年2月14日 /美通社/ -- 2026年2月12日,SGS通標(biāo)標(biāo)準(zhǔn)技術(shù)服務(wù)有限公司為騰訊(股票代碼:00700.HK)頒發(fā)GB/T 35770-2022/ISO 37301:2021合規(guī)管理體系、ISO 3...

關(guān)鍵字: 騰訊 互聯(lián)網(wǎng) ISO GB

新德里2026年2月7日 /PRNewswire/ -- 互聯(lián)網(wǎng)名稱與數(shù)字地址分配機構(gòu)(ICANN)將于2026年3月7日至12日在孟買召開第85屆公共會議,本次會議由印度電...

關(guān)鍵字: CAN 互聯(lián)網(wǎng) IC 電子

洛杉磯2026年1月30日 /美通社/ --?互聯(lián)網(wǎng)名稱與數(shù)字地址分配機構(gòu)(ICANN)提名委員會(NomCom)現(xiàn)已開放加入ICANN董事會的申請。 新任董事會成員的任期將...

關(guān)鍵字: CAN IC 互聯(lián)網(wǎng) BSP

近日,一則關(guān)于“32歲程序員高廣輝猝死”的消息登上熱搜,引發(fā)了遠超科技圈的社會震動與集體哀悼。

關(guān)鍵字: 互聯(lián)網(wǎng)

當(dāng)前,人工智能正以不可逆轉(zhuǎn)之勢全面融入工業(yè)化進程,成為重塑產(chǎn)業(yè)形態(tài)、變革生產(chǎn)方式的核心引擎。從國家戰(zhàn)略部署到企業(yè)實踐探索,從技術(shù)突破到場景落地,人工智能與工業(yè)經(jīng)濟的深度耦合,正推動工業(yè)化從數(shù)字化轉(zhuǎn)型邁向智能化重構(gòu),為高質(zhì)...

關(guān)鍵字: 人工智能 工業(yè)經(jīng)濟 互聯(lián)網(wǎng)

以下內(nèi)容中,小編將對物聯(lián)網(wǎng)的相關(guān)內(nèi)容進行著重介紹和闡述,希望本文能幫您增進對物聯(lián)網(wǎng)的了解,和小編一起來看看吧。

關(guān)鍵字: 物聯(lián)網(wǎng) 互聯(lián)網(wǎng)

ICANN發(fā)布《2026年指南》及其他資源,為計劃于2026年4月申請新域名后綴的機構(gòu)提供支持 洛杉磯2025年12月17日 /美通社/ -- 互聯(lián)網(wǎng)正不斷演進——隨著用戶...

關(guān)鍵字: IC CAN 互聯(lián)網(wǎng) 計算機

作為互聯(lián)網(wǎng)域名系統(tǒng)的權(quán)威管理者,ICANN將主持關(guān)于十年一遇的新頂級域名機遇的討論,并強調(diào)捍衛(wèi)全球多利益相關(guān)方互聯(lián)網(wǎng)模式的緊迫性。 洛杉磯2025年11月8日 /美通社/...

關(guān)鍵字: CAN 網(wǎng)絡(luò) IC 互聯(lián)網(wǎng)

2025下半年以來,AI 領(lǐng)域的熱度持續(xù)攀升,美國企業(yè)在該領(lǐng)域的投資力度更是不斷加大。

關(guān)鍵字: 互聯(lián)網(wǎng) AI泡沫 高盛 AI投資 AI

仿真技術(shù)帶來了諸多便利與優(yōu)勢。 仿真技術(shù)具有成本低、適應(yīng)范圍廣和提供豐富信息的優(yōu)勢。首先,其成本相對較低。進行仿真時,無需制作實體模型或購買昂貴的測量設(shè)備,大大節(jié)省了資源和時間。同時,仿真模型的大小可隨心所欲地調(diào)整,無論...

關(guān)鍵字: 互聯(lián)網(wǎng) 仿真技術(shù)
關(guān)閉