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