中國程序員,一個跟加班和禿頂愛恨交織的職業,風裏雨裏都沒法阻止加班的步伐。
前端
根據《2018年中國程序員生存現狀報告》,近一半的程序員處於25-29歲年齡階段,身體和精神方面都正處於加班黃金期。java
中國程序員加班已然成爲一種常態,而你們也會常常會據說,國外的程序員是不加班的。知乎便有網友提問:爲何美國程序員工做比中國程序員工做輕鬆、加班少?程序員
感受美國程序員工做時間靈活、加班少,相比與國內程序員工做,彷佛壓力小不少。可是美國程序員的產出卻很是牛逼(如google、fb等)。難道是由於他們效率更高嗎?若是是,國內程序員是否能提升效率減小加班和壓力呢?web
該問題一出,便引發知乎網友的熱議。亞馬遜AI主任李沐,「凱威的講堂」、「李小白」等熱心網友拋出答案並得到高贊。算法
新智元得到了三位的受權,對其答案進行了整理。編程
美國程序員工做比中國程序員工做輕鬆、加班少整體來講是事實,但都歸結到美國程序員效率更高,制度更好之類就過於片面了。我以爲主要緣由在於別的一些地方,例如加班的邊際效用,程序員的生活習慣。後端
背景:我在baidu(北京)和amazon(灣區)都幹過,微軟研究院(北京)和google研究院(灣區)也實習過,由於目前作雲計算和開源,因此也接觸過不少公司。總體來看,網絡
不以爲美國程序員比國內程序員水平高多少,特別是在年輕人身上。2000年後計算機專業紅火,學生生源好,這些人是當前程序員的主幹力量。並且中國教育在工程學科上更加紮實,適合培養程序員。前端工程師
美國有很是厲害的領導者,例如幾家大公司創始人都很厲害。但加班文化更可能是每一個項目的實管人控制。我見過好的,也見過差的。雖然沒有具體統計過比例,但沒以爲中美差別明顯。架構
美國這邊開會確實要多一些,但這個也是美國教育重視溝通相關(3,4歲的小孩就開始練習演講了)。開會對於大組織有用,這樣能夠幾百人在同一個思想層面往前衝,但用這個來衡量百來人的小公司就不見得適當了。
美國公司創新度更高,一是社會承認,二是不創新難有機會生存,三是國內只盯着創新的公司看。但創新公司加班很廣泛,例如Tesla老大都睡在廠房。
因此我以爲問題在於一些更本質的東西。這裏是個人幾點觀察:
第一是邊際效用。美國社會成熟度比較高,在灣區生活的同窗也許過去10年都感受不到特別大的變化,而中國則翻天幅度,特別是互聯網領域。例如手機支付,美國普及很難,由於信用卡已經很普及了,手機支付帶來的好處不顯得很大。但中國的基礎設施沒跟上,因此手機支付在便利性上提高特別大,一樣的技術,你們會不惜餘力的去推廣。
經濟學上這個叫作邊際效用。一樣的技術,中國的邊際效用比較高,因此你們能夠全力推廣。美國由於起點高,因此更加謹慎一些。
這個影響到了加班文化。經過加班能夠完成更多工做。若是項目經理以爲這些工做帶來豐厚回報,他們確定會壓着組員作。在中國極可能是這樣,例如作出這個產品立刻會有人用,升職加薪跟着就來。然而在美國,即便今天作出來,用戶也是慢慢的過來,徹底不須要急着那麼幾天。
第二是生活習慣。美國程序員年齡廣泛偏大,由於計算機行業在2000年在美國就很紅火(參考互聯網泡沫),培養的大量的程序員,這些人如今不少都有小孩。在美國小孩都是本身帶,雙方父母不怎麼幫忙。請人又特別貴,例如灣區工做日請人帶娃一個月起碼是2千美金起。並且學校課程鬆,因此放學後都要靠父母照顧。此外,不少人住的房子都帶院子,請人打理費用貴,不少時候你們親自動手。例如Robin在創立百度前曾醉心於在灣區種菜。
因而在加班邊際效用不高的狀況下,你們紛紛早點下班回家作家務。並堂而皇之的叫work-life balance。
我認識好幾個未婚朋友,他們以爲天天那麼早下班實在是太寂寞,毅然回國去了創業公司,並對996你們讚揚。記得Andrew Ng也表達過相似的觀點。
但反過來講,早9晚5真的好?計算機技術突飛猛進,並且隨着經歷增加,須要提高各項領導能力。這些都須要足夠多的時間去學習。我認識的厲害的人無一不是在下班後努力擠出時間工做,絲絕不比996工做時間少。與其如今羨慕別人輕鬆,不如埋頭努力工做十年再來看。
先說結論:跟國外公司比,國內公司最大的問題就是管理者對問題的邊界定義不清楚。提需求的人沒有成本,無止境地提不靠譜的需求。碼農本身開發時也追求快糙猛,提升了系統的風險。總的來講,經理很忙,產品很忙,碼農很忙,測試很忙,運維也受不了。。就是這樣的結局。
我在血汗工廠,大亞麻。整個大部門有80號碼工。想知道你們工做有多輕鬆。。。我先上圖爲敬。
這位是最忙的。。這Commit記錄大家看着辦。。。 咱們部門是前兩年重組出來的,作了七八個全新的項目,按血汗工廠的風格,SDE是要full stack的,還要講政治,寫個類都要擺出個設計文檔。跟本身組,隔壁組過完設計,你們blibli一通留言,而後針對幾個service的API劃分和命名再掰扯個一週。最後誰都說服不了誰,擺出一句」求賜名「這時高級經理或者SDE會猥瑣地從希臘神話裏找一個神的名字出來命名service,再隨機指定幾個比較順眼的命名,會議就結束了。
除了內部Tech的會議,偶爾也會參與業務方的會議。在這裏也是要講政治的,你參會了就必需要多說,不管說什麼,必定要存在感巨強。當小透明是行不通的,爲何,小透明就說明你這我的沒想法,能力不行啊。某種意義上,聲音大就是impact,就是能力!!有沒有!!
接着說對SDE full stack的要求。你覺得咱們有前端,有測試,有運維?想多了,新開的service,若是涉及前端頁面。是要本身寫的。。。。沒錯,別管你是前端工程師仍是後端工程師仍是算法工程師,首先你得是個工程師,工程師就沒有解決不了的問題。。。咱們作前端時也要開不少會啊,跟業務方溝通進展和Demo時,業務方能夠提意見,一旦提了意見是要sign off的。不是隨意說說那麼簡單。這樣有個好處,不少東西定下來了就不隨意改變。提需求的人是面臨很大的成本,你老提了需求又改,又sign off,不出兩月你們就以爲你這人不靠譜,會給你不好的反饋。
談完了前端,該到開發階段了吧,開發時50%的時間在也業務代碼,50%的時間在寫測試代碼。若是沒有測試代碼,code review是說啥也過不去的。寫完代碼以後,內部有很完整的自動部署工具,把你的單元測試,集成測試都跑完,而後部署測試環境,gamma環境等等。包括日誌監控,都是要本身上手的,也是前文反覆說的full stack的概念。SDE真的是Someone Does Everything啊。。。
這麼一說確實挺忙的,實際上50%的時間都在會議,20%時間寫代碼,20%時間寫測試代碼,10%時間搗鼓一下配置,監控。但歷來沒有人加班,成天在家辦公,這公司怎麼還沒黃。。怎麼還沒涼。
我來總結一下,會議是生產力。討論得越清楚,返工就越少。好比系統設計,幾個組的人一塊兒討論清楚系統的邊界,上下游系統的關係,你的問題邊界和需求是很清晰的。碼工本身囉囉嗦嗦地對全流程服務。測試,運維等看似工做量繁重,實際上有效地下降了風險,極大地提升了軟件的質量。
跟國外公司比,國內公司最大的問題就是管理者素質不高,對問題的邊界定義不清楚。提需求的人沒有成本,無止境地提不靠譜的需求。碼農本身開發時也追求快糙猛,提升了系統的風險。總的來講,經理很忙,產品很忙,碼農很忙,測試很忙,運維也受不了。。就是這樣的結局。
這個題目能出書了。兩邊的IT的企業五花八門,形形色色的都有。大部分答案都是抱着批判的態度。主要談談本身的見解吧。畢竟我也只在一家美國公司工做過,國內的工做經驗爲0,不足的地方但願指正。
告的就是Google付給女性員工的工資低。固然男性員工也在告Google。
舉這個例子只是說,在咱們眼裏,美國是一個很是「事兒逼」的國家。兩國人民從小接受的教育很是不同,美國人偏理想主義,而中國人比較現實主義。
美國的企業很是怕事,哪怕他們沒錯,他們都會花重金擺平這件事情。好比前段時間的UA事件,Starbucks事件,都很好的說明了美國企業有多怕事。因此過分加班這種高壓紅線根本不敢碰。做爲一個企業CEO,該破產就破產。美國的企業是很是好「碰瓷」的,告本身僱主的事情是在太多了。在咱們眼裏,屁大的事情他們都可以上法庭。公司即便沒有錯,也會花錢擺平。否則一幫好事的媒體成天在顯眼的地方報道這些新聞,很是影響企業的聲譽。
企業是趨於利益的。並且有時候確實須要加班來知足需求。因此不少公司喜歡僱傭亞洲人和墨西哥人,由於這兩種人即便加班也不會抱怨。不少美國公司用各類非美國人的Contractor和ICC也是這個道理。
固然美國某些公司也是加班很嚴重的,好比四大。可是(據說)美國的四大好像沒國內累。只是相對而言。
美國人看重家庭大於工做,家庭比工做重要。因此那種犧牲自我,保全公司利益的行爲是不多會發生的。
固然中國也不是最差的啦。日本加班比咱們多多了。這邊加班太多了。日本人講究的是爲了工做能夠拋棄一切。要論程序員的幸福度:美國 > 中國 >>> 日本。
我沒有見過美國碼農的公會。也沒見過罷工。。。
公會發達的是歐洲。法國是公會的巔峯。啥屁事,都罷工,並且徹底無論後果。你能想象地鐵和大巴司機罷工嗎?整個城市會陷入大混亂。有一次考試,我辛辛苦苦背完了全部的概念,結果地鐵罷工,考試取消。。。致使我第二週得繼續再背一遍。
大學常常學的Encapsulation(封裝)也是主要緣由之一!OOP編程裏面的封裝其實很是重要。美國這邊的公司很是注重Encapsulation。最簡單的例子就是,用web framework去寫server比徒手用原生java sockets去寫要容易多了。
不少公司都喜歡Everything As Service (把全部技術都封裝成服務),而後把這些Service作成Platform(平臺),而後模塊化。好比在Google,全部的Infrastructure(架構)都被封裝成Service了,使用起來只要關心業務邏輯和資源分配就行,很是省時間。在新的Server裏面加Feature也只須要加一個加一個新的模塊就行。相比而言,若是花大量時間去調各類開源軟件的配置,會花大量的時間。Google的作Infra時間比Facebook長,Infra種類多餘FB,這也是「Google比Facebook輕鬆一點的一個緣由」。
每次開發產品,我都有種搭積木的感受。從web framework,到pipeline framework,到monitoring和resource,基本都是很是直觀的事情。偶爾有問題,一個郵件就能解決。
平心而論,硅谷的Infrastructure比國內好太多了,每一個公司都有專門的組去認真研發新的Infra。因此硅谷的公司,只要不是過小,都多多少少有一些開源的項目。
凡是作Public Cloud Computing的公司,封裝都不會太差。國內如今不少公司也開始作了。由於Cloud Computing講究就是把本身Infra打包給外面的程序員使用,一樣的功能,接口越簡單越好。若是外面的人均可以很好的使用,本身人就更容易了。
硅谷技術強,可是產品迭代速度比國內差太遠了。因此,Uber,Airbnb,Linkedin在國內的市場表現都不怎麼好。不少技術壁壘不高的產品,比的就是用迭代速度去佔領市場。技術壁壘高的產品,不是迭代速度能解決的。
中國的IT公司對用戶的需求感知的特別快,他們清楚的知道用戶須要什麼。國內公司對競爭對手的動做也特別敏感(抄的特別快)。你會發現, 阿里,京東比Amazon的功能多多去了。餓了嗎,美團也比Ubereats功能多多了。王者榮耀的新東西出的實在太快了。
Google的大佬不少都是工程師出生,重技術,輕產品。而硅谷大部分有特點的新型互聯網企業早期都有大量的前Google員工,因此這也是硅谷的一個特點之一。
因此中國的IT和硅谷實際上是兩種IT。迭代速度和發現新的Use Case是中國企業的強項。爲了保持這個優點,惟一的方式就是加班了。
近來網絡中調侃中國程序員的段子可謂是層出不窮:
雖然諸如上述的段子較爲輕鬆活潑,但更爲現實且使人心痛不已的例子又什麼時候中止過呢?
據統計資料代表,我國「過勞死」的人數每一年達到60萬人!已遠遠超過日本,成爲世界第一「過勞死」的國家!
2015年3月,深圳某IT公司程序員張斌,猝死於酒店馬桶,年近36歲。當天深夜1點鐘,張斌還發過最後一份工做郵件。根據張的同事透露,爲趕工程進度,加班至早晨五六點是屢見不鮮,又要繼續上班。在去世以前一天,他還跟母親發過"太累了"的短信。
這條消息可謂在當年刷爆朋友圈。
2018年8月,深圳24歲程序員工做中猝死,讓人心疼不已。
雖然不少人都知道如此強壓的工做確定會對身體帶來重負,但面對現實、面對生存,無奈也只能默默接受。
「遠離加班」,這句勸告可能對大多數IT從業者來講就像是一個夢想:很美好,也很難實現。
那咱們能作的又是什麼?
自身:提升效率,從工做中學會積攢經驗。
拒絕無理需求:有些狀況下多是由於別人考慮不周而致使你瘋狂加班,時刻保持清醒的頭腦,提醒本身,鍋是圓的。
資料領取方式
關注公衆帳號【飛馬會】
導航回覆數字【12】
便可查看下載方式
▼