寫給程式設計師:我們這一代不是汽車工人

jobbole發表於2013-12-15

軟體開發圈是個奇怪的圈子。儘管有著低失業率、高薪水和美好前景,顯然一直處於危險和衰退之中,或者迫切需要警醒。有的開發者將最近軟體開發的興旺僅僅看做是未來衰退的前兆,並且開始寫宿命型小說來警示這個即將死去的圈子。

Greg Baugues之前寫過一篇文章《我們這一代的汽車工人》。他在文中比較了當今的軟體開發者和60年代底特律汽車工人。Baugues的認為取代底特律汽車工人的機器人將會同樣地取代軟體開發者。作為證據,他舉了一些例子:電子商務的Shopify,線上日誌的WordPress,還有信用卡整合的Stripe。儘管競爭越來越激烈,他說軟體開發教育的需求已經爆發,伴隨著像TreehouseHacker School這樣的公司提供低成本,高相關的課程,讓學生可以在大學四年裡用零碎的努力和代價為開發工作做準備:

不要感覺良好。不要被一種語言鎖住。不要過河拆橋。時常磨刀。學習軟技能。建立聽眾。存點錢。人際關係。閱讀。

幾乎在所有的觀點上,Baugues都沒有達到目的。首先,這裡組裝(無需技能的手工活)和軟體開發(需要技能的腦力活)有性質上的區別,讓前者自動化是不可避免的。自動化創造力比自動化組裝困難得多。而且底特律的汽車工人有工會,處於歷史上最好的時期:工業上的功能需求旺盛,並且那時候自動化成本太高。對軟體開發者兩者都不成立——他們拒絕工會化(為了避免把低端功能進行外包而受損),並且他們的功能不是輕易就能自動化的:它就是自動化本身。

集體的交涉和工會給了汽車工人一個舒適的中產階級的生活。但是最終利潤下降和開始受到全球競爭的衝擊。汽車變得更加安全,易於操作,更高效,更可靠,更大眾。汽車工人(還有他們的工會)也許料到了全球化,但是汽車工人發現自己在新的世界裡還在用老一套規矩。另一方面,軟體開發者從1980年代已經步入全球化,這也許從第一天起就開始了。他們很清楚他們的工作天然的全球化,他們沒有躲藏在認為自己是在一個有保護的有限的市場裡工作的幻想中。所以似乎Baugues的比較並不公正:不僅軟體開發和汽車製造有質的區別,而且工人缺乏工會代表權,儘管全球競爭激烈,他們還是沉浸在工會的汽車工水平的報酬中。

但是自動化呢?在輝煌的未來,我們都毫不費力地將API相互連線(顯然沒有報酬),這個怎麼樣?這裡,Baugues將最近的5年看做是未來50年的藍圖,大聲宣稱軟體開發自動化是既成事實。讓我們來看他給的例子。

WordPress,免費部落格平臺和開源部落格軟體,2007年中期騰飛,現在支援著(據有些統計)將近20%的網頁。Baugues說WordPress能在“15分鐘”裡完成過去要“兩個月”做的事,任何為自己或客戶建立過WordPress站點的人都很清楚WordPress常常是網站現實功能的最小外殼(授權,釋出,和標籤)。它把那些網站最開始要做的枯燥的苦活自動化,無關任何困難的邏輯(那個留給定製的外掛)。只發日誌是零成本的——只用看看Tumblr就知道了。WordPress的真正價值在於提供成熟的網站框架。有個聲稱說其競爭專案DrupalJoomla可以做得更加令人說服。

Stripe,一個出現在2010年的開發者友好的信用卡API,現在只是聲稱有少量知名度高的客戶。到今天為止,它只是一個在支付處理界那些老牌競爭對手中更便宜,更簡單的選擇。自動化哪去了?類似地,Shopify,成立於2006年,是一個方便的類WordPress的線上產品銷售平臺。它僅僅是把過去自動化了的——網頁模板,支付,多機託管拼湊到一起。Stripe和Shopify都不是未來軟體開發自動化的好例子。所以Baugues提到他們想要表明什麼還不清楚。這些產品是前一代的改良,更整合,更使用者友好,但是他們都沒有完全自動化(也不是最軟體即服務(SaaS)的產品),也沒有搶開發者的工作。

自動化引起的焦慮和存在的恐懼由來已久,往往誕生於對歷史的無知。在1960年代,倫敦絲綢紡織工積極抗議機器織布機——它可以大範圍地減少對他們勞務的需求——甚至於要通過法律禁止它。然而,在17世紀中期機器紡織機已經開始取代手工紡織。作為迴應,1675年八月,暴亂的紡織工人走上街頭,毀掉了大批他們能找到的紡織機。

17世紀末期,雨格諾派教徒(法國新教徒)移民進入到紡織工業進一步激起了倫敦紡織工的憤怒,導致他們恐嚇和排斥新來者。幾十年後,在1760年代晚期,斯皮塔佛德的騷亂由紡織工組織起來,目的是要保持他們在自動化工業和法國競爭面前獲得公平的報酬。騷亂者沒有能夠達成他們的目標,自動化步伐並未減弱。

19世紀早期,英國紡織工人組成的盧德派聯合來反抗自動化。他們損壞和破壞機械並威脅要採取進一步的暴力。終止於1813年的審判,後來停止抗議了。從那以後,思想家諸如馬克思,海德格爾,米爾達爾,芒福德,埃呂爾就批判過技術和自動化,然而世界依舊不停地自動化,帶來了增長,穩定和安全還有快速增長的人口。這不是說自動化天生就是好或者良性,而是說它的效應儘管長遠來看具有毀滅性,總體來說還是正面多餘負面。更有意思的是自動化尚未帶來工作簡單,工時短的理想世界,如果有帶來什麼,那就是自動化給工人更大的壓力,讓他們比任何時候都努力工作。

因為Baugues提到了SaaS和網際網路產品,那麼只有談談網際網路對軟體開發的影響才算公平。網際網路產業並沒有蠶食自己,而是在不斷提高門檻。十年前,“網頁開發”意味著懂HTML的應用知識,一點點CSS、Perl和PHP。五年前,它意味著精通HTML和CSS,一些JavaScript,還有PHP、Ruby、Java或者ASP中任何一門。今天,它意味著HTML和CSS的完全分離(讓設計師去考慮那些),精通PHP、JavaScript、Python、Ruby或者Java中的至少兩門,還需要熟悉Git、包管理和持續整合這類東西。Web開發者比以前任何時候都做得多,而且還得不斷地用業內最新的改進和變化去在高可靠性系統的約束和需求之間尋求平衡。他們線下的同行不需要太多重複自我發明。如果說有的話,就是過去十年已經看到了網頁開發裡最具重複性元件的自動化(就像汽車工人的工作)。現在還有程式設計師會重頭開始寫一個線上商店或者部落格嗎?毫無疑問,現在我們有更多有趣的問題需要解決。

Baugues提到的程式設計學校和學院也忽略了這點。1990年代後期我們已經這樣把它作為一個產業來發展了。電腦科學大量提高招生名額,這個專業的畢業生享受了數年的高薪。然後市場崩潰,電腦科學招生下降,失業率暴漲,工資也回到他們的正常範圍。那種在電腦科學專業的短期投入值嗎?畢業生髮現他們畢業即失業。更重要的是他們後來有沒有繼續做開發或者是換成別的行業,把程式設計忘得一乾二淨?類似地,如果軟體開發的市場明天崩潰,有十年開發經驗的開發者轉投別的行業不會發生。而是會有來自“駭客學校”新生產出來的畢業生,他們只參加了3個月的課程學習如何製作Python應用,他們會跑得最快。他們的知識基礎薄弱——他們不但缺少每個開發者都要經過數年才獲取到的關鍵的經驗知識體系,而且還缺少網頁開發學校或者部落格上學不到的電腦科學理論知識。如果比賽是通過程式設計教學機構,那今天的軟體開發者沒有什麼可擔心的。這是一個沒有入門門檻的領域,新一代不成熟的開發者不但不是威脅,而且是一個巨大的機會。

自動化不會對軟體產業構成威脅。對於每個封裝某個業務處理的API,還需要寫一個應用程式,適當的時候還需要有支援的API。對於每個履行某種功能的庫和app,還要有新用法。對於每個需要被自動化的處理系統,還有一個開發者工作等著。今天存在的數量龐大的軟體應該給悲觀者一個暫停的機會 —— 也許有一個嶄新的軟體開發產業正在將舊的產業淘汰,這個產業不會關注諸如支付處理或部落格這種乏味的問題,而是旨在用過去二十年中來之不易的成果來解決困難度以指數級增長的問題。

軟體開發是為數不多的能夠持續提煉自身的產業之一。不像製衣或醫療或汽車業,軟體是難以捉摸且無形。軟體開發者是問題的解決人,他們常用某種很抽象方式解決問題。它讓一類特別樂觀的人去想那種人才的自動化,並且讓一類特別悲觀的人去認為它永遠這樣。(It takes a special sort of optimism to consider that kind of talent automatable, and a special sort of pessimism to think it will ever be so.)

相關文章