今年到一家互聯(lián)網(wǎng)公司實(shí)習(xí),該公司是國內(nèi)行業(yè)龍頭。不過技術(shù)和管理方面,卻弱爆了。那里的程序員,每天都在看郵件,查問題工單。這些問題,多半是他們設(shè)計(jì)不當(dāng)造成的。代碼寫的一團(tuán)糟,全是復(fù)制粘貼,連作者都沒改,大家普遍不寫注釋,也不格式化,代碼歪歪扭扭。這是初印象。。。后面更夸張的來了。一個(gè)項(xiàng)目里,httpclient竟然出現(xiàn)了四種。一種是該公司研發(fā)部寫的,一種是老版本的開源項(xiàng)目,一種是新版本的開源項(xiàng)目,還有一種是開發(fā)人員造的輪子。打接口請求響應(yīng)日志,竟然不知道用攔截器。打錯(cuò)誤日志竟然不打上下文信息,每個(gè)人一種日志風(fēng)格,千奇百怪。idea、eclipse、myeclipse的配置文件竟然全部傳到項(xiàng)目里去了。該公司混了兩年的程序員,跟快遞公司做查詢接口,竟然不知道加密運(yùn)單號(hào)。所有服務(wù)間通訊,都沒有設(shè)requestId,導(dǎo)致跟蹤會(huì)話很困難。一個(gè)沒什么qps的邊緣接口,居然做消費(fèi)者生產(chǎn)者+阻塞隊(duì)列的異步模式。
【以下是這位同學(xué)的吐槽】

顯得你技術(shù)少是不是。不知道異步會(huì)增加維護(hù)成本,提高測試難度嗎?而且,任務(wù)隊(duì)里沒有考慮持久化,趕上發(fā)布,丟了好多任務(wù)。
讀取一個(gè)小小的xml和exc配置文件,居然用流式解析,沒見過這么二逼的,真是醉了。做優(yōu)化全靠拍腦門拍大腿,難道不會(huì)用excel分析日志,用jprofile掃項(xiàng)目?一個(gè)100以內(nèi)的常數(shù)集合遍歷,他也要寫個(gè)優(yōu)化算法進(jìn)去,算法跟業(yè)務(wù)還攪在一起,一團(tuán)亂麻。
每個(gè)人都在嚷嚷性能、算法、分布式計(jì)算……
幾乎沒有文檔,全靠從代碼反推邏輯。有枚舉他不用,非要在每個(gè)頁面上,把枚舉值挨個(gè)兒寫死,知道后面改代碼多么費(fèi)勁嗎?欺騙性的變量名,里面存儲(chǔ)的是AES加密的,變量名后綴卻寫成了DES;里面存的是小寫字母,卻寫成upperStr。
一個(gè)方法十幾個(gè)參數(shù),有三分之一是極其簡略的縮寫,注釋肯定也沒有的。一個(gè)類寫到三四千行是常事。
開發(fā)自測,居然要把代碼全丟到公共機(jī)器上,而且都是走svn,他們把svn當(dāng)ftp用。svn里面大量的無意義提交,一多半的提交連都編譯不過去。
一個(gè)運(yùn)行了兩年的項(xiàng)目,spring的包掃描明顯配錯(cuò)了,有些bean根本掃不進(jìn)來,居然沒有人發(fā)現(xiàn)。一半的bean在spring管理下,另一半的bean他們自己寫單例模式來實(shí)例化。
他們用mysql來做審計(jì)系統(tǒng),出報(bào)表,有個(gè)報(bào)表要跑8分鐘。原來是有人用字符串來存多值(逗號(hào)分隔),sql里寫了like,導(dǎo)致沒有利用到索引。為什么不用pg,pg在sql編程方面,功能更豐富,更適合做統(tǒng)計(jì),它本身就支持?jǐn)?shù)組。
程序員們都是得過且過的態(tài)度,怎么把代碼灌進(jìn)去,跑的通測試,就算交差了。
綜上提出,為什么大型互聯(lián)網(wǎng)公司,技術(shù)和管理這么差勁,是怎么形成的?
新手經(jīng)常會(huì)有這樣的想法——「這代碼怎么這么爛?寫的人干什么吃的?怎么能這樣?為什么不按照書上說的做?」,這很正常,大家都年輕過,經(jīng)歷過這種階段,我懂你心里的想法,所以也愿意詳細(xì)地向你解釋,這一切發(fā)生的原因是什么。
你說
不過技術(shù)和管理方面,卻弱爆了。那里的程序員,每天都在看郵件,查問題工單。這些問題,多半是他們設(shè)計(jì)不當(dāng),造成的。
你真的覺得『國內(nèi)行業(yè)老大的互聯(lián)網(wǎng)公司』會(huì)是技術(shù)和管理弱爆了的樣子嗎?
你以為團(tuán)隊(duì)?wèi)?yīng)該像永動(dòng)機(jī),但現(xiàn)實(shí)永遠(yuǎn)有各種摩擦、輻射、損耗。內(nèi)燃機(jī)的能量轉(zhuǎn)化率,通常只有 30% – 50%,但是它卻是驅(qū)動(dòng)全世界運(yùn)轉(zhuǎn)的核心引擎,順豐京東的快遞小車、聯(lián)通全國的高鐵動(dòng)車綠皮、瞬時(shí)直達(dá)的飛機(jī)……機(jī)器尚不能 100% 效率運(yùn)轉(zhuǎn),何況是人呢?你說我們的程序員每天都在查看郵件、問題工單,你說這些問題多半是我們設(shè)計(jì)不當(dāng)造成的,請問你有試過統(tǒng)計(jì)數(shù)據(jù)嗎?你大概只是『感覺』如此吧?事實(shí)上,經(jīng)過十幾年的發(fā)展,我們內(nèi)部的『效率改進(jìn)團(tuán)隊(duì)』已經(jīng)非常高效成熟,每月、每周、甚至每天都會(huì)有新的改進(jìn),現(xiàn)在的業(yè)務(wù)處理方式,不說全世界,我可以自豪地說在全國我們是領(lǐng)先的,甚至是遙遙領(lǐng)先,不然憑啥坐到了全國龍頭老大的位置呢?所以啊,你只看到了程序員花在業(yè)務(wù)上的時(shí)間,沒看到我們內(nèi)部的『效率改進(jìn)團(tuán)隊(duì)』為程序員們省掉的時(shí)間,我覺得我有必要站出來為默默付出的『效率改進(jìn)團(tuán)隊(duì)』說幾句。當(dāng)然,樓主作為實(shí)習(xí)生,不知道這些事情進(jìn)而產(chǎn)生了這些疑問,也暴露了我們的不足。我已經(jīng)在『團(tuán)隊(duì)建設(shè)委員會(huì)』里提出了這個(gè)問題,大家一致通過了決議,以后我們會(huì)對(duì)新員工——包括實(shí)習(xí)生加強(qiáng)企業(yè)文化、歷史培訓(xùn),確保我們的新伙伴們不僅知道要去哪兒,也要清楚我們從哪里來,長路漫漫,我們一同前行。代碼寫的一團(tuán)糟,全是復(fù)制粘貼,連作者都沒改,大家普遍不寫注釋,也不格式化,代碼歪歪扭扭。
當(dāng)初公司起步的時(shí)候,整個(gè)項(xiàng)目都是幾個(gè)初創(chuàng)程序員加班加點(diǎn)熬出來的,我知道你看過《代碼大全》、《程序員修煉之道》、《Unix 編程藝術(shù)》,你對(duì)上面的準(zhǔn)則信手拈來,你可否翻開床頭柜上的這幾本書,看看它們的出版時(shí)間呢?
是的,公司起步的時(shí)候,這幾本書根本還沒有出版,彼時(shí)中國互聯(lián)網(wǎng)方興未艾,大家都是摸著石頭過河。現(xiàn)在你遇到問題,你可以問朋友、問導(dǎo)師、用谷歌、用棧溢出、用知乎,我們寫程序那個(gè)年代,看的是譚浩強(qiáng)、嚴(yán)蔚敏,用的是 52k 撥號(hào)上網(wǎng),語言只有 C,編輯器是沒有語法高亮和實(shí)時(shí)編譯的,編譯器是沒有智能準(zhǔn)確的報(bào)錯(cuò)的,沒有現(xiàn)在這么多知識(shí)、也沒有這么多規(guī)范和好資源、好工具。不過我們還是把項(xiàng)目做出來了,把公司一步步推到了現(xiàn)在的位置。不過這個(gè)問題是客觀存在的問題,誰也不否認(rèn),但是你知道為什么你被分配到了一個(gè)『代碼看上去一團(tuán)糟也不夠規(guī)范』的項(xiàng)目嗎?我們需要新鮮血液來重構(gòu)一些老代碼,所以你會(huì)被分配到艱苦的崗位上。我們希望你是勇于戰(zhàn)斗的戰(zhàn)士,我們更希望你能成長為經(jīng)驗(yàn)豐富的老兵,而把你放到這種崗位,是對(duì)你來說成長最快的方式。一個(gè)項(xiàng)目里,httpclient竟然出現(xiàn)了四種。一種是該公司研發(fā)部寫的,一種是老版本的開源項(xiàng)目,一種是新版本的開源項(xiàng)目,還有一種是開發(fā)人員造的輪子。
你不知道的是,我們最初用了開源軟件(也就是你所說的『老版本』),它構(gòu)成了我們早期項(xiàng)目的基石,隨著業(yè)務(wù)復(fù)雜性增加,我們改進(jìn)并最終切換到新版本。這個(gè)軟件跑老業(yè)務(wù)非常成熟,但是在一些新業(yè)務(wù)上有不可調(diào)和的矛盾,所以在痛苦的適配后,研發(fā)部的同事們自告奮勇用 20% 的時(shí)間寫了新業(yè)務(wù)的組件——是的你沒看錯(cuò)我們也有 20% 時(shí)間,我們鼓勵(lì)工程師的創(chuàng)新。至于你說的開發(fā)人員造的輪子——這說起來可真有趣,它其實(shí)是前年來的一個(gè)清華大學(xué)實(shí)習(xí)生寫的。當(dāng)時(shí)他來了之后,針對(duì)他接手業(yè)務(wù)的需求,向我抱怨說現(xiàn)有的 3 種都不好,要寫一個(gè)新的來『統(tǒng)一天下』,這話是他的原話,我記得非常清楚,因?yàn)橐晕叶嗄杲?jīng)驗(yàn)來看這樣的做法是不可取的,但是本著鍛煉年輕人的心態(tài)(加上他的確是不可多得的天才),我同意了他的請求,于是我用自己的業(yè)余時(shí)間接管了他的大部分工作,全力支持他寫一個(gè)新的組件,幫他擋住了所有上面的壓力,后來的故事就是你看到的這樣。是的,他后來越深入、就越來越感到業(yè)務(wù)的復(fù)雜,不斷推翻重構(gòu)、拆東墻補(bǔ)西墻,但始終發(fā)現(xiàn)和自己想的根本完全不一樣,受不了了就走了,留下來這個(gè)。我們明年的規(guī)劃中,就包括剔除這個(gè)組件的 codebase,因?yàn)樗鼘?shí)在是太糟糕了。打接口請求響應(yīng)日志,竟然不知道用攔截器。打錯(cuò)誤日志竟然不打上下文信息,每個(gè)人一種日志風(fēng)格,千奇百怪。許多重要的中間流程,居然不打日志。idea、eclipse、myeclipse的配置文件竟然全部傳到項(xiàng)目里去了。該公司混了兩年的程序員,跟快遞公司做查詢接口,竟然不知道加密運(yùn)單號(hào)。所有服務(wù)間通訊,都沒有設(shè)requestId,導(dǎo)致跟蹤會(huì)話很困難。
攔截器并不如你所想的那班美好,也許你在自己的電腦上寫過一些玩具代碼,覺得這樣很方便、酷炫,但是真正到了戰(zhàn)場,你會(huì)發(fā)現(xiàn)沒什么才是必須的、好的,只有適合的才是對(duì)的。至于配置文件,這么說吧,IDE 的配置文件傳到代碼倉庫是我定下的規(guī)矩,『怎么會(huì)有人定這樣的規(guī)矩?』,是的你可能從軟件工程的教科書上或者某些『知名博客』上讀到了不能這樣做,但實(shí)際上這樣做在很多情況下是必須的。這樣可以確保代碼克隆即可用,而不是讓每個(gè)人都去設(shè)置一大堆無聊的東西,這樣不僅節(jié)省時(shí)間,也確保了每個(gè)人的環(huán)境一致性,你想想這幾年火熱的 docker,應(yīng)該明白了這樣做的正確性和必要性了吧?你可能會(huì)說即便如此、插件也不用上傳到服務(wù)器保存,我告訴你這樣是不行的,你要考慮到我們這個(gè)項(xiàng)目前后十余年,你覺得幾個(gè)插件能堅(jiān)挺十余年?很可能我們早期用的軟件,現(xiàn)在你已經(jīng)完全不可能找到了,所以保存一份備份是非常有必要的,決不能錯(cuò)誤地認(rèn)為是冗余。教科書只會(huì)教你基本通用的原則,樹立你基本正確的觀念,但是如果只是死守教條,如何能擁抱日益復(fù)雜的變化呢?你看的教科書,且不說時(shí)間上已經(jīng)是二十多年前的了,在適用性上,也不說就是真理,IT 行業(yè)發(fā)展日新月異,幾個(gè)月就是滄海桑田,為了適應(yīng)這樣的變化,認(rèn)真地思考、總結(jié)、判斷才是最重要的。一個(gè)沒什么qps的邊緣接口,居然做消費(fèi)者生產(chǎn)者+阻塞隊(duì)列的異步模式。顯得你技術(shù)少是不是。不知道異步會(huì)增加維護(hù)成本,提高測試難度嗎?而且,任務(wù)隊(duì)里沒有考慮持久化,趕上發(fā)布,丟了好多任務(wù)。讀取一個(gè)小小的xml和exc配置文件,居然用流式解析,沒見過這么二逼的,真是醉了。
你大概不知道,當(dāng)初跑在你口中的「一個(gè)沒什么qps的邊緣接口」上面的業(yè)務(wù)帶來了公司曾經(jīng) 90% 的收入,所以我們用了復(fù)雜的設(shè)計(jì)以應(yīng)對(duì)當(dāng)時(shí)的需求,當(dāng)然現(xiàn)在業(yè)務(wù)轉(zhuǎn)變,老系統(tǒng)不再需要處理那么多業(yè)務(wù)了,但是更沒有理由為一個(gè)『works perfectly well』并且不再重要的業(yè)務(wù)重構(gòu)代碼吧?所以,不是我們秀技術(shù),而是業(yè)務(wù)需求 + 業(yè)務(wù)變更使然,年輕人還需要多學(xué)習(xí)一個(gè)。做優(yōu)化全靠拍腦門拍大腿,難道不會(huì)用excel分析日志,用jprofile掃項(xiàng)目?一個(gè)100以內(nèi)的常數(shù)集合遍歷,他也要寫個(gè)優(yōu)化算法進(jìn)去,算法跟業(yè)務(wù)還攪在一起,一團(tuán)亂麻。每個(gè)人都在嚷嚷性能、算法、分布式計(jì)算……幾乎沒有文檔,全靠從代碼反推邏輯。有枚舉他不用,非要在每個(gè)頁面上,把枚舉值挨個(gè)兒寫死,知道后面改代碼多么費(fèi)勁嗎?欺騙性的變量名,里面存儲(chǔ)的是AES加密的,變量名后綴卻寫成了DES;里面存的是小寫字母,卻寫成upperStr。一個(gè)方法十幾個(gè)參數(shù),有三分之一是極其簡略的縮寫,注釋肯定也沒有的。一個(gè)類寫到三四千行是常事。
我再強(qiáng)調(diào)一次——我們是全中國同類公司中技術(shù)能力第一的,你所說的問題,當(dāng)然是不存在的。我們有專門的 Hadoop 集群來分析日志,當(dāng)然也就用不著 Excel 了。對(duì)于我們這種體量的公司來說,不存在什么『常數(shù)集合』,代碼必須用合適的數(shù)據(jù)結(jié)構(gòu)——這是常識(shí)吧?特殊的算法和業(yè)務(wù)摻雜以增加內(nèi)聚性,這是我們多年的經(jīng)驗(yàn),的確,它和教科書上說的不一樣,但是我前面說了,死守教條是不行的——想必你一定知道 OSI 7 層網(wǎng)絡(luò)模型吧?公司的技術(shù)氛圍濃厚,是和公司的基因分不開的,我們公司最重要的原則就是——『擁抱變化』,從十幾年前的機(jī)房托管單機(jī)到現(xiàn)在的龐大自建集群,技術(shù)躍遷了何止千萬里,所以每個(gè)人都在學(xué)習(xí)新知識(shí)、每個(gè)人都沉浸在新知識(shí)的喜悅中。你的問題,大多都是因?yàn)闆]有考慮到公司的龐大體量和十幾年的技術(shù)躍遷才有的疑問,這點(diǎn)不再贅述,自行體會(huì)吧。開發(fā)自測,居然要把代碼全丟到公共機(jī)器上,而且都是走svn,他們把svn當(dāng)ftp用。svn里面大量的無意義提交,一多半的提交連都編譯不過去。我看到有個(gè)應(yīng)屆生,改了兩句話,馬上提交,說是怕代碼丟失。一個(gè)運(yùn)行了兩年的項(xiàng)目,spring的包掃描明顯配錯(cuò)了,有些bean根本掃不進(jìn)來,居然沒有人發(fā)現(xiàn)。一半的bean在spring管理下,另一半的bean他們自己寫單例模式來實(shí)例化。
其實(shí)那不是 SVN,那是我們公司自主研發(fā)的適應(yīng)我們內(nèi)部需求的 源代碼管理系統(tǒng) 和 文件管理系統(tǒng),你可以往里面放任何東西。你所說的「無意義提交、一多半的提交連都編譯不過去」其實(shí)只是表象,這套系統(tǒng)代號(hào) TITAN,它自帶 CIDD(持續(xù)繼承、交付、部署),所以這些無法編譯的提交都是不會(huì)有機(jī)會(huì)走到下一步流程的的。如果你工作了一年,你就會(huì)發(fā)現(xiàn)這個(gè)需求是很重要的,改動(dòng)、尤其是大型改動(dòng),中間會(huì)有很多非可用但有需要存檔的步驟,現(xiàn)有的源代碼管理系統(tǒng)都不能很好地支持這些需求,因此你也被教育了一套適應(yīng)落后工具的思想。人啊,最重要的能力是改進(jìn)工具,所以用 TITAN 的時(shí)候要擁抱全新思維,不要被落后思維捆綁。如果你工作了幾年,你可能還會(huì)問為什么我們沒用 Jenkins、Travis 等工具,其實(shí)呀,就在 TITAN 之中呀,它凝結(jié)了公司最優(yōu)秀的人才的十幾年寶貴經(jīng)驗(yàn)和心血。By the way,我們最近正計(jì)劃開源它,為中國開源社區(qū)做貢獻(xiàn),也希望提高業(yè)界的綜合素質(zhì)。歡迎你提交 PR 哦。他們用mysql來做審計(jì)系統(tǒng),出報(bào)表,有個(gè)報(bào)表要跑8分鐘。原來是有人用字符串來存多值(逗號(hào)分隔),sql里寫了like,導(dǎo)致沒有利用到索引。為什么不用pg,pg在sql編程方面,功能更豐富,更適合做統(tǒng)計(jì),它本身就支持?jǐn)?shù)組。程序員們都是得過且過的態(tài)度,怎么把代碼灌進(jìn)去,跑的通測試,就算交差了。為什么大型互聯(lián)網(wǎng)公司,技術(shù)和管理這么差勁,是怎么形成的?
為什么不用 pg?如果你抱著這種想法,那用了 pg 也要被噴的,到時(shí)候就就會(huì)說 —— 「為什么不用 sqlite,輕量簡單,搞這么復(fù)雜真的有必要嗎?」,真的有必要。。。這只是一個(gè)很簡單的系統(tǒng),做的事情也很簡單,當(dāng)初做這個(gè)系統(tǒng)的同事更熟悉 MySQL,當(dāng)然 MySQL 是不二之選了,對(duì)于簡單的東西,追求的是開發(fā)速度、使用便利性。你覺得一個(gè)月跑一次的審計(jì)代碼,8 分鐘有什么問題嗎?就算是一周跑一次,當(dāng)然也是沒問題的。程序員的單位時(shí)間是如此寶貴,為了優(yōu)化一段一個(gè)月跑一次的 8 分鐘代碼,值得花費(fèi)數(shù)天的時(shí)間來做這件事嗎?重復(fù)一遍,你的問題,大多都是因?yàn)椤簺]有考慮到公司的龐大體量和十幾年的技術(shù)躍遷才有的疑問』,這點(diǎn)不再贅述,還請自行體會(huì)。當(dāng)然,年輕人樂于思考,這是好事,是希望,新鮮血液替換老舊部件系統(tǒng)才能健康發(fā)展成長,人如此、公司如此、國家也是如此。希望你勤于思考,努力學(xué)習(xí),有問題的話,我們公司是鼓勵(lì)同事們向 CEO、CTO 寫信的,不然也不會(huì)有 CEO、CTO 信箱了你說對(duì)嗎?當(dāng)然,這樣的技術(shù)性問題、你寫給我就好,CEO 是船長,不需要關(guān)心底層鍋爐房的細(xì)節(jié)。另外我想補(bǔ)充一下我的想法,希望對(duì)你有所幫助。你看你都沒說加班問題,我們公司沒加班啊,這多好,怎么做到激烈競爭下還能不加班的?都虧了公司老領(lǐng)導(dǎo)和元老們的一手決策所以我想補(bǔ)充的不是技術(shù)問題,技術(shù)問題都不是問題,年輕人可以學(xué)習(xí)、交流,技術(shù)都會(huì)很快成長,畢竟年輕人的沖勁大、頭腦靈活。黃金的導(dǎo)電性最好,為什么電腦主板還要用銅?清華大學(xué)最好,為什么有人要去普通學(xué)校?因?yàn)橘Y源都是有限的,我們在現(xiàn)實(shí)生活中——而不是教科書上——必須兼顧成本和產(chǎn)出的平衡。?你問我每行代碼都多人多層人工 review 好不好?問我支不支持?我說好,review 我怎么能不支持呢?我今天在知乎這個(gè)公眾平臺(tái)我明確說了我支持。但是你也應(yīng)該多學(xué)習(xí)一個(gè),這個(gè)現(xiàn)實(shí)畢竟是現(xiàn)實(shí),我們要兼顧各種考量。你今天在這里渲染「大公司技術(shù)和管理這么差勁」,是不對(duì)的、是失實(shí)的、是欠妥的、是缺乏認(rèn)真思考的、是未加深入考量的。將來輿論出了偏差,你雖然不用負(fù)責(zé)任,但是你認(rèn)識(shí)到自己的錯(cuò)誤的時(shí)候,會(huì)后悔、會(huì)內(nèi)疚、會(huì)難過的吧?總結(jié)就是,生產(chǎn)效率才是最重要的,世間萬物最重要的是平衡。怎樣取舍、如何妥協(xié),這不僅是大自然的規(guī)律,也是我們前進(jìn)、發(fā)展的準(zhǔn)繩和仰仗的原則。題主你看到了很多槽點(diǎn),但我認(rèn)為你不能只看到槽點(diǎn)和大概怎么解決。有沒有想過怎么改進(jìn),如果是你的話你怎么做,這些項(xiàng)目里面臨的主要挑戰(zhàn)是什么,次要的挑戰(zhàn)又是什么?不要只告訴我技術(shù)A弱爆了,用B就可以完爆這個(gè)項(xiàng)目了。你知道用B的優(yōu)劣,B的適用場景以及適用B的成本嗎?對(duì)于一間公司來說,成本是很重要的。我這里說的成本不是金錢。而是,假如你看不爽一份代碼,你打算重構(gòu)它,你覺得你需要投入多少時(shí)間,多少人力?重構(gòu)之后,又要花費(fèi)多少時(shí)間和人力去升級(jí)依賴這份代碼的其他項(xiàng)目?不要以為開會(huì)無用,老板就只是在天天發(fā)郵件。如果你重構(gòu)了一份代碼,不能通過溝通說服其他組去升級(jí)他們的組件,又或者你只是重構(gòu)了一份雖然很丑陋,但其實(shí)并沒有多少程序依賴它的代碼,又又或者你重構(gòu)了代碼只是讓代碼技術(shù)含量更高了,更好看了,卻沒給公司帶來多少收入甚至KPI,那你的工作和成果就很尷尬了。其實(shí)上述也解釋了為什么你身邊的同事都眼睜睜地看著這些丑陋的shit存在而無動(dòng)于衷。因?yàn)樗麄円彩切枰度氤杀镜摹O炔徽撍麄儌€(gè)人技術(shù)水平高低,試問誰愿意挑一個(gè)又艱難,又不能產(chǎn)生多少效益的任務(wù)去做?當(dāng)然,你會(huì)說,寫好代碼是程序員的節(jié)操。抱歉,節(jié)操多少錢一斤,北京三環(huán)商品房多少錢一平?編程高手都有真愛,但現(xiàn)實(shí)就是編程高手鳳毛麟角。我們身邊的大部分同事可能只是希望養(yǎng)家糊口,他們頭上還掛著十幾個(gè)bug等著修。我們數(shù)落他們沒追求,但追求從來都不是嘴上說說,吐吐槽就能實(shí)現(xiàn)的。矛盾分主次,公司的目標(biāo)都是一樣的:用最少的成本投入到最能產(chǎn)生效益的項(xiàng)目中去,或者投入大成本去解決公司最需要解決的問題,這間公司才能繼續(xù)運(yùn)作。所以題主你想想,在你吐槽的個(gè)案中,有多少是公司真正關(guān)心的?有哪些是你的老板認(rèn)為可以創(chuàng)造最大效益的?有哪些才是主要矛盾或者挑戰(zhàn)需要最牛逼的人挺身而出第一時(shí)間解決?去辨別,解決這些關(guān)鍵的問題吧,騷年。必要時(shí)帶上(忽悠)一隊(duì)人馬(同事)跟你一起干,茍富貴,勿相忘。不要像祥林嫂一樣,天天抱怨著生活,日日思考著辭職。得罪點(diǎn)說一句:“淪落”到要跟這樣的人共事工作,難道自己身上就沒有原因?這個(gè)世界有更好的公司,有更牛逼的人。如果你認(rèn)為解決這間公司的這堆問題不值得,又或者同事實(shí)在太不給力,就遠(yuǎn)走高飛吧。我以前也跟題主一樣,看我第一份正式工作的很多技術(shù)環(huán)節(jié)都相當(dāng)不爽。這份代碼寫得丑,那個(gè)設(shè)計(jì)像大學(xué)生作品,重要的項(xiàng)目居然連單元測試都沒有……但是我后來反觀我自己,并沒有發(fā)現(xiàn)比起那些丑陋代碼和糟糕實(shí)現(xiàn)強(qiáng)悍多少。我跟我的同事沒有質(zhì)的區(qū)別。我笑話他們代碼混亂bug不盡,我何嘗不是少處理了一個(gè)field,倒騰錯(cuò)了一個(gè)片段的數(shù)據(jù)搞到要翻工重跑?在我心底里艸了隔壁組那個(gè)“我的程序好像不能跑,你幫我debug下”的同事一千次之后,帶我做ML讓我倒騰數(shù)據(jù)并且被我的程序搞壞了幾份數(shù)據(jù)(當(dāng)然后來搞好了)的T9君在會(huì)議上說:“她已經(jīng)很努力了,我承認(rèn)我有時(shí)候也逼得她太緊,她應(yīng)該有多些時(shí)間的。”本文問答來自知乎更多此問題的回答,請查看原文:www.zhihu.com/question/32039226
覆蓋JAVA/PHP/IOS/測試等領(lǐng)域80%級(jí)別在P6及以上,含P9技術(shù)大咖30人技術(shù)總監(jiān)和CTO?500余人