查看原文
其他

程序员总被坑?这是GitHub上的一篇防骗指南

2018-04-05 Nemil Dalal CSDN

点击上方“CSDN”,选择“置顶公众号”

关键时刻,第一时间送达!

作为一名技术人,我们擅长处理系统漏洞,对于媒体信息来源的真伪我们毫无辨别能力。

本文源自于GitHub上创建的一个repo,其中收集了许多如Hacker News、Reddit、tech blog等新闻频道上有关软件开发者遭受虚假信息之害的故事。

以下为正文:

2015年我结识了一位很聪明的企业家,从谈话中得知他刚刚从一家知名风险投资公司筹集了数百万美元的风投资本。有了风投资金,这位企业家招聘了大量员工,同时投资事件又被媒体大力报道,一时间风光无限。而他的业务主要基于一个流行的开源项目。

作为战略的一部分,CEO拿出一部分股权给了该开源项目的一位核心开发人员。这样一来他就有了底气,并宣称自己很快就可以拿到该项目的更多重要信息,从而尽快让公司盈利,他还打算将这个开源项目的开发人员招募到自己公司。

我担心这种奇葩的关系迟早会被这位核心开源开发人员暴露。尽管他们只是私下的合作关系,但他在会议上频频提及并宣扬这个公司。因为,他的决定会影响到其他的开源开发人员。其他开源开发人员在职业生涯初期就会毫无防备地受到这位核心开发人员的影响。

一个计算机系统难免会有漏洞,外部攻击者常常利用这些漏洞,而计算机工程师非常擅长处理这些漏洞。类似的,我们的个人社交信息同样存在“漏洞”,我们的信息来源经常受到各种会议、聚会、博客、记者、教授、行业分析师等观点导向。就像这个例子一样,即使是你的同事,也可能潜移默化影响着你。

作为一名单纯的工程师,我们有必要开发出“解药”,这是非常有价值的。尽管这些动机在某些方面也是为我们好,但是这些“解药”能够切实为我们的团队和自身的职业生涯做出最佳决策。接下来我会列举一些工程师易受影响的方式,同时介绍三种方法来帮助我们做出更好的决策。


影响工程师的常见因素


如今已是信息时代,影响工程师的因素很多,本文选取一些例子来展示这些因素如何影响着工程师的内心。

影响工程师的主要因素包括:

  • 希望销售技术或扩大平台的开发者工具团队

  • 愿意雇用我们的公司

  • 想要招募贡献者和用户的开源开发人员

  • 想要资助我们的风投机构

  • 想要卖课程的培训机构

  • 希望被聘的咨询公司

  • 想要扩大影响力从而获得更多利益的社交网络

他们创建和赞助了多项活动,比如新闻发布会、聚会、博客文章、会议、讲座,等等。这些活动对工程师产生了极大的影响,包括技术选型以及雇主选择等方方面面。

伴随着一系列夸张数字的初创企业暴富故事的文章可能会引发工程师大量加入初创企业的热潮。关于最新数据库技术(如NoSQL)的博客或热门演讲可能会引发工程师的关注,从而影响项目的技术选型。大学讲师可能会推销他们自己公司的技术。过去一年Hacker News上点赞最多的消息可能会影响我们采用的技术类型。然而,作为这些信息的消费者,并不是所有的工程师都会批判性地审查这些信息及其来源。

对于创业公司来说,如果为了顾及成本而选择了糟糕的技术,只不过是将困难进行了转移,项目可能会深陷风险。对于工程师来说,学习错误的技术同样是浪费生命。误入不良公司会大大阻碍我们职业生涯的发展。

案例1:创业公司拿风投与招聘工程师

经常有文章颂扬创业公司如何如何好,我的一位风投圈的朋友每次看到这样的文章都冷笑。因为他也曾投资过一些创业公司,实际上大多数创业公司过得都不好,这样的软文只是为了帮助这些创业公司伪装得美好一些,以便在资金耗尽之前能够招聘到优秀的员工,同时吸引风投机构的注意。我相信大部分人都能够读懂这些文章真实的一面。而对于那些蒙在鼓里的人来说,通过一些培训也能够领悟到这类文章背后的真实含义。

再比如那次臭名昭著的数据造假事件。Theranos(一家血液检测公司)通过“仅需少量血液便可提供准确检测结果”的口号吸引技术人才并募集风投资金。

很多媒体和新闻机构在报到此事时不加鉴别,很多人都被大肆报道的新闻(https://www.washingtonpost.com/blogs/erik-wemple/wp/2015/11/05/how-the-nyts-t-magazine-disappeared-tech-entrepreneur-elizabeth-holmes/?utm_term=.14375bed3cb3)所吸引。虽然后来谎言被揭穿了,但是加入Theranos 的这批杰出的工程师和科学家们浪费了自己宝贵的时间,原本他们可以去做真正有影响力的工作并给自己的履历增光添彩,这是一个巨大的损失。

案例2:MongoDB 上的Dev Tool 市场

MongoDB 承诺提供“现代”数据库体验,它是21世纪末发展最快的NoSQL 数据库之一。

在深入研究MongoDB 早期的营销策略https://www.nemil.com/mongo/3.html)时,我指出了一些与开发者工具营销相关的问题,主要有:

  • 受邀参加MongoDB 会议的演讲者会有自己的私心,他们试图出售自己的咨询服务,并为他们自己的开发者工具产品进行营销。

  • 黑客学院和早期的程序员博客是推销MEAN堆栈的得力助手。

  • MongoDB 完全不考虑不同应用场景的特殊性,宣称自己能够大包大揽地解决所有数据库问题。

  • 初学的开发者几乎无法做出正确的权衡,他们会受到大学黑客马拉松的大力影响。

尽管我在这些案例中指出了一系列问题,但当我涉及到自己的团队任务时仍然无法做到完全准确。鉴于此,最好是所有工程师都能够具备识别信息真伪的能力。在这个充斥着虚假新闻(https://qz.com/1130094/todays-biggest-threat-to-democracy-isnt-fake-news-its-selective-facts/)的时代,这些经验教训能够帮助我们辨别这些工程之外的信息的真伪。


影响工程师的隐性因素


与之前的营销不同,如今工程师媒体中的外部影响常常被掩盖。

新闻发布或销售电话的目的往往很明确。而当这些内容出现在会议演讲或者博客文章中时,往往意图不明。凭借强大的营销资金做后盾,无论真实性如何,都可以宣传自己的信息并说服他人。

我在世界各地都有过这方面的亲身经历。当我完成工程研究之后,我在东帝汶首都帝力的世界银行工作。有一天,我们需要向记者描述我们资助的一个项目的好处。不同的东帝汶公民针对这个项目肯定会有不同的评价。但我们的重点是从世界银行的角度来描述这个项目。毫无疑问,我们在记者面前评价这个项目时极尽赞美之词。

第二天,东帝汶当地的一家报纸刊登了这则新闻稿。关于世界银行对这个项目的良好评价很是醒目。然而,每当我想到东帝汶的公民被新闻蒙蔽着双眼时,我感到深深的不安。

直到后来当我逐渐发现世界各地都是如此,才稍微有点释然。硅谷的一些好友告诉我,他们对大多数信息源的虚假感到震惊,并且毫无防备地信任这些虚假信息。我特别担心大学生和初级工程师(https://www.reddit.com/r/learnprogramming/)以及那些远离高科技的人,他们很难辨别这些信息的真假。

案例1:微服务的炒作

编程社区对微服务(https://martinfowler.com/articles/microservices.html)的优劣进行了激烈的辩论(https://news.ycombinator.com/item?id=14415485)。我个人的观点是,微服务在初创公司的盛行是源于集装箱功能和成本优势。Martin Fowler 的博文详细介绍了初创企业与微服务(https://medium.com/aws-activate-startup-blog/using-containers-to-build-a-microservices-architecture-6e1b8bacb7d1)。

有关微服务的言论大多来自于其他的工程师、开源团队或者培训机构。铺天盖地的宣传往往会误导一些中型公司的CTO,让其忽略项目适用性而造成错误的技术选型。

案例2:开发人员培训计划

培训机构为了吸引更多的学员,他们会尽量扩大其技术领域,试图增加读者群体从而吸引学生。与之合作的老师背景往往不会被严格审查,他们不排除有推动某种技术的私心。

Free Code Camp 是一个拥有350k粉丝的热门开发者博客,最近发表了一篇文章声称"REST 已经死亡,GraphQL 才是未来"(https://news.ycombinator.com/item?id=14839576)。这篇文章由Free Code Camp 的负责人发表,并由一位销售GraphQL 培训计划的作者撰写,对此我进行了批评(https://news.ycombinator.com/item?id=14840321)。

遥想自己也还是一个初学者时,我担心初级工程师没有能力辨别事物的优劣与真伪,会受到这些文章的影响盲目学习GraphQL。就像“学MEAN 赢高薪(https://medium.freecodecamp.org/the-real-reason-to-learn-the-mean-stack-employability-29011ff6b2eb)”这样的宣传一样,会误导很多人。我尤其担心初学者,因为他们大都能力有限,很容易受到这类信息的误导。

案例3:技术内容营销

除了直接影响之外,社交媒体上的内容营销帖子数量惊人。这些帖子当然也有一些价值,但是其主要目的是销售他们公司的产品。尽管他们的目标是进行销售、影响读者思维或改进SEO,读者有时可以将他们内化为“新闻”。

联合广场的Fred Wilson 注意到了技术文章中普遍存在着内容营销(http://avc.com/2016/08/understanding-vcs/),并鼓励大家批判性地看待这些消息:

那么企业家应该如何利用风险投资公司所传递的知识?首先,你应该将其视为内容营销。

这并不意味着这些信息毫无用处。但是你应该了解这些免费内容背后的商业模式。任何免费形式的最终目的都是为了获取利益。

出于以上种种原因,我总结了网络上可信的信息来源主要有:大学/研究生朋友、与投资CEO 的坦诚会谈(针对投资者)、平台提供商,一线工程师的博客。他们的信息来源受自身利益的影响较小,基本能够展示一个比较客观的世界观。人们其实也可以私下交流,不太愿意分享广泛的内容。

如果想要了解事实真相,我们需要理解驱动这些信息来源的利益源头。这些信息表面其乐融融,内部实则暗流涌动。


工程师如何做出更好的选择


这些问题给了我们一个最基本的教训:真实的信息来源、追求真相的社区以及富有思想的工程师无法替代。

我创建了一个GitHub(https://github.com/nemild/hack-an-engineer) 项目存放初学者值得信赖的信息源。我对每一个来源都比较了解,它们确实值得信赖。欢迎读者提交贡献(https://github.com/nemild/hack-an-engineer/blob/master/contributions.md)。

除了自身利益之外,媒体还可能受到其他因素的影响。比如,任何读者都有资格对黑客新闻的文章点赞,这意味着世界上最专业的人与没有经验的人拥有相同的投票权。几乎所有社交媒体算法都倾向于所有人的参与,这意味着我们阅读的内容仅仅是我们周围读者想要阅读的内容的一个函数。

案例:加密货币部落和社交媒体

在社交媒体中,即使项目决策应该基于经验和事实,周围的群体同样会影响你的观点。社交媒体组织和算法挑选其用户信念的内容,并在最糟糕的情况下绘制相反的一面。这种部落主义可以在加密货币中经常看到,这意味着读者消费了扭曲的现实。

作为Coinbase 的联合创始人,Fred Ehrsam 解释道:

“加密货币造成强大的部落主义。一旦你拥有一种货币,你的动机就是使这种货币的价值增加。每天都可以在reddit 上看到加密部落主义。分红产生并报告支持其持股的新闻。

加密部落主义以两种常见方式发挥作用:

1)人们宣传自己的货币;

2)人们诋毁其他货币。人们宣传他们自己的货币的证据是,货币在其次级债务上的积极到消极的消息不平衡。”

就目前而言,我提出了三个评估技术媒体的要点:

1. 辨别重要内容背后的激励措施

首先,需要考虑一位作家或者演讲者的动机,无论是直接还是间接的。

当我阅读一篇文章或者听到一个演讲时,我经常会问自己几个问题:

  • 背景:他们的技术背景是什么,为什么他们适合在这个话题上发言?

  • 目的:他们发表演讲或者博客的目的是什么?招聘,树立个人品牌,还是扩展新业务?

  • 冲突:他们可能会发生什么冲突,这是如何影响这些信息的?

  • 盟友:还有谁想要这些内容?

  • 分销商激励措施:为什么分销商(社交网络、媒体刊物)将这些内容推送给我?

当我们看到很多公司的新闻时,往往表明他们想要从我们身上获取某些东西。他们的员工有意识地接触记者,并尝试写一篇文章。

2. 灌输宣传

其次,灌输宣称要求的愿望。

例如,公司会定期展示他们量身定制的基准,以最好的方式展示他们的产品。运行我们自己的基准通常并不难,这反映了我们现实世界的用例。

回顾技术趋势和最终结果是另一种方法,类似于回溯测试:当我们根据自己所见过的事物思考几年后人们如何看待它时,更容易忽略炒作。

当你不同意或看到过分的激励问题时,可能会在网上社区发表见解。在Hacker News上,这可能是你自己的评论或帖子,即使它是访客账户。新的社交网络设计可能会让我们信任未来关键激励问题的人。

3. 建立一个专家社区

检查你做重要技术决策所依靠的社区。

建立一个从真相中受益、具有批判性思维和专业知识的人群是很重要的。这可以是前员工、同学或同事。你可以用最贴心的工程师来不断扩充它。在线上,你可以经常在小众黑客新闻帖子和开源邮件列表、聊天室的评论中找到其中的一些组。在职业生涯的早期,寻找一位有思想的导师是至关重要的。

在许多方面,这种方法反映了计算机安全的信任网络(https://en.wikipedia.org/wiki/Web_of_trust),我们期待可信赖的朋友,以及这些可信赖的朋友的朋友。

如果教授你技术课程的老师具有分辨真伪的能力,那么你应该感到庆幸。我并不清楚这些老师是否能够辨别技术媒体,也不知道他们如何选择技术工具。如果不能,那么我们将会被误导,直到加入一个优秀的团队,从中吸取教训才能让我们走上正轨。

在评估深度技术性决策时,在我们社区拥有一些深思熟虑的专家也非常重要,比如使用什么数据库或如何最好地构建系统。当然也有一些专家是危险的,他们对自己能力的信心意味着他们不会质疑许多深层次的假设,并且在世界变化时无法做出调整。有思想的专家既有专业知识,又有坚定的见解。


总结


工程师与我们设计的机器学习算法有一些相似之处。数据都用于推断未来的决策。因此,一个精心策划的训练数据集变得非常重要,在我们的信息输入受到损害时可以调整错误。

除了鼓励批判性思维并寻找值得信赖的工程师网络之外,我几乎没有谈及其他问题。例如,我们是否应该讨论备用的Hacker News 和Twitter 算法,希望创造更好的工程师?是否应该针对开源开发者进行冲突公开?像Free Code Camp(https://www.freecodecamp.org/) 这样的大众化技术博客是否拥有一个技术委员会,用于评估作者背景和博客内容?我们是否应该在编程入门和计算机课程中教授技术媒体素养?

尽管如此,对于批判性思维和测试假设是工程师和科学家如何处理这个世界的一个自然部分,我倍感欣慰。这种思维方式的作用远远超出了我们旨在解决的日常技术问题。

原文:https://www.nemil.com/musings/hack-an-engineer.html

提供者:Nemil Dalal

译者:安翔

责编:琥珀

————— 推荐阅读 —————

点击图片即可阅读


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存