<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何成為更優秀的工程師?

5RJg_mcuworld ? 來源:未知 ? 作者:易水寒 ? 2018-10-28 09:51 ? 次閱讀

來自Heap(一家主要為企業提供用戶數據分析架構的企業)早期員工Michael Malis,就如何成為一名更加優秀的工程師給出了自己的日常訓練方式:

讀論文;

學習一種新的工具;

讀書;

錄屏。

其中第四點比較有趣,大家感興趣可以直接跳到第四部分,看看他是如何具體實施的。以下為正文。

我的成為更好的工程師的方法是建立一套訓練體系。這套體系里有一些固定的練習,我每周都會進行。設計這套訓練體系有兩個非常明確的目標:

學習解決之前不會解決的問題;

學習如何更快更好的寫程序。

訓練計劃主要是由四個練習組成的,每一個都會幫助我向上面的兩個目標前進。這四個練習是:

讀論文;

學習新工具;

讀書;

寫程序的時候錄屏。然后回顧一下,看看能不能寫得更快。

下面我會詳細地介紹一下我是怎么做的。我想分享一些練習的細節,還有我從中獲得的收益。

讀論文

這項練習的目標是拓展CS相關的知識。在這之中我發現有兩方面直接收益。第一是一些論文可以改變我對一些固定問題的思考模式。舉個栗子,The Tail at Scale這篇論文驗證了反直覺的長尾延遲的本質。

其中我認為比較有趣的是關于在大量機器上運行一個請求是怎樣影響延時的問題。作者研究了Google一項服務的實驗數據。這項服務將請求拆分,然后分發給不同的服務。

他們用數據評估了一下,將請求分發給100個服務的情況。作者發現,如果你測量從100項服務獲得回復的時間,一半以上的時間花費在等待最后五項服務的回復上。

這是因為最慢的5%的請求要比其他請求慢非常多。論文也給出了一些方法來降低長尾延遲。我發現這些方法,在我這邊的一些工作上也可以用。

第二個好處是我發現讀論文可以讓我融會貫通不同系統的知識。舉個栗子,Google的分布式數據庫Spanner。

Spanner用了很多不同的技術,比如Paxos、two phase commit、MVCC和predicted locks。通過閱讀相關論文,我就能建立對于這些不同的技術的理解。這可以讓我以一個整體來理解Spanner,并且和其他系統比較Spanner的利弊。

我讀的論文主要來自于以前讀過的論文的參考文獻或者Morning Paper的封面文章。Designing Data Intensive Applications這本書的參考文獻里也有很多值得一讀的論文。

學習新工具

解決問題最簡單辦法之一就是用一個解決這種問題的工具。這個練習就是選一個工具,然后學習一下它。

通常我的練習過程就是,安裝工具,練幾個教程,然后簡單看看手冊。我這么學過的工具范圍從bash指令比如JQ、Sed到分布式系統比如Kafka、Zookeeper。

學習bash指令讓我解決日常問題的效率提升了很多。類似的,學習不同的分布式系統可以讓我明白如何針對不同的問題運用不同的工具。

讀書

我用書來補充從論文里或者學習工具無法獲得的知識。我讀過的書主題范圍比較廣。比如最近讀過的:

Refactoring– 這本書讓我明白好的代碼是什么樣的,以及如何將不好的代碼轉化為好的代碼。

Getting Things Done– 這本書讓我明白如何安排工作的優先級以及如何追蹤工作進展。它幫我建立了一套體系來確認優先完成重要的工作。

The First Time Manager– 最近我剛好做了團隊管理員,需要協調不同的團隊一起工作,還要主持團隊會議。這本書有助于我理解管理的基本原理。

錄屏

這個訓練是我的最愛。這個練習也是對我解決問題改變最大的。運動員經常會看自己的錄像來讓自己做的更好。

所以我決定也這么搞一下,來提升編程能力。我從自己的錄屏里學到的經驗包括:

它可以幫助你在寫代碼的時候就測試代碼。這樣可以通過快速定位Bug來減少DEBUG方面消耗的時間。如果之前的代碼都沒有Bug,那Bug肯定是在你新寫的代碼里。

當DEBUG時,針對要DEBUG的對象專門添加函數是非常有必要的。舉個栗子,之前一個玩具的項目,我要寫一個LRU緩存。寫了個Bug,它不能清除正確的元素。這時我就可以快速地添加一個打印當前緩存狀態的函數來看一下是哪里出問題了。之后我就可以看一下緩存的期望狀態和現在實際情況的差別。這樣就可以讓我快速定位Bug。

在開始寫代碼之前,花五分鐘決定一下方向會非常的有效。這么做有兩點好處。首先是能夠確認方向是正確的。更重要的是,這樣可以強迫自己選擇單一的方向。因為看了我的錄像后,我發現我在選擇實現方向上經常猶豫很長的時間,其實兩個方向都還OK。

所有這些經驗現在回顧的時候都很明顯。但是在我看錄像,發現我在哪里花費大量時間之前都沒有能夠系統地將這些經驗總結出來。

我做這項練習的步驟是:

記錄一些我寫程序的錄像??梢允枪ぷ髦械?,也可以是在LeetCode這種刷題網站上刷題的時候。

十倍速看一遍錄像,并且記錄每個時刻我在做什么。

然后統計一下在大的類別上分別花費的時間。比如花了多少時間DEBUG,花了多少時間寫功能。

看看花時間最長的類目。然后仔細研究下為啥花費了這么長的時間。

提出一些能夠讓我節約時間的方法。有一些辦法可以讓我把代碼結構化,然后可以讓我少寫一些代碼或者更快找到Bug。

我強烈推薦寫代碼的時候錄屏。這是一種最簡單的不斷做一些小的改變來讓自己效率更高的方法。

這套訓練策略我堅持差不多一年了。感受到自己發生了很大的改變。學到了很多之前沒有學過的關于系統和工具的知識。

現在解決問題也要比之前快。希望你能考慮一下這些練習,然后自己也嘗試一下。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 工程師
    +關注

    關注

    59

    文章

    1554

    瀏覽量

    67659
  • 代碼
    +關注

    關注

    30

    文章

    4575

    瀏覽量

    67132
  • 數據分析
    +關注

    關注

    2

    文章

    1365

    瀏覽量

    33787

原文標題:如何成為更優秀的工程師?

文章出處:【微信號:mcuworld,微信公眾號:嵌入式資訊精選】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何成為一名高級電子工程師

    我是學點子的本科生,想請教各位電子工程師你們的學習之路是怎樣的,要想成為一名優秀的高級電子工程師該學什么,怎么學,具體的學習路線是什么樣的……
    發表于 01-06 00:32

    成為優秀的Layout工程師的學習步驟是什么樣的?

    我是初學者,我現在很困惑不知道從哪里學起,所以誠懇的求各位工程師給我指點迷津。包括要什么資料,可以的話可以推薦一下學習資料和視頻。不然,我拜你為師也可以,伙可以給報酬,真心想成為一名Layout
    發表于 03-07 18:47

    教你成為優秀的模擬集成電路設計工程師

    教你成為優秀的模擬集成電路設計工程師 怎么來訓練一個剛剛畢業的工程師呢?我只能從我所從事的領域出發,模擬集成電路設計,我會提供一些在其他工程
    發表于 08-01 21:47

    電子專業本科,畢業兩年,怎樣繼續學習努力,成為優秀的電子工程師

    電子專業本科,畢業兩年,怎樣繼續學習努力,成為優秀的電子工程師??工作是汽車電子,但是并不是自己設計,誒,感覺荒廢了
    發表于 08-10 23:01

    如何成為電子工程師

    本帖最后由 我愛敏 于 2015-9-18 16:17 編輯 如何成為電子工程師。
    發表于 09-17 18:02

    pads工程師

    精通pads,就能找到pads工作,成為優秀pcb工程師
    發表于 06-05 11:28

    想去粵嵌教育成為一名優秀的嵌入式工程師應該具備什么樣的技能呢?

    怎么才能成為一名優秀的嵌入式工程師?想去粵嵌教育成為一名優秀的嵌入式工程師應該具備什么樣的技能呢
    發表于 06-05 17:06

    優秀的Python工程師養成記

    容易入門,但想要學好,成為一名優秀的Python工程師就不是那么容易的事情了,需要受到很多因素的影響,以下是成為一名優秀的Python
    發表于 03-27 16:06

    怎樣才能成為一個優秀的嵌入式開發工程師

    。從何學起,以什么樣的學習路線穩步推進就成了擺在嵌入式開發學習面前的首要問題。本文以作者的學習經驗和體會,為大家闡述一種學習路徑,供各位同學參考。一、嵌入式工程師必備技能總覽在介紹學習路徑之前,我們先來了解一下要成為一個優秀的嵌
    發表于 08-23 07:10

    如何成為優秀的機械工程師

    遠遠不是一個級別的,機械工程師的稱號的絕不僅僅是畫畫圖而已,從方案到出樣機都能獨立完成,具有豐富設計經驗,這其實相當不容易。那么如何成為優秀的機械工程師,如何提升自己的實力,有哪些值得
    發表于 09-09 08:31

    如何才能讓自己成為一名嵌入式開發工程師?

    成為一名優秀的嵌入式開發工程師有哪些要求?隨著國內嵌入式行業的迅速崛起,嵌入式人才嚴重緊缺,企業對嵌入式人才更是求賢若渴。盡管是在就業難的今天,但是各大人才招聘網站上,高薪招聘嵌入式開發工程師
    發表于 11-08 07:40

    如何成為一個優秀的嵌入式硬件工程師?

    如何成為一個優秀的嵌入式硬件工程師?
    發表于 11-19 06:51

    如何成為一名優秀的嵌入式工程師?

    如何成為一名優秀的嵌入式工程師?嵌入式學習的第一步,首先是C語言。 1.理解內存管理:C語言不同于高級語言,它不會自動管理內存。因此,你需要理解并掌握如何使用malloc()、free()等函數
    發表于 11-07 15:36

    如何成為一個優秀的電子工程師

    如何成為一個優秀的電子工程師,感興趣的小伙伴們可以看看。
    發表于 08-05 16:09 ?18次下載

    如何成為一名優秀的Linux工程師

    的個人能力有所不同,想要成為一名優秀工程師是需要我們往相應的方向努力的。那么,如何成為一名優秀的Linux
    的頭像 發表于 08-21 15:40 ?2925次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>