宅神進化史(從圖靈變辣雞)——Apache基金會副總裁的分享
本篇目錄
致 謝:
《宅神进化史-Evolution of Homo Nerdis》 是前Apache软件基金会副总裁Niclas Hedhman在2017中国开源年会上做的演讲。 易软天创的小伙伴参加了此次年会,听了这个演讲。在征得了Niclas Hedhman先生的同意后,将此演讲使用的PPT翻译成中文,分享给大家。再次向Niclas Hedhman先生表示感谢!
對Niclas先生所提到的“小而精”,我們是十分贊同的,這也在我們 禅道 、 蟬知 和然之等多个産品上得以体现。所以特将此文推荐给各位管理者和IT的朋友們。
PPT內容如下, 轉載請注明出處!
作者:Niclas Hedhman
翻譯:滕菲@易軟天創
軟件行業的危機
我喜歡用一些有爭議性的話題做爲我演講的標題,這次演講的標題也不例外。宅神進化史——從圖靈變辣雞(垃圾)。
有誰不知道艾倫·圖靈嗎?這是個反問句。誰不知道圖靈先生啊,但是你知道辣雞先生嗎?看看周圍,在座的大多數都是辣雞(垃圾)先生。
此次演讲是去年演讲的续篇,去年讲的是《房间里的大象》,讲的是程序员质量下降的问题。上次演讲,我讲了軟件行業的危機是什么,以及为什么有这些危机。这次我要讲讲,我们是怎么走到今天这一步的,我们要面对什么样的威胁,可能还会讲讲未來将会怎样。
退化
在《房間裏的大象》的演講中,我談到了軟件行業有非常多的程序員,而這些程序員都太愚蠢了。我認爲,這是因爲程序員在退化。我們現在所做的一切正導致了一個糟糕的未來,而這種情況很久之前就開始了。
這是怎麽回事呢?剛開始,有些人可以組建機器來做一些“思考”。他們可以通過一些電線來連接不同的配置,或者在打孔卡上輸入一些數值讓這些機器做數學運算。機器做得比人好多了,但當時要做到這些是很難的。
这确实很难,能做到这些的一类人是被称为Homo Nerdis Codetus的做编码的人。诸如艾伦·图灵,葛丽丝·霍普,艾兹格·迪科斯彻这些偶像级的人物,他们做到了这些不可能完成的事。
很快,人们就想,做到这些事应该还有更好的解决方法。由此产生了编程语言。早期产生了Algol,Cobol, Fortran以及Lisp 。然后又有了C语言, Pascal,Forth,,Simula,Prolog,以及许多现在已经不复存在的编程语言。
2、 宅神程序员(Homo Nerdis Programmeris )
隨著編程語言的出現,程序員(Programmer)可以通過使用看起來像是語言的文本來操作機器做事。這在當時是很難的。
但有些程序員注意到,他們要寫的很多東西會不斷地重現。他們就想,如果能將這些東西放到一個庫(Library)裏,需要用的時候就拿出來重複使用,這該多好。于是,他們把可能寫出的各種組合寫出來放到庫裏,供自己使用。
越來越多的庫被建造出來。程序員數目的增長也到達了爆發的階段。但是由于做事的方法變簡單了,所以人不用很聰明也可以做寫程序這件事。而正因爲寫程序這件事沒有用那些很聰明的人來做,那麽對他們而言,事情做起來還是很困難的。
那時需要大量的開發人員(Developer)。有了這些庫作爲基礎,開發人員創造出了新的、更複雜的軟件。由于庫與庫並不能兼容,開發人員要花很多時間使不同的庫進行協作、轉換庫的類型、替換掉糟糕的實施。這在當時來說是很難做的事。
有些開發人員就認識到,如果能創造一種機制來描述組件應該怎麽寫,那麽他們就可以把組件組合起來使用。于是,框架産生了。
隨著組件越來越多,使用組件來工作的效率也得到提高,工作也變得簡單了。然後,開發人員的數量也增長了,增長之快使開發這件事不需要很聰明的人來做。但是,事情還是很難做。
4、宅神开发人员(Homo Nerdis Scriptum Kidus )
框架和組件讓軟件業迅速膨脹起來,數不清功能相似的軟件以各種各樣的形式不斷湧現。這可不是什麽好事。一定還有更好的方法來做這事。如果可以不用寫系統、編譯器和架構就好了。因爲要做的這些,也很難啊。
也許可以用簡單的語言描述想要的東西,這種語言看起來更像英語。也許這和語言類型沒什麽關系。這樣的話,事情就會變得更簡單,做起來更快,不是嗎?至少剛開始這樣做的時候是這樣,工作做起來更快了。
开始做网页很简单,你做的第一个网页往往是在页面上显示个时间什么的。“哇哦,我也是个程序员了?”然后,这种能写script的毛头小子(Homo Nerdis Scriptum Kidus)的程序员数量迅速增长,突破天际。
這種工作真的不需要很聰明的人來做。好吧,也許還是需要聰明的人來做,因爲這事情還是很難做啊。
這些寫腳本的毛頭小子寫了很多只能在自己筆記本上運行的軟件,那麽怎樣才可以讓這些軟件真正的工作起來,服務更多的用戶,怎樣才能讓他們寫的軟件一周七天、每天24小時地爲用戶服務呢?這在當時是很難做到的啊。
于是有产生了一类人,就是运维开发人员(Homo Nerdis Devopolus)。这些运维开发人员(Devops)和自动化、容器一起孕育而生。这类人吸引了所有的注意力,他们通过快速改变生产系统拯救了走向失败的软件项目。解决生产系统中的缺陷,而不是在缺陷产生之前就消灭它,成为了一种工作方式。
越來越多的軟件進入了市場。安裝,配置,開始運行。運維開發人員認爲他們創造的這些軟件,在這兒用個腳本,那兒加個λ表達式(lambda表達式)就行。看,這就成了。
这能有多难呢?运维开发人员开始占领世界,其数量迅速增长,也占有越來越重要的位置,但不幸的是他们的聪明才智并没有产生这样迅速而重要的变化。我们使用微服务架构(microservices architecture)以及数以千计的小程序,但却不理解网络到底是如何工作的。所以猜猜这会怎么样?事情还是很难做啊。
事情很難做!
所以說到的這些退化的共有主題是什麽?是 事情很難做啊!!!無論如何改善,使事情變得如何簡單,事情還是不好做。這是爲什麽?
我們不喜歡事情變得難做。艾倫·圖靈,葛麗絲·霍普會認爲我們當今的技術很難嗎?我覺得不會。他們是那個時代最聰明的人。至于你我,可能比普通人聰明一點點,只是接受的教育和教養略有不同。
從公司角度考慮,他們會認爲人多力量大。我認爲這是違反生産力的,在《房間裏的大象》的演講理我也提到過。谷歌不需要兩萬工程師。銀行的IT部門也不需要一萬個員工。
程序員這一行的發展呈螺旋式下降已經有很長一段時間了。因爲一些事情做起來很難,我們就創造一些新的東西來解決這個問題,因此也降低了從事寫程序這件事的門檻,讓更多沒有那麽聰明的人也可以參與到這件事中來,而這又造成了更多的沒有那麽聰明的人覺得這件事情很難做。讓我們靜下來,好好思考一下這種情況的産生。
把事情簡單化,卻導致産生了更多愚蠢的解決方案。而我們居然對此毫無察覺。
證據
- 程序員人口爆炸
- 技術周期
- “老(有經驗的)”人更重要、寶貴
- 收入差距加大
- 缺少聰明的人 來領導革新工作
我有很多的證據來证明我的这个观点,但由于时间有限,这里不再多说。这些以足够说明,我们今天认为正常的事情,等我们回过头來看,会觉得那并不正常。
這場戰鬥注定要失敗了嗎?
那么在这场战役中我们注定要失败了吗?要不要打包走人,去开个餐馆得了?对于老的系统來说,不得不对其继续进行维护,是的,这种战斗是注定要输的。为这种系统工作的人,假装一切运转正常,而它却会消耗所有愿意在这种糟糕环境里工作的人。來自市场的压力最终会让他们清醒过來,而这种系统也会被从市场中排挤出去,就像当初马车被卡车代替一样。
当开始做一个新项目或一个新的産品的时候,我认为,我们还是需要
用聪明的人來做,这类人能使事情向正确的方向发展。一般的做事方法代价比较昂贵,也更加容易导致失败。我们需要的是事半功倍。把事情控制在小的范围内,由聪明的人來做,慢工出细活。
什麽意思?
到底什么是小而精,慢慢做呢?你一定是第一次听说这种说法(Small, Smart and Smoldering)。
Smart——聰明的人知道怎樣使用更少的電腦卻能更好的完成工作。不要把所有的預算都用在通過網絡做序列化以及去序列化的工作上。聰明的做法是通過更敏捷的實施和組織方式啓動新項目,並在軟件開發的各個環節提供更好的反饋。
Smoldering——慢慢做是一种没有明火、不用烟熏的烹饪方法,就像用烧烤的方法做牛排那样。我坚信,我们正处于软件开发革命一触即发的时刻,高能量的团队会从保守、浮夸的框架、以及挫伤士气的环境中脱离出來。我坚信,运维开发人员和毛头小子的时代很快就会结束,就算是为了业内拓荒者的出现,他们必须消失。那么问题只有一个,这样的时代是怎样的时代?
未來是光明的
未來从事软件开发行业的人会越來越少。我们将会看到小型的团队创造伟大的东西。未來是光明。会产生有前途的想法、项目、以及人。谢谢!

