九九八十一難,有時候,程序員真的太慘了
有這么一群人,他們上班遲到早退,工作期間也只是寫了幾行代碼。
他們談論自己有多么開心,輕描淡寫地說著過去了解的可怕世界如何不復存在。
他們掙錢很多,上班晚下班早,每天都能吃到免費午餐。還可以免費使用健身房和那些超棒的睡眠艙。
這群人擁有的工作難道不是我們夢寐以求的工作嗎?
快讓我康康,是什么工作?
程序員。
什么?!
沒錯,就是程序員。
雖然常常被各種吐槽(其實大部分是自黑),但成為一名開發人員真的是一件很了不起的事,很多人都想進入這個領域。
人們從新兵訓練營畢業,成為常青藤名校中的佼佼者,甚至自學成才。他們付出所有這些努力,只為成為一名程序員。所以,我可以很負責任地說:
程序員的工作雖然艱苦,卻使人獲益匪淺,是個充滿成就感的職業。
還記得我得到第一份開發工作時,前所未有地覺得自己是有用武之地的。那種感覺就好比你加入了某個異教團體或者某個幫派——可見當時我是多么的自豪。
每當有人問我是做什么工作的,我都會充滿自信地站好,用堅定的聲音告訴他:“我......是一名軟件工程師。”
我很自豪,這種自豪感會發光,會感染那些我接觸過的、與我懷有同樣夢想的人們。
大多數程序員談到工作都會展現光鮮亮麗的好處部分,雖然其中會夾雜些吐槽,但大部分都是往好的輝煌的部分說,極少會涉及那些磨人的內容。所以今天,我就聯系一下我的糟糕經歷,來和大家侃侃“程序員之慘”。
周末工作
是的,你要在周末結束前的最后一刻完成所有妨礙你沖刺的新任務。
別誤會我的意思,有的公司在團隊管理方面效率很高,在這樣的公司你周末就不用工作了。但是,大多數開發人員的周末遲早都得貢獻給一定量的工作,盡管他們已經寫了一個星期的代碼。
在管理者看來,這是好事。他們認為你在周末工作,就能完成更多任務。
有腦子的人都知道這個想法是不對的。谷歌研發出可以編寫應用的自動程序之前,將咖啡因轉化成代碼的程序員只能是活生生的人。這就意味著,程序員的斗志要與項目生產率和進度成正比。
范圍蔓延
是的,因為范圍蔓延,我已經為工作搭上了不少周末時間。如果你不知道什么是范圍蔓延,那么就想象一下,一位客戶給了你大綱和細節,想讓你據此設計一款應用。
假設你每兩周都和這位客戶開會,回顧自己在過去兩周時間里拼命工作的成果。
范圍蔓延指的是你確實按照客戶的要求做好了這款應用,但是現在客戶提出了更多的要求。客戶要求的往往是一個小變動,但這個小變動不是該應用的初始用例。
將用戶界面上的一個圖標從一個屏幕移動到另一個屏幕,或改變下拉菜單的位置,這些操作似乎沒什么大不了,但過一會兒,屏幕上就到處都是廣告。
最糟糕的是,開發人員無法終止范圍蔓延,因為應付客戶、協助公司與客戶進行溝通并不是開發人員的工作。
做這些工作的是能把客戶的需求變成代碼的經理。
范圍蔓延意味著你的短期目標、故障和用戶故事都要發生變化。所以,你永遠也完不成任務。你明白這是什么意思吧?
與時俱進
在我看來,這對于程序員來說是最有挑戰性的。要想成為一名優秀的程序員,你必須適應變化,能夠快速學習使用新工具。這就意味著,你要持續關注那些你的應用程序和組織能用到的新技術。
這是很累人的,尤其是你年紀逐漸變大,而且做了很久的編程工作之后。
以Angular為例。它的發布周期是六個月。也就是說,Angular每六個月都會發布新產品。我知道新產品的發布不會像Angular 1到Angular 2一樣有那么大的變化,但是要想理解它們的基本工作原理也確實要費一番功夫。
哪個工程師會使用他們不了解的工具呢?
持續關注組織內外的技術變化還會讓你更有價值。如果公司來了一批更加年輕、精力更充沛的開發人員,你就會失去競爭力。此外,如果你在為一家創新公司工作,他們會更看重那些會使用比較新、比較最出色工具的工作人員。
以上幾點只是發生在我程序員生涯中的一些不好的事情。
大部分時間,當程序員的好處還是遠多于壞處的。
雖然不好的方面依然存在……
但是,如果你能幸運地在一家超棒的公司工作,可以免費使用健身房,免費享用午餐,工作時間靈活,還有睡眠艙,那么你很好的選擇就是長期在那里工作,不要跳槽!不要跳槽!不要跳槽!(重要的事情說三遍)
因為……
那樣的公司實在是太少了。


























