程式人沒生活?


iThome 網站首載:程式人沒生活?


如果想知道程式人有什麼,在鍵入「programmers have 」時,Google搜尋第一個建議就會告訴你「no life」!程式人真的沒生活嗎?程式人習慣晚睡、加班,追逐不斷出現的新技術,只要有靈感,就會想要馬上加以實現,半夜作夢也會爬起來的經驗大家都有之,時間、身體、心理上的負擔,讓程式人真的沒生活嗎?
   
隨心所欲的夜間時段

程式設計中有許多需要聚精會神的任務,在進行這類任務之前,通常必須先隨意地瀏覽一下問題的所在情境(Context)、逐步收斂思維範圍、然後進入一種思緒高速流動的狀態,心理學家稱這為神馳狀態(Flow status),許多人都有過這種經驗,在從神馳狀態回到現實世界時,以為只過了幾分鐘,然而時間實際已逝流了數小時,高度專注讓人們沉醉其中,甚至會有莫名的歡愉感,然而突然的一通電話、一個開會通知、一封郵件提示鈴聲,就可以將你從如天堂的神馳狀態驟然拉回現實...

如果是需要聚精會神方能解決的任務,這類硬生生地將程式人拖回現實的干擾,就工作效率而言絕對是種傷害,因為干擾處理結束之後,要再度取得專注力需要時間,有時甚至無法再進入神馳狀態;然而時不時將程式人從沉醉狀態拉回現實,才是這類干擾經常令程式人沮喪甚至產生焦慮的原因,程式人只要偶而幾次在夜深人靜,嘗到沒有外在干擾的甜頭之後,就會慢慢養成晚睡或熬夜的習慣,為的是填補白天無法盡情享受的沉醉狀態。

實際上晚睡不見得是為了進入神馳狀態,神馳狀態也不見得是最有效率狀態,Bob大叔在《The Clean Coder》中〈The Flow Zone〉就這麼認為,而RSS創建者Aaron Swartz曾在〈HOWTO: Be more productive〉文中談到,專注解決一個問題而期待很有效率,其實是個迷思,而且很難做到,反而是不同時段有不同適當任務可以執行,在卡關或厭煩時能適當轉換情境,才是更有效率、更有創造力的方式。

也許程式人想要的,其實是這種隨心所欲的時段,大多數人選擇在夜間獲得這種時段,因而睡眠品質不佳、熬夜成了家常便飯,作息顛倒的習慣一旦養成,反而造成夜晚精神特好,而人們常看到的就是程式人白天精神不振、外型邋禢等形象,對健康也造成了傷害。

失衡失序的時間管理

有關於程式開發與加班的話題,只要在搜尋引擎中鍵入「程式」、「加班」等類似關鍵字,就可找出一堆看也看不完的文章,可以加班的理由太多了,像是程式碼本身不良、不當專案管理、不斷地開會開會開會、長官觀感政治因素等。《人月神話》中談到向落後專案追加人力,只會使進度更加落後,這個道理大多數人都知道了,即然追加「人」沒辦法追上進度,那就追加「月」吧!不過專案期限不能改,那就由程式人的加班時數來追加吧!?

如果程式人加班成為常態,那時間分配就容易開始失衡,加班壓縮了原本可隨心所欲的夜間時段,只好熬更多夜來彌補,白天精神狀態就更不佳,反正上班時間干擾很多,於是程式人開始於上班時間沉溺於不重要的事,時間分配就開始失序,於是惡性循環開始了,週而復始地昏沉、加班、熬夜、不良睡眠,佔據了每日24小時,工作上談來談去就職場、技術或半夜網路上看來的無聊話題,跟非技術圈的朋友聚會完全沒有交集話題可談,久而久之朋友們大概就開始覺得,程式人是個沒有生活的怪咖。

如果有家庭甚至有小孩的程式人,想在工作、家庭、小孩中分配時間就更是門藝術了,加班回家後家人都睡了,隔天一早又各自趕上班上學,久了實在沒有家庭生活可言。有時真的想要有一些自己的時間,回家躺在小孩旁想把他早點弄睡,自己好爬起來辦點自己的事,結果小孩還沒睡著自己卻先昏睡了,應該程式人經驗中常有的事,就某些方面來說,這對健康比較好,只不過起床時發現自己一覺到天亮,沒辦半點自己的事,有時還真有點沮喪。

阿宅的楚門世界

在1998上映過一部電影《楚門的世界》,楚門從嬰兒期開始,就住在一個海景小城直到長大成人,實際上那是一座巨大的攝影棚,他從小到大的過程是全球最受歡迎的紀錄片,身邊包括妻子、朋友都是演員,某些巧合情節開始讓楚門懷疑而後證實他生活的世界是虛構的,最後不惜一切代價,跳出他生活的攝影棚世界。

程式人某些程度是相反的,只要有電腦跟網路,他們就可以營造出自己的世界,從中獲得價值與成就感,程式寫出來可以欣喜若狂,看到新技術就開始興奮,喜歡擁有最潮的科技產品,在隨心所欲的夜間時段,除了趕趕程式、看看技術文件外,大概就是逛一些正妹或八掛網站,假日為了享受得之不易的隨心所欲時間,十之八九宅在電腦前,出門對象如果不是圈內人士,因為容易沒有話題,為了防止無聊,背包大概會放本技術書籍,甚至直接背電腦出門,隨時找間咖啡館或速食店就可以打開電腦,進入自己的楚門世界。

久而久之,人們就會覺得程式人是個跟生活完全脫節,沒有社交技巧,身體很差的阿宅,如果阿宅技術上有專業,並有一個不錯的職位或名聲,就會有個好一點的稱呼:工作狂。有些公司或創業者要求的條件與提供的環境,加強了工作狂的價值觀,追求更頂尖的技術,每週更高的工作時數,公司提供更好的零食、伙食、軟硬體等各式應有盡有的生活甚至娛樂設施,幾近是整個城市的縮影,活像是楚門世界的攝影棚,能進入這個攝影棚本身就似乎代表了成功,工作與生活再也分不清,有些阿宅也就認為,技術就是他的一切,有些工作狂也就認為,工作就是他的生活。

時間、睡眠與生活

追求有效率地工作,而不是長時間地工作,是每個程式人想擁有生活前務必要思考的,我知道這很難,但你總得嘗試去思考、去做,即便那有著整體社會環境或公司政治性因素在裏頭,你也總得想辦法克服或自行做些改變,只要有這種想法,很多文章或書籍都告訴你怎麼去實行了;偶而的加班也許是有效果的,但常態性的加班,也許就暗示著你落入了《人月神話》的迷思:「人力和工時可以互換的」,如果你的工作性質並沒有落入這種迷思,那就代表著你在這份工作上是可以替換的。

Bob大叔說過:「睡眠的重要性怎麼強調也不為過」,除了睡眠時數之外,更重要的是睡眠品質。睡前看電腦會影響睡眠品質,熬夜更是違反生理時鐘,同樣的睡眠時數,晚上10點就寢、午夜12點就寢、凌晨2點就寢,三者的效果絕對不同,程式人需要的其實是「隨心所欲的時段」,而不一定要是「夜間時段」,如果你需要兩個小時,早睡早起獲得,絕對比晚睡晚起獲得這段時間來得有效率。

有的人不敢早睡來獲得隨心所欲時段,因為往往一睡下去,就算轉鬧鐘也起不了,這其實是過往欠下了睡眠債(Sleep debt),為了怕早上起不了而選擇熬夜,只會欠下更多的睡眠債,如果你認同Ward Cunningham的技術債(Technical Debt)概念,也承認因種種追求速度的理由而欠下的技術債是必須償還的話,那麼也就應該能理解欠下的睡眠債,終究是得連本帶利補回來的,Bob大叔也說過:「專業開發者會好好安排他們的睡眠」,無論這是為了你的工作效率、生活,或者是健康考量,如果連健康都不存在了,那程式人就真的會永遠失去了生活。