论哈斯克尔的市场营销

2020-05-31 01:11:34

在过去的一年里,哈斯克尔语言和相关技术已经发展成为我们迄今看到的最成熟的生态系统,各种领域的创新层出不穷。例如,编辑器工具正在达到我们多年前梦寐以求的成熟程度。与此同时,关于哈斯克尔生态系统的经济学和导致其潜在停滞的混杂因素也有相当多的讨论。例如,最近有关于“Simple Haskell”的讨论,将其作为一套最佳实践来刺激更多成功的行业项目。

在这一点上,哈斯克尔生态系统处于边缘:它很容易分崩离析,留下先进生态系统的残余物,没有从业人员来维护这些有点腐烂的部分。或者,它可以蓬勃发展,发展成为一种广泛使用的、不断研究的技术,在每一位加入的新一代程序员中不断更新和重塑自己。我自己可能不会参与到足够长的时间去看看会发生什么,但我有强烈的倾向看到后一条道路上会发生什么。

然而,一个奇特的事实仍然是,除非哈斯克尔看到更多的工业用途,否则永远不会有任何重大的进展。很多人都写过关于原因的根本原因分析,但大多数都是以工程为中心的关于语言扩展和高级类型系统的技术细节的争论。虽然技术上的缺陷有一定的道理,但我认为这些与工业成功并没有任何有意义的联系。

对于工程师来说,严峻的经济现实是,技术卓越是压倒性的无关紧要的,而我们职业的历史上充斥着证明这一点的案例。例如,JavaScript作为一种语言,之所以在很大程度上占据了浏览器生态系统的主导地位,是因为Netscape的营销部门决定采取一种聪明的营销策略,绕过Sun Microsystems,通过劫持现有的Java名称来给他们自己的新语言威望。这些营销技巧和定位很可能是接触到大量技术受众的最有成效的途径。

几年前,一位朋友送给我一本很棒的书,书名叫“基督是广告人”,作者是罗伯特·普里蒂金(ISBN:9780965906906)。这本书对广告世界进行了现实的政治描述,是一本有趣的读物,从一位20世纪80年代的广告高管的角度出发,他提供了消费者广告和说服背后的内幕观点,以及目标锁定的心理学。这本书的论点是,诚实广告和欺骗性营销之间的二分法是一种错觉。相反,世界被分成两个轴线上的四个象限的人。第一个轴心是那些有足够信息做出决定的人,而不是那些太无知而不能做出决定的人。第二个轴心是那些希望做出决定的人,而不是那些已经做出决定的人。

已经做出决定并在经济上投资于该决定的人很少改变他们对任何事情的想法;这在软件等高投资的“购买”中很容易体现出来。不知情和没有做出决定的人要么随机选择,要么需要更多的信息。然而,向这一群体传达正确的信息是很耗时的,所以对于营销人员来说,这实际上并不能为他们的时间提供良好的投资回报。因此,唯一真正值得做广告的群体是那些消息灵通,能够做出决定,但还没有下定决心的人。通过炒作和诡计,营销者应该特别针对这一群体,同时强调关于他们产品的四个因素:

如果你看一下关于编程语言的比较讨论,你会意识到通常很少涉及批判性思维。大学根本不给学生提供进行工具比较讨论的认知框架。因此,我们不再谈论语义、工程质量和实现,而是从社会因素和情感(即它是否“感觉可读”、“感觉可用”、“感觉快速”)的角度来讨论我们的工具。

回到市场营销,我们不得不问问自己,在更大的编程世界里,Haskell到底是如何看待的?haskell.org官方网站附带了这样的口号:

不幸的是,这个口号在上面的矩阵中并不是最优的,因为它针对的是那些已经了解情况并已经做出决定的人。它不会让人难忘,不包括该工具的主要优点,也不会以任何方式区分语言。这不是很好的营销。

在官方网站之外,有一种说法压倒一切:Haskell提供“正确性”,用Haskell编写的代码比用其他语言编写的代码更正确。事实上,如果这个观点没有完全违背软件在过去15年中的发展方向,那么它本身通常会是一个有意义的简明的价值陈述。

对于许多Haskeller来说,这将是一颗难以下咽的苦果,但在极少数领域之外,软件正确性无关紧要。价值数亿美元的软件交易是基于很少甚至没有代码完成的,即使它们是失败的,也会被当作成功出售。大约66%的企业软件项目失败或大大超出预算1。劳动力成本的增加意味着唯一压倒性重要的事情是上市时间。换句话说,管理软件项目不再是关于正确性或工程:它是关于运行不良资产的风险投资组合。确实,如果您在管理软件项目,工具的选择确实很重要,但是与以下更简单的降低风险的方法相比,这个选择就相形见绌了:

能够重新启动项目与不同的假设和团队,如果它都出了问题。

以上因素压倒性地主导了软件项目的决策,这些因素反馈到工具的选择中。如果人才库缺乏流动性或地理位置受限,那是行不通的。如果没有大型企业供应商来签署支持合同,那么这是不可能的。如果没有一方可以起诉,作为失败的保险,那么这是不可能的。对于没有大公司支持的小型有机生态系统来说,这些都是生死存亡的问题。

底线是,与使用更正确的工具和工程实践相比,使用非技术方法来对冲软件风险要容易得多,也更经济。此外,如果在足够长的一段时间内投入足够多的精力来编写Java,那么它将产生一个结果,或者使用一组相当可预测的现金流失败,这本身就是一个很低的可量化风险,企业很容易进行计划。因此,公司软件的经济学和完全接受新泰勒主义的管理文化与哈斯克尔的说法相矛盾,哈斯克尔认为通过卓越的工程来实现正确是最重要的目标。

“简单的哈斯克尔”原则为哈斯克尔的工业停滞提供了新的视角,禁止对阻碍该语言被广泛采用的技术问题进行各种修复。虽然我读了这些论点,其中有一些真正深思熟虑的批评,但我不禁觉得有点倒退。我看到的是工程师为其他工程师撰写的关于问题的宣言,他们假设改变工程实践会以某种方式改变最初导致这些问题的情况。改变我们的工程实践并不能拯救我们。

根本的问题是:在2020-2030年的时代,社区将如何呈现这种语言,使其具有任何产业相关性?下一代工程师将如何塑造哈斯克尔的叙述,使我们不必限制自己使用这些我们拥有的先进工具?我们确实有一个先进的编译器,我们有工具来构建正确的软件,但这些都不足以促进采用。我们还需要一些同样聪明的营销,而不仅仅是“正确”。

在普里蒂金的书中,有一句广告语最适合哈斯克尔:

这句话本质上是欺骗性的,但却暗示了更深层次的真相。我们可以把简单的热狗卖给大众,但是哈斯克尔的“牛排”是什么让你想买那个牌子而不是其他牌子呢?哈斯克尔的营销口号和新十年的主要差异化是什么?