(接上)
欢迎阅读《未来这五年,软件工程师如何安身立命? (上)》

从事开发工作的人的职业生命能否保持5年

伊藤:能发挥自己实力和能力的工程师是怎样一类人呢?

Matz:是勾勒出自己想呈献给社会的软件或系统的雏形,并付诸努力将其创造出来的人。这与是Web职位还是SI职位无关,与偏用户还是偏商务无关。

enter image description here
松本先生认为不恰当的分工合作机制将软件开发业引入“暗淡的未来”。

伊藤:是指的从设计到实现都精通的工程师吗?

Matz:是的。说起来,工程师不能只懂设计。我一直认为,要从事软件开发,脱离写代码是无法生存的。人生在世,不脚踏实地可是不行的(笑)。

只从事设计而不从事软件开发,这样的分工真是毫无意义。虽然如此,但日本SI行业仍然能存活下来,这是因为它们的利润很高。

即使设计人员设计出了莫名其妙的规格图,即使编程人员糊弄了事,开发出性能较差的的软件,还是会有一些用户在抱怨的同时还继续使用那些软件。由于利润较大,一些瑕疵被掩盖了。

但是,刚刚也提到过,随着开发速度的增快,利润的空间会越来越小。再按照以前的老方法来做,已经无法再掩盖瑕疵。

我的切身体会是如果再按照此前的方式做下去,再过5年,普通的软件开发者们可能将不再有立身之地。

甚至可以说,从编码人员到程序设计师再到高级工程师的这一绿色晋升体系将有可能崩塌。在这一形势下,每个人都应该思考自己的立身之计。

打个比方,摆满了玲琅满目的DVD音像制品的租赁店刚刚兴起,家用录像系统已经撤架了,如此这般,变化来得迅猛又突然。

能掌控自己人生的人和无法掌控自己人生的人的区别

伊藤:对于那些不想被卷入“暗淡的未来”的工程师,您有哪些建议要送给他们,希望他们采取哪些行动呢?

Matz:应该还是要创造出新东西吧。除此之外,没有更好的脱颖而出的方法。

接下来要说的一些东西前景并没有那么暗淡,即使现有系统逐渐被Web所替代,利用现有技术来提供服务的工作也不会消亡。我认为今后要靠这些生存的工程师们不在少数。

尽管如此,就将来的风险总量来言,发明新的语言,掌握新的开发方法,能创造出新东西的人,应该能活得更舒服些。

伊藤:您说的新东西,具体是指?

Matz:有三层意思。

首先,能为客户提供新的服务。提供新的商业模式上,或者尽管提供的是相似的服务,但能提供更好的用户体验,这也是一种创新。

enter image description here
作为创新的一部分,今年春天,松本先生的公司在github上发布了面向组装系统的便捷型Ruby的mruby。

第二点是提供新的技术。开发出比现有的Web应用框架性能更好的产品,开发出此前无法开发的应用,这一点是能做到的。我一直在从事的就是这方面的工作。

或者,还有一条路,那就是发明新的算法。

这三种选择的难度不同,但是,无论如何,应该创造出此前没有过的东西这一点是相通的,能持续进行这类挑战的人,才称得上应时而动的优秀软件开发工程师。

不按照这三条路去做的那些工程师们往往随波逐流,今天学习一下最近流行的语言,明天尝试一下使用这个框架开发等,毫无主见。

作为工程师的基本功,追寻流行的、学习现有的也很重要,但将这些作为目标的话,往往无法很好的掌控自己的人生。我认为选择“追寻流行的”、“学习现有的”和“各种技术杂糅”以外的道路的工程师们,更能获得幸福的人生。

enter image description here

对我来说,软件开发就是对不合理的反击

伊藤:不好意思,下个问题可能有点尖锐,一般来讲,与其自己创造不如追寻流行,这样赚钱更快。为什么您还是坚持创造新的东西呢?

Matz:嗯,为什么呢……我一般会回答“那是因为编写新的程序、运行新的程序带给我极大的快乐”。其实,是因为我不喜欢不合理的东西。

别人的想法和价值观与我不同,对于他们开发的软件,我也常常产生“为什么是这种构造呢”、“用起来不太方便呀”这样的疑问。

伊藤:虽说是这样,但是所有的产品都多少会带有制造者的个人偏好的。

enter image description here
松本先生坦诚自己“讨厌不合理”,正是这一点,催生出了ruby语言,并为广大程序设计者所喜爱。

Matz:正如您所说,其实我没有说将个人偏好带入产品不好,只是非常讨厌对别人的偏好指手画脚。不喜欢的话,你可以自己动手,自己优化嘛。这正是软件工程师立身之本,是开源得以持续下来的最重要的理由。

开源社区中,所有的源代码都是公开的。因此很容易就能了解代码的结构。只要自己有对其进行优化的想法,就能够去实现。

社会上的那些不合理就无可奈何了(笑),至少在软件开发方面,我们自己可以改良。如果是自己开发的东西,也应该随着时代的变化随时调整。

Ruby的开发也是一样,我原本就喜欢语言,但更重要的是我不想别人来改良它,只想生活在能由自己掌控的世界,减少别人对开发者的哪怕是一丁点儿的指责,所以至今仍然在继续优化它。

软件开发,是仅凭一己之力便可改变社会的罕有职业

enter image description here
松本先生正在介绍软件开发的乐趣。他身着的POLO衫上印有“Ruby City MATSUE”项目字样。

Matz:从性格上来讲,我原本就非常适合软件开发业,只有软件开发业才容忍我这样的随意任性的人,我这样说是不是有点太自我感觉良好了(笑)?

但是,说实话,软件开发是仅凭一己之力便可改变社会的少数职业之一。我想只要从事过这一幸福满满的职业,便不想放弃了。

伊藤:很多人喜欢用“应该怎么怎么样”来预测软件的未来,而松本先生您一直是坚持用“幸福与否”这样的价值判断来描述。

Matz:是呀,谁都无法对别人的人生承担责任。比如即使遇到“Matz明明说这样可以,我试了下却不行”这样的抱怨,我仍然是无法承担责任的。所以自己的生存方式只能自己决定。

但是,诸如“今后的发展前景也许是这样的”之类的话我也能说。但这只代表个人观点。

对于我今天所讲的话也是一样,如果有软件工程师认为“我不同意松本先生的看法”,那他只要按照自己认为的正确道路前进就好了。

在探索未来时,最重要的是认识到“人是不变的”这一事实

伊藤:在读《代码的未来》时,让我印象非常深刻的是,您详细整理归纳了各语言的产生以及趋势变化。只是,IT领域正不断发生变化,这使得过去的成功法则几乎在今天无法通用。如果多核技术和云计算的发展也是其即将发生深刻性变化的征兆的话,您为什么还要调查过去的变化趋势,归纳到本书里呢?

enter image description here
松本先生认为科技发展趋势如同钟摆。

Matz:这也是见仁见智的事情,每个人的思考方式不一样。我认为IT业的技术发展趋势正如钟摆的摆动。

在新的开发语言与方式、架构不断涌现的形势下,软件开发的相关技术正在展开一场拉锯战,在寻求平衡中不断发展。

因此,“以前的最佳平衡”如何变为“现在的最佳平衡”?只要思考一下钟摆的周期以及过去的技术是在哪种平衡状态下诞生的,就能大致推测出“未来的最佳平衡”了。

以“分布与集合”为例,过去只有一台大型中央通用机,为了提升处理能力,而开发了用户服务器系统。而现在又再次出现了向“云”这一巨型计算机靠拢的趋势。

只学习过去的某一点是没有意义的,如果你了解了某一技术的兴废是由于哪种平衡达成的结果,在你预测未来时,这将是很好的参考。而且,向过去学习时,最重要的是认识到“人是不变的”这一事实。

人类的能力也是一种用于衡量技术变化钟摆的参数。而人的能力是有限的,在许多方面都受到了制约。因此,各种语言的开发者如果能了解过去人们是如何看待人类能力的极限的,就能以此为契机对技术进行改善与提高。

本书中对Dart和Go等新语言也有涉及,作为Ruby的开发者,我感到以一个语言开发者的身份来探寻语言开发者的心理非常有趣,而且对人类的理解也加深了。

伊藤:我原本想问为什么温故知新对于创造新事物那么重要,现在明白了,即反观人类的能力,或者说从过去的案例中探寻开发者的心理的能力是最重要的。

Matz:刚开始我就说过了,计算机并没有像人们普遍认为的那样变化那么大。

50年前开发的程序设计语言至今仍然在使用,Ruby诞生也有20年了,但最近大家又对它展开了新的讨论。这些都证明变化没有人们想象的那样大。

如此说来,以前只注重新颖不注重其他的案例也非常多。与随波逐流的软件开发者相比,那些能掌握趋势变化的原理、原则的软件开发者生命力更长久。

想成长为生命力长久的软件开发者们,可得多读一读《代码的未来》啊(笑)!

伊藤:感谢您今天接受我们访谈。

采访•文章•摄影:伊藤健吾(编辑部)

出处:《engineer type 对松本行弘的访谈