65歲程序員回顧自己的一生
關(guān)注▲?W3Cschool▲?,每天一篇文章,與你共同成長

作者丨Chris Fox
翻譯丨w3cschool
1967年,我13歲時開始學習編程。
我從1988年開始從事軟件開發(fā)工作,并獲得收入。一年之后,我去了微軟,那是微軟為程序員提供單人辦公室的最后一年。我們在寫代碼時,幾乎不會受到干擾,我們得到了像王子般的待遇,那種感覺很好。當時微軟的企業(yè)文化,是要給程序員創(chuàng)造不受打擾的環(huán)境,以便讓他們?nèi)硇牡耐度牍ぷ鳌?/p>
在我加入微軟不久,公司就迎來了首次公開募股(IPO),那時候公司出現(xiàn)了一些變化,但真正的變化,是在1990年5月發(fā)布Windows 3.0的時候。突然間,我和一個喜歡吸煙的同事,被分配到了同一間辦公室,他整天在電話里大聲的聊天。更糟糕的是,我們的會議越來越多了。

接下來的20年,我們像農(nóng)奴一樣,每周工作超過70個小時,幸運的是,我們在那段時間里,每天還能把4-6小時用在實際工作中。然而剩下的時間,基本上都在檢查系統(tǒng),和設(shè)法應付各種質(zhì)量措施。
到2009年,一切變得越來越亂。程序員對代碼質(zhì)量的要求,完全被復選框式的機械處理取代了。有幾次,我因為太過追求代碼質(zhì)量,而陷入了困境,這在1980年是不可能發(fā)生的。
嚴謹?shù)拇a風格,是程序員最重要的美德。
代碼質(zhì)量消失了,它死了,而后又被埋葬。2008年底,我的經(jīng)歷告訴我,要我在應用程序之外,編寫蹩腳的代碼,以便他們可以在該代碼上運行單元測試(可以為該項目勾選“具有單元測試”的那個框)。
不久,他又要求我嘗試“測試驅(qū)動開發(fā)(TDD)”的編程模式。這時,我決定要更新自己的簡歷,并開始計劃辭職。可惜的是,我并沒有馬上這樣做。
后來,他還要求我做結(jié)對編程,我十分氣憤,第二天就遞交了辭職申請。
離開微軟后,我在西雅圖市中心的Real Networks工作。在西雅圖,交通是一個大問題,經(jīng)常堵車。但由于我一般在9點半之后上班,剛好可以錯過高峰期,這樣只需要30分鐘就能到公司,還算不錯。

不久,我所在的團隊,開始研究一種叫做“敏捷開發(fā)”的新事物。對我而言,這一切意味著,我必須參加每天上午的“站立會議”,這是一場8:30的會議,它要求我必須提前90分鐘開始工作。這樣一來,我不得不在高峰期前往公司,原來30分鐘的路程,變成了90分鐘,等于說我要在7:00就出門,幾乎沒辦法準時到達,而且感到很疲倦。
我問能不能稍后安排“站立會議”?
不行!難道你不知道會議要在早上開始嗎?

這種會議極其荒誕,每個開發(fā)人員都要說出自己在做的事情。我們會在會議室四處走走,每個開發(fā)人員都認為他正在做的事情,跟昨天的沒什么不同的,或者偶爾有一些新的事情,也沒有什么報告的必要。
產(chǎn)品經(jīng)理表現(xiàn)得更糟糕,他總是擺出一副興高采烈的樣子,聽起來很投入。而實際上,我知道他們大部分時間都在Facebook上玩游戲。在我聽到“故事”這個詞幾次之后,我才意識到它并不是指我們銷售的一款游戲。
對不起,我不知道“故事”是什么意思。
“故事”變成了一個新的名詞,用于我們之前所說的用戶場景、使用案例。隨著我對敏捷開發(fā)了解越來越多,遇到的重命名和名詞重定義越多。我看不出來這些名詞,能給工作帶來多少新的價值,唯一帶來的是更多的會議。

我抗議使用“故事”,這讓人覺得很幼稚。但在開會的時候,我被無情地告知“故事”是敏捷開發(fā)的一部分,我們將嚴格地按照敏捷開發(fā)這種新方法執(zhí)行。
為此,我每天要多花一個小時去上班。啊,多么美麗的新世界!

2010年,我兩次去越看看我的新房子,第一次是在施工的時候,我在那里住了三個星期。我得知我在Real Networks的合同被延長了,盡管當時有一半的人被裁員。后來,我結(jié)束了在那里的工作。
我本來計劃在2019年65歲時退休,并在此時搬家。但是,經(jīng)歷過了沉悶的站立會議、白板上的迭代看板、一系列高壓力的工作、對"故事"的不停談?wù)摚以絹碓礁械綈盒摹N曳浅O矚g住在美麗的新房子里,所以我決定收拾行裝,于2010年11月15日離開美國,正式退休。

我在我的新家里,彈吉他、閱讀物理書籍,并用非常“奇怪”的語言生活。
我的確學會了說越南語,不然我會覺得很無聊。
一位朋友建議我學習為iPhone何ipad編寫程序,軟件工具是免費的。我挺懷念編程的,就賣了一臺MacBook,并學習了iOS,Objective C和XCode,并很快有了一個可以出售的應用程序。
我又重新回到了這個行業(yè)。

從2011年到2016年,我為自己編程,也為客戶編寫iOS和MacOS程序,但是我想要賺更多的錢。所以,我開始通過一些網(wǎng)站中介,接到了更多客戶的活。
2017年,經(jīng)過朋友推薦,我獲得了一份加利福尼亞的工作,為他們做服務(wù)器端的開發(fā)。我學習了C#、Entity 框架、ASP. NET。當我的朋友離職后,我就接管了公司的服務(wù)器端和數(shù)據(jù)庫的開發(fā),一工作就是30個月。
這是一份非常棒的工作,它讓我掌握了一些最新的技術(shù)。我非常喜歡服務(wù)器和數(shù)據(jù)庫。
這段時間我一直一個人工作,雖然我也是團隊中的一員。整個開發(fā)部門都是遠程的,瀏覽器的開發(fā)人員在悉尼,而我在越南。我們必須在REST API上進行協(xié)作,但我們倆都是單獨工作的。
去年8月份,我結(jié)束了這一份工作。我認為我可以很輕松的找到更多的遠程工作,因為我的獨立性、技術(shù)水平都是優(yōu)勢,就像過去一樣。

但我發(fā)現(xiàn),軟件開發(fā)行業(yè)已經(jīng)面目全非。
“故事”僅僅是個開始。在我之前的工作中,我們有兩名開發(fā)主管用了很多專業(yè)名詞,比如用戶故事、技術(shù)債務(wù)、敏捷、重構(gòu)、迭代等等。現(xiàn)在,這個行業(yè)充滿了行話,“敏捷”無處不在,這些術(shù)語本身都不是什么新鮮事。比如迭代,這個詞意味著這段時間,你會非常非常累,除此之外,沒有其他意義。
他們還會用各種各樣的辦法,去敦促程序員抓緊時間開發(fā)。奇怪的是,招聘的時候,崗位要求還寫著,需要具有主觀能動性的人,真是諷刺。
現(xiàn)在的軟件業(yè)還流行開放辦公室,這意味著完全不可能集中精力。你的工作被持續(xù)不斷地打斷,沒法關(guān)門保持沉默和集中注意力。如果你戴著耳機,就意味著你的團隊合作精神不夠。

最后,測試已經(jīng)變味了。以前,我在微軟公司,我們沒有那么認真對待測試。微軟經(jīng)常開玩笑說,任何人都不應該使用偶數(shù)版本的軟件,因為它是測試版,適合那些愿意向我們報告錯誤的客戶。比如,請勿使用2.0版,因為2.1版將修復客戶報告的所有2.0版的錯誤,至少是比較嚴重的錯誤。
現(xiàn)在的軟件業(yè)提倡測試驅(qū)動開發(fā)這種荒謬方法。我在許多地方都讀到,在軟件開發(fā)中,沒有什么比單元測試更重要了,甚至比交付成果的本身還要重要。單元測試是設(shè)計,是定義API的地方。測試覆蓋率不到100%,就是存在欠缺,100%覆蓋率是程序員的榮譽, 開發(fā)人員應該負責測試他們的產(chǎn)品。我們不再需要黑匣子測試流程,也不需要測試工程師。
我認為,這些態(tài)度充滿了狂熱主義。每個人都有盲點,總是會存在忽略編寫測試的案例與忽略編寫代碼的案例。
我喜歡編程,喜歡解決問題和開發(fā)功能,從小開始直到現(xiàn)在都是如此。

以前,我選擇服從那些流行的做法,但是現(xiàn)在不會了。我不會在開放式辦公室工作,不會持續(xù)一個星期聽所謂的專業(yè)術(shù)語,不會將各種新詞用來描述舊事物,不會結(jié)對編程,不會參加頻繁的會議,不會在意對團隊協(xié)作精神的要求,也不會嘲笑那些獨自工作的人。
我喜歡服務(wù)器端開發(fā),未來希望還可以做這方面的工作。同時,我正在轉(zhuǎn)向技術(shù)寫作,學習遠程工作所需的新技能。
我喜歡現(xiàn)在這種一點不瘋狂的環(huán)境。
原文地址:
https://hackernoon.com/what-happened-to-software-development-j92032w9
-End-
編程獅(W3Cschool)
學編程,從W3Cschool開始
微信掃描二維碼,關(guān)注公眾號
