先講幾個(gè)個(gè)人不光彩的經(jīng)歷。
一、
????應(yīng)該是11年還在人人的時(shí)候,那段時(shí)間主要工作都是純考驗(yàn)技術(shù)的活兒。那時(shí)候離職人多。我一個(gè)人承擔(dān)了原來(lái)4個(gè)團(tuán)隊(duì)的工作。白天各路產(chǎn)品來(lái)找。我要利用晚上的時(shí)間將一個(gè)游戲(泡泡魚(yú),不知道是否有同學(xué)玩過(guò))
接入一個(gè)日本平臺(tái),并開(kāi)發(fā)完成支付功能。這是一個(gè)和其他游戲公司合作的項(xiàng)目,代碼用python寫(xiě)的。我只會(huì)java,但還是硬著頭皮用一周時(shí)間完成了開(kāi)發(fā)。結(jié)果上線出問(wèn)題了。線下環(huán)境運(yùn)行正常的代碼線上環(huán)境跑不起來(lái)。我們運(yùn)維MM搞不定了就不搞了擱著。于是我只好自己動(dòng)手,最后總算找到問(wèn)題原因是這個(gè)服務(wù)器上一個(gè)工具版本不兼容導(dǎo)致的。
????項(xiàng)目上線我們公司收到10w的接入費(fèi),這是第一次覺(jué)得自己給公司掙錢了。
????從此我都是做相對(duì)技術(shù)含量高的活兒。比如用一個(gè)月時(shí)間不僅搭建并維護(hù)了一個(gè)IM服務(wù)器,還自己用之前沒(méi)做過(guò)的android做了客戶端,壓測(cè)單臺(tái)服務(wù)器可承受萬(wàn)次并發(fā)。
????自己做了主圖片提取的算法圖片識(shí)別準(zhǔn)確率85%,記得當(dāng)時(shí)facebook好像是百分之四五十。
但是有次領(lǐng)導(dǎo)讓我調(diào)研一個(gè)記得好像是圖像識(shí)別還是語(yǔ)音識(shí)別的,我沒(méi)調(diào)研出來(lái),最后不了了之?,F(xiàn)在想來(lái)非常懊惱。當(dāng)時(shí)打怵的原因是第一那個(gè)東西是C語(yǔ)言寫(xiě)的。我一個(gè)做java的之前只做過(guò)將C++的中間件改成java。代碼看著就頭大還需要用它來(lái)開(kāi)發(fā)。語(yǔ)音和圖像識(shí)別太高大上,想不明白原理。現(xiàn)在想來(lái),第一這種識(shí)別的東西也不是讓我搞算法,肯定是調(diào)用設(shè)備或系統(tǒng)的某個(gè)接口而已。找到這個(gè)地方做突破口就好了。第二,我也不需要了解所有代碼,只需要重點(diǎn)幾個(gè)方法了解就可以。其實(shí)工作量和那個(gè)python游戲的一樣。因?yàn)樽约簯Z,錯(cuò)過(guò)了一個(gè)技術(shù)上突破的機(jī)會(huì)。
二、
????在正和島有兩件事。
????第一件事是記得有天干的很晚很累了,操作數(shù)據(jù)庫(kù)的時(shí)候?qū)憉pdate語(yǔ)句沒(méi)有加where條件直接回車,將所有線上用戶的頭像更新成一個(gè)人的了。當(dāng)時(shí)及時(shí)先用備份回滾,然后因?yàn)闀r(shí)間差造成的一百多條頭像不對(duì)是從hive里取日志的記錄,一條條手工更新回去的。還好當(dāng)時(shí)是項(xiàng)目剛上線,就幾千個(gè)用戶,并沒(méi)有實(shí)質(zhì)性損失。從此,養(yǎng)成了update和delete前先將where前換成select查看結(jié)果再執(zhí)行的習(xí)慣。
????第二件事是接入微信支付平臺(tái),上線了也沒(méi)發(fā)現(xiàn)什么問(wèn)題。但是我們領(lǐng)導(dǎo)有次巡查,發(fā)現(xiàn)數(shù)據(jù)庫(kù)里有兩列全為空。就開(kāi)始訓(xùn)我們產(chǎn)品。我一邊跟領(lǐng)導(dǎo)說(shuō)這是我的錯(cuò),一邊眼淚都在眼睛里打轉(zhuǎn)了。明明是我的鍋,我們產(chǎn)品招誰(shuí)惹誰(shuí)了?!這件事的教訓(xùn)下面再總結(jié),因?yàn)楹枚嗄晡叶紱](méi)找到這個(gè)問(wèn)題的本質(zhì)。
三、
18年夏天,經(jīng)歷了一個(gè)”從刪庫(kù)到不跑路“的過(guò)程。那段時(shí)間找找借口就是在金融時(shí)候積壓的疲憊和壓力,到架構(gòu)這邊還是破解不了壓力的源頭。整個(gè)人被壓垮了。有次操作線上在一張數(shù)據(jù)表中本著“做正確的事”的原則,給一個(gè)數(shù)據(jù)庫(kù)字段添加唯一索引。當(dāng)時(shí)記得是先select group by過(guò)沒(méi)有重復(fù)的,不知道怎么看錯(cuò)了,另外一點(diǎn)也是心存僥幸,覺(jué)得有問(wèn)題操作平臺(tái)會(huì)幫我check的。其實(shí)數(shù)據(jù)很多重復(fù),這張數(shù)據(jù)表有現(xiàn)在做的2.0的數(shù)據(jù),唯一索引是正確的,另外還有1.0的數(shù)據(jù),并不是唯一的。加了索引后,重復(fù)的數(shù)據(jù)被自動(dòng)刪除了。1.0的老程序瘋狂報(bào)錯(cuò)。我當(dāng)時(shí)精力已經(jīng)不支,同事幫忙回滾更新了數(shù)據(jù)庫(kù)。我休了兩天假。這是歷史上自己最痛徹心扉的經(jīng)歷。因?yàn)槌隽耸虑槲也皇亲约荷坪蟮倪€休了兩天假,好像逃了一樣。實(shí)際情況是當(dāng)時(shí)體力精力確實(shí)不支,當(dāng)時(shí)及時(shí)處理并沒(méi)造成太大影響,但是如果我留下來(lái)處理,可能會(huì)處理出更大的亂子。為了避免對(duì)公司造成損失,我就不添亂了。
那段時(shí)間同事見(jiàn)到我問(wèn)我怎么添了這么多白頭發(fā)。我笑笑不吱聲。那時(shí)候心里的焦慮排解不掉。心里就一個(gè)信念,我要一直留在這個(gè)部門,起碼到做好為止。焦慮因?yàn)榕虏荒芰粼谶@里。不然會(huì)成為終身的遺憾:終究沒(méi)能證明自己。
以上是事件,下面是總結(jié)。
1.自信心激發(fā)上限。
????2.Check機(jī)制保證底線。
上面事件提實(shí)際上提到3家公司。靜兒就職過(guò)的實(shí)際上有5家公司。還有兩個(gè)公司,工作過(guò)程其實(shí)特別順。總結(jié)來(lái)看,和語(yǔ)言沾邊兒的就特別順。上高中的時(shí)候,語(yǔ)文每次考第一。英語(yǔ)經(jīng)??嫉谝弧F渌木捅容^一般了。有次數(shù)學(xué)考了滿分,但那次考滿分的好幾個(gè)。關(guān)鍵是我覺(jué)得自己也沒(méi)做啥,就是語(yǔ)言類的考試不知道怎么就比別人考的好。而理科的東西,我需要加倍的努力才能和別人差不多。而我就是那種什么做不好就偏要做什么的人,竟然報(bào)考了計(jì)算機(jī)。
為什么和語(yǔ)言沾邊兒就會(huì)特別順呢?現(xiàn)在來(lái)看主要是自信心會(huì)讓精力高度集中,大腦沒(méi)有其他負(fù)擔(dān)。能夠發(fā)揮到一個(gè)上限。
天賦到底是個(gè)什么東西。天賦是我老媽本身會(huì)日語(yǔ)和俄語(yǔ)。她的經(jīng)歷遺傳了給我,讓我從出生起就有了十年的功力沉淀。在工作中很羨慕一些人,他們似乎天生就知道從各方面check、天生謹(jǐn)慎、及時(shí)了解經(jīng)濟(jì)、市場(chǎng),懂得調(diào)研。這些應(yīng)該和從小的經(jīng)歷和習(xí)慣有關(guān)系。我本身對(duì)這些東西都不感興趣,造成了我是自己見(jiàn)過(guò)天賦最差的程序員。
我用了十幾年時(shí)間看別人怎么做,慢慢對(duì)這些技術(shù)不再抵觸、不再厭煩。給自己積攢十年的功力。當(dāng)別人已經(jīng)步步高升了,我才剛起步。這又有什么關(guān)系呢。因?yàn)槿绻掖蛩愀傻?0歲,別人50歲退休了。那最終我們能達(dá)到的終點(diǎn)都一樣。
作為程序員最重要的是要保證自己產(chǎn)出的正確性。如果沒(méi)有天賦,就要勤能補(bǔ)拙。要有一個(gè)checklist,包括通用的和業(yè)務(wù)特殊的。通用的包括:
存儲(chǔ)數(shù)據(jù)正確性校驗(yàn)
日志正確性校驗(yàn)
debug過(guò)程符合預(yù)期
結(jié)果邏輯性校驗(yàn)(比如:一個(gè)人數(shù)為負(fù)數(shù)肯定是不符合邏輯的)
開(kāi)發(fā)中實(shí)時(shí)記錄上線步驟,保證上線無(wú)步驟遺漏并且都驗(yàn)證通過(guò)
新邏輯是否有開(kāi)關(guān)設(shè)計(jì)(上線有問(wèn)題可以一鍵切換舊版本)
灰度設(shè)計(jì)方案保證遇到問(wèn)題影響可控
上面是靜兒自己工作過(guò)程中認(rèn)為最重要的check項(xiàng)。自己的check項(xiàng)都做到了是用了保證底線的。自己的能力和自己的狀態(tài)才是激發(fā)上限的。
底線在工作中可以預(yù)防出錯(cuò),生活中也可以預(yù)防做出錯(cuò)誤的決定。比如我的底線是我可以向你走99步,前提是你要邁出第1步。理由很簡(jiǎn)單。如果和一個(gè)不肯對(duì)我付出的人在一起,結(jié)局一定是疲倦和絕望。與其懊惱終生,我寧可自己心里痛苦個(gè)三年五年??偙葞啄赀^(guò)后,我終于鼓起全身的能量要擺脫眼前這個(gè)給我?guī)?lái)不幸的這個(gè)人。他還很氣憤和不解對(duì)我說(shuō):為什么、為什么,我們過(guò)得那么好。
錯(cuò)了不是以后做好就行了,而是要實(shí)實(shí)在在需要長(zhǎng)期反省與反思的。這不是好事,卻是一筆寶貴的財(cái)富。積累下來(lái)就是天賦。我此生對(duì)白首之人只做過(guò)一次選擇,足夠了。我知道和別人在一起是什么樣子,和他一起是什么樣子。這是一種天賦。而遇到事情可以感同身受的預(yù)見(jiàn)到后果,在此之前做出正確的判斷也是需要修煉的天賦。
? ? 曾經(jīng)開(kāi)玩笑說(shuō)自己換工作的就是要把公司周圍的好吃的都吃遍了,然后換個(gè)地方吃。這十幾年工作經(jīng)歷是在積累天賦的過(guò)程。如今我可以踏踏實(shí)實(shí)的在崗位上做自己想做的事。不會(huì)被外面的世界所誘惑,因?yàn)槲铱梢愿型硎艿南胂蟮?。偶爾有上面的壓力,提及我需要帶團(tuán)隊(duì)。
我是這么考慮的,目前我處于一個(gè)自己很理想的環(huán)境。每一步走的都很夯實(shí)。我希望可以盡量長(zhǎng)一點(diǎn)這樣走下去。因?yàn)檫@些經(jīng)歷可以讓我以后更能對(duì)別人的處境感同身受,并且形成自己方法和能力體系。但是我會(huì)服從組織的安排,并在這之前多多怎么勝任而思考。因?yàn)楣ぷ髯钪匾氖且l(fā)揮價(jià)值。
最后對(duì)于選擇工作補(bǔ)充一點(diǎn)。一個(gè)好的團(tuán)隊(duì)是感覺(jué)自己身上的缺點(diǎn)和想提高的地方,在這里可以找到答案。如果自己是一個(gè)很容易受別人影響的人。那最好經(jīng)常在團(tuán)隊(duì)里發(fā)言,并且說(shuō)法分量重的人不要有明顯的自身缺陷。這種缺陷比如自負(fù)、負(fù)能量高、說(shuō)話方式讓人不舒服。
焦るな。欲張るな。あきらめるな。みんな一歩ずつ歩いているんだから。
???? 不著急。不貪心。不放棄。路是一步一步走出來(lái)的。