<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          為什么有些大公司技術(shù)弱爆了?

          共 9921字,需瀏覽 20分鐘

           ·

          2021-07-15 19:24

          往期熱門文章:

          1、這 40 道 Redis 面試題讓你不再慌(附答案)
          2、優(yōu)秀的代碼都是如何分層的?
          3、IDEA 中的熱部署神器!
          4、Spring Boot 這樣優(yōu)化,讓你的項(xiàng)目飛起來!
          5、SpringBean默認(rèn)是單例的,高并發(fā)情況下,如何保證并發(fā)安全?
          來源:https://www.zhihu.com/question/32039226

          不知道異步會(huì)增加維護(hù)成本,提高測試難度嗎?

          不過技術(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ì)列的異步模式。

          顯得你技術(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īng)屆生,改了兩句話,馬上提交,說是怕代碼丟失。


          一個(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ī)票的,沒有明確說出公司名字,是怕給自己惹麻煩)



          姚冬 程序員、編程、C++話題優(yōu)秀回答者  填坑俠

          甲:這個(gè)A開源庫舊版本有崩潰問題啊

          乙:換新版本的A

          甲:換了新版本A,用舊的 GCC 編譯不過啊

          乙:換新版本GCC

          甲:換了新版本GCC,B開源庫不兼容啊

          乙:換新版本的B

          甲:換了新版本的B,導(dǎo)致性能下降啊

          乙:開多線程

          甲:開了多線程導(dǎo)致延遲抖動(dòng)不同步了

          乙:換新的延遲修正算法

          甲:換了新延遲修正算法偶爾會(huì)崩潰啊


          乙:要不。。。我們還是去看看那個(gè)A開源庫的舊版本崩潰能不能修好吧


          如今上點(diǎn)規(guī)模的IT公司,其軟件項(xiàng)目的規(guī)模和復(fù)雜度都遠(yuǎn)遠(yuǎn)超過工程師的能力上限了,都只能小心翼翼地修補(bǔ),有時(shí)局部的大改動(dòng)會(huì)引發(fā)連鎖反應(yīng),大改動(dòng)的風(fēng)險(xiǎn)和成本很難控制,沒有巨大的收益誰也不敢隨便改,你能看到的問題老員工看得更清楚,甚至也清楚怎么解決,但是不動(dòng)手的原因就是不知道出了事誰來背黑鍋,技術(shù)上的事情誰敢說100%不出事的。


          那是不是大公司的技術(shù)項(xiàng)目就沒救了呢?


          也不一定,有些事要等個(gè)機(jī)會(huì)的,常見的機(jī)會(huì):


          1、技術(shù)基礎(chǔ)平臺(tái)大革命,比如移動(dòng)互聯(lián)網(wǎng)的興起,從PC遷移到了手機(jī)端,很多舊的技術(shù)代碼就可以拋棄了,手機(jī)上從零開始。

          2、競爭對手小宇宙爆發(fā),對手搞出一項(xiàng)技術(shù)取得了競爭優(yōu)勢,被迫追趕,這時(shí)候死馬當(dāng)活馬治,改出任何問題也都能忍了。

          3、人事大動(dòng)蕩,管理層和基層都大換血,舊代碼已經(jīng)沒人有能力維護(hù)下去了,不得不重來。



          蕭井陌 微信公眾號(hào):煉瓜研究所   http://cocode.cc

          樓主你好,我試著給你解釋一下,希望你能滿意。


          新手經(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ì)對新員工——包括實(shí)習(xí)生加強(qiáng)企業(yè)文化、歷史培訓(xùn),確保我們的新伙伴們不僅知道要去哪兒,也要清楚我們從哪里來,長路漫漫,我們一同前行。



          你覺得「

          代碼寫的一團(tuán)糟,全是復(fù)制粘貼,連作者都沒改,大家普遍不寫注釋,也不格式化,代碼歪歪扭扭。


          當(dāng)初公司起步的時(shí)候,整個(gè)項(xiàng)目都是幾個(gè)初創(chuàng)程序員加班加點(diǎn)熬出來的,我知道你看過《代碼大全》、《程序員修煉之道》、《Unix 編程藝術(shù)》,你對上面的準(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)豐富的老兵,而把你放到這種崗位,是對你來說成長最快的方式。



          你認(rèn)為「

          一個(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í)他來了之后,針對他接手業(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)沒什么才是必須的、好的,只有適合的才是對的。


          至于配置文件,這么說吧,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)對當(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 了。


          對于我們這種體量的公司來說,不存在什么『常數(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 是不二之選了,對于簡單的東西,追求的是開發(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 信箱了你說對嗎?

          當(dāng)然,這樣的技術(shù)性問題、你寫給我就好,CEO 是船長,不需要關(guān)心底層鍋爐房的細(xì)節(jié)。


          另外我想補(bǔ)充一下我的想法,希望對你有所幫助。


          你看你都沒說加班問題,我們公司沒加班啊,這多好,怎么做到激烈競爭下還能不加班的?都虧了公司老領(lǐng)導(dǎo)和元老們的一手決策

          所以我想補(bǔ)充的不是技術(shù)問題,技術(shù)問題都不是問題,年輕人可以學(xué)習(xí)、交流,技術(shù)都會(huì)很快成長,畢竟年輕人的沖勁大、頭腦靈活。

          我想說的是整體觀、大局觀、大棋戰(zhàn)略。


          黃金的導(dǎo)電性最好,為什么電腦主板還要用銅?

          清華大學(xué)最好,為什么有人要去普通學(xué)校?

          飛機(jī)最快,為什么還有人坐火車?

          因?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ù)和管理這么差勁」,是不對的、是失實(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)繩和仰仗的原則。


          ————



          vczh 《C++Primer 5th》強(qiáng)勢審校

          我們Office組也有一部分這樣的問題。但是想想我們有一萬人,開發(fā)了30年,問題居然還比題主的輕好多,就覺得我們實(shí)在太厲害了。


          這種問題是沒法解決的,因?yàn)椴毁嶅X,不賺錢你去做了,而且還做出了翔,把程序搞掛了,在你上面三層的老大就不知道要怎么跟CEO解釋。

          但是通常來說,因?yàn)槲④涍€是很鼓勵(lì)代碼要跟上時(shí)代的發(fā)展的。如果這件事情你去做了,雖然不賺錢,但是沒有做出翔,而且跑起來還更快了,你的前途就一片光明了。



          陳萌萌 編程話題優(yōu)秀回答者 其實(shí)我是一個(gè)AI_(:з」∠)_

          題主你看到了很多槽點(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的成本嗎?對于一間公司來說,成本是很重要的。我這里說的成本不是金錢。而是,假如你看不爽一份代碼,你打算重構(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í)間的。”


          我不是長者,不能share多少人生經(jīng)驗(yàn),就留下最后一句話跟諸君共勉(好像有點(diǎn)怪)吧:

          我觀別人大傻逼,料別人觀我亦如是!



          空明流轉(zhuǎn)  計(jì)算機(jī)圖形學(xué)、C++、編程話題優(yōu)秀回答者 

          掃了一下樓內(nèi)的答案,其實(shí)就是兩種回答:

          掃了一下樓內(nèi)的答案,其實(shí)就是兩種回答:


          1. 理想主義:現(xiàn)在的代碼太爛了,應(yīng)該去改改改

          2. 現(xiàn)實(shí)主義:支撐現(xiàn)有業(yè)務(wù)就是最好的代碼,你說爛那是你不懂


          一個(gè)團(tuán)隊(duì),在任何時(shí)候,都應(yīng)該分辨得出:

          分辨什么樣的爛是真爛,什么樣的爛是業(yè)務(wù)復(fù)雜;

          分辨不出,就不要去修改。


          也應(yīng)該積極尋求:

          如果是業(yè)務(wù)復(fù)雜,能不能更簡化更抽象一些;如果是爛,能不能在有限的成本中改好一些。


          對于一個(gè)長期維護(hù)的軟件和系統(tǒng)而言,

          爛是合理的,懶是不合理的。不合理的事情多了,只會(huì)讓未來更合理。


          ---------------------下面才是正文-----------------


          為什么新人總是會(huì)覺得有落差,通常并不是新人的問題,也不算是現(xiàn)有產(chǎn)品的問題。


          考慮到系統(tǒng)是經(jīng)歷了業(yè)務(wù)A - B - C這樣的轉(zhuǎn)換過程(這個(gè) @蕭井陌 也提到了例子),然后代碼也是從無到有慢慢起來的,當(dāng)時(shí)的Precondition,以及Dev Path,所以實(shí)際上現(xiàn)有代碼是




          然后新人來了后,只能看到現(xiàn)在的Condition,和現(xiàn)在的業(yè)務(wù)C,所以得到成本最低的系統(tǒng)是 


          有區(qū)別當(dāng)然是正常的。

          即便是持續(xù)重構(gòu)所解決的,也只是降低A - B - C的業(yè)務(wù)變遷中成本,并不是現(xiàn)時(shí)的最佳方案 g。

          而且,產(chǎn)品本身是要演進(jìn)的,我們所要做的,是讓產(chǎn)品到下一個(gè)版本,也就是的成本最小化,而不是f_{c}自己的成本最小化。而這個(gè)最小化的時(shí)候,往往


          我舉個(gè)例子,系統(tǒng)在B的基礎(chǔ)上實(shí)現(xiàn)C,引入了State設(shè)計(jì)模式。從C到D,仍然適合State設(shè)計(jì)模式。但是如果只看C,這個(gè)State很可能就被退化掉了。

          這樣,反而要大于

          最近熱文閱讀:

          1、這 40 道 Redis 面試題讓你不再慌(附答案)
          2、優(yōu)秀的代碼都是如何分層的?
          3、IDEA 中的熱部署神器!
          4、SpringBean默認(rèn)是單例的,高并發(fā)情況下,如何保證并發(fā)安全?
          5、知乎高贊:拼多多和國家電網(wǎng),選哪個(gè)?
          6、Windows 11 全網(wǎng)曝光,果然一股子蘋果味...
          7、小團(tuán)隊(duì)真的適合引入Spring Cloud微服務(wù)嗎?
          8、卷不動(dòng)了?300 秒快速了解 Java 9 - 16 新特性,助你脫離內(nèi)卷
          9、Java 程序員常犯的 10 個(gè) SQL 錯(cuò)誤!
          10、SpringBoot+webSocket實(shí)現(xiàn)掃碼登錄功能
          關(guān)注公眾號(hào),你想要的Java都在這里

          瀏覽 72
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  re在线精品视频 | 色婷婷在线无码精品秘 人口传媒 | 国产一级a爱做片免费看 | 黄色免费观看视频 | 99久久免费精品 |