前言
技術(shù)塑造了我們現(xiàn)在的生活弛饭,那么又是什么在塑造技術(shù)自身呢?很多人會(huì)聯(lián)想到程序員在其中起到的作用萍歉。但是侣颂,如果我們把人從技術(shù)的整體里分離出來,去探究技術(shù)內(nèi)生的秩序或規(guī)律枪孩,或許答案就不那么直觀了横蜒。而且從長遠(yuǎn)來看,這種方法比爭論是人主導(dǎo)技術(shù)還是技術(shù)主導(dǎo)人更能增強(qiáng)個(gè)體的主體意識(shí)销凑,因?yàn)榕懦齻€(gè)性的技術(shù)能幫我們避免陷入權(quán)威和神性的陷阱丛晌。
什么是技術(shù)
在談?wù)撌裁此茉炝思夹g(shù)之前,我們不得不回答一個(gè)前置問題:技術(shù)是什么斗幼?布蘭恩·阿瑟的《技術(shù)的本質(zhì)》中給出了一個(gè)我認(rèn)為比較合理的定義澎蛛。
- 技術(shù)都是由已有的系統(tǒng)組件組合而成的
- 技術(shù)的每個(gè)組件自身也是微縮的技術(shù)
- 所有的技術(shù)都會(huì)利用或開發(fā)某種效應(yīng)
第一點(diǎn),技術(shù)是由已有的系統(tǒng)組件組合而成的蜕窿,這話不難理解谋逻,我們做軟件項(xiàng)目也會(huì)引用很多外部組件呆馁。那么組件又是什么呢?所以他緊接著給出了第二點(diǎn)解釋毁兆,技術(shù)的每個(gè)組件自身也是微縮的技術(shù)浙滤。這才是該定義最有趣的地方——遞歸解釋。我們知道凡是遞歸總得有個(gè)出口气堕,所以他最后給出了第三點(diǎn)解釋纺腊,所有的技術(shù)都會(huì)利用或開發(fā)某種效應(yīng)。也就是說茎芭,每一個(gè)技術(shù)都能發(fā)揮某種功能揖膜。
聽完這番解釋,是否有一種不明覺厲梅桩,又有一種聽君一席話如聽一席話的感覺壹粟?是的話,咱也先別急著否定宿百〕孟桑看看下面的這張圖,它是著名的計(jì)算機(jī)科學(xué)的入門書《計(jì)算機(jī)程序的構(gòu)造和解釋》垦页,簡稱SICP幸撕,關(guān)于解釋器工作原理的圖示。解釋器就是利用 Eval 和 Apply 兩個(gè)函數(shù)相互遞歸解釋的外臂。在軟件的世界里坐儿,類似的例子還有很多。例如宋光,編譯器實(shí)現(xiàn)自舉——利用老的語言寫新的編譯器貌矿,再用新的編譯器編譯出新的語言。
如果從軟件的規(guī)模這個(gè)角度來考察這個(gè)定義罪佳,我們就會(huì)發(fā)現(xiàn)軟件可以無限龐大下去逛漫。基于這樣的假設(shè)赘艳,我們可以推論出軟件并不是一種物理現(xiàn)象酌毡。1972年,荷蘭計(jì)算機(jī)科學(xué)家迪杰斯特拉(Edsger W. Dijkstra)將軟件描述為“分層系統(tǒng)”蕾管,因?yàn)槲覀冃枰梅謱觼斫忉尯蛯?shí)現(xiàn)我們所構(gòu)造的現(xiàn)象枷踏,而不是經(jīng)由物理規(guī)律來考驗(yàn)這些現(xiàn)象。所以 SICP 一書中將軟件稱為“程序認(rèn)知論”(阿貝爾森和薩斯曼)就非常有道理了掰曾。
軟件工程師常常把分層系統(tǒng)看做是解決某些復(fù)雜軟件問題的良藥旭蠕,然而事實(shí)上,軟件其實(shí)就是分層系統(tǒng),基于 OSI(Open System Interconnection) 模型的技術(shù)棧就是一種典型的例子掏熬。在 OSI 出現(xiàn)之前佑稠,曾經(jīng)有項(xiàng)目嘗試適配各種主機(jī)以完成各種異構(gòu)網(wǎng)絡(luò)之間的聯(lián)通,但是均以失敗告終旗芬。而 OSI 引領(lǐng)的標(biāo)準(zhǔn)讓世界各地的工程師們協(xié)作起來逐步推進(jìn)了網(wǎng)絡(luò)技術(shù)棧的發(fā)展∩嘟海現(xiàn)如今,我們操作圖片時(shí)疮丛,已經(jīng)完全無法想象它和比特之間的關(guān)聯(lián)幔嫂,因?yàn)樗鼈円呀?jīng)相差得太遠(yuǎn)了。遠(yuǎn)到我們無需考慮有比特這么回事这刷,更不用說底層的半導(dǎo)體控制的電流開關(guān)。
技術(shù)革命結(jié)構(gòu)里的危機(jī)
1962年娩井,美國著名科學(xué)哲學(xué)家?guī)於髟凇犊茖W(xué)革命的結(jié)構(gòu)》提到是范式危機(jī)引發(fā)了科學(xué)革命暇屋,例如海森堡的測(cè)不準(zhǔn)原理對(duì)物理學(xué)的沖擊,在經(jīng)典物理學(xué)無法解釋微觀現(xiàn)象時(shí)科學(xué)革命發(fā)生了洞辣。我們承認(rèn)自工業(yè)革命以來咐刨,技術(shù)發(fā)生了巨大的變化。如果假定技術(shù)的發(fā)展也存在范式革命扬霜,那么其中的危機(jī)是什么呢定鸟?愛德華·阿什福德·李的《柏拉圖與技術(shù)呆子》一書給出了兩點(diǎn)總結(jié),他認(rèn)為軟件日益增加的復(fù)雜性和意想不到的功能是技術(shù)革命中的危險(xiǎn)和機(jī)遇著瓶。
復(fù)雜性體現(xiàn)在以前可以工作良好的工具和模型联予,在更復(fù)雜的情況下,不能很好地工作材原,甚至崩潰沸久。比如應(yīng)付幾十人并發(fā)的系統(tǒng)在面對(duì)上萬人的并發(fā)時(shí)很容易就崩潰了。另一個(gè)表現(xiàn)則是項(xiàng)目失敗的可能性增加了余蟹。比如卷胯,用瀑布過程開發(fā)大型系統(tǒng),這種管理復(fù)雜性的方式會(huì)導(dǎo)致在需求設(shè)計(jì)階段的異想天開威酒,更可能招致錯(cuò)誤和失敗窑睁。
至于意想不到的功能,就是想常人不敢想葵孤、做常人不敢做的事情担钮。2007年,蘋果公司推出的蘋果手機(jī)尤仍。它的創(chuàng)新性在于突破了手機(jī)是用來打電話的慣性思維裳朋,原來手機(jī)可以當(dāng)電腦使用,反而原來打電話的功能才是附加功能。事實(shí)上鲤嫡,蘋果手機(jī)最具革命性的一點(diǎn)是引入了應(yīng)用程序的開發(fā)平臺(tái)送挑,這就讓全球數(shù)百萬富有創(chuàng)造力的程序員能夠?yàn)樘O果手機(jī)開發(fā)各種應(yīng)用程序。程序員暖眼、蘋果公司的應(yīng)用商店和用戶就形成了良性的服務(wù)網(wǎng)絡(luò)惕耕,從此開啟了移動(dòng)互聯(lián)網(wǎng)的時(shí)代。與蘋果手機(jī)相近的創(chuàng)新就要數(shù)區(qū)塊鏈網(wǎng)絡(luò)了诫肠。它的意想不到之處在于貨幣居然可以由個(gè)人發(fā)行司澎。區(qū)塊鏈網(wǎng)絡(luò)自帶生態(tài)快速形成了以開發(fā)者、投資(ji)者和礦(Miner)工為一體的服務(wù)網(wǎng)絡(luò)栋豫。
技術(shù)危機(jī)的第一性原理思維
危機(jī)是技術(shù)革命結(jié)構(gòu)重要的組成部分挤安,但是如何清晰、準(zhǔn)確和精準(zhǔn)地界定危機(jī)依然是個(gè)麻煩的問題丧鸯。當(dāng)事物發(fā)展到復(fù)雜難懂的地步時(shí)蛤铜,我們應(yīng)當(dāng)回到最初的基本假設(shè)上重新思考,這個(gè)過程也被稱為第一性原理思維丛肢。在信息技術(shù)的歷史學(xué)脈絡(luò)中围肥,我們能迅速地把握到幾個(gè)關(guān)鍵的定律。
首先是摩爾定律蜂怎。1965年穆刻,八叛徒之一、英特爾的聯(lián)合創(chuàng)始人戈登杠步、摩爾做出一個(gè)著名的預(yù)測(cè)氢伟,集成電路中的元件的數(shù)量將在未來每18個(gè)月翻一番。這一定律就一直是半導(dǎo)體行業(yè)的指導(dǎo)原則幽歼,而且延續(xù)至今腐芍。不過,大家有沒有思考過一個(gè)問題试躏,那就是既然摩爾定律一直起作用猪勇,那么要么硬件逐漸便宜下去,我們?cè)趺催€沒有實(shí)現(xiàn)硬件自由呢颠蕴?
因此泣刹,我們不得不提到另一個(gè)安迪-比爾定律。這個(gè)定律的原話是安迪所給的犀被,比爾全都拿走椅您。其中的安迪就是今天全球最大的個(gè)人計(jì)算機(jī)零件和CPU制造商英特爾公司的創(chuàng)始人兼當(dāng)時(shí)的 CEO 安迪·格魯夫,而比爾就是比爾蓋茨寡键。這條定律的意思是微軟等軟件公司的新軟件總是比從前的軟件更加耗費(fèi)資源掀泳,以至于完全抵消了英特爾等硬件公司帶來的性能提升。我們的切身體驗(yàn)也是,你拿著老舊的手機(jī)去運(yùn)行現(xiàn)在的軟件會(huì)感覺慢得不要不要的员舵。
摩爾定律和安迪-比爾定律帶來的最直接影響就是在產(chǎn)業(yè)上規(guī)定了技術(shù)的發(fā)展會(huì)越來越復(fù)雜脑沿。
另一個(gè)比較關(guān)鍵的定律就是梅特卡爾定律。 1980年马僻,3com公司的聯(lián)合創(chuàng)始人羅伯特·梅特卡夫提出一個(gè)現(xiàn)在被稱為梅特卡夫的定律庄拇,該定律認(rèn)為,網(wǎng)絡(luò)的價(jià)值與網(wǎng)絡(luò)上兼容的通信設(shè)備的數(shù)量的平方成正比韭邓。如果單臺(tái)設(shè)備的價(jià)格為1塊錢措近,那么一個(gè)連接10臺(tái)設(shè)備的網(wǎng)絡(luò)的價(jià)值就是 100 塊,100臺(tái)就是1w塊女淑,以此類推瞭郑。
梅特卡爾定律在經(jīng)濟(jì)層面上肯定了網(wǎng)絡(luò)的規(guī)模效應(yīng),互聯(lián)網(wǎng)或區(qū)塊鏈行業(yè)都是這一定律的實(shí)踐者鸭你。
技術(shù)發(fā)展的 Z 字模型
如圖所示屈张。Z 字模型,其上層是技術(shù)革命的危與機(jī)苇本,下層是技術(shù)發(fā)展的基本定律袜茧,而中間這條線就是從基礎(chǔ)規(guī)律尋求技術(shù)革命的攀爬梯菜拓。如果把技術(shù)發(fā)展比作修仙小說瓣窄,底下三條定律就是筑基,上面那條線就是羽化成仙纳鼎,也就是凡人的終極目標(biāo)俺夕。
在 Z 字模型中,危機(jī)并不是一蹴而就的贱鄙,雖然三條基本定律告訴我們危機(jī)遲早會(huì)發(fā)生劝贸,但是依然需要做很多的工作,而這些工作都是由工程師完成的逗宁。
工程師們的日常工作到底是什么呢映九?我知道有人會(huì)說寫代碼,但更為清晰的描述是《技術(shù)的本質(zhì)》中的標(biāo)準(zhǔn)工程:
標(biāo)準(zhǔn)執(zhí)行一個(gè)新項(xiàng)目時(shí)瞎颗,在已知可接受的原則下聚集方法和設(shè)備的過程件甥,是對(duì)已有技術(shù)的新的計(jì)劃、試制和集成過程哼拔。
這個(gè)描述比較拗口引有,我實(shí)例化一下。以敏捷軟件工程為例倦逐,我們?cè)趫?zhí)行一個(gè)新項(xiàng)目時(shí)譬正,在時(shí)間、資源和成本的約束原則之下,通過 Discovery曾我、Inception 等方法快速識(shí)別問題并啟動(dòng)項(xiàng)目粉怕,購買云服務(wù)資源,整備環(huán)境您单,管理和配置持續(xù)集成服務(wù)器斋荞,使用 DDD 建模,TDD 持續(xù)交付可工作的軟件虐秦。整個(gè)過程中平酿,我們會(huì)評(píng)估和選擇滿足功能及跨功能需求依賴的技術(shù)組件,試驗(yàn)和探究新的技術(shù)組件悦陋,并且集成遺留的系統(tǒng)蜈彼、多個(gè)代碼分支、多套測(cè)試和發(fā)布環(huán)境俺驶。
根據(jù)康威定律幸逆,當(dāng)項(xiàng)目較大時(shí),標(biāo)準(zhǔn)工程就演變成了一種企業(yè)組織形式暮现,此時(shí)項(xiàng)目的成敗會(huì)更加依賴圍繞其周遭的利益關(guān)系網(wǎng):技術(shù)團(tuán)隊(duì)还绘、業(yè)務(wù)部門、財(cái)務(wù)預(yù)算栖袋、部門領(lǐng)導(dǎo)以及其他利益相關(guān)者拍顷。
總而言之,技術(shù)發(fā)展要求工程師處理的事務(wù)更加多元化塘幅,也更加復(fù)雜昔案。優(yōu)秀的工程師是什么樣的呢?這就不得不提《浪潮之巔》的作者吳軍劃分出的工程師的五個(gè)等級(jí)說电媳。
工程師的五個(gè)等級(jí)
吳軍借鑒了前蘇聯(lián)著名物理學(xué)家朗道提出來的朗道等級(jí)踏揣。朗道曾經(jīng)根據(jù)物理學(xué)家的貢獻(xiàn)把他們分成了五級(jí),每一級(jí)之間的貢獻(xiàn)相差一個(gè)數(shù)量級(jí)匾乓。對(duì)于工程師捞稿,也可以做同樣的劃分。
- 第五等工程師拼缝,能夠獨(dú)立設(shè)計(jì)和實(shí)現(xiàn)一項(xiàng)功能的人娱局。如果需要?jiǎng)e人告訴他怎么做,最多算是助理工程師或者技工珍促,不在工程師之列铃辖。
- 第四等工程師,需要產(chǎn)品頭腦猪叙,也就是說他們?cè)谧鲆患轮敖空叮浪龀鰜淼臇|西是否有用仁卷、易用,是否便于維護(hù)犬第,是否性能穩(wěn)定锦积,等等。除了要具備產(chǎn)品設(shè)計(jì)方面的基本知識(shí)歉嗓,還要具有一定的領(lǐng)導(dǎo)才能丰介,能在整個(gè)產(chǎn)品的生命周期從頭到尾講一個(gè)產(chǎn)品負(fù)責(zé)到底。
- 第三等工程師鉴分,可以做出行業(yè)里最好的產(chǎn)品哮幢。他們與第四等工程師有著質(zhì)的差別,這不僅反映在技術(shù)水平志珍、對(duì)市場的了解橙垢、對(duì)用戶心理的了解以及組織能力等諸多方面,而且也反映在悟性的差異上伦糯。
- 第二等工程師柜某,是那些可以給世界帶來驚喜的人。比如:第一臺(tái)實(shí)用化個(gè)人電腦的實(shí)現(xiàn)者沃茲尼亞克敛纲,他們和第三四五等工程師的差別在于其工作的原創(chuàng)性以及對(duì)世界的影響力喂击。不過,他們的工作不同于科學(xué)研究淤翔。
- 第一等工程師翰绊,是開創(chuàng)一個(gè)全新行業(yè)的人,歷史上有愛迪生办铡、特斯拉辞做、福特琳要,二戰(zhàn)后有保時(shí)捷(Ferdinand Porsche寡具,1875-1951)博士,本田宗一郎(1906-1991)和硅谷的諾伊斯等人稚补。這些工程師不僅在技術(shù)和產(chǎn)品等各個(gè)方向上與第二等的工程師有了質(zhì)的差別童叠,而且在經(jīng)驗(yàn)和管理上也是好手,他們通常是企業(yè)家课幕,并通過自己的產(chǎn)品改變了世界厦坛。
從這個(gè)等級(jí)階梯上,我們看得出來乍惊,成為拔尖的工程師有多難杜秸。每個(gè)等級(jí)的工程師之間的差距是數(shù)十倍的。好的企業(yè)想要獲得第二等甚至第一等的工程師润绎,就需要一個(gè)由工程師構(gòu)建的完整金字塔:要想出幾個(gè)第一等的工程師撬碟,就需要有足夠數(shù)量的第二等工程師诞挨,以此類推。
技術(shù)的助產(chǎn)婆
蘇格拉底曾經(jīng)說過“我是思想的助產(chǎn)婆”呢蛤,他說的是自己能夠通過蘇格拉底似的提問引發(fā)別人積極思考惶傻。那么,工程師們則可以理直氣壯地說“我們是技術(shù)的助產(chǎn)婆”其障,工程師必須學(xué)會(huì)迎接軟件復(fù)雜性的挑戰(zhàn)银室,堅(jiān)定地不放過任何細(xì)小的機(jī)遇蕩起的漣漪。在標(biāo)準(zhǔn)工程的日常工作中励翼,一腳把新生的技術(shù)踹出去蜈敢。
所以,自信點(diǎn)汽抚,我們工程師的使命無上光榮扶认。
于 2022-01-16