谈谈怎样提高炼丹手速
文 | 夕小瑤
最近搞定幾件焦頭爛額的大事后,終于有了一丟丟的時間來寫寫文章,并且偶爾思考下算法工程師的核心競爭力是什么。
前不久一時興起寫了篇標(biāo)題黨文章《驚了!掌握了這個煉丹技巧的我開始突飛猛進(jìn)》,簡單描述了一下我的升級打怪路線圖。后來想了想,發(fā)現(xiàn)還有一點極其重要的基本功常常被大家忽略,但確是初級&中級算法工程師之間拉開差距的重要因素,那就是:手速。
手速有什么用呢?
假如一件事情工程量較大(大型實驗 or 策略pipeline復(fù)雜 or 從0到1單純的代碼量大),那么別人整整一周才能完成的工作你兩天就做完了,于是你就多出來了5天的時間去刷刷paper、或者冥(fa)想(dai),于是你就成了一個有靈魂的打工人(有時間自我提升了!還能儲備套路和靈感!)。
換個視角,假如你手速不行,大家預(yù)期你兩周能完成的工作,實際你做了三周,這就會導(dǎo)致你陷入到了“不斷趕ddl”的節(jié)奏怪圈和產(chǎn)出焦慮中,不僅失去了成長和靈魂,還可能失去生活和女朋友!哪怕你曾經(jīng)是個聰明的小機(jī)靈,也會由于疲于趕ddl而失去思考的機(jī)會。
再比如,假如一件事情風(fēng)險很大(成功后收益當(dāng)然也更大),對正常人來說是不敢嘗試的,畢竟誰都不想怒肝五天后發(fā)現(xiàn)是個代碼全廢的失敗idea,于是周報上:“本周無進(jìn)展,只有個失敗的嘗試”。
于是,大部分人只去嘗試一些確定性強(qiáng)的有收益的事情,當(dāng)然這類事情也很難帶來大的驚喜和差異化,而手速快的你就有資本去嘗試這類風(fēng)險較高的操作(畢竟失敗了你也沒耽誤主線進(jìn)度),于是你就相比其他人有了命中高收益事件的可能性。
短時間內(nèi),這個 “靈魂收益”+“高收益事件命中收益” 可能看不出太大意義,但長線下去就會引起質(zhì)的差異。畢竟“文能創(chuàng)新寫paper,武能光速肝產(chǎn)出”的小可愛在職場中是相當(dāng)稀少的,絕大部分人僅有其一,而當(dāng)兩者兼?zhèn)鋾r便能產(chǎn)生奇妙的化學(xué)反應(yīng),取個五毛錢的名字,叫做“核心技術(shù)差異化”。
get了手速的重要性,接下來就談?wù)勗趺刺岣邿挼な炙佟?/p>
提高煉丹手速
最重要的是工具層面的基本功:
熟練掌握主力編程語言(比如python)。不是單純的記住語法就叫熟練了,還包括常見的寫法優(yōu)化、代碼效率優(yōu)化、高頻代碼段的光速實現(xiàn)、光速修報錯(常見python層報錯還靠Google的話建議面壁)等。
熟練掌握shell,積累替代python代碼段的奇技淫巧。帶過幾個實習(xí)生,發(fā)現(xiàn)實習(xí)生手速慢的其中一個重要原因是普遍不熟悉shell這種high-level腳本語言,經(jīng)常管道黏幾個命令就能搞定的事情,實習(xí)生往往要花幾十分鐘寫一坨python代碼,還效率極差,數(shù)據(jù)規(guī)模一大就尷尬。
熟練掌握主力深度學(xué)習(xí)框架。這里不是說必須要去深究框架層源碼細(xì)節(jié),而是說要對框架底層運行機(jī)制和常用API的行為有非常清晰的把控,如果還能做到框架能力覆蓋面(哪些功能/操作這個框架實現(xiàn)不了,或者實現(xiàn)代價高,甚至有bug)方面的把控和大版本差異化點方面的了解,那就更好了。這會在你嘗試一些比較有腦洞的想法,或者快速驗證一些fancy但閉源的論文idea時有很大的幫助。如果你想實現(xiàn)一個操作卻不知道這個框架有沒有API支持,那就說明對這個框架的了解還不夠。
這種工具層面的基本功怎么提升呢?沒有好的捷徑,那就是多寫代碼,尤其是主導(dǎo)研發(fā)萬行代碼以上的項目,會非常鍛煉你的語言/框架基本功。如果沒有這種機(jī)會,也可以偶爾抽出些精力去重構(gòu)實驗項目代碼,提升其易用性和靈活性。
再說說積累和習(xí)慣問題
為每種經(jīng)典算法任務(wù)都積累一個重構(gòu)的不錯的完整、易用、靈活的project,這種project就是將來你完成其他相近project的熱啟動project。由于這個project是經(jīng)過你的手重構(gòu)的,所以二次上手成本和魔改成本會遠(yuǎn)低于你去找個外部的github repo。
以NLP為例,基于傳統(tǒng)cnn/lstm的文本分類、文本匹配、序列標(biāo)注、自回歸生成、閱讀理解基線project,基于BERT的分類匹配標(biāo)注閱讀理解MLM project,離散檢索&向量檢索project,離散聚類&向量聚類project,serving project,知識蒸餾project,多feature ensemble,多任務(wù)學(xué)習(xí)project等都可以根據(jù)自己實際需要抽時間折騰重構(gòu)&沉淀,親測上手新任務(wù)時還是非常省心省力省時間的。建議大家業(yè)余抽點精力將自己工作內(nèi)容相關(guān)的project時不時的重構(gòu)、打磨一下,一年后做類似的project時你會非常感激自己當(dāng)年的勤勞的!
最后說一些不建議頻繁嘗試的提高手速的奇技淫巧:
再次警告下,不建議頻繁嘗試!否則后果自負(fù)!
咖啡。在非常困和非常精神的時候就別考慮了,在微困和微乏時就是效率神器了。強(qiáng)烈建議不要喝太濃的、太劣質(zhì)的和太甜的。如果發(fā)現(xiàn)出現(xiàn)眩暈、頭皮發(fā)麻、焦慮、注意力不集中或易出汗等現(xiàn)象,就說明這杯咖啡對你來說太濃了,或者太劣質(zhì)了;如果喝完沒有任何感覺,反而更想睡覺了,說明糖加多了或者太劣質(zhì)了。另外,熬夜后第二天千萬不要喝咖啡,強(qiáng)行提神很容易造成免疫系統(tǒng)異常(生病、過敏甚至影響很長一段時間的精神狀態(tài))。
換個環(huán)境。當(dāng)前所處環(huán)境干擾較多(尤其是非背景白噪聲的干擾,比如時不時有人說話、手機(jī)提醒音、有人來回走動甚至戳你聊會天)時,找個沒人的會議室/角落可以大大提升注意力。長期未被打斷的沉浸式做一件事情時,人的注意力狀態(tài)/效率大概是藍(lán)色線,長期處于敏感干擾較多的環(huán)境中時,人的效率大概是紅色線。當(dāng)然,一人占用會議室是浪費公共資源,且亂換環(huán)境也有被懷疑摸魚的風(fēng)險,所以雖然可以大大提高手速,但是嘗試要慎重。
扔掉手機(jī),屏蔽聊天工具通知甚至直接退出(后果自負(fù)。。。
隱藏mac docker欄/windows 通知欄,營造沉浸式開發(fā)環(huán)境(后果自負(fù)
若想再進(jìn)一步,就是研究一些高階的時間管理技巧了,統(tǒng)籌規(guī)劃下自己的時間碎片和事件列表,尤其當(dāng)N多線條并行推進(jìn)時,若缺乏必要的時間管理能力和意識,很容易丟三落四、將事情搞得一團(tuán)糟并且導(dǎo)致自己無暇煉丹,更不必說手速了。這方面又能寫一篇文章了,大家感興趣的可以自行去知乎做做功課,這也是打工人進(jìn)階的必備能力!
好啦,本期分享就到這里了,大家有什么困惑或者想聽的經(jīng)驗分享也可以在評論區(qū)留言,下期分享的錦鯉主題可能就是你!沒抽中的小伙伴也不要難過,下次一定!
后臺回復(fù)關(guān)鍵詞【入群】
加入賣萌屋NLP/IR/Rec與求職討論群
后臺回復(fù)關(guān)鍵詞【頂會】
獲取ACL、CIKM等各大頂會論文集!
總結(jié)
以上是生活随笔為你收集整理的谈谈怎样提高炼丹手速的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 召回粗排精排-级联漏斗(下)
- 下一篇: 推荐系统顶会RecSys’20亮点赏析