在微软工作一年,我学会了什么
我不說,要說你們說。不過也講真的,我這么珍貴的公眾號,不能他想發就發。我看了眼,寫得還行,僅次于小馬的水平,值得一讀。我先打賞為敬,你們隨意。
“?
以下正文時間,閱讀本文大概需要 10 分鐘。
”前天的時候我直播分享了一個 Talk,主題為《技術求職通關指南》,在這里我分享了一些求職面試、職業生涯規劃的相關內容。有當前技術行業的發展現狀簡介、面試的經驗和技巧、公司的選擇和未來規劃、個人平時的學習和生活經驗。直播時間持續了 2 小時,如果大家感興趣可以去看看下錄播。
本來想把所有的內容整理成文章發布的,但是感覺內容確實有點太多,當時粗略的講稿就寫了 6 頁,所以在這里我就只摘取了自己的學習經驗和生活經驗來展開寫一下,正好當時分享的時候由于時間比較匆忙,也沒有說得很詳細,所以這里就把這一部分好好梳理下,分享給大家,希望對大家有幫助。
學習經驗
首先分享一下自己在學習技術的過程中的一些經驗啦,這些也是自己在學習的過程中慢慢總結出來的,希望對大家有所啟發。
持續學習
當前互聯網發展太快了,我們可以發現現在很多技術更迭太快。比如說前端吧,前幾年幾乎人人都在用的 jQuery,現在已經幾乎被淘汰了。前幾年比較火的算法和模型,現在已經被最新的模型遠遠甩開了。另外我們也可以看到很多輪子、框架也只是在某個時間段火一把,幾年之后就過時了。所以入了這一行,就需要保持一個持續學習的心,做好終身學習的準備。
打好基本功
剛才也說了,很多框架、輪子可能過幾年就過時了,或者說某個框架從 1.0 到 2.0,API 變化非常大,我們就得重新學習。但是我們可以看到,雖然其設計的 API、用法變了,其核心還是不變的,最本質的算法和追求的目標還是不變的。
所以說基本功很重要,我們可以去試著了解下其設計的原理、其核心的算法邏輯、其更底層的操作,如果我們把這些基本功打扎實了,它上層的框架和 API 怎么變,我們也知道其所以然。
深度和廣度擴展
技術領域劃分了太多的方向,比如粗略劃分行業有前端、后端、數據分析、機器學習等等方向。這時候問題就來了,這么多方向,我們應該怎樣去了解和學習?
在我看來,我們應該在擴展廣度的基礎上,著重選擇 1-2 個方向擴展深度。比如說,我們可以對每個方向都了解一下,類似于向全棧方向靠一靠,類似于樹把樹根擴展地廣一點。但是也不能什么方向都挖一點就淺嘗輒止了,這樣就有種半吊子的感覺了,并不牢靠。所以我們可以在這個基礎上著重選擇 1-2 個方向去深耕、鉆研,成為這個領域的專家或者走到 TOP 位置,類似于將樹根朝這個方向扎深。這樣既可以在某個領域站穩腳跟,有自己的支柱,同時還對其他的方向有所認識、建立整個聯系。
總結和記錄
這個其實在之前我說過太多次了,也是我覺得非常非常非常重要的一點。我們在學習一個知識或者學一個框架的時候,有些知識點當時記住了,如果不注意總結和記錄,很快就會遺忘了。很多時候,回過頭來,我們會發現自己收獲的就是曾經記錄過的那一部分,沒有記錄過的再也想不起來了。
所以,建議大家在學習的時候注意做好筆記,最好能夠比較體系化地梳理一下,達到一篇博客的標準,而不僅僅是簡單地做筆記。筆記是給自己看的,博客是給別人看的,后者要求在寫的過程中寫清楚很多事情,包括為什么、怎么做、達到什么效果、解決什么問題,這些內容。在寫的過程中,我們的大腦也會不斷地組織和思考,寫完之后,我們就能在腦子里有一個更深刻的印象。以后再查閱的時候,也能很快回憶起來。
所以,希望大家在學習的過程中多按照博客的標準去做筆記。如果能夠分享給其他人,那更好了。
是否要造輪子
很多人會在造輪子和不造輪子的觀點上產生爭執。有人說,人生苦短,一些庫和輪子別人寫好了,直接拿來用就行了;一些人又說,你就只知道調輪子,連個底層的原理都不知道,自己寫一寫就明白了。
在我看來,這個是需要區別對待的。有的東西我們是需要造輪子的,有的不用。
我認為一個庫的學習是可以分為三個層面的。第一個層面就是了解即可,我們不需要用到多么高深的用法,只是用它的一些功能來解決一些剛需,所以只需要懂得我們需要的那塊就行了,以后可能也不會用到其他的部分,那這種就只需要稍微了解即可,并不需要去造輪子。第二個層面就是全面掌握,比如一個庫我們在開發過程中依賴得比較多,我們就需要全面了解它的原理和高級用法,甚至有些時候記住它的一些 API。第三個層面是深入了解甚至改寫。某個庫和框架可能已經不能滿足我們的需求,我們可能需要在它的基礎上改造,這時候就需要我們深入去了解它的源碼、設計邏輯,能夠去改寫或重寫,這時候才是造輪子的時候。
所以我們在學習的時候可以多去思考,哪些庫應該歸類到哪個層級,在不同的情況下采取合適的學習策略。
資訊號的訂閱
現在這個時代,信息量真的是爆炸。怎樣才能更好地獲取我們想要的技術資訊呢?在這里分享一下我的幾個方法。
第一個是 RSS 訂閱,互聯網上還是有很多優秀的技術網站的,而絕大多數網站都有自己的 RSS 訂閱地址。我們可以使用一個 RSS 聚合閱讀來把它們收集起來,這樣這些網站在更新的時候我們就會及時收到了。比如我自己用的是 Feedly 和 Reader3 ,二者來配合使用,它們可以對各個來源網站分類,個人感覺還是比較方便的。如果大家有更方便的工具歡迎推薦。
第二個就是公眾號了,我一般也是訂閱了自己喜歡的公眾號,主要訂閱一些能夠產出較為優質原創內容的公眾號,一些資訊號可以選擇一些大號或官方媒體。其他的號可能大部分轉來轉去、推來推去的,真正有價值的并不多。所以大家在篩選的時候可以注意甄別。
第三個就是微博,我會關注一些技術博主,他們可能會經常性地發一些干貨分享,包括一些科技新聞、實用工具、科普教程等等,我把它們劃分到一個分組。在刷微博的時候可以只刷這個分組的微博,就能看到不少和技術相關的內容了。
多去實踐
技術上的東西,如果我們想要學會,是需要我們親身去實踐的。比如去寫一個庫,單純去閱讀文檔或看視頻教程,其實沒過多久就忘得一干二凈了。如果想要記得牢靠,去手敲一遍,去動手做一遍,其印象和理解程度會遠遠不一樣。
所以,要多練,多動手實踐。
官方文檔很靠譜
很多朋友在學習一個庫或者框架的時候,可能都是百度來百度去,結果只能搜到一些抄來抄去的博客,很多時候并不能解決實際的問題。另外很多官方文檔都是英文的,也可能由于英文的問題,可能很多人也并不習慣去看英文的官方文檔。
但實際上,官方文檔才是最新最全的,一些問題幾乎都能在官方文檔上找到答案。如果想要系統地了解一個庫或工具的用法,建議大家一定要多去看官方文檔。畢竟現在很多中文的文章,不管內容好壞,它的范圍一定逃不出官方文檔的范圍。而且,如果某些庫或工具有更新,最先更新的肯定是官方文檔。所以,好好看看官方文檔,不要去懼怕看不懂,即使看不懂,用一些翻譯軟件配合一下,也基本不是什么問題。
怎樣解決問題
在開發過程中,Bug 一定是在所難免的。一個優秀的程序猿不僅要能寫 Bug,還要能 DeBug,也就是解決 Bug。那么怎么來解決 Bug 呢?可能很多朋友一看到有問題就去問別人了。這其實是不好的,而且也不利于個人技術水平的培養。
我個人建議可以這樣。一般第一步就是把 Traceback 報錯信息找出來,然后放到谷歌上去搜,不要用百度,百度搜索技術問題的結果比谷歌差太多了。一般情況下,谷歌都能給我們搜到一些 Stack Overflow 上的解決方案或者 GitHub 的 Issue 或者別人總結到的解決方案記錄,通過這三個地方,我們基本能解決一大半的問題,除非這個問題沒有人遇到過。
如果上面的方案找不到,我們可能就要轉去官方文檔來搜一下了,搜索相關模塊的用法,看看是不是哪里調用的不對或者哪里有更新了沒有及時跟進,另外在閱讀文檔的過程中我們也能了解一些原理和其他的解決方案。
如果還是不行,可能我們得去找找源碼,是不是源碼哪里寫的有問題,或者某個功能就是沒實現。如果確實沒有或者實現得不對,可以去 GitHub 上提 Issue,與原作者交流。
如果經過上面的流程還沒有解決,那么幾乎問別人也不好解決了。這時候就可以去請教一些比較有經驗的大牛或者專家,看看他們是否遇到過類似的問題,與他們交流交流,說不定也會得到更多好的解決方案。但我相信,通過前面的流程,幾乎 90% 的問題都能解決了,即使沒有解決,我們也能對這個問題有更深的理解。
以上便是一般情況下解決問題的流程。為什么說一般情況下呢?因為有時候在某些緊急情況下,想要快速解決問題,同時旁邊正好還有有經驗的朋友,快速問一下解決還是可以的,當然這是特殊情況哈。
怎樣問問題
說到問別人問題,我心中也是說不盡的苦水。很多人在問我問題的時候經常就出現這樣的情況:
?問一句「在嗎?可以請教你一個問題嗎?」,然后就沒有下文了。一般情況下我可能在忙,沒注意,等到注意到,回他一句,他已經不在了,然后可能就真的沒有下文了。?有的就直接粗略問我「我代碼運行跑不通啊」,然后也不發報錯信息,然后我還要去跟他要報錯信息。?有的直接就很不客氣的跟我說「在嗎,給我看看這個問題。」我是誰啊?我憑什么要幫你看呢??還有其他的,手機拍幾張看都看不清的圖,一打開全是那種網格線,截個圖不好嗎?
還有很多其他的吧,不一一列舉了。
怎么說呢?我之前也犯過前面的錯誤,畢竟每個人都是慢慢成長起來的,我也是被一些前輩教導才領悟到了一些東西,都是情有可原的。
當然有一點是,被問的人其實是沒有責任幫你解答問題的,他們不回也是很正常的,尤其是在他們遇到以上情況時候,大多數情況下可能真的是心累了,選擇性地忽略了。當然也可能是太忙了,忙忘了也很正常。所以,遇到問問題沒有回復的情況,也不要去懷恨在心,實際情況下可能真的是就忽略了或者提問的方式并不友好。
那么一般情況下可以怎么提問題呢?首先,拿出禮貌的態度是必須的,畢竟是在向他人請教。所以說話的語氣稍微恭敬一點。然后說清楚背景、來龍去脈,比如你在做什么想達成什么目的描述清楚。然后再描述清楚你的問題是什么,有報錯信息把報錯信息和系統環境貼出來。然后可以描述下為了解決這個問題你做了什么樣的嘗試,想尋求一種怎樣的解決方案。如有必要還可以發個紅包。這種情況下,被提問者會覺得你這個人做事很有邏輯,而且是真的嘗試了沒有解決,不是伸手黨,而且很有誠意,所以很大概率就會回答了。
所以,掌握一些提問的技巧還是很有必要的。
時間管理
現在這個時候,時間比什么都重要,每個人的時間都是公平的,如果我們能夠合理規劃好自己的時間和工作,這就跨出了成功的一步。
我曾經嘗試用手寫的方式來記錄自己的一些任務,但總感覺它有一些并不方便的地方。比如某時某刻突然想起來,想要添加一件事情或者完成了一件事情,或者想要修改截止時間,或者想要劃分優先級,其實都不怎么方便。最好的方式還是通過一些專用的時間管理軟件來分配分配和管理自己的時間。
我曾經使用過非常多款時間管理工具,最終我選擇的是「滴答清單」,這個是我感覺體驗非常不錯的一款。這個軟件里面基本的任務添加與勾劃功能當然必不可少,它也支持優先級管理、分類管理、時間提醒,另外它支持全部平臺,不論是網頁還是 Windows、Mac、Android、iPhone、iPad,可以全平臺同步,非常方便。它還支持多人協作,我曾經使用這款軟件完成了多個項目的任務分配和多人協作開發。
另外關于時間管理還有一個非常重要的四象限法則,大家也可以了解一下。比如重要不緊急、重要緊急、不重要緊急、不重要不緊急,我們在做事情的時候可以優先做重要緊急的事情,然后平時有時間做一些重要不緊急的事情,盡量減少不重要緊急的事情占用的時間,這樣我們可以更合理地進行時間上的分配。這個功能其實滴答清單也可以通過智能清單的方式來控制實現。
另外在做事情的時候怎樣保持更專注呢?我一般會采用番茄工作法,大家不了解的可以了解一下。一個番茄可以設定 35-45 分鐘,在開始番茄計時前想好這段時間要做什么,只要開了一個番茄,就不要被任何意外打斷,在這個時間保持專注,朝著自己的目標進發。最后我們會發現,一個番茄下來,實現的事情還是不少的。當然最重要的是,在這段時間內保持專注,朝著自己想完成的目標去做。最后一天下來,數數自己完成了幾個番茄,總結一下,還是蠻有成就感的。
效率軟件
做技術難免會用到很多軟件,有些軟件就是為了解決辦公和開發效率問題而生的。比如我用 Mac,我就時不時去尋找一些提高效率或更方便的軟件,比如 Alfred、Paste、Termius、ForkLift、iPic、Typora 等等,原則就是好用、易用、跨平臺、云同步,大家也可以去打造一套適合自己的效率組件,確實會給自己帶來非常多的便利。
生活經驗
下面再總結幾點生活上的經驗,是我自己平時的一些總結,希望對大家有所啟發。
考慮好成本
做一件事前,想想這件事的意義和成本有多大,別把時間浪費在無意義的事情上面。我們的時間是非常寶貴的,不要把時間浪費在無意義的事情上面。一件事在做之前,想想做了會耗費多少精力和時間,它值不值得做。如果不值得,那就不要去做了,留出更多時間做更有意義的事情,甚至去休息也比這強。
減少時間浪費
很多情況下生活并沒有那么如意,一些事并不是我們不想去做就不用做的。如果一件事是自己不喜歡的或者無價值的但是非要做,那就用最短的時間去完成,盡量較少時間在這方面事情上的浪費。
多投資自己、少依傍別人
很多情況下,我們需要多在自己身上下功夫,培養自己的實力。如果我們自己都沒有什么能力,就算我們遇到了牛人,也說不上話,也建不起橋。只有把自己變強大了,別人才會看到你,別人才會覺得你有價值。所以,好好加油,把自己變牛逼就對了。
怎樣介紹自己
在成年人的世界里,很多情況下都是看利益不看感情的。如果你對別人有價值,能給別人帶來利益,別人才可能會跟你打交道。所以,在與別人介紹自己的時候,說清楚自己能帶來的價值很重要。
比如說,一個人向另一個人介紹自己的時候,介紹了自己干嘛的,有多么牛逼,出了什么東西,得了什么獎,然后就完了。另一個人會想,你這么牛逼,對我來說又有什么用呢?然后就沒有然后了。
所以說,我們在向別人介紹自己的時候,可以除了說清楚自己是做什么的之外,還要說清楚自己能夠提供什么價值。比如我做網絡爬蟲、Web 開發、機器學習,我就可以跟別人說如有網絡爬蟲、Web 開發、機器學習相關問題可以跟我交流,也可以有相關項目合作。這樣,別人就知道我能給他帶來什么價值了,以后也就會有更多機會交流和合作。
所以說,介紹自己還是很有講究的,可以好好想一想。
懂得一些規則
在成年人、社會人的世界,有太多大家都已經默認的規矩,自己要去懂,沒幾個人會教我們。就像一個圈子有一個圈子的潛規則一樣,如果我們不知道,很可能就吃了大虧,或者鑄成一些錯誤。但這個又不是每個人會去教,可以多去觀察生活中的一些現象,多去思考一下為什么,或者聽聽過來人的經驗,是有很多用處的。
錢的問題
錢,確實是個好東西。有人說,談錢俗。你說俗就俗吧,但錢確實有用。
錢,不能保證能買到所有東西或者實現所有愿望,但是它的確可以提供便利或者免去不必要的麻煩,可以增加幸福感的。甚至說,世界上能夠用錢解決的問題都不是問題,可能說得稍微有點夸張,但它確實很有用。
另外在一些人脈關系上,能夠用錢解決的,也少去消耗人脈。用錢來解決,反而可能會加固人脈。比如你第一次給了錢,以后人家會有更強的意愿跟你合作的,畢竟這關系到剛才所說的「利益」。
另外如果想要賺錢,最好不要選和時間或精力成正比的事情。比如搬磚、理發,這些就是出一份力、得一份錢。而現在這個時代,我們可以尋求很多復利性的東西,比如出個課程,錄制一次,后面賣多少份就收多少份的錢了。
學會拒絕
我之前不懂得去拒絕別人,比如我有時候已經非常忙了,有人找我來幫個忙,我還是會答應下來。甚至為了幫別人,我連自己的事情都放在了后面,或者不惜熬夜也要做出來。這樣其實會非常累,而這時候如果別人再不領情,就反而會讓自己十分憤怒。
所以,一些情況下,我們需要懂得去拒絕。比如我們的事情自己有自己的規劃,什么時候干什么都是有計劃的。這時候如果有人來尋求幫助,我們可以跟他說,我最近有什么什么事情,你這個事情我可能需要什么時候才能給你完成了,能行嗎?或者自己實在沒時間,就直接拒絕好了。不要因為不會拒絕而把自己搞得太累,沒必要。
邁出第一步、走出舒適區
有時候,邁出第一步真的是很重要的,其實做一件事最難的階段就是開始。
比如說我有一個非常久不維護的一個項目,我想起來的時候我就懶得去做,現在我會強制逼迫自己把準備工作做好。比如說把代碼下載下來用文本編輯器把它打開,再把代碼運行起來,然后我就可以全心投入精力來修改了。
比如說,我有一篇文章之前寫了一半,現在沒有在寫了,我就會強制自己把這篇文章打開進入到編輯的頁面,然后我就會繼續寫了。
這樣實際上就成功了一半了。
有時候我們會陷在當前的舒適圈出不來,但我們只要逼迫自己走出來,其實后面并沒有我們想得那么難。
還有挺多想法的,有些我也沒有想的特別明白,這里我就不再展開寫了,先暫時寫這么多啦。
希望這些內容能夠給大家帶來一些幫助,謝謝。
最后,有崔慶才的顏粉,想看下原汁原味直播的朋友,可以點開原文鏈接。欣賞一個小時的崔慶才高清無碼視頻。感謝大家支持,我們跟崔大哥改天(月/年)再見。
?
總結
以上是生活随笔為你收集整理的在微软工作一年,我学会了什么的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .Net Core3.0 日志 logg
- 下一篇: 聊聊 Docker Swarm 部署 g