月度归档:2023年12月

关于爬虫

作为一个互联网的技术开发,爬虫不管是自己写的还是所负责的网站被爬,都是挺常见的。

但是一个很常见的东西,却一直没有系统梳理过,今天我们从发展历史,价值,问题和应对恶意爬虫的策略来聊一聊爬虫。

1 爬虫发展历史

爬虫的发展历史伴随着搜索引擎的发展和大的搜索引擎公司的崛起,按时间线,大概分为三个阶段:

1.1 90 年代的早期爬虫

早期的爬虫主要用于收集网页链接、测量互联网规模或提供搜索服务。它们的目标相对简单明确。它们基于文本的抓取和索引,大多数是单线程和顺序抓取,有着简单的去重策略和有限的抓取规模,且当时对爬虫行为的限制较少。以下为一些早期爬虫:

  • World Wide Web Wanderer(1993年):由麻省理工学院的 Matthew Gray 开发,World Wide Web Wanderer 是最早的网络爬虫之一。其是用 Perl 语言实现,最初的目的是测量互联网的规模,但随后它也开始收集网页的 URL,并将这些 URL 存储在名为 Wandex 的数据库中。
  • JumpStation(1993年):Jonathon Fletcher 开发的 JumpStation 是一个早期的搜索引擎,被认为是世界上第一个网络搜索引擎,它使用一个基于爬虫的方法来收集链接并生成索引。JumpStation 利用简单的文本匹配技术来检索网页,并提供了一个基本的搜索界面。
  • RBSE (Rice-Based Search Engine) :全名为 Rice-Based Search Engine,是由 Rice University 的 Ramin Zabih 和 Justin Boyan 开发的。RBSE 是一个基于网络爬虫的搜索引擎,它使用了一种名为 “backward link crawling” 的方法进行网络抓取。该方法首先找到某个已知的相关网页,然后通过跟踪这个网页的反向链接(即指向该网页的其他网页)来查找更多的相关内容。
  • WebCrawler(1994年):WebCrawler 是由 Brian Pinkerton 开发的,它是第一个全文搜索引擎。WebCrawler 使用爬虫抓取网页,并将收集到的数据存储在索引服务器上。用户可以通过搜索关键词找到相关网页。
  • Lycos(1994年):Lycos 是另一个使用爬虫技术的搜索引擎,由卡内基梅隆大学的 Michael Mauldin 开发。Lycos 成为了当时最大的搜索引擎之一,提供了更先进的搜索功能和更大的索引。

1.2 搜索引擎时代的爬虫(90 年代末至 2000 年代初)

与早期爬虫相比,搜索引擎时代的爬虫已经支持了分布式抓取,支持多种文件类型和媒体格式,需要采用更复杂的网页解析技术,并且要遵守网站抓取规则,另外,在去重,索引和隐私保护等方面有了长足的长进。此时的爬虫,共同致力于提供更快速、更准确、更全面的搜索结果,满足用户不断增长的信息需求。以下为一些示例:

  • Scooter(1995 年):Scooter 是用于 AltaVista 公共搜索引擎的网络爬虫,AltaVista 曾声称Scooter 是「当今最快的网络爬虫」。它负责抓取和索引网页以构建 AltaVista 的搜索结果。
  • Yandex Bot(1997年):Yandex Bot 是俄罗斯搜索引擎 Yandex 的网络爬虫。它通过抓取和索引网页来构建 Yandex 的搜索结果。Yandex 使用了一种称为 MatrixNet 的机器学习算法来评估网页的质量和相关性。
  • Googlebot(1998年):Googlebot 与 Google 搜索引擎一起诞生。Google 的创始人拉里·佩奇(Larry Page)和谢尔盖·布林(Sergey Brin)于 1996 年开始研究他们的搜索引擎项目,最终在 1998 年正式推出 Google 搜索引擎。Googlebot 是 Google 搜索引擎的网络爬虫。它按照一定的算法和策略抓取互联网上的网页,用于构建 Google 的搜索索引。Googlebot 使用了一种称为 PageRank 的链接分析算法来评估网页的相关性和重要性。
  • Bingbot(2006年):Bingbot 是微软旗下搜索引擎 Bing 的网络爬虫。它通过抓取和索引网页来构建 Bing 的搜索结果。Bingbot 采用了一种称为 TrustRank 的算法来评估网页的质量和可信度。
  • Baiduspider(2000年):Baiduspider 是中国搜索引擎百度的网络爬虫。它负责抓取和索引互联网上的中文网页,用于构建百度的搜索结果。百度爬虫使用了一种称为 LinkRank 的链接分析算法。
  • DuckDuckBot(2008年):DuckDuckBot 是以隐私保护著称的搜索引擎 DuckDuckGo 的网络爬虫。虽然 DuckDuckGo 在很大程度上依赖于其他搜索引擎的结果,但它也使用自己的爬虫来抓取和索引网页。

1.3 现代爬虫

随着互联网的快速发展,爬虫技术也在不断进步。一方面,搜索引擎公司继续改进爬虫技术,以提高搜索结果的质量和速度。另一方面,爬虫技术已经成为数据挖掘、竞争情报和市场研究等领域的重要工具。

随着编程语言和开源项目的发展,现在有许多成熟的爬虫框架和库,如 Scrapy、Beautiful Soup、Puppeteer 和 Selenium 等。这些工具使得开发人员可以更容易地创建爬虫程序,以满足各种数据抓取需求。

在爬虫的发展历史中有一个不是规范的规范是一定要讲一下的,那就是 robots.txt 规范。

robots.txt 并不是一个实际的规范,而只是约定俗成的,其并不能真正保证网站的隐私,有点防君子不防小人的味道。

它的由来可以追溯到 1994 年,当时互联网上的 Web 页面数量急剧增加,导致许多搜索引擎和网络爬虫竞相抓取这些内容。然而,不是每个网站都希望被这些网络爬虫抓取和索引。并且,网络爬虫可能消耗大量的服务器资源,影响网站的性能和用户体验。为了解决这个问题,一个荷兰计算机科学家 Martijn Koster 提出了一种简单的解决方案:在网站的根目录下放置一个名为 robots.txt 的文本文件,用来告诉网络爬虫哪些页面可以抓取,哪些不可以。robots.txt 的提出得到了搜索引擎和网络爬虫开发者的广泛支持,逐渐成为了事实上的行业标准。

大多数网络爬虫在访问一个网站之前都会检查 robots.txt 文件,以确定哪些内容可以抓取,哪些需要避免。需要注意的是,robots.txt 文件并没有法律约束力,恶意爬虫可能会忽略它的规则。

2 爬虫的价值和问题

2.1 爬虫的价值

爬虫,作为一种自动遍历、抓取和分析网页内容的技术,为互联网中的信息获取、数据分析和知识发现提供了重要支持。其价值可以分为以下 4 类:

  1. 信息获取与索引

    • 搜索引擎索引:网络爬虫是搜索引擎构建其索引的关键组件。通过抓取和分析网页的内容、结构和链接信息,爬虫帮助搜索引擎构建一个全面、实时的网页数据库,从而为用户提供准确、相关的搜索结果。
  2. 数据分析与挖掘

    • 数据挖掘和分析:爬虫可以用于从互联网上收集大量数据,如新闻、论坛、博客、评论等。这些数据可以用于进一步的数据挖掘和分析,以发现潜在的趋势、模式和关联,为市场研究、竞争分析、舆情监控等应用提供有价值的洞察。
    • 内容监测:爬虫可以用于定期监测网站的内容变化,如新闻发布、产品更新、政策变动等。这有助于及时获取最新信息,为用户和企业提供实时的情报和提醒。
    • 学术研究:网络爬虫在学术研究中具有重要价值。研究人员可以使用爬虫抓取特定主题或领域的数据,进行进一步的分析和挖掘,以揭示潜在的知识和洞见。
  3. 数据整合与应用

    • 数据抓取和整合:爬虫可以用于抓取和整合来自不同来源的数据,如价格、产品规格、库存、评价等。这些数据可用于搭建价格比较网站、产品推荐系统、库存管理系统等,帮助用户和企业做出更明智的决策。
    • 知识图谱构建:通过抓取和分析大量的结构化和非结构化数据,爬虫可以帮助构建知识图谱,捕捉实体之间的关系和属性。知识图谱可用于支持语义搜索、问答系统、推荐系统等智能应用。
  4. 备份与存档

    • 存档和数据备份:网络爬虫可以用于抓取和备份网站的内容,为网页存档项目(如互联网档案馆)提供数据。这可以帮助保留历史信息,供未来的研究和回顾。

2.2 爬虫的问题

在有价值的同时,爬虫也会产生一些问题,这些问题分为两方,一个是对于爬虫发起方,另一个是对于爬虫接受方。

2.2.1 发起方的问题

对于发起方而言,可能有如下的问题:

  1. 技术挑战

    • 动态页面抓取:现代网站普遍采用 JavaScript、AJAX、SPA 等技术,传统的基于静态 HTML 的爬虫难以获取这些数据。例如,网站上的评论区可能是通过 AJAX 动态加载的,传统的爬虫无法直接抓取这些评论内容。
    • 反爬虫措施:许多网站采用各种反爬虫措施,如验证码、IP 限制、Cookie 跟踪等,使得爬虫难以访问和抓取目标数据。例如,购物网站可能会要求用户输入验证码才能查看商品价格,这对爬虫构成了挑战。
    • 网页结构变化:网站经常更新布局和设计,导致爬虫需要不断地适应这些变化。例如,一个新闻网站可能会在某次更新后改变文章标题的 HTML 标签,使得原来的爬虫无法正确抓取标题信息。
  2. 道德与法律问题

    • 隐私侵犯:在抓取用户信息、社交媒体动态等数据时,可能会涉及到用户隐私。例如,一个爬虫可能会抓取用户在社交媒体上的地理位置信息,进而侵犯用户的隐私权。
    • 知识产权侵权:爬虫在抓取内容时可能会触犯知识产权,如未经授权转载的文章、图片、音频等。例如,一个爬虫可能会抓取并转载一篇受版权保护的新闻报道,导致版权纠纷。
    • 法律法规遵守:爬虫在抓取数据时要遵守相关法律法规,如不得抓取违法信息、遵循 robots.txt 协议等。例如,一个爬虫可能会抓取到违反法规的虚假广告,导致法律问题。
  3. 数据质量问题

    • 数据准确性:爬虫抓取的数据可能存在错误、失真、过时等问题。例如,一个爬虫可能因为网站结构变化而抓取到错误的商品价格信息,导致后续分析和应用出现问题。
    • 数据完整性:爬虫抓取的数据可能不完整,无法涵盖所有相关信息。例如,一个用于舆情监控的爬虫可能仅抓取了部分新闻网站的报道,导致分析结果偏颇。
  4. 资源问题

    • 存储和计算资源:爬虫需要消耗大量的存储和计算资源来处理抓取到的数据。例如,一个爬虫可能需要存储数 TB 的网页内容,并对其进行文本分析、图像识别等计算密集型任务,这可能导致存储和计算资源不足。

以上是对爬虫发起方的挑战或问题,对于爬虫接受方面来说,这里可能的问题又分为两个方面,一个是正常的爬虫,如搜索引擎的爬虫,另一个是恶意爬虫。

2.2.2 正常爬虫对网站产生的问题

正常爬虫指的是遵循道德和法律规定,尊重网站权益的爬虫。尽管正常爬虫的目的通常是合理、合法的,但它们仍然可能给被爬网站带来一定的问题:

  • 有限的服务器压力与带宽消耗:正常爬虫在抓取数据时也会占用服务器资源和带宽,尽管通常不会对网站造成严重影响。合理的爬虫应遵循网站的 robots.txt 文件设置,限制抓取速度,以减轻对服务器的压力。
  • 误抓取敏感信息:正常爬虫在抓取数据时可能会误抓取到一些敏感信息,如用户个人信息、电子邮件地址等。为了保护用户隐私,爬虫开发者应尽量避免抓取这类数据,或者在数据处理过程中对敏感信息进行脱敏处理。
  • 数据准确性与完整性:正常爬虫抓取的数据可能存在错误、失真、过时等问题。例如,网站结构变化可能导致爬虫抓取到错误的数据。为了确保数据质量,爬虫开发者需要不断更新和优化爬虫策略。
  • 无意识的知识产权侵权:正常爬虫在抓取网站内容时可能会无意识地触及知识产权问题。为了避免侵权,爬虫开发者应尽量获取授权,或者仅抓取公开可用、非受版权保护的数据。

2.2.3 恶意爬虫对网站产生的问题

恶意爬虫指的是未经授权或者违反网站规定,采用不道德、非法手段抓取数据的爬虫。恶意爬虫可能给被爬网站带来以下问题:

  • 服务器压力与带宽消耗:恶意爬虫可能在短时间内对网站发起大量请求,导致服务器负载过高,甚至引发服务器崩溃,导致正常客户不可用。此外,大量请求会消耗网站的带宽资源,影响其他用户的访问速度。带宽的增加会带来目标网站技术成本的急剧增加
  • 数据隐私与安全:恶意爬虫可能窃取网站的敏感数据,如用户个人信息、登录凭证等。这种行为会侵犯用户隐私,甚至可能导致数据泄露、身份盗用等安全问题。
  • 知识产权侵权:恶意爬虫可能未经授权抓取并转载受版权保护的内容,如文章、图片、音频等。这种行为侵犯了网站及作者的知识产权,可能导致法律纠纷。
  • 网站安全漏洞利用:恶意爬虫可能会利用网站的安全漏洞进行攻击,如 SQL 注入、跨站脚本攻击等。这种行为会影响网站的数据安全和用户隐私。
  • 不良竞争:商业竞争对手可能使用恶意爬虫来抓取网站的数据,如产品信息、价格、促销活动等。这种行为可能导致不公平竞争,影响被爬网站的市场地位和利润。
  • 无效内容或账号滥用:爬虫可能会在网站上发布大量无意义的内容,以达到其目的,如影响内容搜索或排名,并且这些内容需要不同的假账号进行操作,这会对网站的账号体系产生较多的垃圾数据。

3 应对爬虫的问题

可以看到正常的爬虫的问题还能接受,但是针对恶意爬虫我们要打起十二分的精神,以防止其对我们网站的破坏。通过以下的一些手段我们可以缓解或者在一定程度上解决恶意爬虫的问题。

3.1 应对正常爬虫

为了 SEO 的效果我们有时还需要给爬虫提供一些帮忙,以下为一些常见的措施:

  • 设置robots.txt文件:通过设置robots.txt文件,可以指导合规爬虫遵循规则,限制其访问特定目录或页面。这有助于减轻服务器负担,同时允许搜索引擎等合规爬虫正常抓取数据。

  • 限制爬虫抓取速度或增加服务器:在robots.txt文件中设置 Crawl-delay 参数,来控制爬虫抓取速度。这有助于降低服务器压力,确保网站正常运行。当然,我们也可以不限制其速度,通过增加服务器等措施提供更好的爬取体现。

  • 为爬虫提供 Sitemap:提供 Sitemap 文件,列出网站的所有页面 URL,帮助爬虫更高效、准确地抓取网站内容。这有助于提高网站在搜索引擎中的排名。

  • 优化网站结构:确保网站的链接结构清晰、合理,有助于爬虫更容易地抓取到所有页面。同时,遵循良好的 SEO 实践,提高网站在搜索引擎中的表现。

  • 监控服务器日志:定期检查服务器日志,分析爬虫的抓取行为,确保它们遵循 robots.txt 规则。如果发现不遵循规则的爬虫,可以采取相应的措施限制其访问。

  • 与爬虫开发者和维护者沟通:如果发现爬虫存在问题或给网站带来压力,可以尝试与爬虫开发者和维护者进行沟通,寻求合作解决问题。如网站提供的数据有较大需求,可以考虑为爬虫提供 API 接口。这有助于减轻服务器压力,同时提供更为规范、易于维护的数据访问方式。

  • 使用CDN服务:采用内容分发网络(CDN)服务,可以有效分散流量,降低单个服务器的压力。提升爬虫的爬取体验。

3.2 应对恶意爬虫

恶意爬虫的出发点是利用非法手段获取利益或损害他人利益。主要源于网络攻击者、竞争对手等方面的需求,以获取敏感信息、窃取知识产权或增加目标网站的运营压力等等。

为应对恶意爬虫,我们有如下一些常见的策略或方法来应对。

  • 限制请求频率:监控来自单个 IP 地址的请求频率。如果请求频率过高,可能是恶意爬虫。可以限制该 IP 地址的访问速度,或者暂时封锁它,以防止恶意抓取。频率限制中可以是分钟限,时限或日限。

  • 检查 User-Agent:检查请求的 User-Agent 字段,以识别恶意爬虫。某些恶意爬虫可能会使用非标准或可疑的 User-Agent。可以设置规则,要求访问者使用合法的浏览器 User-Agent。这块很常见,最开始的对抗中用这种方案比较容易见效,但是很快就可能破解。

  • 使用 Cookie 和 Session:通过使用 Cookie 和 Session 机制,可以跟踪访问者的行为。恶意爬虫可能在短时间内访问大量页面,而正常用户的访问模式通常不同。可以通过分析访问模式来识别并阻止恶意爬虫。其本质上的逻辑是区分正常用户和爬虫以及增加爬虫抓取数据的难度。通常情况下,正常用户访问网站时,服务端会为其生成一个唯一的 Session,并将 Session ID 存储在用户浏览器的 Cookie 中。当用户再次访问网站时,浏览器会将 Cookie 中的 Session ID 发送给服务端,以便服务端识别用户。而爬虫程序通常不会像浏览器那样自动处理 Cookie,因此通过检查请求中是否包含有效的 Cookie 和 Session ID,可以在一定程度上区分正常用户和爬虫。当然,对于恶意爬虫来说,可以绕过 Cookie 和 Session 的检测,此时就需要模拟浏览器的行为,包括处理 Cookie、维护 Session 等,这就大大增加了爬虫编写和运行的复杂性。此外,服务端还可以对 Cookie 和 Session 进行加密、设置过期时间等,做一些策略或措施,进一步提高爬虫绕过检测的难度。

  • 启用验证码:对于敏感操作或疑似恶意爬虫的访问,可以要求用户输入验证码(如 Google 的 reCAPTCHA)。这有助于阻止自动化的爬虫访问,但可能会对正常用户造成一定的不便。在检测到访问频率异常、异常访问行为、IP黑名单或者一些敏感操作、写操作时,可以启用验证码,此时我们需要权衡安全性和用户体验之间的平衡,网站应根据实际情况选择合适的启用验证码的时机,以尽量减少对用户的打扰。另外,在实施验证码方案时,考虑用户友好性。例如,确保验证码易于阅读和理解,同时提供无障碍访问选项(如语音验证码或替代验证方法),以满足不同用户的需求。

  • 动态加载内容:使用前端技术动态加载页面内容,使得恶意爬虫更难抓取数据。这种方法可能会影响网站的可访问性和 SEO,因此需要权衡后决策。

  • 保护 API:如果网站提供 API,可以对其添加额外的安全措施,如使用 API 密钥、限制请求速率和使用 OAuth 等身份验证机制。

  • 监控日志和异常行为:定期检查服务器日志,以发现异常访问模式,这有助于及时识别并应对恶意爬虫。最好有成体系的机制来保证,或者基于这些日志做一些监控告警,以系统化的方式更快的发现问题。

  • 采用 Web 应用防火墙(WAF):当前面的一些简单策略不行,此时如果你正在使用云服务,可以使用 Web 应用防火墙(WAF)帮助识别和阻止恶意流量。Web 应用防火墙(Web Application Firewall,简称 WAF)是一种保护 Web 应用程序免受恶意攻击和其他安全威胁的解决方案。WAF 位于 Web 应用程序和互联网之间,它监视、过滤或阻止传入 Web 应用程序的 HTTP 流量。WAF 的核心功能是识别并阻止来自外部攻击者的恶意请求,从而保护 Web 应用程序的安全。WAF 可以提供如下一些方法,以帮助识别和阻止恶意爬虫,从而保护 Web 应用程序和数据。

    • IP 地址筛选:WAF 可以通过识别和阻止来自已知恶意 IP 地址的请求来应对恶意爬虫。咱们可以维护一个恶意 IP 地址的黑名单,并将其添加到 WAF 的访问控制列表中,以阻止这些 IP 地址的请求。

    • 请求速率限制:WAF 可以限制特定 IP 地址或客户端在给定时间段内发出的请求数量,从而防止爬虫对您的 Web 应用程序发起过多的请求。通过设置合理的速率限制,可以在不影响正常用户访问的情况下,抵御恶意爬虫的攻击。

    • 请求头分析:WAF 可以分析 HTTP 请求头中的信息(如 User-Agent、Referer 等),以识别和阻止恶意爬虫。恶意爬虫通常使用特定的 User-Agent 字符串或发送不包含 Referer 的请求。您可以根据这些特征创建 WAF 规则,以阻止这些请求。

    • 请求异常检测:WAF 可以检测到异常请求,如请求频率异常、请求路径异常或请求参数异常等。一旦检测到异常请求,WAF 可以采取相应的措施,如阻止请求、要求输入验证码或增加请求延迟等。

    • 自定义 WAF 规则:咱们可以根据 Web 应用程序和业务需求创建自定义 WAF 规则,以更有效地识别和阻止恶意爬虫。例如,咱们可以创建规则来检测特定的攻击模式、请求路径或查询参数等。

    • 机器学习和行为分析:一些高级的 WAF 解决方案采用了机器学习和行为分析技术,以更准确地识别恶意爬虫。通过分析大量的请求数据,机器学习模型可以自动识别异常行为并更新 WAF 规则,从而更有效地阻止恶意爬虫。

    • 集成第三方服务:WAF 可以与其他安全服务和解决方案集成,以提高对恶意爬虫的防护能力。例如,您可以集成 IP 信誉数据库、威胁情报平台或验证码服务等,以提高 WAF 的效果。

WAF 的策略和我们前面讲的策略区别不大,只不过依赖于其背后的研发能力、资源和大样本量,能够发现更多的异常情况,有更多的策略和方法来识别,并且只需要投入少量的研发人力做自定义规则配置。

4 更有挑战的爬虫

爬虫也是在不断演化和发展的,现在的爬虫技术面临的问题或研究的方向可能有如下的一些:

  • 智能爬虫:随着网页结构和内容的日益复杂,智能爬虫技术成为一个研究热点。智能爬虫可以自动识别网页内容,理解结构化和非结构化数据,以更高效和准确地获取有价值的信息。这里是否可以结合最近的大模型来做一些工作?

  • 反爬虫策略和反反爬虫技术:许多网站采用反爬虫策略防止数据被抓取。研究者关注如何在尊重网站隐私和合规的前提下,开发更有效的反反爬虫技术,实现对网页内容的友好抓取。

  • 增量爬取和实时抓取:随着互联网信息的快速更新,增量爬取和实时抓取成为爬虫研究的重要方向。研究者试图通过优化爬取策略、调度算法、抓取频率等,实现更高效的增量爬取和实时抓取。

  • 分布式爬虫和大规模数据抓取:为应对大规模数据抓取的挑战,研究者关注分布式爬虫技术的优化和发展。分布式爬虫可以在多台计算机上并行运行,提高抓取速度和效率,降低单点故障的风险。

  • 深度网络爬虫:深度网络爬虫是指能够抓取隐藏在表单、登录、动态内容等复杂场景下的数据。研究者关注如何使用机器学习、自然语言处理等技术,提高深度网络爬虫的抓取能力和准确性。

  • 语义爬虫:语义爬虫关注如何从网页中自动抽取结构化数据和语义信息。通过使用知识图谱、本体建模等技术,语义爬虫可以更好地理解和表示网页内容,为语义搜索、智能问答等应用提供支持。

  • 针对特定领域的爬虫研究:不同领域的网站具有特定的结构和内容特征。研究者关注如何针对特定领域(如电子商务、社交媒体、学术研究等)设计和优化爬虫技术,以更好地满足不同场景下的数据抓取需求。

对于现在的搜索引擎来说,这些应该都是在一定程度上解决了的问题,或者正在解决和优化的问题,为了其业务的发展,他们致力于发展更高效、智能、可扩展的爬虫技术,以应对互联网信息获取和分析的日益复杂需求。

技术管理必备技能之管理好系统性风险

我们在平常工作中经常会听到有人说系统性风险,但系统性风险到底是个啥?

1 系统性风险是什么

1.1 定义

「系统性风险」是一个经济术语,主要指的是一种可能导致整个金融系统或市场瘫痪的风险或概率。它是从系统性风险的整体性出发,而不是单一机构或者单一行业的危机。这通常是由于金融体系中一个重要组成部分的失败,例如一个大银行或一系列银行的破产,这可能引发一种连锁反应,影响整个系统。

当突发性事件导致金融机构或市场失灵时,资金无法在市场中有效输送和配置,从而引起整个市场的崩溃。系统性风险不仅仅是经济价值损失,还会对实体经济造成严重影响,并导致大部分金融体系的信心丧失。

如 2008 年的全球金融危机。在这个危机中,许多大型金融机构由于负债过重和资产质量下降而陷入困境,这引发了对全球金融系统稳定性的广泛担忧。

系统性风险是监管机构、政策制定者和经济学家关注的主要问题,因为如果这种风险实现,可能会导致重大的经济损失和社会动荡。因此,他们会尝试制定和执行各种政策和法规,以减少系统性风险的可能性。

1.2 系统性风险和非系统性风险的差别

系统性风险作为一种具有更大影响面的风险,和非系统性风险有以下几个方面的区别:

1. 影响范围:系统性风险具有广泛的影响范围,不仅仅局限于特定个体或组织,而是可能波及整个系统、市场或行业。非系统性风险则相对较局部化,通常只对特定个体、组织或项目产生影响。

2. 相互关联性:系统性风险与系统中各个组成部分相互关联,其中一个部分的风险可能会传播、扩大或影响其他部分。非系统性风险通常是单个因素或事件的结果,并不涉及系统的相互依赖关系。

3. 复杂性和不确定性:系统性风险往往更加复杂和不确定,因为它们涉及到多个变量、因素和相互作用。非系统性风险可能更加可控和可预测,因为它们通常涉及特定事件或条件。

4. 长期影响:系统性风险可能具有长期影响,并可能导致持续的连锁反应和不良后果。非系统性风险通常具有较短期的影响,并且其影响通常更容易限定和控制。

5. 解决方法:由于系统性风险的复杂性和广泛影响,解决它们通常需要跨部门、跨组织或跨行业的合作和综合性措施。非系统性风险通常可以通过特定个体或组织的行动来解决。

系统性风险与非系统性风险在影响范围、相互关联性、复杂性和不确定性、长期影响以及解决方法等方面存在明显的区别。

2 技术上的系统性风险

类比经济上的系统性风险,对于一家企业的技术负责人来说,技术上的系统性风险也是一个需要重点关注的点。

2.1 定义

在技术上,系统性风险指的是一个技术系统或者一个技术生态系统中,某个关键组件或者某些关键组件出现故障、漏洞、安全问题等,导致整个系统或者生态系统无法正常运行,进而引发连锁反应和影响。

例如,在云计算生态系统中,某个云服务提供商的故障可能会影响到众多企业和用户的业务运营;在物联网领域,某个智能设备的漏洞可能会导致整个物联网网络遭受攻击和瘫痪。因此,在技术领域中,识别和防范系统性风险也是非常重要的。

2.2 系统性风险和非系统性风险的不同

和经济上的系统性风险一样,技术上的系统性风险和非系统性风险也有 5 个不同点:

1. 影响范围和规模:系统性风险通常具有广泛的影响范围和规模,涉及整个技术系统或架构。它可能涉及多个组件、子系统或关键基础设施,甚至可能跨越多个应用程序或服务。非系统性风险更倾向于局部范围,通常仅影响特定的组件、功能或子系统。

2. 相互关联和依赖:系统性风险涉及到技术系统中各个组件和环节之间的相互关联和依赖关系。它们可能因为一个组件或环节的故障或问题而影响其他组件或环节的正常运行。非系统性风险更倾向于独立存在,其影响相对较为局限,不会对其他组件或环节造成波及效应。

3. 复杂性和不确定性:系统性风险通常更加复杂和不确定,因为它们涉及到多个技术组件、系统交互、数据流和相关的外部因素。这使得系统性风险的评估、预测和解决变得更加困难。非系统性风险通常更容易辨识、评估和控制,因为其范围和影响相对较小。

4. 长期影响和连锁反应:系统性风险可能导致长期的影响和连锁反应,其中一个问题可能触发多个级联故障或影响多个关键业务流程。非系统性风险的影响通常更为短期和局限,不会引起大规模的系统级问题。

5. 解决方法和复杂度:由于系统性风险的复杂性和广泛影响,解决它们通常需要跨部门、跨团队的协作,涉及多个技术专长和领域的知识。这可能需要综合性的技术改进、架构调整或系统重构。非系统性风险通常可以通过单个组件或功能的修复或改进来解决,其处理相对较为简单和局部化。

3 系统性风险的传播

在技术系统中,系统性风险通过多种方式传播,包括以下几种:

  • 级联传播:级联传播是指一个组件的故障导致其他相关组件的故障,从而在整个系统中形成一种连锁反应。这种传播方式可能导致整个系统的瘫痪,影响业务的正常运行。例如,在一个分布式计算环境中,如果某个关键任务执行节点发生故障,可能导致其他依赖于该节点的任务无法正常执行,从而引发其他节点的过载或故障。这种风险传播会在整个分布式系统内形成级联效应,可能导致整个系统瘫痪。

  • 传染传播:传染传播是指一个系统的风险通过某种途径传播给其他系统,从而导致多个系统受到相同类型风险的影响。例如,WannaCry 勒索病毒,它通过网络传播,利用 Windows 系统的一个漏洞进行攻击。当某个系统被感染后,病毒会自动搜索其他具有相同漏洞的系统,并尝试感染它们。这种风险传播方式导致了全球范围内大量系统受到勒索病毒的影响。

  • 共同暴露:共同暴露是指多个系统由于共享相同的风险因素,而同时受到该风险因素的影响。例如,多个在线服务都依赖于一个第三方身份验证服务。如果这个第三方身份验证服务出现故障或者安全漏洞,那么所有依赖它的在线服务都将面临安全风险或者无法正常运行,因为它们共同暴露在同一个风险因素下。

  • 放大效应:放大效应是指一个较小的初始风险经过多次传播和叠加,最终导致整个系统面临较大的风险。例如,在社交网络中,一个虚假信息可能经过多次转发和传播,形成恶性舆论,对整个社会产生较大的负面影响。

在技术系统中,了解这些传播方式和机制对于有效管理技术风险至关重要。

4 系统性风险的来源

系统性风险的由来可以追溯到技术系统的复杂性和相互依赖性。当一个技术系统由多个组件、流程和环节组成时,它们之间存在着相互依赖和相互作用。这种相互依赖性使得一个组件或环节的故障或问题可能会影响整个系统的运行和稳定性。

以下是一些常见的系统性风险的来源:

  • 复杂性和交互作用:技术系统的复杂性和各组件之间的交互作用可能导致系统性风险的出现。当系统变得越来越复杂,组件之间的相互依赖性增加,可能出现不可预见的问题和故障。例如,一个庞大的分布式系统可能由多个模块和子系统组成,彼此之间的相互作用可能导致系统范围的故障,如性能下降或数据不一致。

  • 外部环境因素:外部环境因素也是技术系统性风险的重要来源。例如,技术系统可能受到恶劣天气、自然灾害(如山洪地震等导致光纤断了)、供应链中断或恶意攻击等外部因素的影响。这些因素可能导致系统中断、数据丢失、安全漏洞暴露等问题。例如,一家电子商务平台可能受到网络攻击,导致用户信息泄露或交易中断。

  • 人为错误和疏忽:技术系统性风险也可能源自人为错误和疏忽。人员的操作失误、编码错误、配置错误或安全意识薄弱等问题都可能导致系统故障或数据泄露。例如,一个开发人员可能在代码中引入漏洞,导致系统容易受到攻击。

  • 技术演进和更新:技术的演进和系统的更新也可能引入系统性风险。当引入新的技术、框架或库时,可能存在兼容性问题或未知的缺陷。例如,将系统从一个版本升级到另一个版本时,可能出现功能不兼容、新增的安全漏洞或数据不一致的问题等。

  • 依赖供应商和第三方:技术系统通常会依赖外部供应商或第三方服务。这种依赖性可能带来风险。例如,如果一个关键供应商无法按时提供所需的硬件设备,可能导致项目延期或无法正常运作。另外,如果一个 CDN 第三方服务提供商的服务出现故障,可能会影响到技术系统的正常运行。

以上是一些常见的技术系统性风险的来源示例。在技术管理中,了解和识别这些来源是非常重要的,以便采取相应的措施来减轻和管理系统性风险的影响。

5 管理好系统性风险的意义

聊了这么多术语类的东西,看一下对于一个技术管理者来说,管理好系统性风险到底有什么用,有什么收益。这里我们从技术管理和技术团队,以及业务的角度来看。

5.1 技术管理上的意义

从技术管理和技术团队的角度来看,管理好技术上的系统性风险具有以下意义:

1. 保障系统的稳定性和可靠性:系统性风险管理可以帮助确保技术系统的稳定性和可靠性,减少系统故障和服务中断的可能性。这有助于降低业务中断的风险,提高技术系统的可用性和持续性,保障业务的正常运行。

2. 提高技术投资的回报率:有效管理系统性风险可以降低技术投资的风险并提高回报率。通过规避潜在的系统性风险,可以减少因系统故障或不稳定性而造成的额外成本和资源浪费,提高技术投资的效益和投资回报。

3. 增强技术管理者决策能力:系统性风险管理使技术管理者能够更全面地了解和评估技术系统的风险情况。这有助于他们做出明智的决策,选择合适的措施来降低风险,并确定优先级,以使资源和精力能够最大程度地应对最重要的风险。

4. 提高团队效率:通过管理系统性风险,技术管理者可以减少系统故障和问题的发生,从而减少紧急修复和事后处理的工作量。这使团队能够更加专注于战略性的工作,提高工作效率和生产力。

5. 增加业务可信度:有效管理系统性风险可以提高技术系统的可靠性和稳定性,增加业务的可信度。这有助于提高内部和外部利益相关者对技术部门的信任,加强与其他部门的合作和协调,为企业的可持续发展和成长奠定基础。

6. 促进技术创新和发展:管理好系统性风险有助于为技术管理者提供稳定的技术基础,支持技术创新和发展。他们可以更好地专注于推动新技术的应用、优化现有技术架构和流程,为业务增长提供技术支持和竞争优势。

5.2 业务价值上的意义

从业务价值的角度来看,管理好技术上的系统性风险具有以下意义:

1. 提高效率和生产力:通过管理系统性风险,技术系统可以更加稳定和可靠地运行,减少系统故障和问题的发生,从而减少因为系统问题导致的客诉、修复、沟通等成本。这有助于提高业务的效率和生产力,节省时间和资源,并降低运营成本。

2. 支持业务增长和扩展:有效的系统性风险管理可以为业务提供可靠的技术基础,支持业务的增长和扩展。通过降低系统故障和数据泄露的风险,技术管理者可以为业务提供稳定的平台,支持业务的创新、市场拓展和新产品的推出。

3. 支持业务创新和竞争优势:系统性风险管理为技术团队提供稳定的技术基础,支持业务的创新和发展。通过降低系统性风险,技术团队能够更好地专注于业务创新、新产品开发和市场敏捷性,从而获得竞争优势。

4. 提升用户体验和满意度:系统性风险管理有助于提供稳定、安全和高性能的技术系统,提升用户体验和满意度。用户倾向于选择那些能够提供稳定服务、快速响应和数据安全的产品或服务,有效的系统性风险管理可以增强用户对技术产品或服务的信任和满意度。

5. 降低损失和风险:有效的系统性风险管理有助于降低业务面临的潜在损失和风险。通过识别和管理系统中的风险,可以减少数据泄露、安全漏洞和技术故障所带来的损失,并降低法律诉讼和声誉损害的风险。

6. 提升客户信任和忠诚度:通过管理系统性风险,技术管理者可以建立客户信任和忠诚度。稳定、安全和可靠的技术系统能够增强客户对企业的信心,提高客户满意度和保持客户的长期合作关系。

可以看到如果能管理好系统性的风险,对于技术组织,对于技术管理者,对于业务和业务价值来说,都是一件非常好的事情。从生产效率的提升,到业务稳定性,到对成本的减少以及客户成功都是极好的。

那么如何管理系统性风险呢?

6 如何管理系统性风险

6.1 风险模型

风险模型是风险管理的第一步:理解系统中已有的风险,识别、标记并对已知的风险排列优先级,最终形成一张包含了系统所有已知风险的当前状态的表格。这就是我们所说的风险模型。

建立风险模型的过程是识别风险的过程,在这个过程中我们需要识别出系统中已有的风险,并对其进行分析,标记出优先级、梳理当前状态和历史情况。

风险模型构建过程中需要考虑模型的作用范围,是公司级的,团队级的,项目组的,还是服务级的。

对于一个小公司,可以是公司级的,对于大型一些的公司,可以考虑团队或项目级的。

风险模型至少包括以下一些方面:

  • 严重性/可能性:高中低,先评估严重性,再评估可能性
  • 风险缓和计划:可以使用的或者正在使用的用来降低该风险严重性或者可能性的风险缓和措施。
  • 监控:对该风险的发生是否进行了监控,如果监控了说明监控的指标,如果没有监控,说明原因,以及达成监控目标的原因,最终所有的风险应该是要监控起来的。
  • 状态:活跃 / 已缓和 /  正在修复 / 已解决
  • 历史风险情况:该风险在历史上有没有发生过,什么时候,发生频率等
  • 风险缓和计划:当我们制定风险缓和计划的时候,需要从严重性最高的项开始,缓和风险不是为了消除,而是为了降低风险的严重性和可能性。并不是每一个风险都要制订风险缓和计划。
  • 风险预案:当风险发生的时候,我们可以采取的措施

除此之外,还包括一些常规的添加时间,ID,负责人之类的

6.2 识别和评估系统性风险

识别系统性风险是一个关键的步骤,它需要深入分析和理解组织或项目所面临的技术环境和相关因素。以下是一些常见的技术上的系统性风险示例:

  • 依赖单点故障:系统中存在关键组件、设备或服务的单点故障,一旦出现故障,将导致整个系统或业务的中断。例如,网络设备的故障、云服务提供商的服务中断等。

  • 服务间的强弱依赖:如果系统中的服务之间存在强依赖关系,一旦其中一个服务发生故障或不可用,可能会导致整个系统的故障或性能下降。

  • 内部和外部/离线和在线业务的相互影响:系统中的离线和在线业务之间存在相互依赖关系,如果其中一个业务出现问题,可能会影响其他业务的正常运行。

  • 安全漏洞和数据泄露:系统存在安全漏洞或不当的安全措施,可能导致黑客攻击、数据泄露或信息安全问题。这可能对组织的声誉、客户信任和合规性产生严重影响。

  • 技术过时和不可维护:系统采用的技术或架构已过时,不再受支持或难以维护。这可能导致系统难以升级、演进和修复漏洞,增加系统故障和风险的概率。

  • 第三方供应商问题:系统依赖于第三方供应商提供的技术、服务或组件,但供应商出现问题,无法提供所需的支持、维护或升级。这可能导致系统中断、服务质量下降或业务受阻。

  • 文档或流程的问题,如没有文档,没有沉淀,只在某些人的脑袋里面:如果系统或流程存在缺乏文档、知识沉淀或依赖于个别人员的情况,可能会造成知识孤立和团队合作的问题,影响系统的可维护性和可扩展性。

  • 数据完整性和一致性问题:数据在系统内部或与其他系统之间的传输和处理过程中,可能遭受损坏、丢失或篡改,导致数据完整性和一致性问题。这可能对决策和业务流程产生负面影响。

  • 大规模系统故障:系统由多个组件、服务或子系统组成,如果其中一个组件出现故障,可能导致整个系统的大规模故障。例如,云服务提供商的故障、硬件故障等。

  • 法规和合规风险:系统必须符合特定的法规要求和合规标准,如果系统无法满足这些要求,将面临法律风险、罚款或业务停摆的风险。

  • 服务容量的不足:系统中的某些服务容量可能不足以应对高负载或峰值流量,这可能导致性能下降、响应时间延迟或系统崩溃。

  • 基建发布或扩容等发布操作会影响业务的情况:系统基础设施的发布操作,如服务器扩容、网络配置变更等,可能会对业务产生影响,例如服务中断或性能下降。

  • 线上配置/环境/网络等的变更:对线上系统的配置、环境或网络进行变更时,可能会引入风险,如配置错误、网络中断等,导致系统故障或不稳定。

  • 安全问题:系统面临的安全漏洞、攻击风险或数据泄露等问题可能对业务运行和用户数据安全产生重大影响。

要识别系统性风险,可以采取以下方法:

  • 审查历史数据和经验教训,了解以前的系统故障和问题。
  • 进行风险评估和风险工作坊,与团队一起识别潜在的系统性风险。
  • 与各个部门和团队合作,收集反馈和洞察,了解系统的弱点和关键风险点。
  • 借鉴行业标准和最佳实践,了解常见的系统性风险和应对方法。
  • 定期进行系统评估和安全审查,以发现潜在的系统性风险。
  • 通过识别系统性风险,组织可以有针对性地采取措施来降低风险,并确保系统的稳定性、安全性和可靠性。

6.3 风险治理

风险治理不是一个一蹴而就的事情,需要持续的来做,需要从组织,流程机制,系统工具和文化层面进行治理。

  • 组织层面:一个事情或方案想要比较好的落地,一定是有一个完整的组织来承接,至少需要有 PACE 的逻辑来支撑,明确分工。
  • 流程层面:流程层面至少要建立明确的沟通机制,如周报、例会等,同时还需要建议风险控制流程,明确制定风险识别、评估、控制和监测的标准流程,确保风险管理工作的有序进行。
  • 系统工具:理想中是希望有建立统一的风险管理信息系统,用于收集、整理和分析风险相关信息。甚至可以利用数据分析和人工智能,对潜在风险进行预测和预警,提高风险应对的时效性。简化版可以通过群、Jira 系统等项目管理工具来达到前期的系统工具落地的程度。
  • 文化层面:通过宣导、洞察、关注、固化、奖励等方式引导大家对于风险的关注,将风险意识融入日常工作中,提高大家对风险的认知,强化风险意识。

以上的组织、流程、系统工具和文化层面的治理都是为了更好的管理风险而存在。在这个过程中,风险模型是抓手,通过不停的识别风险,消除风险,缓和风险,不断提高系统变好的可能,以最终达到治理系统性风险的目标。

风险评估和应对规划是一个反复重复的过程,不停的迭代风险模型,识别出新的风险。

当风险模型构建完成后,我们需要定期逐个风险拉出来 review 一次,我们可以问我们自己如下的一些问题:

  • 与上次回顾相比,风险有更严重吗?可能性有更高吗?
  • 接下来会排专人来解决某些风险吗?是否应该安排?
  • 上次回顾安排的事项落实了,对应的风险情况如何,是否有更新到风险模型中?

问完问题,我们可能需要有一些实际的行动:

  • 评估是否有新的风险;
  • 删除旧的风险:如果风险已经解决了,可以归档;
  • 评估原有风险模型中的每一项风险,评估其严重性和可能性,如果有变动,对其进行更新;
  • 对于不同的优先级的风险区别对待。

以上的回顾操作我们在上面建设的某个管理系统来承载,并且这个管理系统是带有通知等功能,以更好的将风险相关的信息周知出去,如 Jira 系统。

7 小结

系统性风险是一个动态的概念,持续反复的监测和评估至关重要。定期审查系统的运行情况、漏洞和潜在风险,确保及时发现和解决问题,以减少系统性风险。

如何不依着惯性做事

文章从一个小和尚的故事开始。

在一个古老的寺庙里,住着一位小和尚,每天的任务就是从山下的小溪里挑水到山上的寺庙。小和尚每天日出而作,日落而息,用他的小木桶,一次又一次地从山下挑水到山上,生活在这种重复中过去了好多年。

有一天,小和尚遇到了一个问题,随着寺庙里的弟子越来越多,他一个人挑水已经无法满足大家的需求了。他感到非常焦虑,但加快了挑水的速度,每天几乎都精疲力尽。然而,无论他多么努力,总是无法满足大家的需求。

这一天老和尚问小和尚:「你为什么不想想看,有没有更好的方法来解决这个问题呢?」 小和尚一愣,他才意识到,他一直都是在埋头做事,从未想过有其他的方法。

于是,小和尚开始思考,他观察发现,从山上到山下有一条小溪,而这条小溪的水源就是他每天去挑水的地方。他萌生了一个念头,为何不直接将山下的水引到山上来呢?

于是,小和尚开始行动,他用竹子和石头制作了一套简单的引水系统,经过数天的努力,他成功地将水从山下引到了山上的寺庙。从此,他不再需要每天辛苦地挑水,寺庙里的水源也变得更加充足。

这个 AI 写的小故事虽然有点浅,但也告诉我们,在生活和工作中,往往会习惯性地使用过去的方法和思维模式,而忽视了其他可能的解决方案。只有当我们打破惯性,从新的角度去思考问题,才能找到更好的解决方法,实现真正的创新和突破。

这也是我们今天要聊的「如何不依着惯性做事」。

1 定义

咱们先从定义开始。

  • 惯性:惯性原本是物理学中的一个概念,指的是物体在没有受到外力作用时,静止的物体保持静止,运动的物体保持匀速直线运动的状态。在这里,我们将惯性的概念引申到思维和行为上,表示一种习惯性的思考和行动方式,倾向于维持现状,抵制改变。
  • 思维惯性:思维惯性是指个体在思考问题和决策过程中,容易受到过去经验和认知的影响,导致思维和判断受限,难以接受新观念和变革。这种现象使得人们在面对新旧问题和挑战时,容易陷入固定思维模式,缺乏创新和灵活性。
  • 依着惯性做事:依着惯性做事是指在工作和生活中,人们习惯于沿用过去的方式和方法,对新的观念和变革持保守态度,不愿意主动寻求改进和创新。这种行为方式往往会导致效率低下、缺乏竞争力,甚至无法适应不断变化的环境。

2 惯性的好与坏

辩证的看,依着惯性做事有好有坏。在某些情况下,惯性思维和行为可能有利于保持稳定和效率。然而,在其他情况下,过于依赖惯性可能会限制创新和发展。我们需要客观地评价惯性思维对于特定情境的影响,以便在恰当的时机采取适当的行动。

优点如下:

  • 保持稳定:惯性思维和行为有助于维持现状,确保日常工作的稳定进行。在某些情况下,这可能有助于降低风险和不确定性。
  • 提高效率:对于一些已经经过优化的任务和流程,遵循惯例可能会提高工作效率。在这些情况下,尝试新的方法可能会浪费时间和资源。
  • 简化决策:依赖惯性可以简化决策过程,减少思考和计划的时间。这在面临紧迫的截止日期或资源有限的情况下可能有一定优势。

缺点如下:

  • 限制创新:过度依赖惯性会阻碍创新和改进,导致陈旧的观念和方法得以延续。这可能会让我们错过新的机遇和发展潜力。
  • 降低适应能力:在不断变化的市场和技术环境中,过于依赖惯性可能导致我们在应对新挑战时缺乏灵活性和适应能力。
  • 忽视潜在问题:依赖惯性做事可能让我们忽视潜在的问题和风险。在这些情况下,持续改进和调整可能更加重要。

我们需要在不同的情境下权衡惯性思维和行为的利弊。在某些情况下,遵循惯例可能是合理的选择;而在其他情况下,我们需要挑战惯性,寻求创新和改进。关键在于识别何时应该保持现状,何时应该追求变革。

保持惯性大多数人可以做到,今天我们要聊的是如何打破惯性,不依着惯性做事,因为能够用打破惯性,突破常规的人毕竟是少数。

3 如何不依着惯性做事

在个人的认知中,有一个原理和一个架构能在一定程度上打破惯性。他们是「第一性原理」和「四项行动架构」。

3.1 第一性原理

3.1.1 第一性原理简介

第一性原理是指将问题拆解到最基本的事实或原则,然后从这些基本事实出发来重新构建问题的解决方案。在解决问题和制定决策时,从第一性原理出发,有助于深入挖掘问题的本质,避免受到惯性思维的限制。

3.1.2 如何运用第一性原理

运用第一性原理规避惯性思维可以采用以下的 4 个步骤:

  1. 拆解问题:将问题拆解到最基本的事实或原则,剥离掉惯性思维带来的先入为主的观念和偏见。
  2. 重新构建解决方案:基于拆解后的基本事实,从零开始思考问题的解决方案,避免受到过往经验和传统观念的束缚。
  3. 鼓励创新:以第一性原理为指导,积极探索新的解决方案,提高创新能力和应对变革的能力。
  4. 实事求是:第一性原理要求我们在思考问题时,始终以事实为依据,避免陷入惯性思维的主观判断。

3.1.3 应用实例

以输出质量报告为例,如何应用第一性原理呢?

当我们谈论编写质量报告时,通常会按照固定的模板或流程进行,这是惯性思维的体现。然而,当我们想要打破惯性,提升报告的质量和有效性时,我们可以尝试以下策略:

  1. 反思报告的目标:通常,我们按照惯性写报告,可能因为这是例行公事,或者是因为上级要求。但是,如果我们从第一性原理思考,报告的真正目标是什么?是传达信息,是指导行动,还是促进决策?明确目标后,我们可能需要对报告的结构、内容甚至呈现方式进行改变,以更好地达成目标。

  2. 重新审视数据和信息:在收集和呈现数据时,我们往往依赖于固定的方式和工具,如表格、图表等。但是,这样真的能有效地传达信息吗?如果我们打破惯性,尝试新的数据分析和可视化工具,可能会发现更深入、更直观的洞察,从而更好地支持报告的目标。

  3. 采用迭代的方式编写报告:依照惯性,我们可能会一次性完成报告的编写,然后提交。但是,如果我们采取迭代的方式,先编写一个初稿,然后进行反馈、修订,再反馈、修订,这样可能会花费更多的时间,但最终的报告可能会更准确、更有洞见。

  4. 引入跨领域的视角:我们通常会从自己的专业角度编写报告,但是如果我们引入其他领域的视角,比如用户体验、商业模式等,可能会发现一些意想不到的洞见,这也是打破惯性的一种方式。

3.2 四项行动架构

金教授和莫博涅教授提出的「四项行动架构」是一个用于挑战现有商业模式和行业战略逻辑的工具。其最开始出处是蓝海战略,来自《蓝海战略》一书,它通过改变现有的商业模式来区分与竞争对手的模式,从而创造出新的行业。

3.2.1 四项行动架构简介

四项行动架构主要包含以下四个关键问题,通过这四个问题挑战一个行业的战略逻辑和现行的商业模式:

  1. 删除:在我们的产品、服务或流程中,哪些被视为理所当然的元素其实可以删除?
  2. 减少:哪些元素我们可以大幅度削减,使其低于行业标准?
  3. 提升:哪些元素我们可以大幅度提升,使其高于行业标准?
  4. 创新:哪些从未在我们的产品、服务或流程中出现过的元素值得创新引入?

3.2.2 四项行动架构应用实例

在带技术团队过程中,我们也可以应用「四项行动架构」来打破惯性,以挑战技术团队的做事逻辑和现行的工作模式:

  1. 删除:技术团队中哪些看起来理所当然的要素应该被删除?
    • 可以考虑减少过多的会议和报告,将精力集中在实际的技术开发和创新上。
    • 去除过时的技术和方法,避免拖慢团队的发展速度。
    • 削减在某些环节的过度管理,让团队成员有更多自主权和创新空间。

如取消每周的固定例会,改为根据项目进度和团队需求灵活安排讨论和分享会。

  1. 消减:哪些要素应该被大幅削减到行业标准之下?
    • 减少冗余的代码审查和质量控制流程,以提高团队的工作效率。
    • 精简项目管理流程,减少不必要的文档和审批环节。

如将代码审查流程简化为一次轮流审查,而不是多次审查。

  1. 提升:哪些要素应该大幅提升到行业标准之上?
    • 加大对新技术和方法的投入,以求在行业中领先地位。
    • 提高团队成员的技能培训和成长机会,以便团队更好地适应市场变化。

如为团队成员提供更多的技术培训和参加行业大会的机会,以便他们能跟上技术的最新发展。

  1. 创造:哪些行业中从未提供的要素是应该被创造出来的?
    • 开发独特的技术解决方案,为客户创造更大的价值。
    • 创造新的合作模式,跨部门和跨行业合作,以实现技术的广泛应用。

如开发一款能够实时分析用户行为的工具,以便为客户提供更精准的个性化推荐服务。

通过运用这个四项行动架构,技术团队可以挑战现有的做事逻辑和工作模式,实现价值创新。这将有助于提高团队的竞争力,为公司创造更大的价值。

4 应用在技术团队管理

4.1 应用方法:「解脱」

打破惯性的常用方法我称之为「解脱」,从一个惯性中解脱出来。 解脱看到背后的真实,透过真实,把全部的惯性打破,也就自然而然地走出来了。

一般我们会基于意识到问题、解决问题和透过真实来不依着惯性做事,我们可以遵循以下步骤:

  1. 意识到问题:在日常工作中,关注自己的行为和思维模式。观察是否存在惯性思维,例如对新观念的排斥、抵制变革或过于依赖过去的经验。当我们意识到这些问题时,就迈出了第一步。
  2. 深入了解问题:分析惯性思维的来源,可能来自个人经验、团队文化或行业惯例。了解问题背后的原因有助于我们制定更有效的解决方案。
  3. 寻求解决方案:针对发现的问题,积极寻求创新性和实用性的解决方案。这可能包括改变思维模式、学习新技能、尝试新方法或调整工作流程。
  4. 解脱:在实践新方案的过程中,逐步摆脱惯性思维的束缚。这可能需要时间和努力,但随着不断的尝试和改进,我们会越来越不依赖惯性。
  5. 看到背后的真实:透过表面现象,关注背后的实质和深层次需求。这有助于我们更好地理解问题,找到更有效的解决方案。
  6. 持续改进:在摆脱惯性思维的过程中,保持对问题的关注和反思。不断学习和成长,培养开放、创新和挑战的心态。

通过以上六个步骤,我们可以逐渐摆脱惯性思维,实现真正的自我解脱。在这个过程中,我们需要保持耐心和毅力,不断努力提升自己的认知水平和能力,以达到更好的工作成果。

4.2 应用实践

我们以常见的问题解决方式和团队沟通为例看一下如何应用「解脱」

4.2.1 问题解决方式

  1. 意识到问题:观察团队成员在解决问题时是否习惯于采用已知的方法和经验,而忽视了其他可能的解决方案。
  2. 深入了解问题:可能是因为团队文化倾向于避免冒险,或者团队成员没有足够的技能或知识去尝试新的方法。
  3. 寻求解决方案:可以通过培训和学习,提升团队成员的技能和知识,鼓励他们在解决问题时尝试多种可能的解决方案。
  4. 解脱:在实践中,尝试新的方法和技术,逐步摆脱对过去经验的依赖。
  5. 看到背后的真实:意识到问题解决的本质是创新和改进,而不仅仅是应用已知的方法。
  6. 持续改进:在实践中,不断反思和改进,培养开放和创新的心态。

4.2.2 团队沟通

  1. 意识到问题:注意到团队成员是否在沟通中经常遇到障碍,比如信息传递不畅、沟通效率低下等。
  2. 深入了解问题:可能是因为沟通方式过于传统,比如过度依赖会议,而忽视了其他可能的沟通方式。
  3. 寻求解决方案:可以尝试新的沟通方式,比如异步沟通、立即反馈、跨部门沟通等。
  4. 解脱:在实践中,尝试新的沟通方式,逐步摆脱传统的沟通模式。
  5. 看到背后的真实:理解到沟通的本质是传递和理解信息,而不是遵循某种固定的方式。
  6. 持续改进:在实践中,不断反思和改进沟通方式,提高沟通的效率和效果。

这样的思考和实践,可以应用到技术团队管理的所有方面,包括任务分配、技术选型、项目管理等。关键是要有意识地发现和打破惯性,以创新和改进的心态去面对问题和挑战。

5 小结

小结一下,在上面的文章中我们探讨了惯性思维的利弊,尤其强调了依赖惯性思维可能对创新和发展产生限制。提出两种打破惯性思维的方法:「第一性原理」和「四项行动架构」。第一性原理鼓励我们将问题拆解到最基本的事实或原则,然后从这些基本事实出发重新构建解决方案;而四项行动架构则挑战现有商业模式和行业战略逻辑,包括”删除”、”减少”、”提升”和”创新”四个关键问题。最后详细阐述了如何在技术团队管理中应用这些方法,通过一个被称为「解脱」的过程来摆脱惯性思维的束缚。