首页 资讯 正文

朱嘉明荐文:训练您团队的代码思维

数字资产研究院CIDA 2019年09月08日 09:36

推荐语


迎接"分析性思维"和"算法思维"融合的时代

维特根斯坦(1889一1951)

Ludwig Josef Johann Wittgenstein


大卫·沃勒的文章《训练您团队的代码思维》,刊登于麻省理工学院商学院学刊《麻省理工学院斯隆管理评论》,文字虽然不长,但是,很可能是近来最值得阅读和思考的文章。该文提出了“To Think in Code”的观念,以及如何和为什么要将“分析性思维”和“算法思维”相结合的时代性的和根本性的挑战,不懂和不会"算法思维"将是日益残缺不全的思维,是丧失基于算法逻辑的思维。进一步思考,"算法思维"将逐渐侵蚀"分析性思维"。现在想一想,维特根斯坦是尝试将两类思维相结合的先驱,他的"数学哲学"的历史价值是被低估的。故本院将此文译成中文,并以公众号的方式发表,与大家共享,并期望得以传播,引发更深入的思考与探讨。

朱嘉明 2019年9月8日

训练您团队的代码思维大卫·沃勒/文 袁洪哲/译

图片来源:MIT SLoan Management Review

大多数公司仍然将进行分析等同于在电子表格(spreadsheet)中编写公式。但自电子表格发明以来,业务格局发生了巨大变化。如今,组织必须从数百万个人客户的角度进行思考,而不仅仅是少数细分市场,并以可重复使用的解决方案来解决问题,以避免从头开始重新设计流程。他们希望从机器学习和人工智能的最新进展中获益,而不是简单地将回归方程抛到他们面临的任何分析类问题上。

简而言之,公司需要重新训练编写代码,而不是公式,因为未来的工作不仅需要分析性思维,还需要算法思维。

这种观点的改变意义重大。大多数公司可能认为代码仅限于IT 部门的模糊角落,或者作为特定数据科学家群体的专属领域。但是,设法使代码成为在其业务中传播分析的自然语言的组织通常比同行更快地成长和创新。

采用以代码为中心的方法将从三个方面使组织受益:

首先,代码思维允许公司将数据与数据分析完全分开,从而使团队能够独立于一项来改进另一项。当数据和分析完全分离时,不同的团队可以专注于独立改进每个方面,从而加快进度。

其次,代码更易于共享和重用——整个开源软件运动都依赖于这个想法。软件开发人员花费数年时间构建工具,使其工作易于跟踪、修改和共享。

最后,代码对简单和复杂的分析都更为适合。机器学习和AI 技术的突破作为代码实现,通过克隆研究人员正在使用的代码,个人可以快速、免费地获得最先进的分析技术。那么,管理者必须做些什么来将现有员工队伍从公式转移到代码?

拆除“巴别塔”

沟通是协作的先决条件。语言障碍为有效分享思想制造了一些最强的障碍。这不仅适用于文本交换和口语对话,对代码也是如此。但是,在几种编程语言中,必须从心理上重新投射想法,需要额外的专业知识,因为它在认知上可能要求很高。

公司应该最多选择两种(编程语言),但理想情况下,一种分析编程语言(analytical programming language)作为公司范围的标准——每个人都可以“说”。需要明确的是:没有一种选择适合每种情况,理性的人可以在标准选择上意见不一,因此团队应该为熟悉的管理团队改变的挑战做好准备。公司可以通过同意每隔几年重新审核标准来安抚反对者,并保持更新。

创建共享代码存储库

一旦人们用一种共同的语言转录了想法,公司就应该从开源社区中得到启示,并建立自己的共享代码存储库(repository)和知识库(knowledge base)。这使得人们能够快速轻松地分享他们的编码工作,并避免不断重新发明轮子。

与任何中央系统一样,公司需要仔细考虑安全性和权限,并且应根据自己的保密或知识产权保护标准更改访问凭据(access credential)。但是,创造一个丰富的空间,让创意从广泛的贡献中获益,是进步的强大引擎,而且公司可以受益匪浅。

使用共享代码存储库,组织内的多个组可以使用相同的代码文件来解决相似的问题。

例如,银行的营销团队可能想知道正在考虑抵押贷款再融资的客户,以便他们可以针对这些客户定位某些产品;财务团队可能还需要有关可能再融资的数据,因为这些数据可被用以制订预算和账单。在这两种情况下,问题的提法都是一样的——有多少人,以及哪些人,可能再融资?那么,为什么不使用相同的代码来得到答案呢?

只需选择一个项目

快速推进的一个好方法是选择一个项目,围绕它创建一个代码存储库,并邀请广大受众贡献代码。

GitHub Bitbucket 这样的代码共享平台使这一点变得简单。从广泛适用且无争议的项目开始非常有用,例如:时间序列预测、生成客户细分和计算价格弹性等。

一些公司已经超越了内部共享存储库,并公开分享了他们的成果。谷歌和微软等领先的科技公司已经这样做了一段时间了。但是现在,其他行业的公司开始看到采用这一战略的好处。例如,一家电信运营商将其共享代码存储库作为开源社区的一部分,这使得该公司能够利用他人的帮助,甚至在公司外部,并有可能为电信行业设置标准平台。

使代码成为正常业务的一部分

希望从高级分析中产生最大价值的公司面临着最后一项艰巨的挑战:他们必须使基于代码的建模成为规则,而不是例外。

它必须成为商务常态,像将电子表格附加到电子邮件中一样看上去无足轻重,自然而然。使这一挑战令人生畏的是,它不仅需要改变观点,而且需要改变习惯。但有一些务实的战略用以加速这种转变。

培训的价值

使这种变化快速而顺利发生的一个策略是保护和为员工提供培训的时间。如今,公司和个人都可以选择多种课程,从训练营到大规模开放式在线课程MOOC),再到定制的现场指导。

有了专注,成为称职的编码员不是不可逾越的任务,管理者不应假设他们的员工不能胜任。

无需恐惧

在这个新世界里有许多指南。流行的答案,无论是通过搜索引擎、培训资源或同行教师,几乎总是优雅和可复用。有时,这些答案将包含指向大量开源代码存储库的链接,其中包含任何相关问题的解决方案。

对于电子表格来说,情况通常并非如此,因为数据和分析的交织使得很难抽象出问题可复用和可优化的解决方案——尤其是当该解决方案需要的不仅仅是一个步骤。

文章来源:MIT SLoan Management Review, SUMMER 2019 • VOL.60 • No.4 , Page 14-16

原文链接:https://sloanreview.mit.edu/article/train-your-people-to-think-in-code/

作者:大卫·沃勒 | 奥纬咨询数字实践(Oliver Wyman Digital Practice)合伙人,美洲数据科学和工程联席主管。他领导的项目利用先进的统计和机器学习方法来解决现代业务核心的具有挑战性的分析问题。

译者:袁洪哲 | 数字资产研究院研究员

Train Your People To Think in Code

David Waller

Partner at Oliver Wyman Digital Practice

David Waller

Most companies still equate doing analysiswith writing formulas in spreadsheets. But the business landscape has shifted seismically since the invention of the spreadsheet. Today, organizations must think in terms of millions of individual customers—not just a handful of segments—and solve problems with reusable solutions to avoid re-engineering the process from the ground up. And they want to benefit from the latest advances in machine learning and AI, not simply throw regressions at whatever analytical problem they face.

In short, companies need to retrain for writing code, not formulas, as the future of work will entail thinking not just analytically, but also algorithmically.

This change of perspective is significant. Most companies might see code as something confined to obscure corners of the IT department or as the exclusive province of a select group of data scientists. But organizations that manage to make code the natural language for diffusing analysis across their business can often grow and innovate faster than their peers.

Taking a code-centred approach will benefit organizations in three ways:

  • First, thinking in code allows companies to cleanly separate data from analysis of the data, which allows teams to improve each one independently of the other. When data and analysis are cleanly separated, different teams can focus on independently improving each aspect, leading to faster progress.

  • Second, code is much easier to share and reuse—the entire open-source software movement rests on this idea. Software developers have spent years building tools to make their work easy to trace, modify and share.

  • Finally, code is better for both simple and complex analysis. Breakthroughs in machine learning and AI techniques are implemented as code, and by cloning the code researchers are using, individuals can gain access to state-of-the-art techniques in analysis, quickly and for free.

So what must managers do to move their existing workforce along the spectrum from formula to code?

Tear Down the ‘Tower of Babel’

Communication is a prerequisite to collaboration. Language barriers create some of the strongest barriers to effectively sharing ideas. This is not just true for text exchanges and spoken conversations—it’s equally true for code. But having to mentally recast ideas in several programming languages requires additional expertise, as it can be cognitively demanding.Companies should aim to select two, at most, but ideally one analytical programming language as a company-wide standard—something everyone can “speak.” To be clear: No single choice is perfect for every situation, and reasonable people can disagree on the choice of standard, so teams should prepare for familiar change-management challenges. Companies can assuage naysayers and stay current by agreeing to revisit standards every couple of years.

Create Shared-Code Repositories

Once people transcribe ideas in a common language, companies should take a cue from open-source communities and establish their own shared-code repositories and knowledge bases. This makes it possible for people to share their coding work quickly and easily and to avoid constantly reinventing the wheel.As with any central system, companies need to be thoughtful about security and permissions, and they should vary access credentials according to their own standards for confidentiality or intellectual property protection. But creating a rich space where ideas can benefit from a wide array of contributions is a powerful engine of progress, and companies can benefit enormously.With shared-code repositories, multiple groups within an organization can use the same code files to solve similar problems. For instance, the marketing team in a bank might want to know about customers who are thinking about mortgage refinancing so they can target certain products against these customers; and the finance team might also want data on possible refinancing as it projects budgets and billings. The problem formulation is the same in both cases—how many people, and which ones, are likely to refinance? So, why not use the same code to get to the answer?

Just Pick a Project

A good way to get going quickly is to pick a project, create a code repository around it, and invite contributions from a wide audience. Code-sharing platforms like GitHub and Bitbucket make this easy. It’s useful to start with broadly applicable and noncontroversial projects—such as time-series forecasting, generating customer segmentations and calculating price elasticities, to name a few.Some companies have gone beyond internal shared repositories and have publicly shared their efforts. Leading technology companies like Google and Microsoft have been doing this for some time. But now, companies in other industries are beginning to see the advantages in adopting this strategy. One telecom carrier, for example, has made its shared-code repositories part of the open-source community, which allows the company to avail itself of help from others, even outside the company, and potentially set the standard platform for the telecom industry.

Make Code Part of Business As Usual

Companies that want to generate the most value possible from advanced analytics face one final and daunting challenge: They must make code-based modelling the rule, not the exception. It must become business as usual, as unremarkable and reflexive as attaching a spreadsheet to an email. What makes this challenge formidable is that it requires not just a change in perspective but also a change in habits. But there are pragmatic strategies for accelerating this shift.

Value of Training

A strategy for making this change happen quickly and smoothly is to protect and provide time for employees to get training. Today, there is a vast array of options available to companies and individuals alike, ranging from boot camps to massive open online courses (MOOCs) to customized, onsite instruction. With focus, becoming a competent coder is not an insurmountable task, and managers shouldn’t assume their employees are not up to it.

No Need To Fear

There are many guideposts in this new world. Popular answers, whether found through a search engine, a training resource or a peer teacher, are almost always elegant and reusable. And sometimes, those answers will contain links to extensive open-source code repositories with solutions to any manner of related problems.The same is generally not true for spreadsheets, whose intermingling of data and analysis makes it difficult to abstract away just the reusable and improvable solution to your problem—especially when that solution requires more than just one step.