工作兩年記(二): 經(jīng)驗(yàn)教訓(xùn)反思

以下是我這幾天能夠想到的一些總結(jié)?;旧隙际且恍┮酝冗^(guò)的坑,或是自感不足的地方。先說(shuō)我覺(jué)得重要的,還有很多細(xì)節(jié)無(wú)法一一回憶起,以后有想到再作補(bǔ)充。

一,耐心和細(xì)心

我在學(xué)校給人打雜和這兩年工作越發(fā)覺(jué)得耐心和細(xì)心的重要性。這些年因?yàn)榇笠夥高^(guò)不少錯(cuò)誤,有幾次甚至手誤刪光了數(shù)據(jù)庫(kù)(幸好有有備份)。這樣的失誤在工程界也毫不罕見(jiàn),見(jiàn) GitLab 刪庫(kù)的事故

還有無(wú)數(shù)次因?yàn)榇a中的 Bug 頭疼地找了很久時(shí)間的錯(cuò)誤,有很多是因?yàn)樗悸返牟磺逦?,還有不少是一時(shí)手快粗心導(dǎo)致的。最初開(kāi)始寫(xiě)代碼的時(shí)候如果能夠更加謹(jǐn)慎,可以免去不少煩惱。我在這一點(diǎn)上吃過(guò)不少虧。

我相信和我一樣很多人開(kāi)始碼農(nóng)的職業(yè)生涯都是因?yàn)闊釔?ài),但是想要堅(jiān)持下來(lái)還需要持久的熱情和責(zé)任感。因?yàn)橛?jì)算機(jī)會(huì)一五一十地執(zhí)行程序員的所有指令,程序員要保證一個(gè)大量復(fù)雜的業(yè)務(wù)邏輯都能夠順利執(zhí)行,不出錯(cuò)誤,這需要極大的耐心和仔細(xì)完成高質(zhì)量的工作。

減少 Bug 和失誤的方法有很多種,比如軟件工程上對(duì)軟件的質(zhì)量管理手段(單元測(cè)試,代碼審查,還有,敲黑板提醒大家:定時(shí)備份,等等),但,最終都離不開(kāi)全神貫注投入工作的工程師。

二,最投入地工作,最投入地休息

高效地工作一個(gè)小時(shí)的效率可能會(huì)遠(yuǎn)遠(yuǎn)超過(guò)心不在焉工作兩三個(gè)小時(shí)的效率,有時(shí)可能會(huì)更多。就像剛才提到過(guò)的一樣,沒(méi)有全心投入的工作就會(huì)導(dǎo)致無(wú)法耐心與細(xì)心,所導(dǎo)致的錯(cuò)誤可能會(huì)造成后來(lái)更多的時(shí)間修復(fù),甚至造成更大損失(比如寫(xiě)出一個(gè)一鍵刪除數(shù)據(jù)庫(kù)的腳本)。我曾經(jīng)被這個(gè)問(wèn)題困擾過(guò)很久,后來(lái)覺(jué)得這個(gè)能力和所有技巧一樣,需要用心地練習(xí)。社交網(wǎng)絡(luò),嘈雜的工作環(huán)境和你的各式各樣的私事都會(huì)嚴(yán)重影響你的工作效率。只有在你能夠屏蔽所有的干擾(微博微信推特臉書(shū)網(wǎng)購(gòu)炒股……)才能夠進(jìn)入這個(gè)狀態(tài)。

順便我一直關(guān)注的一個(gè)博客 Scott Young 寫(xiě)了很多文章討論時(shí)間管理,其中也提到過(guò)如何高效地學(xué)習(xí)和工作。他嘗試過(guò)很多 Project,比如學(xué)習(xí)中文之類(lèi)。其中讓他成名的是他在一年時(shí)間學(xué)完 MIT計(jì)算機(jī)課程(當(dāng)然這未必適合所有人)。很有意思。

我心目中理想的工作狀態(tài)應(yīng)該是能夠在工作的時(shí)間里高效地完成工作的內(nèi)容,集中精力處理完所有的事情,然后能有時(shí)間休息。有足夠的自己的時(shí)間從工作中解脫出來(lái)——在我看來(lái)是件挺重要的事情,因?yàn)殚L(zhǎng)時(shí)間的緊張往往會(huì)降低工作質(zhì)量,而充分的自己時(shí)間不僅可以讓你得到放松,還能夠投資到工作之外的事情上:比如業(yè)余時(shí)間學(xué)習(xí),比如足夠的反思與發(fā)散的思考。反之,低效而忙碌的工作往往會(huì)讓你陷入惡性循環(huán):經(jīng)常加班加點(diǎn)干得很累,卻什么事都沒(méi)有做成。

對(duì)了,最后,能夠全神貫注地鉆研自己喜歡的事情是一種很特別的狀態(tài),會(huì)讓你非常享受。

,終生學(xué)習(xí)

剛才想到能夠有更多自己時(shí)間的目的之一,也是能有更多時(shí)間學(xué)習(xí)。終生學(xué)習(xí)的概念應(yīng)該有很多人都提過(guò)了,我也是一直堅(jiān)信不移的。程序員是個(gè)高度依靠腦力勞動(dòng)的職業(yè),可能會(huì)是最需要終生保持學(xué)習(xí)態(tài)度的職業(yè)之一。

程序員在課堂中,和職業(yè)初期會(huì)接觸到很多新鮮的事物,也會(huì)有一個(gè)很快的學(xué)習(xí)曲線。但是要保持技術(shù)的增長(zhǎng)還需要不斷地學(xué)習(xí)——通過(guò)書(shū)籍,博客,講座,等等。計(jì)算機(jī)技術(shù)日新月異,而且每天都會(huì)有新的觀點(diǎn),思路和解決方案。只有不斷開(kāi)放自己的頭腦才能跟上潮流。

這對(duì)很多人來(lái)說(shuō)可能聽(tīng)上去是一個(gè)苦差活,但是從另一個(gè)角度考慮這是一個(gè)挺值得慶幸的事:并不是很多職業(yè)都能夠有不斷接觸最前沿技術(shù),最新的思路和最新的想法的機(jī)會(huì)。我見(jiàn)過(guò)不少經(jīng)驗(yàn)非常豐富的老兵還在不斷出現(xiàn)在技術(shù)講座上,我的不少以往資深經(jīng)歷的同事還不時(shí)參加討論組討論交流。他們覺(jué)得一輩子做技術(shù)是件值得享受的事情。

有一個(gè)想法,不一定對(duì)。程序員應(yīng)該需要有以下的學(xué)習(xí)方向:

- 對(duì)基礎(chǔ)知識(shí)的復(fù)習(xí),比如編程語(yǔ)言,算法,數(shù)據(jù)結(jié)構(gòu),計(jì)算機(jī)系統(tǒng),網(wǎng)絡(luò)原理,等等。對(duì)基礎(chǔ)知識(shí)的掌握是自身職業(yè)發(fā)展的基石,對(duì)理解一切復(fù)雜的系統(tǒng)都是至關(guān)重要的。

- 對(duì)自身研究方向的理解。我覺(jué)得這一點(diǎn)毋庸置疑。無(wú)論你是網(wǎng)站前端,后端,系統(tǒng)工程,AI,云計(jì)算還是 SysAdmin 等等方向,都應(yīng)該起碼對(duì)自己業(yè)務(wù)熟悉。

- 對(duì)其他方向有一定的理解。我覺(jué)得花一點(diǎn)時(shí)間理解其他的系統(tǒng)對(duì)自身也有觸類(lèi)旁通之效,也能夠?qū)Υ笮偷南到y(tǒng)(比如網(wǎng)站)的各個(gè)組成部分有更好的理解。這點(diǎn)可能尤其在小公司有更大的幫助。

- 涉獵科技/經(jīng)濟(jì)/人文/歷史等等其他的學(xué)科。

另外前段時(shí)間看到池建強(qiáng)老師的博文:為什么要學(xué)習(xí)第二技能。我覺(jué)得可能有一定的道理。很多程序員最終能在其他的領(lǐng)域有所建樹(shù)能夠融合兩個(gè)方向所學(xué)有所建樹(shù),也會(huì)是難能可貴的事情。當(dāng)然這都離不開(kāi)投資時(shí)間不斷學(xué)習(xí)。

這個(gè)時(shí)代里最不缺的可能就是學(xué)習(xí)資源,我覺(jué)得現(xiàn)在找到優(yōu)質(zhì)的學(xué)習(xí)資源已經(jīng)不難了,難的是找到時(shí)間?;氐絼偛耪f(shuō)的高效工作,只有高效工作才能擠出更多的個(gè)人時(shí)間,只有擠出更多個(gè)人時(shí)間才能更好學(xué)習(xí)。個(gè)人的經(jīng)驗(yàn)是這一點(diǎn)實(shí)際挺難,今后需要花更多的時(shí)間持之以恒。

四,總結(jié)反思流程

在工作中不斷反思,總結(jié)流程,我覺(jué)得這也是積累經(jīng)驗(yàn)的方法之一。比如問(wèn):有多少工作是重復(fù)勞動(dòng),可以自動(dòng)化,被腳本替代的?有多少工作是可以精簡(jiǎn)的?反之,有多少工作是可以極大提高效率,是值得做的?

如此的反思可以總結(jié)出不少流程上的問(wèn)題,比如組里曾經(jīng)需要大量分析數(shù)據(jù),需要有很大量的手工拷貝數(shù)據(jù),再臨時(shí)寫(xiě)腳本處理,并生成可視化的趨勢(shì)圖或是直方圖作出比較。而且下次再分析一批數(shù)據(jù)還要有不少手工操作。后來(lái)我們討論后,組里的另一同事和我花了不少時(shí)間寫(xiě)了不少 Python 來(lái)自動(dòng)化大部分流程。盡管前期投入了不少時(shí)間,而且結(jié)果也不盡完美,但還是省下了不少重復(fù)的工作。長(zhǎng)期看來(lái)還是值得的。

時(shí)不時(shí)反思思考自己的工作流程對(duì)自身經(jīng)驗(yàn)有不少的好處,分享給團(tuán)隊(duì)也會(huì)有利于整個(gè)團(tuán)隊(duì)的增長(zhǎng)和發(fā)展。程序員之間的相互交流實(shí)際上是很重要的一個(gè)環(huán)節(jié)。

五,學(xué)會(huì)和人交流

碼農(nóng)都是一心寫(xiě)代碼的工程師,不需要和人交流——這可能是很多人對(duì)程序員的刻板印象。而這幾年的經(jīng)驗(yàn)是,善于交流的碼農(nóng)對(duì)周?chē)耐履酥琳麄€(gè)團(tuán)隊(duì)的建設(shè)都有非常重要的作用。一個(gè)積極向上能夠給周?chē)陆o以鼓勵(lì)的碼農(nóng)可以輕松地協(xié)調(diào)個(gè)人甚至一個(gè)團(tuán)隊(duì)的協(xié)作,一個(gè)技術(shù)高超但是性格差勁,與人溝通不順的工程師可能會(huì)毀掉整個(gè)團(tuán)隊(duì)的建設(shè)。Netflix 技術(shù)大牛 Brendan Gregg 最近還專(zhuān)門(mén)撰文討論了這個(gè)想法:一個(gè)聰明的混蛋不該留在團(tuán)隊(duì)里。簡(jiǎn)而言之,一個(gè)自私,自戀,目中無(wú)人,甚至嘲諷同事獲取優(yōu)越感的天才程序員不僅不會(huì)帶來(lái)相應(yīng)的成績(jī),反而會(huì)大大損傷公司中的士氣,損害公司各個(gè)工程師平等討論的機(jī)會(huì),甚至?xí)騻€(gè)人偏見(jiàn)帶偏整個(gè)公司的技術(shù)路線。

當(dāng)然,一個(gè)善于交流的工程師僅僅做到禮貌待人還不夠,高效的交流還包括及時(shí)地傳遞消息,及時(shí)地表達(dá)想法。短期來(lái)看,及時(shí)地讓團(tuán)隊(duì)知道你的進(jìn)度,你所面臨的問(wèn)題及你目前的解決方案會(huì)給你帶來(lái)很多幫助。(我因?yàn)檫@一點(diǎn)沒(méi)有做好浪費(fèi)過(guò)很多時(shí)間,甚至有過(guò)不少不愉快的經(jīng)歷。)及時(shí)的溝通往往能夠節(jié)省這些時(shí)間提升工作效率,也會(huì)打消很多誤解。長(zhǎng)期來(lái)看,分享你的經(jīng)驗(yàn),表達(dá)你對(duì)整個(gè)問(wèn)題的考慮與思考,反饋你意識(shí)到的各種問(wèn)題,對(duì)隊(duì)伍和自己都有幫助。

在和組里同事閑聊時(shí)我聽(tīng)說(shuō)過(guò)很多關(guān)于他們遇上的各種奇葩的領(lǐng)導(dǎo)和同事:比如無(wú)時(shí)無(wú)刻不在催促進(jìn)度的老板,脾氣差的老板,傲慢想當(dāng)然而且自以為是的老板,從不主動(dòng)和人說(shuō)話的同事,項(xiàng)目沒(méi)有按自己提議來(lái)就堵氣的同事,等等。

和在任何一個(gè)地方一樣,碼農(nóng)團(tuán)隊(duì)中的交流與溝通也是一門(mén)藝術(shù)。人情練達(dá)皆是文章,個(gè)人和團(tuán)隊(duì)都需要日積月累的培養(yǎng)。

,更多時(shí)間寫(xiě)作

這兩年里腦子浮現(xiàn)過(guò)很多想法一直想要表達(dá),有些一直在徘徊,有些很快就忘記了。曾經(jīng)答應(yīng)過(guò)自己要多寫(xiě)些東西,但是一直拖拖拉拉。這可能是繼減肥之后第二難實(shí)現(xiàn)的新年期望。

接下來(lái)的時(shí)間里會(huì)要求自己多寫(xiě)些東西。我也推薦所有的碼農(nóng)們能騰出一段時(shí)間寫(xiě)些技術(shù)總結(jié),或是任何生活閑筆。寫(xiě)作的時(shí)候需要整理自己的思緒,讓想法更有條理,甚至能發(fā)現(xiàn)自己思路里很多錯(cuò)誤不足的地方。

如果能夠再能夠吸引一小批觀眾那就更好了。

七,鍛煉身體,保持健康

這個(gè)就不多解釋了。你們懂的。


2017/12/01

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容