如何成為高效率的工程師

最近看了一本書缎患,叫做 《The Effective Engineer》滞欠,中文名翻譯過來大概就是《高效率工程師》這種吧。收益良多雹洗,決定寫一下讀書筆記,因為書里面的 Engineer 大部分指的就是從事開發(fā)的程序員卧波,所以后面我多數(shù)會用研發(fā)时肿,程序員來表示了。

選擇正確的思維模式

關(guān)注高杠桿率事項

阿基米德曾經(jīng)說過『給我一個支點港粱,我能翹起地球』螃成,當然旦签,這話他到底說過沒有,我們先不糾結(jié)寸宏,這里要表述的意思很明確宁炫,就是杠桿的力量。對于高效率來說氮凝,可以用如下的公式來表示:

杠桿 = 產(chǎn)生的影響力 / 投入的時間

作為一個工程師羔巢,要做高效率的事情,自然將事情做到高杠桿率罩阵,做法就可能有三種:

  1. 減少完成這件事情的時間
  2. 提升這件事情的影響力
  3. 切換到另一個有更高杠桿率的事情上

上面列出來的幾個方法竿秆,已經(jīng)非常的直白容易實施了,譬如對于數(shù)據(jù)庫的優(yōu)化永脓,我們可以這么做:

  1. 使用更好的工具來定位性能問題袍辞,如常用的 perf,VTune 這些常摧,減少定位性能問題的時間搅吁。
  2. 深刻的理解 workload,知道哪些請求是高頻率的落午,或者哪些請求是最消耗資源的谎懦,解決這些大頭問題。
  3. 發(fā)現(xiàn)搞不定溃斋,讓業(yè)務去調(diào)整代碼界拦,譬如加個索引啥的,短期不做無謂的優(yōu)化了梗劫。

優(yōu)化學習方式

俗話說享甸,活到老,學到老梳侨,我們其實需要不斷的學習蛉威,不斷去提升精進自己。不過要接受這個走哺,首先得讓我們具備成長型思維蚯嫌。大家應該的聽說過固定型思維和成長型思維,沒有的話可以看看《終身成長》這本書丙躏,大概了解一下择示。總的來說晒旅,就是我們需要構(gòu)建一個成長型的思維模式栅盲,如何做這個,網(wǎng)上其實有很多方式敢朱,譬如:

  1. 承認并且接受自己的不完美
  2. 勇敢的面對挑戰(zhàn)剪菱,視挑戰(zhàn)為機會
  3. 嘗試不同的學習策略
  4. 摩瞎。。孝常。旗们。。构灸。

當有了成長型思維之后上渴,下一個要做的就是投資我們的學習率。大家應該都聽過復利喜颁,在投資的早期稠氮,收益其實是很低的,但隨著時間的推移半开,收益率會越來越高隔披。其實學習也是類似的情況,所以越早學習寂拆,學得越多奢米,后面學習新的東西就會越容易。

當然纠永,對于工作的我們來說鬓长,最好的做法就是能在工作中學習,如果我們能加入一個快速成長的公司(譬如 PingCAP)尝江,你在里面能接觸各種各樣有挑戰(zhàn)的事情涉波,能快速的學習成長。如果一個公司里面有很多牛人(再一次炭序,譬如 PingCAP)啤覆,你也可以通過從他們身上學習到很多事情,譬如你可以看他們寫的代碼惭聂,或者讓他們幫你去 review 你的代碼城侧,或者你的設(shè)計,這些都是能提升自己的方式彼妻。

當然,在工作之外豆茫,其實也是需要學習的侨歉,雖然很多人講究生活和工作的平衡,但有時候揩魂,我還是希望大家能在業(yè)余時間多花時間來提升自己幽邓。我們可以多看幾本書,多學習一門新的語言火脉,這些都是能讓我們變成一個更高效工程師的方式牵舵。

習慣優(yōu)先排序

當我們開始關(guān)注高杠桿事情之后柒啤,自然會面對事情優(yōu)先級的問題。這方面其實相關(guān)的書籍也不少畸颅,譬如著名的《高效能人士的七個習慣》這本書担巩,就把事情分成了四象限:

  • 象限 1 - 緊急 + 重要
  • 象限 2 - 不緊急 + 重要
  • 象限 3 - 緊急 + 不重要
  • 象限 4 - 不緊急 + 不重要

我們自然要盡量去避免做象限 3 和 4 的事情,但有時候没炒,我們會大量的精力去處理象限 1 的事情涛癌,但實際,我們最應該放精力的是象限 2送火,也就是重要不緊急的事情拳话,這樣才能讓我們長期成長。

另外种吸,在做事情的時候弃衍,我們還會面臨一個問題,就是拖延坚俗,人都是有惰性的镜盯,要戰(zhàn)勝惰性,有一個簡單的方法可以試試坦冠,這個就是 if-then形耗,如果我們要進行一項任務,可以在它之前設(shè)定一個場景開關(guān)辙浑,也就是如果發(fā)生了什么事情激涤,那我就應該干這項任務了。這樣沒準能戰(zhàn)勝拖延了判呕。

執(zhí)行倦踢,執(zhí)行,執(zhí)行

投資迭代速度

只有跑的更快侠草,才能學習的更快辱挥,在這個世界上,唯一不變的只有變化边涕。對于程序員晤碘,或者 team,或者公司來說功蜓,要讓自己的效率更高园爷,一個很重要的點就是:『工欲善其事必先利其器』。

工具對程序員的重要性毋庸置疑式撼,但恰恰很多程序員忽略了工具的重要性童社,他們疲于開發(fā),總覺得自己寫得多就代表著效率高著隆,但實際確是在不斷的給自己挖坑扰楼。

PingCAP 可以算是一個非常重視工具的公司呀癣,我們相信能自動化用工具去解決的,絕對不依靠人力來弄弦赖,這樣才能保證整個研發(fā)團隊的高效率项栏。譬如,我們研發(fā)了 Chaos 自動化測試平臺腾节,幫我們發(fā)現(xiàn)不少穩(wěn)定性問題忘嫉,引入了 Fuzzing 工具,來保證 SQL 的 logic 都能正確處理案腺,這些工具很好的保證了我們整個產(chǎn)品的快速迭代庆冕。

那么對于程序員來說,除了有意識的要重視起工具劈榨,一些簡單的方法也可以嘗試:

  1. 更好的熟悉 IDE 的快捷鍵访递,畢竟打字的速度還是比移動鼠標快多了
  2. 學至少一門高級的腳本語言,來簡化自己很多流程化工作同辣。
  3. 熟悉并且掌握 shell拷姿,尤其是數(shù)據(jù)處理,通過 shell 比自己手工來搞方便太多
  4. 旱函。响巢。。棒妨。踪古。。

當然券腔,程序員不能只盯著自己的技術(shù)伏穆,在其他方面,也需要提升纷纫,只有全面發(fā)展了枕扫,才可以迭代的更快。這里可以看看《軟技能:代碼之外的生存指南》這本書辱魁,來學習如何提升自己的軟技能烟瞧。

測量我們想提升的事項

如果我們要迭代,一個自然的問題染簇,就是如何衡量我們的迭代是有效的燕刻。這里,就可以使用最常用的辦法 - metrics剖笙。

大家在做性能優(yōu)化的時候,通常也會在一些關(guān)鍵的地方加上 metrics请唱,然后通過 metrics 來衡量優(yōu)化是否有效果弥咪,對于我們自己也是一樣过蹂。當然,我們要先選對 metrics聚至,畢竟錯誤的 metrics 反倒是會讓我們變得更加不高效酷勺,譬如如果我們用每周工作時長來衡量一個程序員的產(chǎn)出,那么最后就會變成大家為了看起來產(chǎn)出高扳躬,而在工作的時候混日子脆诉,拖時間。要選擇一個正確的 metrics贷币,通郴魇ぃ可以關(guān)注以下幾個指標:

  1. 最大影響,就跟優(yōu)化一樣的役纹,我們通常會首先關(guān)注開銷最大的地方偶摔。
  2. 可執(zhí)行,也就是這些 metrics 的提升真的是因為我們的努力而變化的促脉。
  3. 可反應辰斋,這些 metrics 能很直觀對變化給與正負反饋。

當我們有了計劃瘸味,有了 metrics宫仗,自然就可以去執(zhí)行,去實施旁仿,不過需要注意的是在實施的時候也需要時刻知道事情的進展藕夫,別偏離方向。我們可以使用工具來記錄丁逝,譬如對于我們自己系統(tǒng)汁胆,可以使用 Prometheus 來保存 metrics,這樣我們就能知道整個歷史的變化了霜幼。

不過最重要的一點嫩码,就是記錄的數(shù)據(jù)一定要是真是的,錯誤的數(shù)據(jù)甚至比沒有數(shù)據(jù)還要糟糕罪既,因為這可能會讓我們進行錯誤的決策铸题。

更快,更頻繁的去驗證我們的想法

要迭代的更快琢感,一個必要的事情就是要更快的去驗證我們的想法丢间。這里有一個詞,叫做 MVP - Minimum viable product驹针,也就是最小化的可行產(chǎn)品烘挫。我們需要很多小的工作,來收集數(shù)據(jù),從而驗證我們的假設(shè)和目標饮六。

要對產(chǎn)品迭代其垄,通常一個比較好的做法就是進行 A/B testing,同時建立起來完善的反饋循環(huán)卤橄,讓我們知道每一次決定是不是對的绿满。

增強我們項目評估技能

對于工程師來說,還需要鍛煉的一個能力就是項目評估技能窟扑,程序員向來喜歡高估自己的能力喇颁,低估事情的復雜度,項目時間通常預估不準嚎货,導致項目延期橘霎。所以我們需要使用更加精確的預估手段來推進項目,下面是一些可行的方案:

  1. 將項目拆分成更加細粒度的任務厂抖,
  2. 基于任務實際會耗時多久來評估茎毁,而不是基于我們或者其他人覺得要花多久時間
  3. 基于概率統(tǒng)計來評估,而不是基于最好的情況來
  4. 讓實際做任務的人來進行評估
  5. 使用多種方式來評估同一個任務
  6. 通過歷史數(shù)據(jù)來驗證評估是否合理
  7. 使用時間窗口來限制任務的時間
  8. 允許其他人來質(zhì)疑我們的評估

最后忱辅,無論我們選擇了什么方案七蜘,一點需要注意的是,一定要給未知的東西預留時間墙懂,也就是要給自己留點 buffer橡卤,隨時應變。

當我們評估完成時間之后损搬,需要設(shè)置好清晰的計劃碧库,以及可衡量的里程碑,讓我們盡量走在正確的道路上巧勤。這里幾點要注意:

  1. 要盡快的減少并且規(guī)避風險嵌灰,甚至需要先把風險最高的事情搞定
  2. 對于從頭造輪子,要保持足夠的警覺
  3. 要懂得項目是跑馬拉松颅悉,不要再中途就多次沖刺沽瞭,保持合理的節(jié)奏,當然有時候稍微提速也是可以的

構(gòu)建長期價值

務實的平衡品質(zhì)

有時候剩瓶,項目的快速發(fā)展跟品質(zhì)是有沖突的驹溃,所以這里我們需要好好的平衡兩者的關(guān)系。

首先延曙,我們需要建立 code review 的文化豌鹤,不允許大家隨意的增加功能,隨意的合并代碼枝缔。雖然這個可能會影響產(chǎn)品進度布疙,但好處不言而喻。在 PingCAP,我們有著嚴格的 code review 流程灵临,一個程序員如果要開發(fā)一個新的功能拣挪,他需要提交 RFC,只有 RFC 被通過了俱诸,才能進行開發(fā),當然赊舶,他也可以先自己做點原型驗證睁搭,讓 RFC 更容易被通過。每個 PR笼平,我們至少需要兩個人 review 并且 approve 才能 merge园骆。

在代碼層面,我們需要鼓勵抽象寓调,使用抽象來封裝復雜的邏輯锌唾,保證代碼容易學習,容易使用夺英,容易擴展晌涕。代碼的測試一定要跟上,一定要重視自動化測試痛悯,這個很多研發(fā)都不喜歡寫測試余黎,覺得那是 QA team 的事情,但恰恰研發(fā)是最應該懂測試的载萌。

最小化操作負擔

對于一個產(chǎn)品來說惧财,易用性是非常關(guān)鍵的,我們一定要保證操作的簡單扭仁,這點其實 TiDB 還有很大的進步空間垮衷,所以非常歡迎大家加入幫助我們一起來改進,如果你有任何易用性上面的問題乖坠,歡迎聯(lián)系我搀突。

投資整個 team 的成長

當然,除了要關(guān)注產(chǎn)品價值瓤帚,整個 team 也是要仔細考慮的描姚,畢竟得先有人,才能做出來產(chǎn)品戈次。要保證 team 不斷的成長轩勘,所以我們需要建立一個不錯的工程師文化,主要包括:

  1. 不斷的優(yōu)化迭代速度怯邪,實施 MVP
  2. 自動化绊寻,自動化,自動化
  3. 對代碼進行正確的抽象
  4. 關(guān)注代碼質(zhì)量,強制 code review
  5. 建立一個有尊嚴的工作環(huán)境
  6. 培養(yǎng)一個持續(xù)學習的文化澄步,并不斷的完善
  7. 給自己分配一點做研究的時間冰蘑,譬如每周 20% 時間,或者通過 hackathon
  8. 村缸。祠肥。。梯皿。仇箱。。

寫在最后

好了东羹,說了這么多剂桥,我們一直在聊的是高效,上面只是我的一些對照書的簡單總結(jié)属提。如果你能看到這里权逗,我表示很佩服,因為現(xiàn)在要說重點的東西了冤议。

作為一個程序員斟薇,高效是需要融入到自己骨子里面的,但是求类,很多同學一定會很苦悶到底如何才能變得高效奔垦?自然,一個很簡單的辦法就是加入一個高效率的公司尸疆。如果一個公司從上到下都是推崇的高效率工程師文化椿猎,待在里面,自然也就能潛移默化的變得高效了寿弱。很自豪的說犯眠,PingCAP 就是這樣一家公司 :-)

不過,這里我還會更進一步症革,在 PingCAP 里面筐咧,有一只神秘的特種部隊,天生是為高效而生的噪矛,它的名字就是 Effective Tool Team量蕊,簡稱 ET Team,沒錯艇挨,這個就是致敬 E.T. 外星人的残炮。

在 ET team 里面,我們立足于使用最少的資源來解決最大的問題缩滨,也就是會關(guān)注于杠桿的那個支點势就。在 ET team泉瞻,你會:

  • 研究不同的測試技術(shù),譬如 Chaos苞冯,F(xiàn)uzzing袖牙,Performance regression,來不斷的去提升 TiDB 的質(zhì)量舅锄。
  • 研究不同的 bot 技術(shù)鞭达,讓 PingCAP 的整個工作流自動化運轉(zhuǎn)。
  • 研究各種診斷工具皇忿,通過開發(fā) ftrace碉怔,bcc,eBPF禁添,perf 等工具來讓整個系統(tǒng)的運轉(zhuǎn)在你的面前了無秘密。你甚至可以去 hack Linux 內(nèi)核桨踪。
  • 參與到 TiDB 的研發(fā)老翘,尤其是涉及到性能,穩(wěn)定性相關(guān)的模塊锻离,你都可以肆意的去貢獻铺峭,去完善。
  • 任何能提升團隊效率的事情

在 ET team汽纠,你可以不斷的去突破你的想象力卫键,我們一直相信『天空才是你的極限!』虱朵,如果你愿意加入莉炉,歡迎聯(lián)系我 tl@pingcap.com

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末碴犬,一起剝皮案震驚了整個濱河市絮宁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌服协,老刑警劉巖绍昂,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異偿荷,居然都是意外死亡窘游,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進店門跳纳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來忍饰,“玉大人,你說我怎么就攤上這事棒旗〈” “怎么了撩荣?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長饶深。 經(jīng)常有香客問我餐曹,道長,這世上最難降的妖魔是什么敌厘? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任台猴,我火速辦了婚禮,結(jié)果婚禮上俱两,老公的妹妹穿的比我還像新娘饱狂。我一直安慰自己,他們只是感情好宪彩,可當我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布休讳。 她就那樣靜靜地躺著,像睡著了一般尿孔。 火紅的嫁衣襯著肌膚如雪俊柔。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天活合,我揣著相機與錄音雏婶,去河邊找鬼。 笑死白指,一個胖子當著我的面吹牛留晚,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播告嘲,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼错维,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了橄唬?” 一聲冷哼從身側(cè)響起需五,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎轧坎,沒想到半個月后宏邮,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡缸血,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年蜜氨,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片捎泻。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡飒炎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出笆豁,到底是詐尸還是另有隱情郎汪,我是刑警寧澤赤赊,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站煞赢,受9級特大地震影響抛计,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜照筑,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一吹截、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧凝危,春花似錦波俄、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至支鸡,卻和暖如春阀趴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背苍匆。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留棚菊,地道東北人浸踩。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像统求,于是被迫代替她去往敵國和親坡倔。 傳聞我的和親對象是個殘疾皇子赡译,可洞房花燭夜當晚...
    茶點故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 清晨漫步禪寺院,陽光明媚鳥兒閑。 彎曲小徑通幽處对湃,只聞鐘磬蕩山間。
    雨的眼睛閱讀 318評論 4 11
  • 作為一個在網(wǎng)上被騙了好多次的苦命娃崭放,下面給大家科普一些網(wǎng)上兩種常見的詐騙套路电禀。 利用淘寶代刷 第一步:在最開始的時...
    人間浮歡閱讀 9,344評論 2 14
  • 匆匆看完《我的少女時代》,我不是女生己莺,不曾有過少女時代奏甫。它只是從一個少女的視角,獻給我們所有人凌受。 我想阵子,所有看過這...
    小三黑閱讀 378評論 0 2
  • 《第五人格》你知道先知的役鳥有多牛嗎?四位紅蝶害怕的求生者胜蛉!《第五人格》紅蝶害怕的四位求生者挠进,最后一位可以打斷飛天...
    游戲巔峰閱讀 2,792評論 0 2
  • 節(jié)拍:大腦天生的可調(diào)節(jié)性可以通過節(jié)拍器應用到提高閱讀速度方面色乾。開始時,沿視覺引導線每一拍就表示一次敲擊领突。建立一種規(guī)...
    昏O昏閱讀 237評論 0 0