宅神进化史(从图灵变辣鸡)——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)。Small——小而精,慢慢做的意思是缩小团队规模。整个团队的规模都要缩小,这样预算会变少,要完成的工作范围也会变小。技术栈需要简化、缩小,使用上千台电脑来为很多软件服务的的系统也需要将其使用的机器数量减半。
Smart——聪明的人知道怎样使用更少的电脑却能更好的完成工作。不要把所有的预算都用在通过网络做序列化以及去序列化的工作上。聪明的做法是通过更敏捷的实施和组织方式启动新项目,并在软件开发的各个环节提供更好的反馈。
Smoldering——慢慢做是一种没有明火、不用烟熏的烹饪方法,就像用烧烤的方法做牛排那样。我坚信,我们正处于软件开发革命一触即发的时刻,高能量的团队会从保守、浮夸的框架、以及挫伤士气的环境中脱离出来。我坚信,运维开发人员和毛头小子的时代很快就会结束,就算是为了业内拓荒者的出现,他们必须消失。那么问题只有一个,这样的时代是怎样的时代?
未来是光明的
未来从事软件开发行业的人会越来越少。我们将会看到小型的团队创造伟大的东西。未来是光明。会产生有前途的想法、项目、以及人。谢谢!