“Python太慢了、Golang糟透了\:那些关于软件工程的”宗教“辩论 “利益相关” 炒作与营销 好坏之分 偏爱虚荣性的指标

日期:2019-08-13 20:42:38 来源:互联网 编辑 : 小TT 阅读人数:844

“Python的速度不行。”“都9102年了,还有人不用Java虚拟机(Scala、Clojure)构建Web App吗?”“Mong是最好的数据库;SQL很差劲,SQL数据库扩展性不行。任何现代工程

“Python太慢了、Golang糟透了:那些关于软件工程的”宗教“辩论 “利益相关” 炒作与营销 好坏之分 偏爱虚荣性的指标 如何进行更好的工程辩论 Q言Q语时刻(图1)

“Python的速度不行。”

“都9102年了,还有人不用Java虚拟机(Scala、Clojure)构建Web App吗?”

“Mong是最好的数据库;SQL很差劲,SQL数据库扩展性不行。任何现代工程师都必须熟悉Mongo。”

“Golang糟透了(因为没有泛型)谁用谁。”

在我刚刚成为软件工程师那会,最令我震惊的就是,同行们居然用“战争”这样的字眼来形容工程层面的争议。有这么严重吗?干嘛那么大火气?带着好奇心,我希望弄清为什么工程技术辩论会成为“战争”而不像经验主义或者科学方法层面的其它问题那样可以安静平和地进行讨论。在亲身参与一些讨论之后,结果更是让我万分不解。

我发现,虽然也用到了不少术语,但多数工程辩论只是情绪性的或者简单化的产物,与工程效益几乎没有关系。通过研究这类辩论,我总结出以下几项要点,希望帮助大家在未来的对话以及交互当中提高效率。

我的观点包括:有效识别出可能降低工程辩论质量的因素(例如讨论者与议题存在利益相关、使用炒作/营销内容作为工程论据、过多纠结于好或坏的争论,以及使用大量缺乏实际意义的虚荣性指标等)

评估自己,特别是对所选工具的偏好。

评估用于制定工程决策的内容与人员,并思考其中可能存在的潜在问题。

通过讨论权衡并强调一切可能降低辩论质量的因素,鼓励经过深思熟虑的软件辩论。

下面,让我们首先看看可能降低软件工程辩论质量的因素。

“Python太慢了、Golang糟透了:那些关于软件工程的”宗教“辩论 “利益相关” 炒作与营销 好坏之分 偏爱虚荣性的指标 如何进行更好的工程辩论 Q言Q语时刻(图2)

“利益相关”

“利益相关”有时候相关的并不只是工作内容或者收入前景。一类常见的例子是,我们不想花时间学习新东西,或者说只希望学自己想学的东西,这对团队来说当然是个负面因素。很多人可能在与熟悉技术的团队合作时,仍然强烈主张自己所熟知的工具,因为这对自己来讲更容易。或者,大家可能在考虑自己的职业前景,因此着力倡导一种能够帮助自己的技术,即使这可能与团队的利益相悖。这些技术选择可能广泛存在于我们的日常当中,其显然只会增加复杂性,而不会带来多大好处。

“Python太慢了、Golang糟透了:那些关于软件工程的”宗教“辩论 “利益相关” 炒作与营销 好坏之分 偏爱虚荣性的指标 如何进行更好的工程辩论 Q言Q语时刻(图3)

炒作与营销

炒作与营销内容对于那些“利益相关”者来说可算是极为强大的盟友,甚至可以说二者是互相成就了对方。新的操作、社交网络、开源前端框架或者语言需要吸引用户及人员,才能变得更具竞争力与价值。而其支持者也会努力进一步扩大用户/贡献者的规模,从而让自己的意义得到体现。在这样的思路之下,网络效应开始变得至关重要,并有可能引发与实际工程情况毫无关系的激烈争论。

这一点在工程层面显得尤为突出,因为工程讨论应当以专业知识为先决条件—即只允许具有基本理解的人参与讨论(没有真正理解,但却自信能够发表意见的作法其实相当危险)如果“利益相关”一方达到较高的占平,那么正确一方的工程师们恐怕也别无选择,只能跑去学习前者“强烈推荐”的技术方案。

此外,极端的陈述与流行语更受媒体的青睐,也更能吸引支持者。但在进行辩论时,这种细微的差别几乎没有任何价值。我们并不是要彻底否定项目宣传,但开源项目或语言天然倾向于让贡献者反对其他开源项目,并为其描绘一幅光明的前景。这些企业/开源项目的内容营销(包括会谈、博文、媒体报道以及由利益相关者主理的大学课程)都将悄悄潜入工程辩论,并直接冲击冷静工程师们提出的全面且准确的观点。

“Python太慢了、Golang糟透了:那些关于软件工程的”宗教“辩论 “利益相关” 炒作与营销 好坏之分 偏爱虚荣性的指标 如何进行更好的工程辩论 Q言Q语时刻(图4)

好坏之分

当团队在技术方案选择当中受到炒作观点的引导时,这种“好坏之分”的思维可能会带来大麻烦。例如,最近围绕微服务的热情(其在一定程度上重新定义了以往的使用实践)促使不少人重构自己的代码库。但即使是在初创企业当中,单体式架构仍然拥有着巨大的生产效益。在这样的背景下,一部分团队在起步阶段就专注于微服务,而忽略了产品/市场适应性,并最终导致工程安排成为容器化炒作浪潮下的牺牲品。

这里我单纯讨论好与坏的问题,但类似的过度简化倾向还有其它表现形式,例如旧与新之类,大家可以自行脑补。

偏爱虚荣性的指标

更进一步来讲,我们的辩论也可以专注于技术优化,而不考虑其它权衡性因素—即确保最佳决策能够实现全局最大收益,而非技术最大收益。举例来说,企业/项目对于编程语言的选择不应仅基于技术细节(性能、可扩展性、内存占用等等)还应考虑到库生态、可招聘人员规模、团队现有技能储备、未来前景以及维护等众多其它权衡因素。很明显,目前大部分关于“正确语言”的争论只集中在技术层面。在设计自己的或者工具时,许多工程师都非常了解全局与本地优化问题,但在考虑其它问题时,却往往忽略了这一点。事实上,这些问题都会受到全局最大收益的影响。

“Python太慢了、Golang糟透了:那些关于软件工程的”宗教“辩论 “利益相关” 炒作与营销 好坏之分 偏爱虚荣性的指标 如何进行更好的工程辩论 Q言Q语时刻(图5)

如何进行更好的工程辩论

工程辩论非常重要。在初创企业当中,糟糕或者情绪化的技术辩论可能导致团队的实际目标愈发模糊,让人们无法弄清自己到底想打造怎样的成果。而在任何公司之内,这样的状况都可能令本有机会成功的项目陷入失败。

1.自我评估

第一步是进行自我评估。我们之所以经常与其他人就工具的好坏进行辩论,很大程度上在于我们自己预设了偏好。真正有价值的作法,在于思考哪些框架、库或者语言有可能在你这里引发争吵性辩论,并反思如果再过几年,其中还有多少仍然受欢迎甚至能否继续存在。对于初级工程师来讲,回顾过去三、五年来的技术新闻网站头版,大家会发现很多此类辩论根本毫无意义。支持和倡导自己喜爱的工具可以理解,但我们也得真的花点时间了解另一方正如经典的辩论格言:让对手的论点变得更好」。因此,不妨反思我们喜爱的工具在哪些用例中并非理想选择,同时结合对方提出的创新思路或见解。

另外,在宣扬自己的技术偏好时一定深思熟虑;因为你需要深入了解的不仅仅是自己的用例,还包括辩论对象的实际用例(这一原则不仅适用于辩论,也适用于你撰写的博文与评论内容)另外,无论你是占据主动还是受到挑衅,都一定要保持谨慎的心态,千万不要驳斥那些令人信服的论据。我们知道自己知道什么,但更重要的是,我们得知道自己不知道什么。

“Python太慢了、Golang糟透了:那些关于软件工程的”宗教“辩论 “利益相关” 炒作与营销 好坏之分 偏爱虚荣性的指标 如何进行更好的工程辩论 Q言Q语时刻(图6)

2. 评估外部信息

你还需要评估用于决策的工程内容。千万不要使用营销素材组织工程决策。想象一下,如果使用这些煽动性的信息,我们能够轻松让一大群初级工程师相信那些根本站不住脚的结论—这看似让我们在讨论中胜出,实际上对后续工作绝不是好事。请记住,最理想的内容宣传应当模糊作者的潜在意图。

在学习与个人成长方面,请支持那些愿意表达明确价值取向的团队,同时注意排除为了营销目的而创建的内容。如果你决定利用媒体素材作出关于工程技术的决策,那么必须确保自己能够处理好炒作以及好/坏二分观点之间的平衡。在利用某一社区中的素材(例如开源软件讨论)解决其它问题(例如起始工程决策)时,你可能需要有针对性地做出内容调整。

“Python太慢了、Golang糟透了:那些关于软件工程的”宗教“辩论 “利益相关” 炒作与营销 好坏之分 偏爱虚荣性的指标 如何进行更好的工程辩论 Q言Q语时刻(图7)

3. 鼓励全面的软件辩论

再来聊点宏观的:我们需要有能力确定哪些情况适合使用工程术语辩论,而哪些情况与团队的权衡考量无关。相信大家都面对过不少艰难的工程技术决策,其中的差别你一定能够体会得到。

Q言Q语时刻

议题背景,InfoQ此前发布了一篇《五种注定将要走向衰败的编程语言》的文章,里面提到了Ruby、Haskell、Objective-C、R语言、Perl等五种语言。你认为在国内,哪种眼下比较流行、名气比较大的语言会渐渐在工程应用方面趋向衰败?理由是?欢迎把你的观点写在评论区,我们来一次跟“战争”无关的技术辩论。

本文相关词条概念解析:

辩论

辩论,词语,是指把对人进行考查后所作的鉴定加以认真分析。彼此用一定理由来说明自己对事物或问题的见解,揭露对方的矛盾,以便取得最后的认识或共同的意见。常见形式为辩论赛。出自:《汉书•严助传》:“上令助等与大臣辩论,中外相应以义理之文,大臣数诎。”宋叶适《建康府教授惠君墓志铭》:“君夙悟幼成,与兄国子博士迪励志读书,至‘所过者化,所存者神,上下与天地同流’,辩论往往终夕不就睡。”明孔贞运《明兵部尚书节寰袁公墓志铭》:“时建言诸臣摈斥殆尽,无敢救者。公(袁可立)独抗疏辩论:‘谏臣必非济私市恩,沽名卖直,若因其言过激槩弃不用,臣恐謇谔之士退而缄口持禄,将顺固宠之人进。’”

网友评论

oPoQoRo
oPoQoRo
C、python、软件工程、面向对象以及软件工程有哪些入门书籍值得推荐?
2019-08-23 09:15 90
piziniu020
piziniu020
电气工程与软件工程如何选择?
2019-08-19 18:57 529
民法206
民法206
话说回来,就业的时候呢,这个专业刚刚开始的岗位都挺辛苦的,很难享受安逸
2019-08-23 10:39 880
︶铅笔画不
︶铅笔画不
比工作的稳定程度,电气工程好
2019-08-15 14:31 841
mr风典范er
mr风典范er
再来看看大学学电气的难度
2019-08-23 15:50 527
山雨欲來風
山雨欲來風
比就业后的工作环境,软件工程好
2019-08-16 15:03 678
doctorsir
doctorsir
软件工程学编程,就业安心做个码农,凭本事吃饭不发愁
2019-08-15 15:30 750
小huang迷
小huang迷
Python可以选择《Python语言程序设计基础》嵩天版
2019-08-19 02:31 336

相关阅读

友情链接: 网站地图

为全球用户24小时提供全面及时的中文资讯

声明:本站不提供任何视听上传、存储服务,所有内容均来自正规视频站点所提供的公开引用资源,如有侵权信息请联系我们删除

COPYRIGHT © 2007-2018