為什麼我們程式設計師工作得這麼累?

潘小鶸發表於2015-10-10

最近是真的累了。不知不覺之間,已經兩三個星期沒有鍛鍊,感覺身體很難受,接下來的日子必須強制自己按時鍛鍊,按時休息,不然真的是不知道哪天就掛了。

過去一年多,我仗著自己年輕的身體,對計算機的熱情,在工作上多使用蠻力,彷彿一個使用樸素演算法實現的程式,吭哧吭哧跑個不停。一開始,樸素演算法還能在指定的工作時間內完成任務;後來任務越來越多,工作時間之內肯定沒法完成,我開始竊取時間,以更長的時間換取任務的完成。我知道這不是一種科學的工作方式,但是在那種時間壓力、任務壓力之下,也是無可奈何。

無論如何竊取時間,一天總歸只有 24 小時。無論如何使用蠻力,也做不到不休不眠。遲早有一天,任務會多到讓人感覺厭倦,只是沒有想到,這種情況來的這麼快。

這種厭倦感已經沒法抑制了,小師妹說我最近很萎靡,師兄也說我看起來很憔悴。有一次吃完飯回去的路上,師兄不經意間問道,為什麼我們幹活乾的這麼累。也許是職位的不同,作為主管,師兄需要更多優秀的工程師,更多優秀的應屆生和實習生。當時我只是苦笑,回答不上來。

後來想想,是啊,為很麼我們幹活乾的這麼累?前幾天去舟山的路上,我看完了久負盛名的Rework,中譯本名叫《重來》。自戀一點háo bù kuā zhāng,我也是一個優秀而高效的研發quán zhàn工程師,為什麼卻被工作幹趴下了?為什麼我們一群在“頂級”網際網路企業工作的優秀工程師,才服務了區區幾萬使用者就已經累成狗,人家 37signals 幾十個人就服務了幾百萬的使用者?

先給自己打臉。

沉迷工作是企業文化中廣受讚頌的一種“優良做派”。我們知道工作狂熱衷於通宵達旦、加班加點,甚至在辦公室打地鋪。這些人以累死在專案中為榮,對他們來說,再大的工作量也不在話下。

工作狂的行為不但沒有必要,而且愚蠢至極。過多的工作並不帶把你對專案更關注,也不代表你做了更多貢獻,這僅僅意味著你敢了更多活而已……

工作狂的存在使那些不以加班為樂的員工感到無所適從。在工作狂扎堆的企業環境裡,就連“按時上下班”都讓人覺得是一種無理的要求了……

工作狂不是英雄,他們沒有力挽狂瀾,不過是浪費時間而已。真正的英雄早已想出辦法、搞定一切,然後回家了。

Jason Fried《重來》 卸負篇-工作狂

時間

關於碼農的工作時間,有一個臭名昭著的說法是“彈性工作制”。雖然沒有硬性的時間規定,但是也有一個約定的時間是 9 點上班 6 點下班,至於傳說中的“把活幹完之後沒人管你幹啥”永遠只是傳說。換個說法,就是上班時間可以比 9 點晚一些,下班時間一般不早於 6 點。在這九個小時中,排除中午吃飯和休息的一兩小時,還剩七八小時。可是這裡面能讓我們投入腦力勞動的時間有多少呢?可憐的不足 3 小時。其餘的時間總被各種亂七八糟的事情打斷,這個 IM 響個不停,那個郵件收個不停,還有人動不動弄出各種高階大氣háo wú yì yì活動、培訓來消費這所剩無幾的工作時間。於是乎上班時間幹不了幾個活,好不容易等到別人都下班回家了,總算進入了 coding 時間。之前我總是說,6 點之後有 5 個小時的程式設計時間,就是這麼回事。

如果是一個普通的職業,普通的職位,自然是上班幹活,下班走人。可是我們乾的不是一般的職業,我們是碼農啊。之前我實習的時候就聽同事講過一句精闢的話:“幹別的職業請假了就沒事了,當碼農的請假回來了事還是你的,還得加班幹活追趕請假落下的進度”。也許是出於這個原因,我很少請假。

所以說,別的職業時間被浪費就浪費,被佔用就被佔用,反正下班走人。可是我們是碼農誒,彈性工作制誒,所以我們白天上班陪別人玩,晚上加班幹活。

如果你總是為了工作而熬夜或者犧牲週末時光,其實並不是因為你有很多工作要做,而是因為你的工作狀態不佳。而工作狀態不佳就是由打岔引起的……

在這個時段內,封鎖即時聊天工具,掛掉電話,關閉郵箱,叫停會議。唯一能做的就是閉嘴、幹活。你會驚訝於自己居然能幹這麼多活……

你的生活被各種干擾包圍著,只有你自己才能去發起反擊。

Jason Fried《重來》 效率篇-打岔是效率的敵人

有時真是羨慕那些真正的頂級網際網路企業的工程師,據說他們一個運維工程師可以運維上萬臺伺服器,這才是搞技術的,這才是效率,比我們不知道高到哪裡去。

我能做些什麼呢?嘗試在固定時間段關閉 IM,關閉郵箱,在上班時間給自己留出工作時間。反正也不會錯過什麼重要的事情,如果伺服器掛了分分鐘就收到簡訊了,如果老闆找不到人直接就電話了,至於好事,能有啥好事?

效率

馬雲那句“夢想還是要有的,萬一實現了呢”隨著阿里赴美上市傳遍大江南北,於是平時聽老闆們演講時總能聽到的是“我們要給XX賦能,讓他們效率更高,能夠給消費者提供更好的服務,幫助他們實現夢想”之類的。

阿里巴巴正是通過幫客戶賺錢,幫客戶成長,最終才使自己賺取合理利潤的,這也正是阿里巴巴能取得今天成績的文化實質。在賺錢這一點上後天下之樂而樂是合理的,然而在幫助合作伙伴提升效率上,是否還能後天下之樂而樂,就值得商榷了。如果我們自己都在以一種低效的方式工作,怎麼能夠做到幫助客戶,幫助合作伙伴提升效率?

一直以來,我總是感覺單兵作戰,比如我在做自己的業餘專案,或者給某個開源軟體貢獻程式碼的時候,效率最高。一方面可能是我能夠隨心使用業界各種幫助提升效率的工具,另一方面是程式碼本身來源於我自身真實的需求。

涉及到工作效率上,一方面是要想方設法提高自身的效率,另一方面是要防止自己的效率被外在因素降低。最高效的程式就是不執行任何程式碼的程式,同理,那些可做可不做的事情,每少做一件,效率就提高一點。

低頭拉車,抬頭看路。

一頭扎進去,埋頭幹你自己認為應該乾的事情,這很簡單。而要從中抬頭起來問問自己為什麼要這麼做,則難得多。你需要問自己幾個重要的事情,以確定你是否在做真正有意義的事情:

為什麼要這麼做?你在解決什麼問題?這真的有用嗎?你加上去的東西有價值嗎?這種改變真的會起作用嗎?這種方法更簡單嗎?有其他更值得做的事情嗎?這樣做值嗎?

有時候放棄其實是一步好棋,即使你已經為之投入很多努力,也不要繼續把大好的時間浪費在不值得做的事情上。

Jason Fried《重來》 效率篇-退出的理由

之前師兄跟我說過,接需求的時候先多想幾個為什麼,不能隨隨便便來一個接一個。回想自己這一年來,還真是沒做到,沒做好。

工具

還沒有肉翻到美帝去當碼農的經歷,身不能至,心嚮往之。嚮往的理由之一,就是真正的科技型企業,是會對身在其中的技術人員產生技能加成的,讓技術人員能做到之前做不到的事情。

公司有平臺、有工具,也有流程、有包袱。前者幫助開發者提高生產力,後者幫助kēng hài開發者降低生產力。很開心看到最近技術部的研發流程向著輕量化的方向邁進,果然是新 Boss 新氣象的節奏。

說到平臺和工具,不得不讚的就是阿里系技術棧中各種狂拽酷炫屌炸天的 Java 中介軟體。如果有一天我不想再做業務系統了,那麼中介軟體也許是我的一個選擇(當然我更想做的是當獨立開發者用自己的作品養家餬口,然後心情好的時候為自由軟體貢獻程式碼)。然後除了中介軟體,我們似乎就沒有什麼比較通用的拿得出手的工具了,每個應用自己寫自己的後臺,自己做自己的工具。

說到平臺和工具,不得不說的就是各種基礎設施了,從程式碼倉庫、整合系統,到知識庫、文件庫都不像是一個世界級的網際網路企業該有的樣子,反而像是一個傳統的國內軟體企業。面對這樣的基礎設施,真的是連黑都懶得黑了,有這點黑的功夫,還不如想想怎麼把自己從刀耕火種中解救出來,然後開始行動。

其實有些地方企業沒做好反而對員工來說是個機會,就像每出現一個看起來有前途的新語言新平臺,一幫碼農就蜂擁而至,彷彿開荒一般的貢獻各種基礎類庫,然後成為新平臺上的元老級開發者。

很多時候我們為開源專案貢獻程式碼,一是希望世界因為我們的貢獻變得美好一點,二是可以和來自不同地區的同行交流,高手過招(Github 是目前全球最大的男性同性交友平臺),三是可以使用各種最新科技高效的做一些有意思的事情。

之前看過一篇文章,說的是《為什麼優秀開發者進入 Google 後就不參與開源了》,文中列舉了幾個原因,其中一個就是 “Google 的開發環境太好了”。雖然現在的 Google 已經不是當年的樣子,但是至少它曾經是技術人員的理想環境。

開發者和公司之間的關係其實很微妙的,雙方都希望對方先付出,自己後回報。開發者希望公司提供良好的工作環境,完善的基礎設施,然後自己開始創造價值;公司則希望開發者先創造價值。這是一種博弈,也是自由市場的自由選擇。

當我們不夠牛逼的時候,只好自己動手豐衣足食。雖然不可能讓自己的工作環境變得向曾經的 Google 一樣,但是能夠向這樣的目標前進一星半點,總歸是好的。

挖坑

伯樂線上有一篇源自 Quora 的文章,《程式設計師如何做到『程式設計速度又快,Bug 數量又少』?》,把菜鳥程式設計師黑的體無完膚。工作一年來,回頭看看,當年的我也給自己埋了不少雷,挖了不少坑;現在的我是不是在為將來的我埋雷挖坑,我自己都不知道。

其實我們在寫程式碼的時候,是不會故意埋雷的,只不過受限於當時的能力、視野和經驗,也就能夠做到那種地步。只要我們還在不斷練習,不斷進步,回頭看當初的程式碼,都會被當年的自己蠢哭。

有些坑因為沒時間填,程式碼又還能工作,漸漸的變成了陳年老坑,隨著時間的推移就越來越沒法填了。接手的同事一看,這麼大一個坑,修養不好的當面就開噴了,修養稍好的恐怕也免不了心謗腹非。

少挖坑,多填自己的坑,也許我們的工作能因此變得更簡單。少了陳年老坑的束縛,也許我就能做更多的事情,而不會像現在這麼累。

相關文章