前幾天,我讀到一篇文章,一個60多歲老程式設計師回顧自己的人生。
讀完以後,我很受觸動,覺得對於軟體行業的很多看法,我也有同感。下面就是這篇文章的翻譯。
====================================
一個老程式設計師的30年生涯回顧(譯文)
原文網址:hackernoon.com
作者:Chris Fox
1、
1967年,我13歲時開始學習程式設計。
1988年,我正式進入了軟體行業,透過程式設計養活自己。那一年,我34歲。
2、
1989年,我加入微軟公司,那是微軟為程式設計師提供單人辦公室的最後一年。我們程式設計時,幾乎沒有干擾,這真是太好了。當時,微軟的觀念是必須為程式設計師創造不受打擾的環境,讓他們全身心地投入工作。
3、
1990年5月,Windows 3.0 釋出,公司出現了真正的變化。
突然之間,我與一個吸菸的同事共用一個辦公室,他整天在電話裡大聲聊天。更糟糕的是,我們開始有更多的會議。
4、
接下來的20年,情況越變越糟。程式設計師像農奴一樣被使用,許多人飽受壓力、精疲力盡,每週工作70個小時以上。但是實際上,其中真正用來完成工作的時間只有4-6個小時,其餘時間都為透過質量檢查系統苦苦掙扎,設法應付各種質量措施。
5、
到了2009年,一切都變得混亂了。程式設計師對程式碼質量的熱愛,完全被核取方塊式的機械處理取代了。在2008年末,我的主管要求我,程式碼都必須有單元測試,以便在系統中為該專案勾選"具有單元測試"的那個框。不久,他又要求我嘗試"測試驅動的開發"(TDD)的新程式設計模式。
最後,當他們要求我做結對程式設計時,第二天我就因為憤怒而辭職了。
6、
離開微軟後,我去了西雅圖市中心的 Real Networks 公司工作。在西雅圖,交通堵塞是一個大問題,我一般在早上高峰時間之後的9:30去上班,這樣只要開車30分鐘,就能到公司,還算不錯。
7、
不久,我所在的團隊開始嘗試敏捷開發,每天早上8:30舉行一次"站立會議"。這正好趕上早高峰,30分鐘的通勤時間變成了90分鐘,我必須在早上7:00出門才行。我幾乎沒有辦法準時到達,並且感到非常疲倦。我詢問是否可以稍微推遲會議。不行,你難道不知道站立會議必須在早晨舉行嗎?
為此,我只能(無償地)多花了額外的時間開車去上班。
8、
這種會議真是很荒謬,每個程式設計師報告自己正在做的事情。大部分時候,我們做的事情跟昨天相同,偶爾會做一些新的事情,但沒有什麼特別可說的。會議上,產品經理會表現出生機勃勃、歡快愉悅的情緒,聽起來很投入,而實際上我知道他們上班時很多時間都在臉書上玩遊戲。
9、
許多次,我聽到"故事"(Story)這個詞。我問,"故事"是什麼意思?回答是使用者場景或者使用案例的新名稱。隨著我對敏捷開發的瞭解越多,遇到的重新命名和名詞重定義就越多。我看不出來這能對工作帶來多少的新價值,唯一帶來的就是更多的會議。
我建議不要使用"故事"這個名詞,結果被冷淡地告知,"故事"是敏捷開發的一部分,我們將緊跟這種新的開發方法。
10、
我的原計劃是,2019年65歲時退休,然後搬到東南亞國家享受退休生活。但是,經歷過了沉悶的站立會議、白板上的迭代看板、一系列高壓力的工作、對"故事"的不停談論,我越來越對這個工作感到噁心。
2010年11月15日,56歲時,我退休了。
11、
我在越南買了一棟房子(上圖),然後收拾行裝,離開了美國。我非常喜歡這棟漂亮的新房子,準備在那邊彈吉他,閱讀物理書籍,體驗截然不同的文化,放鬆身心。
12、
在越南過了一段日子以後,生活變得很閒,我只好把時間用來學越南語,否則就太無聊了。
13、
一位朋友建議我可以試試 iPhone 和 iPad 開發,軟體工具是免費的。我懷念程式設計,就買了一臺 MacBook,學習了 iOS、Objective-C 和 Xcode,很快就寫出了一個可以出售的 App。我又回到了這個行業。
14、
2011年到2016年,我一開始為自己寫 iOS 和 MacOS 應用程式,然後出售。這樣也不錯,但是我想掙更多的錢,就開始透過自由職業網站的中介,接一些客戶的活。
15、
2017年,我獲得了一家加利福尼亞公司的遠端工作,為他們做伺服器端開發。我學習了 C#、Entity 框架、ASP. NET。當推薦我的人離職了,我就接管了伺服器端和資料庫開發。這樣已經持續了30個月。這是一段很棒的經歷,讓我掌握了一些最新技能,我喜歡伺服器端和資料庫程式設計。
這些時間我一直是一個人工作,但也是團隊的一員。整個開發部門都是遠端的,瀏覽器客戶端開發人員在悉尼,我在越南。我們透過 RESTful API 協作,彼此都是獨立工作。
16、
回顧我的30年程式設計師生涯,軟體行業發生了翻天覆地的變化。
現在的軟體業有更多時尚的行話和術語,比如使用者故事、技術債務、敏捷、重構、迭代、里程碑等等。在我看來,所謂迭代,就是說這段時間你會過度勞累,沒有其他含義。
奇怪的是,他們用各種辦法監督程式設計師,但是招聘的時候,職位要求依然寫著,需要具有獨立工作精神、高度主動性的人。這真是諷刺。
17、
現在的軟體業還流行開放辦公室,這意味著完全不可能集中精力。你的工作被持續不斷地打斷,沒法關門保持沉默和集中注意力。如果你戴著耳機,就意味著你的團隊合作精神不夠。
18、
最後,測試已經變味了。以前,我在微軟公司,我們沒有那麼認真對待測試。微軟經常開玩笑說,任何人都不應該使用偶數版本的軟體,因為它是測試版,適合那些願意向我們報告錯誤的客戶。比如,請勿使用2.0版,因為2.1版將修復客戶報告的所有2.0版的錯誤,至少是比較嚴重的錯誤。
現在的軟體業提倡測試驅動開發這種荒謬方法。我在許多地方都讀到,在軟體開發中,沒有什麼比單元測試更重要了,甚至比交付成果的本身還要重要。單元測試是設計,是定義API的地方。測試覆蓋率不到100%,就是存在欠缺,100%覆蓋率是程式設計師的榮譽, 開發人員應該負責測試他們的產品。我們不再需要黑匣子測試流程,也不需要測試工程師。
我認為,這些態度充滿了狂熱主義。每個人都有盲點,總是會存在忽略編寫測試的案例與忽略編寫程式碼的案例。
19、
我喜歡程式設計,喜歡解決問題和開發功能,從小開始直到現在都是如此。
以前,我選擇服從那些流行的做法,但是現在不會了。我不會在開放式辦公室工作,不會持續一個星期聽所謂的專業術語,不會將各種新詞用來描述舊事物,不會結對程式設計,不會參加頻繁的會議,不會在意對團隊協作精神的要求,也不會嘲笑那些獨自工作的人。
20、
我喜歡伺服器端開發,未來希望還可以做這方面的工作。同時,我正在轉向技術寫作,學習遠端工作所需的新技能。
我喜歡現在這種一點不瘋狂的環境。
(完)