身為一名程式設計師,為什麼我老是活得比狗還累?
最近是真的累了。不知不覺之間,已經兩三個星期沒有健身,感覺身體很難受,接下來的日子必須強制自己按時健身,按時休息,不然真的是不知道哪天就掛了。
過去一年多,我仗著自己年輕的身體,對電腦的熱情,在工作上多使用蠻力,彷彿一個使用樸素演演算法實現的程式,吭赤吭赤跑個不停。一開始,樸素演演算法還能在指定的工作時間內完成任務;後來任務越來越多,工作時間之內肯定沒法完成,我開始竊取時間,以更長的時間換取任務的完成。我知道這不是一種科學的工作方式,但是在那種時間壓力、任務壓力之下,也是無可奈何。
無論如何竊取時間,一天總歸只有 24 小時。無論如何使用蠻力,也做不到不休不眠。遲早有一天,任務會多到讓人感覺厭倦,只是沒有想到,這種情況來的這麼快。
這種厭倦感已經沒法抑制了,小學妹說我最近很萎靡,前輩也說我看起來很憔悴。有一次吃完飯回去的路上,前輩不經意間問道,為什麼我們幹活乾的這麼累。也許是職位的不同,作為主管,前輩需要更多優秀的工程師,更多優秀的應屆生和實習生。當時我只是苦笑,回答不上來。
後來想想,是啊,為很麼我們幹活乾的這麼累?前幾天去舟山的路上,我看完了久負盛名的Rework,中譯本名叫《重來》(臺灣中譯本為《工作大解放》)。自戀一點,我也是一個優秀而高效的研發工程師,為什麼卻被工作打敗了?為什麼我們一群在「頂級」網路企業工作的優秀工程師,才服務了區區幾萬使用者就已經累成狗,人家 37signals 幾十個人就服務了幾百萬的使用者?
先給自己打臉。
沉迷工作是企業文化中廣受讚頌的一種「優良做派」。我們知道工作狂熱衷於通宵達旦、加班加點,甚至在辦公室打地鋪。這些人以累死在專案中為榮,對他們來說,再大的工作量也不在話下。
工作狂的行為不但沒有必要,而且愚蠢至極。過多的工作並不帶把你對專案更關注,也不代表你做了更多貢獻,這僅僅意味著你幹了更多活而已……
工作狂的存在使那些不以加班為樂的員工感到無所適從。在工作狂扎堆的企業環境裡,就連「按時上下班」都讓人覺得是一種無理的要求了……
工作狂不是英雄,他們沒有力挽狂瀾,不過是浪費時間而已。真正的英雄早已想出辦法、搞定一切,然後回家了。
Jason Fried《重來》 卸負篇-工作狂
時間
關於碼農的工作時間,有一個臭名昭著的說法是「彈性工作制」。雖然沒有硬性的時間規定,但是也有一個約定的時間是 9 點上班 6 點下班,至於傳說中的「把活幹完之後沒人管你幹啥」永遠只是傳說。換個說法,就是上班時間可以比 9 點晚一些,下班時間一般不早於 6 點。在這九個小時中,排除中午吃飯和休息的一兩小時,還剩七八小時。可是這裡面能讓我們投入腦力勞動的時間有多少呢?可憐的不足 3 小時。其餘的時間總被各種亂七八糟的事情打斷,這個 IM 響個不停,那個郵件收個不停,還有人動不動弄出各種高階大氣活動、培訓來消費這所剩無幾的工作時間。於是乎上班時間幹不了多少活,好不容易等到別人都下班回家了,總算進入了 coding 時間。之前我總是說,6 點之後有 5 個小時的程式設計時間,就是這麼回事。
如果是一個普通的職業,普通的職位,自然是上班幹活,下班走人。可是我們乾的不是一般的職業,我們是碼農啊。之前我實習的時候就聽同事講過一句精闢的話:「幹別的職業請假了就沒事了,當碼農的請假回來了事還是你的,還得加班幹活追趕請假落下的進度」。也許是出於這個原因,我很少請假。
所以說,別的職業時間被浪費就浪費,被佔用就被佔用,反正下班走人。可是我們是碼農誒,彈性工作制誒,所以我們白天上班陪別人玩,晚上加班幹活。
如果你總是為了工作而熬夜或者犧牲週末時光,其實並不是因為你有很多工作要做,而是因為你的工作狀態不佳。而工作狀態不佳就是由打岔引起的……
在這個時段內,封鎖即時聊天工具,掛掉電話,關閉郵箱,叫停會議。唯一能做的就是閉嘴、幹活。你會驚訝於自己居然能幹這麼多活……
你的生活被各種干擾包圍著,只有你自己才能去發起反擊。
Jason Fried《重來》 效率篇-打岔是效率的敵人
有時真是羨慕那些真正的頂級網路企業的工程師,據說他們一個維運工程師可以維運上萬臺伺服器,這才是搞技術的,這才是效率,比我們不知道高到哪裡去。
我能做些什麼呢?嘗試在固定時間段關閉即時通訊,關閉信箱,在上班時間給自己留出工作時間。反正也不會錯過什麼重要的事情,如果伺服器掛了,沒幾分鐘就收到簡訊了,如果老闆找不到人直接就電話了,至於好事,能有啥好事?
效率
馬雲那句「夢想還是要有的,萬一實現了呢」隨著阿里赴美上市傳遍大江南北,於是平時聽老闆們演講時總能聽到的是「我們要給XX賦能,讓他們效率更高,能夠給消費者提供更好的服務,幫助他們實現夢想」之類的。
阿里巴巴正是透過幫客戶賺錢,幫客戶成長,最終才使自己賺取合理利潤的,這也正是阿里巴巴能取得今天成績的文化實質。在賺錢這一點上後天下之樂而樂是合理的,然而在幫助合作伙伴提升效率上,是否還能後天下之樂而樂,就值得商榷了。如果我們自己都在以一種低效的方式工作,怎麼能夠做到幫助客戶,幫助合作伙伴提升效率?
一直以來,我總是感覺單兵作戰,比如我在做自己的業餘專案,或者為某個開源軟體貢獻程式的時候,效率最高。一方面可能是我能夠隨心使用業界各種幫助提升效率的工具,另一方面是程式本身來源於我自身真實的需求。
涉及到工作效率上,一方面是要想方設法提高自身的效率,另一方面是要防止自己的效率被外在因素降低。最高效的程式就是不執行任何程式的程式,同理,那些可做可不做的事情,每少做一件,效率就提高一點。
低頭拉車,抬頭看路。
一頭栽進去,埋頭幹你自己認為應該乾的事情,這很簡單。而要從中抬頭起來問問自己為什麼要這麼做,則難得多。你需要問自己幾個重要的事情,以確定你是否在做真正有意義的事情:
為什麼要這麼做?你在解決什麼問題?這真的有用嗎?你加上去的東西有價值嗎?這種改變真的會起作用嗎?這種方法更簡單嗎?有其他更值得做的事情嗎?這樣做值嗎?
有時候放棄其實是一步好棋,即使你已經為之投入很多努力,也不要繼續把大好的時間浪費在不值得做的事情上。
Jason Fried《重來》 效率篇-退出的理由
之前前輩跟我說過,接需求的時候先多想幾個為什麼,不能隨隨便便來一個接一個。回想自己這一年來,還真是沒做到,沒做好。
工具
還沒有到美國去當碼農的經歷,身不能至,心嚮往之。嚮往的理由之一,就是真正的科技型企業,是會對身在其中的技術人員產生技能加成的,讓技術人員能做到之前做不到的事情。
公司有平臺、有工具,也有流程、有包袱。前者幫助開發者提高生產力,後者幫助開發者降低生產力。很開心看到最近技術部的研發流程向著輕量化的方向邁進,果然是新 Boss 新氣像的節奏。
說到平臺和工具,不得不讚的就是阿里系技術棧中各種狂拽酷炫屌炸天的 Java Middleware。如果有一天我不想再做業務系統了,那麼Middleware也許是我的一個選擇(當然我更想做的是當獨立開發者用自己的作品養家餬口,然後心情好的時候為自由軟體貢獻程式)。然後除了Middleware,我們似乎就沒有什麼比較通用的拿得出手的工具了,每個應用自己寫自己的後臺,自己做自己的工具。
說到平臺和工具,不得不說的就是各種基礎設施了,從程式倉庫、整合系統,到知識庫、文件庫都不像是一個世界級的網路企業該有的樣子,反而像是一個傳統的國內軟體企業。面對這樣的基礎設施,真的是連罵都懶得罵了,有這點罵的功夫,還不如想想怎麼把自己從刀耕火種中解救出來,然後開始行動。
其實有些地方企業沒做好反而對員工來說是個機會,就像每出現一個看起來有前途的新語言新平臺,一幫碼農就蜂擁而至,彷彿開荒一般的貢獻各種基礎類庫,然後成為新平臺上的元老級開發者。
很多時候我們為開源專案貢獻程式,一是希望世界因為我們的貢獻變得美好一點,二是可以和來自不同地區的同行交流,高手過招(Github 是目前全球最大的男性同性交友平臺),三是可以使用各種最新科技高效的做一些有意思的事情。
之前看過一篇文章,說的是《為什麼優秀開發者進入 Google 後就不參與開源了》,文中列舉了幾個原因,其中一個就是 「Google 的開發環境太好了」。雖然現在的 Google 已經不是當年的樣子,但是至少它曾經是技術人員的理想環境。
開發者和公司之間的關係其實很微妙的,雙方都希望對方先付出,自己後回報。開發者希望公司提供良好的工作環境,完善的基礎設施,然後自己開始創造價值;公司則希望開發者先創造價值。這是一種博弈,也是自由市場的自由選擇。
當我們不夠強的時候,只好自己動手豐衣足食。雖然不可能讓自己的工作環境變得向曾經的 Google 一樣,但是能夠向這樣的目標前進一星半點,總歸是好的。
挖坑
伯樂線上有一篇源自 Quora 的文章,《工程師如何做到『程式設計速度又快,Bug 數量又少』?》,把菜鳥工程師貶的體無完膚。工作一年來,回頭看看,當年的我也給自己埋了不少雷,挖了不少坑;現在的我是不是在為將來的我埋雷挖坑,我自己都不知道。
其實我們在寫程式的時候,是不會故意埋雷的,只不過受限於當時的能力、視野和經驗,也就能夠做到那種地步。只要我們還在不斷練習,不斷進步,回頭看當初的程式,都會被當年的自己蠢哭。
有些坑因為沒時間填,程式又還能工作,漸漸的變成了陳年老坑,隨著時間的推移就越來越沒法填了。接手的同事一看,這麼大一個坑,修養不好的當面就開罵了,修養稍好的恐怕也免不了心謗腹非。
少挖坑,多填自己的坑,也許我們的工作能因此變得更簡單。少了陳年老坑的束縛,也許我就能做更多的事情,而不會像現在這麼累。
相關文章
- 為什麼我們程式設計師工作得這麼累?程式設計師
- 為什麼成為一名程式設計師?程式設計師
- 程式設計師你為什麼這麼累?程式設計師
- 為什麼為什麼為什麼為什麼為什麼你要做一名程式設計師?程式設計師
- 我們程式設計師為什麼會感覺到累程式設計師
- 你為什麼成為一名程式設計師?程式設計師
- 為什麼我還在程式設計程式設計
- [水文] 什麼原因讓我成為一名程式設計師程式設計師
- 我為什麼是程式設計師?程式設計師
- 女程式設計師,為什麼比男程式設計師少???程式設計師
- 程式設計師你為什麼這麼累? - 配置規範程式設計師
- 為什麼我不想成為Web前端程式設計師Web前端程式設計師
- 為什麼要選擇做一名程式設計師?程式設計師
- 為什麼我們不要 .NET 程式設計師程式設計師
- 為什麼我們不要.NET程式設計師程式設計師
- 同為程式設計師,為什麼我的工資最低?程式設計師
- 同為程式設計師 為什麼我的工資最低程式設計師
- 程式設計師你為什麼這麼累? - Controller規範程式設計師Controller
- 同是程式設計師,為什麼我工資最低程式設計師
- 為什麼你的設計團隊中需要一名程式設計師?程式設計師
- 為什麼我們程式設計師寫不出好程式碼?程式設計師
- 程式設計師壓力那麼大,為什麼還要選擇做程式設計師程式設計師
- 我為什麼不要30歲以上的程式設計師?程式設計師
- 我們程式設計師為什麼要關注 JavaScript ?程式設計師JavaScript
- 為什麼年事已高的我還在程式設計?程式設計
- 為什麼要成為「無敵」程式設計師?程式設計師
- 設計師為什麼要學程式設計,開發者為什麼要學設計?程式設計
- 我為什麼痴迷於程式設計?程式設計
- 我為什麼喜歡程式設計程式設計
- 為什麼成為一名程式設計師這麼難 —— 學Coding的必經之路程式設計師
- 為什麼美國程式設計師工作比中國程式設計師工作輕鬆、加班少?程式設計師
- 程式設計師,為什麼如此迷茫?程式設計師
- 我為什麼說程式設計師會成為最富有的群體程式設計師
- 為什麼我是世界上最好的程式設計師?程式設計師
- 樑斌:為什麼我們程式設計師難晉升程式設計師
- 為什麼我們不用智力題來面試程式設計師面試程式設計師
- 為什麼有的程式設計師不會程式設計?程式設計師
- 中國程式設計師為什麼要跳槽?程式設計師