一個(gè)程序員老兵的思考
工作走的累了,不妨停下來(lái),思考一下這一路走來(lái)的艱辛。 算一算,我也是工作時(shí)間不短的人了。 但是總是感覺(jué)工作中思路、方法或多或少有問(wèn)題。 前幾日和朋友幾杯酒下肚,倒是聊出了一些故事,說(shuō)說(shuō)自己的感受,也就成了此文。
目標(biāo)&手段——引子
先來(lái)說(shuō)個(gè)場(chǎng)景,關(guān)于電商的秒殺。
“大秒活動(dòng)基本都是在整點(diǎn)進(jìn)行的,整點(diǎn)活動(dòng)的詳情頁(yè)流量會(huì)非常高,為了保證這么大的流量不沖垮機(jī)器,業(yè)內(nèi)大致的做法如下:
從詳情頁(yè)開(kāi)始就做了多層過(guò)濾。首先是垃圾請(qǐng)求,普通的電商商品是可以通過(guò)拼http/https下單請(qǐng)求參數(shù)直接下單的,然而對(duì)大秒來(lái)說(shuō),如果選擇了答題,題目參數(shù)用戶(hù)是無(wú)法推斷的,detail會(huì)做一層簡(jiǎn)單的過(guò)濾,將這部分垃圾請(qǐng)求直接攔截掉;接著,由于人的操作速度限制,一秒幾十次的請(qǐng)求會(huì)被系統(tǒng)直接關(guān)進(jìn)小黑屋,進(jìn)行若干時(shí)間的屏蔽;如果流量依然很大,采取了柵欄方式進(jìn)行限流(此限流方式有運(yùn)氣成分,平時(shí)不會(huì)開(kāi)啟,只有在大促限流時(shí)偶爾開(kāi)啟),在系統(tǒng)約定的允許請(qǐng)求通過(guò)時(shí)間點(diǎn)起,會(huì)進(jìn)行一個(gè)隨機(jī)的時(shí)間偏移,每個(gè)請(qǐng)求的偏移時(shí)間不同,如果請(qǐng)求在偏移時(shí)間之內(nèi),不好意思,運(yùn)氣不好,需要再重試一次”。
在這個(gè)故事中,合適的做法,應(yīng)該先關(guān)注“如何從技術(shù)角度保證秒殺可以進(jìn)行”,而不是“怎么讓后端服務(wù)器同時(shí)頂住巨大的流量”。兩者的區(qū)別,是目標(biāo)和手段的區(qū)別。如果一開(kāi)始就考慮怎么頂住流量,很有可能就會(huì)因?yàn)檫x擇了錯(cuò)誤的方案,走進(jìn)死胡同(比如有可能加數(shù)倍的機(jī)器以及讓開(kāi)發(fā)同學(xué)被迫去壓榨已經(jīng)接近極限的性能)。
在工作中也一樣,首先需要圍繞目標(biāo)思考“ 要拿到什么結(jié)果 ”,再考慮“ 如何拿到這個(gè)結(jié)果 ”。這個(gè)概念極為重要,再怎么重視都不為過(guò)。
方向&方案
方向是確定的目標(biāo),方案是自由的手段 。
城市環(huán)衛(wèi),目標(biāo)是保持干凈的市容市貌,而不是雇傭和管理成千上萬(wàn)的清潔工,后者只是一種實(shí)現(xiàn)目標(biāo)的方案。
日本采取了另一種方案,就是做好垃圾分類(lèi),做好衛(wèi)生教育,結(jié)果卻比絕大部分國(guó)內(nèi)城市做得好。對(duì)于清潔工個(gè)體,也一樣:可以選擇早出晚歸勤掃不輟,也可以選擇多搞幾個(gè)垃圾桶,放 在垃圾源邊上。
“不管黑貓白貓,能抓老鼠的貓就是好貓”,是關(guān)于“方向&方案”的最好辯證。在這里,“抓老鼠”是目標(biāo),是好貓的標(biāo)準(zhǔn),而不是長(zhǎng)得萌或其他;在這個(gè)標(biāo)準(zhǔn)下,黑貓白貓都可以是好貓。
無(wú)論是公司CEO,還是清潔工,在目標(biāo)確定的情況下,手段的選擇是自由的。清楚這個(gè)概念,工作思路可以開(kāi)闊很多。可以問(wèn)老板要方向,不要問(wèn)老板要方案。方案是自己弄出來(lái)的,能想到leader想不到的方案并做出來(lái),就是我們牛逼,才能體現(xiàn)自己的價(jià)值。更進(jìn)一步,理解目標(biāo)更能幫你站在leader的角度看問(wèn)題,才能及時(shí)補(bǔ)位,超出預(yù)期。
結(jié)果&過(guò)程
結(jié)果是衡量工作好壞的唯一標(biāo)準(zhǔn),而過(guò)程不能完全拿來(lái)衡量工作好壞 。
在業(yè)務(wù)上,說(shuō)“用戶(hù)是上帝”,說(shuō)“用戶(hù)永遠(yuǎn)是對(duì)的”,因?yàn)?ldquo;用戶(hù)感知是檢驗(yàn)工作好壞的唯一標(biāo)準(zhǔn)”。一個(gè)事情做得好不好,不是由你的出發(fā)點(diǎn)、動(dòng)機(jī)和付出多少努力所決定的,而是你的用戶(hù)的感知所決定的。之前在前一家公司負(fù)責(zé)過(guò)公司內(nèi)部系統(tǒng)流程的移動(dòng)審批接入。上線之后接到不少同事的反饋說(shuō)體驗(yàn)不好, 手機(jī)打開(kāi)審批流程慢。老板找我聊,我也解釋了不少,說(shuō)作為審批網(wǎng)關(guān)性能實(shí)際上和內(nèi)外任務(wù)中心以及下游業(yè)務(wù)方數(shù)據(jù)實(shí)時(shí)獲取都有關(guān),但老板的意思很明確, “對(duì)于用戶(hù)而言,主觀即客觀”,用戶(hù)主觀覺(jué)得這個(gè)產(chǎn)品不好,那就是不好,沒(méi)什么可說(shuō)的。去想辦法改進(jìn)才是正道。另一個(gè)角度來(lái)看,只有用戶(hù)可感知的,才是有意義的。這個(gè)話我說(shuō)的稍微有些極端,但是并非沒(méi)有依據(jù)。我們很多人平時(shí)都是很忙。早上PRD, 下午技術(shù)方案評(píng)審,明天kickoff。但是這些只會(huì)產(chǎn)生結(jié)論,并沒(méi)有產(chǎn)生結(jié)果。這些“結(jié)論”,用戶(hù)都是沒(méi)有感知的,并不能讓我們的產(chǎn)品和服務(wù)讓更多人知道,讓更多人喜歡。在這些“結(jié)論”產(chǎn)生結(jié)果之前,所有的開(kāi)會(huì)、討論、分析,都是無(wú)用功。極端一點(diǎn)講,都是成本,而不是成果。沒(méi)有借口,說(shuō)到做到
說(shuō)到做到,是最大的靠譜 。
我遇到過(guò)很多這樣的場(chǎng)景。身邊的很多同事,包括我自己。總是喜歡為自己找借口。我們總是會(huì)說(shuō),項(xiàng)目晚上線, 是因?yàn)榕R時(shí)出了bug,是因?yàn)榕R時(shí)有新項(xiàng)目插進(jìn)來(lái)了,是因?yàn)閷?duì)方聯(lián)調(diào)的同事請(qǐng)假了,然后會(huì)把話題轉(zhuǎn)移到自己有多么多么辛苦。
岔開(kāi)說(shuō)個(gè)小事。我自己很多時(shí)候?qū)τ跁r(shí)間很偏執(zhí)。有朋友說(shuō)過(guò),“所有關(guān)于遲到的理由都是不成立的”。所以我總是很在意時(shí)間的規(guī)劃。比如我去每次去機(jī)場(chǎng)都會(huì)詳細(xì)的規(guī)劃好時(shí)間。比如晚上九點(diǎn)半的飛機(jī)。那我估計(jì)多長(zhǎng)時(shí)間候機(jī)?以往在路上大概多久(比如一路暢通從武林門(mén)機(jī)場(chǎng)大巴站到蕭山機(jī)場(chǎng)需要27分鐘)? 如果晚高峰預(yù)留多少時(shí)間合適?我需要多長(zhǎng)時(shí)間能打到車(chē)?等等。
總有人說(shuō),哎呀,路上太堵,運(yùn)氣不好連續(xù)碰到紅燈,所以遲到了——你總是掐點(diǎn)出門(mén),當(dāng)然會(huì)遲到,不是今天遲到就是明天遲到。你怎么不提前半小時(shí)出門(mén)呢?你不能默認(rèn)一路通暢啊,你應(yīng)該默認(rèn)路上會(huì)堵啊——做項(xiàng)目,你應(yīng)該默認(rèn)有困難啊,怎么可能預(yù)設(shè)沒(méi)意外呢?怎么不預(yù)備好解決突發(fā)問(wèn)題的資源呢?
困難及不確定性,是需要我們克服的東西,不是在開(kāi)始之前,就預(yù)設(shè)為事后“完不成的理由”。一旦有這種預(yù)設(shè),就完了,就從一個(gè)“行動(dòng)者”變成“解釋者”了,精氣神就沒(méi)了。的確,是有所謂的不可抗力,但99%被稱(chēng)為不可抗力的東西,都不是不可抗力。之前有句流行的話,“以大多數(shù)人努力的程度,根本還沒(méi)到拼智商的地步”。一樣的,大多數(shù)人面對(duì)的困難和不確定性,還遠(yuǎn)不到不可抗力的程度——還沒(méi)“盡人事”呢,就“聽(tīng)天命”了。
在上一節(jié)說(shuō)過(guò), “ 只有用戶(hù)可感知的,才是有意義的 ” 。所做的努力和投入,如果沒(méi)有最終實(shí)現(xiàn)并傳遞到用戶(hù)身上,就是成本。沒(méi)有完成目標(biāo),就是沒(méi)有完成目標(biāo),沒(méi)什么可多說(shuō)的。結(jié)果導(dǎo)向的意識(shí)形態(tài),就是“ 沒(méi)有借口 ”。
從終點(diǎn)出發(fā)
小孩子剛學(xué)寫(xiě)文章,總是想到哪里寫(xiě)到哪里;高手寫(xiě)文章,都是先列提綱再動(dòng)筆的。
我們?cè)谟檬謾C(jī)地圖導(dǎo)航的時(shí)候,第一步都是先輸入目的地。然后地圖會(huì)給你幾條路線的選擇,再看是打車(chē)還是公交車(chē)。這里面隱藏著一個(gè)道理,就是“倒著做事情”。所謂“倒著做事情”,就是在設(shè)置行動(dòng)路徑的時(shí)候,從你想要達(dá)到的結(jié)果進(jìn)行倒推,而不是根據(jù)眼下的情況決定行動(dòng)方案。上一節(jié)說(shuō)到,為了避免遲到,就要從上班的時(shí)間倒算,來(lái)定出門(mén)的時(shí)間、起床的時(shí)間;而不是先看幾點(diǎn)鐘起床,再看什么時(shí)候能到公司。
拿我們程序猿來(lái)說(shuō),我們經(jīng)常犯的錯(cuò)誤,就是接到一個(gè)需求,心里感嘆一句臥槽這很簡(jiǎn)單。一個(gè)早上的時(shí)間便已經(jīng)寫(xiě)完調(diào)試然后發(fā)布了。結(jié)果發(fā)生需求變更說(shuō)要加一個(gè)信息自己就懵了, 告訴PD說(shuō)這個(gè)改動(dòng)很難可能要改動(dòng)整體的架構(gòu)。或是當(dāng)生產(chǎn)環(huán)境發(fā)生了異常我們沒(méi)有做好足夠的容災(zāi)結(jié)果眼睜睜的看著一個(gè)小問(wèn)題變成了一個(gè)故障。這里其實(shí)是一個(gè)基于問(wèn)題的假設(shè)。分析能力的提升,不是學(xué)會(huì)多少分析的方法,而是掌握正確的分析思路。
跨團(tuán)隊(duì)合作中,結(jié)果倒推尤其重要。主導(dǎo)一次合作,不是等對(duì)方完成一個(gè)項(xiàng)目,再看下一步,而是應(yīng)該直接約定好項(xiàng)目節(jié)點(diǎn),推進(jìn)事情。不是“等你做好這個(gè),我們?cè)偌s個(gè)會(huì)討論那個(gè)”,而應(yīng)該是“下周三我們一起開(kāi)會(huì)討論結(jié)果吧”。這里有一個(gè)好處,就是利用好“ 來(lái)自目的地的張力 ”,以此倒逼自己和團(tuán)隊(duì),提升效率。
以對(duì)方為準(zhǔn)
"溝通最大的問(wèn)題,在于以為溝通已經(jīng)發(fā)生" 。這是我現(xiàn)階段遇到的一個(gè)很大的問(wèn)題。
常常聽(tīng)到團(tuán)隊(duì)關(guān)于溝通的抱怨,“我跟A說(shuō)過(guò)這個(gè)事情的,但是A太不靠譜了,到現(xiàn)在都沒(méi)有做好”。出現(xiàn)這種情況,通常不是A不靠譜,而是在跟A的溝通中出現(xiàn)了問(wèn)題。溝通容易犯的錯(cuò)誤,就是從自己(溝通的發(fā)起方)的動(dòng)作出發(fā),而不是從對(duì)方(溝通的結(jié)果方)的接收以及接受出發(fā)。
舉個(gè)栗子。
有次項(xiàng)目, 我在發(fā)布前給項(xiàng)目組發(fā)了郵件。郵件中指明了某同學(xué)在發(fā)布前需要將本次涉及到的sql初始化腳本在準(zhǔn)備預(yù)發(fā)時(shí)提供給我。結(jié)果當(dāng)天我去要的時(shí)候得到的回復(fù)是:“我不知道啊?你跟我講過(guò)了?”,我頓時(shí)火了:"你特么不看郵件的?"
類(lèi)似的還有。打車(chē)的時(shí)候,司機(jī)電話說(shuō)“我在馬路右邊”,我就會(huì)非常惱火,你說(shuō)東南西北還可以,我又不知道你的朝向,鬼知道你說(shuō)的右邊是哪邊啊?發(fā)一個(gè)通知,說(shuō)“這個(gè)我已經(jīng)發(fā)過(guò)群里講過(guò)了”,這只是“講過(guò)了”,卻沒(méi)有保證對(duì)方已經(jīng)了解情況,萬(wàn)一對(duì)方電腦壞了呢?“這個(gè)模塊的接入我們已經(jīng)討論過(guò)了,但是沒(méi)法統(tǒng)一結(jié)論”,討論是討論了,但是雙方數(shù)據(jù)口徑的定義是一致么?
另外需要注意的是,要資源、要指導(dǎo)、同步信息,不同的目的需要不同的溝通方式。對(duì)誰(shuí)講、講什么、怎么講?對(duì)方了解背景知識(shí)嗎?對(duì)方有什么樣的立場(chǎng)?對(duì)方可能會(huì)有怎樣的質(zhì)疑?我說(shuō)的對(duì)方聽(tīng)得懂嗎?是直接了當(dāng)講,還是旁敲側(cè)擊講?是用郵件正式溝通,還是電話溝通?是群會(huì)溝通,還是1對(duì)1溝通?這些都是溝通之前需要自己?jiǎn)栕约旱膯?wèn)題,并從對(duì)方的角度來(lái)獲得答案,而不是無(wú)差別 的 從自己已經(jīng)習(xí)慣的溝通方式和風(fēng)格來(lái)推進(jìn)。
溝通最大的美妙之處,在于達(dá)成共識(shí);而我們常常獲得的,是已經(jīng)達(dá)成共識(shí)的幻覺(jué)。正確的溝通,是拓展影響力的最佳方法。溝通中,要確保信息對(duì)方已經(jīng)接收了,在達(dá)成共識(shí)的過(guò)程中,要確保對(duì)方已經(jīng)接受了——而不能止步于,“反正我已經(jīng)說(shuō)過(guò)了啊”。
擱置&反饋黑洞
最后來(lái)說(shuō)說(shuō)我認(rèn)為工作中兩件最忌諱的事情。
擱置
遇到問(wèn)題就擱置,職場(chǎng)第一大忌諱。 某件事情被分配到了你的頭上,你就要把它解決,躲是沒(méi)有用的,想方法!哪怕你再討厭,再反感。
反饋黑洞
積極溝通是第一要?jiǎng)?wù)。
這件事情我有深刻的感知。程序猿相對(duì)來(lái)說(shuō)是一個(gè)比較沉默孤僻的群體。我們大部分人其實(shí)不善于溝通。但是我認(rèn)為溝通恰恰是工作中的第一要素。不溝通,不主動(dòng)坦露自己的信息,不管本身實(shí)力有多強(qiáng),在團(tuán)隊(duì)中總是會(huì)遇到各種問(wèn)題。說(shuō)的狠一點(diǎn),溝通能力就像木桶原理中那塊最短的板子,嚴(yán)重制約著我們的發(fā)展。
結(jié)語(yǔ)
結(jié)果導(dǎo)向思維,其實(shí)是“反人性”的。人條件反射的就會(huì)從“臨近的”、“熟悉的”、“具體的”起點(diǎn)的角度來(lái)思考和做事,而不會(huì)從“遙遠(yuǎn)的”、“對(duì)立的”、“抽象的”結(jié)果來(lái)進(jìn)行規(guī)劃和執(zhí)行。
在日常工作中,更好的落實(shí)以結(jié)果為導(dǎo)向,就必須事前清晰到極致的明確結(jié)果定義,將責(zé)任落實(shí)到一對(duì)一,這樣在過(guò)程中才不會(huì)倦怠和推諉,同時(shí)也就能更清晰的對(duì)目標(biāo)和責(zé)任的實(shí)踐情況進(jìn)行準(zhǔn)確判定。做出結(jié)果,做出事前定義的結(jié)果才能不懼質(zhì)詢(xún),才能做出成就、實(shí)現(xiàn)價(jià)值。
嘗試改變,發(fā)現(xiàn)不一樣的自己。



















