<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>潘锦的空间 &#187; 研发效能</title>
	<atom:link href="https://www.phppan.com/tag/%e7%a0%94%e5%8f%91%e6%95%88%e8%83%bd/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.phppan.com</link>
	<description>SaaS SaaS架构 团队管理 技术管理 技术架构 PHP 内核 扩展 项目管理</description>
	<lastBuildDate>Sat, 04 Apr 2026 01:19:58 +0000</lastBuildDate>
	<language>zh-CN</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=3.9.40</generator>
	<item>
		<title>Cursor AI 编程让我的编码效率提升了 10 倍</title>
		<link>https://www.phppan.com/2025/01/cursor-ai-programming-has-increased-my-coding-efficiency-by-10-times/</link>
		<comments>https://www.phppan.com/2025/01/cursor-ai-programming-has-increased-my-coding-efficiency-by-10-times/#comments</comments>
		<pubDate>Sat, 18 Jan 2025 11:57:43 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[架构和远方]]></category>
		<category><![CDATA[AI 编程]]></category>
		<category><![CDATA[LLM]]></category>
		<category><![CDATA[研发效能]]></category>

		<guid isPermaLink="false">https://www.phppan.com/?p=2322</guid>
		<description><![CDATA[从 2022 年 6 月底正式上线的 GitHub Copilot 开始，AI 编程逐步开始进入工作的环境中， [&#8230;]]]></description>
				<content:encoded><![CDATA[<section id="nice" style="color: #000000;" data-tool="mdnice编辑器" data-website="https://www.mdnice.com">
<section id="nice" data-tool="mdnice编辑器" data-website="https://www.mdnice.com">
<p data-tool="mdnice编辑器">从 2022 年 6 月底正式上线的 GitHub Copilot 开始，AI 编程逐步开始进入工作的环境中，开始成为一个真正的 Copilot。据当时微软的评测报告以及当时公司内部使用的问卷反馈调查显示提升效率大概在 10% ～ 30%。</p>
<p data-tool="mdnice编辑器">这一数据在当时已经令人惊叹，但随着大语言模型的飞速发展，以及 Cursor、Windsurf 等新一代 AI 编程工具以更直接的 IDE 方式的加入，效率提升的天花板被彻底打破。</p>
<p data-tool="mdnice编辑器">从个人体感来说，部分场景有<strong style="color: #0e88eb;">超过 10 倍</strong>的提升，特别是通用类功能实现，如爬虫、CRUD 功能、脚本类处理等。但并不等于以前一个项目要 10 个人，现在只需要 1 个人了，毕竟编码在整个项目过程中只占用的时间资源的一部分。</p>
<p data-tool="mdnice编辑器">而且，这里的提升并不是说给 AI 说一句话：「给我完成 XXX 功能」，就能直接提效 10 倍 ，当前阶段，我们还需要有一些使用技巧才能较好的使用 AI 编程，让 AI 编程成为一个实实在在的助手。以下为过程中的一些注意事项和一些可能遇到的问题。</p>
<h1 data-tool="mdnice编辑器"><span class="content" style="color: #0e8aeb;">1. 使用 AI 编程的注意事项</span></h1>
<h2 data-tool="mdnice编辑器"><span class="content" style="color: #0e8aeb;">1.1 不要求一次性完成所有的工作</span></h2>
<p data-tool="mdnice编辑器">AI 编程工具暂时并不擅长处理复杂且模糊的任务，而是更适合解决清晰、具体的小问题。因此，任务分解是高效使用 AI 编程的第一步。</p>
<p data-tool="mdnice编辑器"><strong style="color: #0e88eb;">如何实现？</strong></p>
<ul data-tool="mdnice编辑器">
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">需求分解</strong>：将大任务拆解为小模块，可以人工分解，也可以让 AI 协助分解。例如：</p>
<ul>
<li>
<section style="color: #010101;">开发一个后端服务时，可以分解为：数据库表设计、路由框架搭建、业务逻辑实现、测试用例编写。</section>
</li>
</ul>
</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">框架优先</strong>：先让 AI 生成代码框架，例如接口的骨架代码、类和方法的定义，然后再逐步实现具体功能。</section>
</li>
</ul>
<p data-tool="mdnice编辑器">以一个简单的任务管理系统为例，你直接告诉 Cursor 「帮我实现任务管理功能」，他会提示你给出更多的输入，比如所要使用的技术栈等等，如果我们输入：请用 python 语言作为后端，vue 作为前端帮我实现任务管理功能。他会给出完整的看起来可以使用的架子，实际不太能用。</p>
<p data-tool="mdnice编辑器">如果是在一个已有项目的基础上增加模块，以 CRUD 管理任务来说，较好的做法是：</p>
<ol data-tool="mdnice编辑器">
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">分解需求</strong>：</p>
<ul>
<li>
<section style="color: #010101;">第一步：设计任务表（表结构设计），也是明确核心需求的过程；</section>
</li>
<li>
<section style="color: #010101;">第二步：实现核心的接口和界面；</section>
</li>
<li>
<section style="color: #010101;">第三步：添加权限管理，一般是有权限体系，可以给参考或者表结构之类的实现；</section>
</li>
</ul>
</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">逐步实现</strong>：</p>
<ul>
<li>
<section style="color: #010101;">先让 AI 生成数据库表的定义，明确需求及约束；</section>
</li>
<li>
<section style="color: #010101;">再生成 API 的路由框架。</section>
</li>
<li>
<section style="color: #010101;">最后逐一实现各个功能模块。</section>
</li>
<li>
<section style="color: #010101;">在各功能模块上再扩展其它的需求，如在任务添加的时候要调起弹性接口去完成任务等。</section>
</li>
</ul>
</section>
</li>
</ol>
<h2 data-tool="mdnice编辑器"><span class="content" style="color: #0e8aeb;">1.2 明确和细化需求</span></h2>
<p data-tool="mdnice编辑器">明确和细化需求和第一点有一些不同，这里所要表达的是我们在需求描述时要尽可能的明确和细致，以及需要有我们的转化和理解。</p>
<p data-tool="mdnice编辑器">当前阶段，我们用 AI 编程并不是把产品需求扔给 AI，而是我们思考过整个实现的过程，有自己的认知后让 AI 来做会更好，当然，这个思考的过程也可以让 AI 来辅助。</p>
<ul data-tool="mdnice编辑器">
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">明确需求的层级</strong></p>
<p>假设你需要实现一个用户登录功能，可以先从高层次的需求入手「实现用户登录功能」，然后逐步细化为：</p>
<ul>
<li>
<section style="color: #010101;">数据库中需要存储哪些信息？</section>
</li>
<li>
<section style="color: #010101;">前端需要提供哪些输入？有没有什么安全输入策略？</section>
</li>
<li>
<section style="color: #010101;">后端服务的接口设计是什么样的？格式是怎样的？返回码规范是怎样的？</section>
</li>
<li>
<section style="color: #010101;">需要哪些验证逻辑？使用 JWT 还是 Auth2.0？有哪些安全策略？</section>
</li>
</ul>
</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">细化到函数级别</strong></p>
<p>在某些情况下，有必要直接将需求分解到函数的输入输出、核心逻辑或算法。比如：</p>
<ul>
<li>
<section style="color: #010101;">函数应该接受哪些参数？</section>
</li>
<li>
<section style="color: #010101;">输出的结果应该是什么样的？是什么类型的数据结构？</section>
</li>
<li>
<section style="color: #010101;">核心逻辑是否需要特殊的算法优化？</section>
</li>
</ul>
</section>
</li>
</ul>
<p data-tool="mdnice编辑器">以上这个细化的过程也是个 AI 交互的过程，<strong style="color: #0e88eb;">从大到小，从整体到部分，逐步完成整个需求</strong>。</p>
<p data-tool="mdnice编辑器">在使用 AI 编程的过程中，确定需求并细化需求是最难，也是整个过程中最复杂的环节，因为它是对现实世界的建模。</p>
<p data-tool="mdnice编辑器">把产品需求没有歧义的描述出来，这个过程远没有很多人想象中那么简单。期待 AI 进一步进化后能优化这部分理解的工作。</p>
<h2 data-tool="mdnice编辑器"><span class="content" style="color: #0e8aeb;">1.3 善用 AI 的上下文记忆</span></h2>
<p data-tool="mdnice编辑器"><strong style="color: #0e88eb;">AI 编程的生成效果在很大程度上依赖于上下文信息</strong>。</p>
<p data-tool="mdnice编辑器">Cursor 支持上下文记忆功能，可以根据当前项目的代码结构或对话历史生成更精准的结果。并且对于已有代码的项目，提供示例代码给 Cursor 参考，可以帮助它更好地理解项目的整体风格、编码规范以及约定。</p>
<ul data-tool="mdnice编辑器">
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">参考已有代码</strong></p>
<p>比如，我们可以将公司内部的编码规约或项目约定通过已有代码的形式提供给 AI，这样生成的代码更符合项目需求，<strong style="color: #0e88eb;">减少后续调整的工作量</strong>。</p>
</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">让 AI 理解当前代码环境</strong></p>
<p>在和 Cursor 对话时，可以特别的指出关键代码片段（如数据模型、核心函数），这种方式是为了<strong style="color: #0e88eb;">规避 LLM 的上下文记忆的限制问题</strong>，突出当前要解决的问题和场景。</p>
</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">补充上下文</strong></p>
<p>如果项目中有复杂的业务逻辑或特定的技术约定，可以通过注释、文档或已有代码的形式向 AI 提供相关背景信息。这样，AI 生成的代码不仅能够「跑通」，还更贴近实际需求。如使用 Cursor 的 @ 符号，除了本地的代码、文档、还可以有多模态的图片、外部链接的文档，Web 网页等等。</p>
</section>
</li>
</ul>
<h1 data-tool="mdnice编辑器"><span class="content" style="color: #0e8aeb;">2. AI 编程使用中的问题及解决方案</span></h1>
<p data-tool="mdnice编辑器">在使用 AI 编程工具（如 Cursor、Windsurf 等）时，尽管其效率提升显著，但也有一些问题亟待解决。</p>
<h2 data-tool="mdnice编辑器"><span class="content" style="color: #0e8aeb;">2.1 额度不够了</span></h2>
<p data-tool="mdnice编辑器">以 Cursor 为例，即使在不大量使用的情况下，Pro 版本（如 GPT-4、GPT-4o、Claude 3.5 Sonnet 的高速请求）两周内就可能用完额度。高级模型的调用成本较高，尤其是当需要生成大量代码或反复调试时，消耗会非常快。</p>
<h3 data-tool="mdnice编辑器"><span class="content" style="color: #0e88eb;"><strong>解决方案：</strong></span></h3>
<ol data-tool="mdnice编辑器">
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">分工明确，优化工具使用场景</strong></p>
<ul>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">代码相关任务交给 Cursor</strong>：专注于代码生成、函数实现等任务，减少对 Cursor 的非核心调用。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">知识性问题交给 ChatGPT或其它大语言模型</strong>：对于纯知识性或逻辑性的问题，使用 ChatGPT 或其他不限量的模型（如 GPT-3.5 免费版本）来查询。</section>
</li>
</ul>
</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">分层实现代码</strong></p>
<ul>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">先写框架</strong>：在开发项目时，先用 Cursor 生成代码框架，明确主流程。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">逐步细化</strong>：将需求明确的函数（尤其是复杂的小块代码）交由 Cursor 实现，而非一次性生成庞大的代码段。</section>
</li>
</ul>
</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">结合其他无限制的大模型</strong></p>
<ul>
<li>
<section style="color: #010101;">对于通用型函数（如工具类代码、简单的逻辑实现），可以利用免费的语言模型完成。</section>
</li>
<li>
<section style="color: #010101;">配合使用多个编辑器（如 Windsurf 、Cursor、豆包），减少单一工具的使用频率。</section>
</li>
</ul>
</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">节约上下文消耗</strong></p>
<ul>
<li>
<section style="color: #010101;">避免在上下文中反复输入无关信息，尽量精简对话内容。</section>
</li>
<li>
<section style="color: #010101;">善用工具内的上下文管理功能，如 Cursor 提供的 <code style="color: #0e8aeb;">Add context</code> 或 <code style="color: #0e8aeb;">@</code> 引用功能，将关键信息外部化，减少重复输入。</section>
</li>
</ul>
</section>
</li>
</ol>
<p data-tool="mdnice编辑器">当然，对于不差钱的小主来说，可以忽略此问题。</p>
<h2 data-tool="mdnice编辑器"><span class="content" style="color: #0e8aeb;">2.2 上下文限制：会「失忆」</span></h2>
<p data-tool="mdnice编辑器">当前的 LLM 上下文窗口有限，当输入信息超出限制时，模型可能会「遗忘」之前的内容。这种「失忆」表现尤其明显，例如在多次会话后，最前面的一些关键信息可能会被遗忘，导致生成的代码出现不一致的问题。</p>
<h3 data-tool="mdnice编辑器"><span class="content" style="color: #0e88eb;"><strong>解决方案</strong></span></h3>
<ol data-tool="mdnice编辑器">
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">简要总结关键信息</strong></p>
<ul>
<li>
<section style="color: #010101;">当模型开始「失忆」时，可以总结项目的关键信息并重新输入。例如， 核心配置或表结构可以作为关键信息，在对话开始时就输入给 LLM，确保其随时可用。</section>
</li>
</ul>
</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">外部化核心信息</strong></p>
<ul>
<li>
<section style="color: #010101;">将一些不变的核心信息（如数据库表结构、配置文件、接口定义等）存储到单独的文件中。</section>
</li>
<li>
<section style="color: #010101;">在对话中通过 <code style="color: #0e8aeb;">@</code> 或 <code style="color: #0e8aeb;">Add context</code>，将这些文件动态添加到上下文中，避免重复输入。</section>
</li>
</ul>
</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">引用外部文档</strong></p>
<ul>
<li>
<section style="color: #010101;">将外部帮助文档、链接或者参考资源作为上下文的一部分添加到对话中。例如，直接粘贴代码库的 README 文件、API 文档链接等，可以帮助模型更好地理解当前任务。</section>
</li>
<li>
<section style="color: #010101;">Cursor 自身支持这些外部的引用，具体方法参见 Cursor 的帮助文档，探索上下文扩展功能。</section>
</li>
</ul>
</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">优化上下文使用策略</strong></p>
<ul>
<li>
<section style="color: #010101;">尽量减少对话中的无关内容（如闲聊或冗长描述）。</section>
</li>
<li>
<section style="color: #010101;">定期总结对话内容并清理上下文，确保关键信息占用优先位置。</section>
</li>
</ul>
</section>
</li>
</ol>
<h2 data-tool="mdnice编辑器"><span class="content" style="color: #0e8aeb;">2.3 修改代码混乱：会改乱代码</span></h2>
<p data-tool="mdnice编辑器">AI 工具在生成代码时，可能覆盖或修改原有代码，导致逻辑混乱，甚至出现功能性错误，一不小心原来能跑通的功能就不通了。这种情况常发生在对已有代码进行修改时，尤其是在多次修改的情况下。</p>
<h3 data-tool="mdnice编辑器"><span class="content" style="color: #0e88eb;">解决方案</span></h3>
<ol data-tool="mdnice编辑器">
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">结合版本控制工具</strong></p>
<ul>
<li>
<section style="color: #010101;">在完成每一阶段的明确功能后，及时使用 Git 提交代码，确保已有的工作成果被保存。</section>
</li>
<li>
<section style="color: #010101;">在尝试新的修改时，可以创建分支或临时提交，确保不影响主分支的代码完整性。</section>
</li>
</ul>
</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">分步引导 AI</strong></p>
<ul>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">避免一次性让 AI 修改大量代码</strong>，而是按功能模块逐步进行修改。例如，先让 AI 修改某个函数，再验证其效果，而不是直接让它大规模重构代码。</section>
</li>
</ul>
</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">生成新代码替代旧代码</strong></p>
<ul>
<li>
<section style="color: #010101;">在涉及复杂逻辑的修改时，建议让 AI 生成新的代码片段，而不是直接修改现有代码。我们可以手动选择将新代码合并到项目中，避免出现覆盖错误。</section>
</li>
</ul>
</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">代码审查</strong></p>
<ul>
<li>
<section style="color: #010101;">对 AI 生成或修改的代码进行人工审阅，尤其是涉及关键逻辑的部分，确保生成代码符合预期。</section>
</li>
</ul>
</section>
</li>
</ol>
<h2 data-tool="mdnice编辑器"><span class="content" style="color: #0e8aeb;">2.4 无法解决复杂问题：可能进入死循环</span></h2>
<p data-tool="mdnice编辑器">在调试复杂问题或某个难点时，AI 工具可能陷入死循环，反复尝试生成代码但无法有效解决问题。例如，AI 对某个 bug 的修复建议多次尝试后仍然无效，甚至可能导致代码更加混乱。</p>
<h3 data-tool="mdnice编辑器"><span class="content" style="color: #0e88eb;">解决方案</span></h3>
<ol data-tool="mdnice编辑器">
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">重新整理问题</strong></p>
<ul>
<li>
<section style="color: #010101;">如果问题复杂而模糊，先关闭当前对话，重新开启一个新的会话。</section>
</li>
<li>
<section style="color: #010101;">将问题简化为多个子问题，并逐步整理关键信息后输入给 AI。例如，将错误日志、上下文代码片段和预期行为整理成清晰的描述。</section>
</li>
</ul>
</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">结合搜索引擎</strong></p>
<ul>
<li>
<section style="color: #010101;">对难以解决的问题，可以将错误信息、bug 的关键描述扔给搜索引擎，结合开发者社区（如 Stack Overflow）寻找答案。</section>
</li>
<li>
<section style="color: #010101;">搜索的过程中可以收集更具体的上下文，再反馈给 AI，增加其解决问题的可能性。</section>
</li>
</ul>
</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">寻求多工具协作</strong></p>
<ul>
<li>
<section style="color: #010101;">如果单个 AI 工具陷入死循环，可以尝试切换到其他工具或模型。例如，Cursor 无法解决的问题，可以切换到 ChatGPT 或 Claude 进行尝试。</section>
</li>
<li>
<section style="color: #010101;">结合传统的调试手段（如 IDE 的调试功能、日志分析工具等），帮助定位问题。</section>
</li>
</ul>
</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">分阶段测试</strong></p>
<ul>
<li>
<section style="color: #010101;">将复杂问题拆解为多个小问题，逐步测试每一部分的结果。例如，如果某个模块的逻辑无法正常运行，可以先测试其输入输出，再逐步调试内部逻辑。</section>
</li>
</ul>
</section>
</li>
</ol>
<h1 data-tool="mdnice编辑器"><span class="content" style="color: #0e8aeb;">3. 小结</span></h1>
<p data-tool="mdnice编辑器">用 AI 编程，也就是和 AI 协作，本质上是一种双向的沟通过程。</p>
<p data-tool="mdnice编辑器">我们需要像与团队成员协作一样，<strong style="color: #0e88eb;">清晰表达需求、提供必要的背景信息</strong>，并通过持续的反馈和迭代优化，逐步引导 AI 生成符合预期的结果。只有做到有效沟通，AI 才能真正成为开发者的高效助手，而不是一个需要频繁纠错的工具。</p>
<p data-tool="mdnice编辑器">以上。</p>
</section>
</section>
]]></content:encoded>
			<wfw:commentRss>https://www.phppan.com/2025/01/cursor-ai-programming-has-increased-my-coding-efficiency-by-10-times/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>研发效能之规模管理：工程化与系统化的思考</title>
		<link>https://www.phppan.com/2024/10/scale-management-in-software-development-engineering-and-systematic-approach/</link>
		<comments>https://www.phppan.com/2024/10/scale-management-in-software-development-engineering-and-systematic-approach/#comments</comments>
		<pubDate>Sat, 26 Oct 2024 13:15:54 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[架构和远方]]></category>
		<category><![CDATA[架构]]></category>
		<category><![CDATA[研发效能]]></category>

		<guid isPermaLink="false">http://www.phppan.com/?p=2287</guid>
		<description><![CDATA[随着业务的发展，研发团队和系统架构往往面临一个共同的难题：如何在规模不断扩大的情况下，保持高效、稳定的输出。  [&#8230;]]]></description>
				<content:encoded><![CDATA[<p style="color: #353535;" data-tool="mdnice编辑器">随着业务的发展，研发团队和系统架构往往面临一个共同的难题：<strong style="color: #f83929;">如何在规模不断扩大的情况下，保持高效、稳定的输出</strong>。</p>
<p style="color: #353535;" data-tool="mdnice编辑器">你是否曾经历过这样的困境：系统运行环境中的负载不断攀升，不得不频繁进行性能优化；团队规模扩充后，开发协作开始变得混乱，沟通成本直线上升；技术债务不断积累，系统的开发和维护变得艰难？</p>
<p style="color: #353535;" data-tool="mdnice编辑器">这些问题的本质在于<strong style="color: #f83929;">规模管理</strong>的缺失或不足。<strong style="color: #f83929;">规模</strong>不仅仅体现在系统需要处理越来越多的用户和数据层面，还包括团队管理、开发流程和技术栈的复杂性增长。如果缺乏系统化和工程化的管理方法，规模的扩大往往会拖慢研发效率，甚至导致项目失控。</p>
<p style="color: #353535;" data-tool="mdnice编辑器">那么，<strong style="color: #f83929;">如何通过系统化、工程化的手段，来解决规模扩展带来的复杂性和挑战</strong>呢？</p>
<h1 style="color: #000000;" data-tool="mdnice编辑器"><span style="color: #ffffff;">1 研发中的规模</span></h1>
<p style="color: #353535;" data-tool="mdnice编辑器">在软件研发中，规模主要可以分为<strong style="color: #f83929;">生产规模</strong>和<strong style="color: #f83929;">开发规模</strong>两大类。具体来说，研发中的规模主要包括以下几个方面：</p>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #222222;">1.1 生产规模</span></h2>
<p style="color: #353535;" data-tool="mdnice编辑器">生产规模指的是系统在实际运行环境中所需处理的负载、并发能力和扩展性。它关注的是一个系统在面对业务增长时，是否能够高效处理不断增加的数据量、用户请求、并发任务等。包括：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #353535;"><strong style="color: #f83929;">并发处理能力</strong>：系统可以同时处理多少用户请求或任务。</section>
</li>
<li>
<section style="color: #353535;"><strong style="color: #f83929;">数据处理能力</strong>：系统能够处理的数据量级别如何，是否支持大数据量的存储、查询和分析。</section>
</li>
<li>
<section style="color: #353535;"><strong style="color: #f83929;">网络流量承受能力</strong>：系统在面对大规模用户访问时，是否能够保持稳定的响应时间，并在流量高峰期依然能够正常工作。</section>
</li>
<li>
<section style="color: #353535;"><strong style="color: #f83929;">弹性扩展能力</strong>：系统是否可以根据流量的变化自动扩展资源，避免高负载时的性能瓶颈和低负载时的资源浪费。</section>
</li>
<li>
<section style="color: #353535;"><strong style="color: #f83929;">容错与高可用性</strong>：系统在面对硬件或软件故障时是否具备自我恢复能力，确保业务的连续性。</section>
</li>
</ul>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #222222;">1.2 开发规模</span></h2>
<p style="color: #353535;" data-tool="mdnice编辑器">开发规模指的是随着项目和团队的扩展，如何有效管理代码库、开发流程和团队协作。随着开发人数、代码库复杂度的增长，团队需要更加系统化的管理手段，以保持高效的开发效率和高质量的代码输出。</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #353535;"><strong style="color: #f83929;">代码库规模</strong>：项目的代码量逐渐增加，模块和功能变得更加复杂。如何确保代码库的可维护性、可测试性和可扩展性是关键。</section>
</li>
<li>
<section style="color: #353535;"><strong style="color: #f83929;">团队规模</strong>：参与开发的工程师人数增多，如何确保团队成员高效协作、避免冲突和重复工作是管理的重点。</section>
</li>
<li>
<section style="color: #353535;"><strong style="color: #f83929;">协作复杂度</strong>：随着团队规模扩大，沟通和协作的难度也会增加。如何通过协作工具、流程规范和文档化手段确保团队高效运转。</section>
</li>
<li>
<section style="color: #353535;"><strong style="color: #f83929;">开发流程的复杂度</strong>：团队规模和项目复杂度增加，开发流程自然也会变得更复杂。如何通过流程优化和工具化手段（如CI/CD、自动化测试等）简化开发、测试、发布流程。</section>
</li>
<li>
<section style="color: #353535;"><strong style="color: #f83929;">知识管理</strong>：随着项目复杂度增加，技术债务和知识流失的风险也随之增加。如何通过文档化、知识共享平台等手段，确保团队成员（尤其是新人）快速上手和理解项目。</section>
</li>
</ul>
<p style="color: #353535;" data-tool="mdnice编辑器">除了上面的 5 点，还有一些技术规模相关的点：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #353535;"><strong style="color: #f83929;">技术栈的扩展性</strong>：技术选型是否具备支撑未来业务增长的能力，是否容易扩展、维护和升级。</section>
</li>
<li>
<section style="color: #353535;"><strong style="color: #f83929;">基础设施的扩展性</strong>：从服务器、数据库到网络架构，是否能够支持高并发、大数据量、快速响应等需求。</section>
</li>
<li>
<section style="color: #353535;"><strong style="color: #f83929;">技术债务管理</strong>：随着项目的发展，技术债务的积累不可避免。如何在技术规模扩展的同时进行技术债务的管理和偿还。</section>
</li>
</ul>
<h1 style="color: #000000;" data-tool="mdnice编辑器"><span style="color: #ffffff;">2 如何管理规模</span></h1>
<p style="color: #353535;" data-tool="mdnice编辑器">作为研发管理者，面对系统和团队规模的不断扩大，如何确保研发效能的持续提升，是一个复杂且多维度的挑战。规模管理的核心在于通过<strong style="color: #f83929;">技术手段与管理方法</strong>的结合，保证系统和团队能够适应业务增长，同时避免因规模扩大而带来的效率损失和质量问题。</p>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #222222;">2.1 管理生产规模</span></h2>
<p style="color: #353535;" data-tool="mdnice编辑器">生产规模通常指的是系统在实际运行环境中所能处理的负载、并发能力和扩展性。然而，生产规模的扩展实际上离不开架构、基础设施、自动化手段等，即通过技术手段来保证系统能处理不断增长的业务需求。</p>
<h3 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold;">2.1.1 架构设计与扩展性</span></h3>
<p style="color: #353535;" data-tool="mdnice编辑器">生产规模的扩展依赖于架构设计的弹性和扩展性。<strong style="color: #f83929;">架构设计</strong>是生产系统能否承载更大负载、更高并发的根本。</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #353535;"><strong style="color: #f83929;">微服务架构</strong>：在面对大规模扩展时，单体架构往往难以承受较大负载和频繁的变更。微服务架构通过将系统拆分为多个独立的服务，每个服务可以独立扩展、部署和维护。这种架构设计允许生产系统根据业务需求水平扩展，避免单点瓶颈。</p>
</section>
</li>
<li>
<section style="color: #353535;"><strong style="color: #f83929;">事件驱动架构</strong>：在高并发环境下，事件驱动架构可以通过异步消息处理来解耦系统中的模块，从而提高弹性和扩展性。这种架构设计允许系统通过消息队列（如Kafka、RabbitMQ）来处理大量并发请求，并减少同步通信带来的延迟和性能瓶颈。</p>
</section>
</li>
<li>
<section style="color: #353535;"><strong style="color: #f83929;">分布式架构</strong>：对于需要处理海量数据和高并发请求的生产系统，分布式架构是必不可少的。通过水平扩展（如分布式数据库、分布式缓存、分布式存储等），系统可以在生产环境中扩展以应对更高的负载。</p>
</section>
</li>
</ul>
<p style="color: #353535;" data-tool="mdnice编辑器">架构设计决定了生产规模的技术上限。架构设计是生产系统能否在负载增加时保持高效运行的关键。</p>
<p style="color: #353535;" data-tool="mdnice编辑器">在管理生产规模时，需要着重考虑当前架构的合理性和前瞻性。</p>
<h3 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold;">2.1.2 基础设施扩展和性能优化</span></h3>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #353535;"><strong style="color: #f83929;">自动化扩展</strong>：利用云计算平台的弹性伸缩功能，根据流量动态增加或减少资源。为了实现更灵活的资源管理和扩展，容器化技术（如 Docker ）和容器编排系统（如 Kubernetes ）成为生产规模扩展的基础。通过容器化，生产环境中的服务可以快速部署、扩展和迁移，从而应对瞬时的流量峰值。同时，Kubernetes 的自动扩展功能可以根据资源的使用情况自动调整服务的实例数量，确保系统在负载变化时能够灵活响应。</p>
</section>
</li>
<li>
<section style="color: #353535;"><strong style="color: #f83929;">缓存与 CDN</strong>：在高并发访问场景下，合理使用缓存（如Redis、Memcached）和 CDN 可以显著减轻后端的压力，提升系统的响应速度。缓存机制不仅加快了数据的读写，还减少了数据库的压力。</p>
</section>
</li>
<li>
<section style="color: #353535;"><strong style="color: #f83929;">技术栈的性能和扩展性</strong>：技术选型中的语言、框架和数据库等技术栈的扩展性直接决定了生产系统的性能瓶颈。例如，选择支持大规模并发请求的技术栈（如 Node.js、Go、Java 中的 Netty 框架等）可以显著提升系统在高负载下的表现。同时，选择可扩展的数据库技术（如 NoSQL 数据库、分布式数据库）可以确保系统在面对海量数据时依然能够快速响应。当确实存在性能问题时，换一种技术栈可能是一种比较彻底的解决问题的思路。</p>
</section>
</li>
<li>
<section style="color: #353535;"><strong style="color: #f83929;">性能监控与优化</strong>：生产规模的管理离不开实时性能监控。通过监控工具（如Prometheus、Grafana）监控系统的关键性能指标（如CPU、内存、带宽、响应时间等），并通过自动化告警机制及时发现并解决瓶颈问题，确保系统的稳定性和高效性。</p>
</section>
</li>
<li>
<section style="color: #353535;"><strong style="color: #f83929;">云计算与弹性扩展</strong>：云平台提供的弹性扩展能力是生产规模扩展的重要技术基础。通过云服务（如阿里云、腾讯云、AWS、Azure、Google Cloud）提供的按需扩展资源，生产系统可以根据流量动态调整计算资源、存储资源和网络带宽，确保系统在高并发和高负载下保持稳定。</p>
</section>
</li>
</ul>
<p style="color: #353535;" data-tool="mdnice编辑器">基础设施扩展能力和性能优化及监控直接影响生产系统的弹性和可扩展性。合理的选型能够为生产系统提供未来业务增长所需的技术保障。</p>
<h3 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold;">2.1.3 自动化与运维能力</span></h3>
<p style="color: #353535;" data-tool="mdnice编辑器">生产规模的扩展离不开自动化运维能力的支持。<strong style="color: #f83929;">自动化工具链</strong>（如 CI/CD、自动化测试、基础设施即代码）是保障生产系统在扩展过程中保持高效运作的重要手段。</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #353535;"><strong style="color: #f83929;">持续集成与持续交付 (CI/CD)</strong> ：在生产环境中，频繁的更新和部署可能会带来较高的风险。通过CI/CD工具链，生产系统的更新、测试和部署可以自动化完成，从而减少人工操作带来的错误和延迟。CI/CD工具确保在生产规模扩展的过程中，系统的更新频率不会影响其稳定运行。</p>
</section>
</li>
<li>
<section style="color: #353535;"><strong style="color: #f83929;">自动化测试与监控</strong>：在生产规模扩展时，系统的复杂性和负载增加会带来更多的不确定性。通过自动化测试，生产系统可以在每次更新前进行回归测试和性能测试，确保系统在发布新功能时不会出现性能瓶颈或不可预见的错误。同时，通过监控工具（如Prometheus、Grafana），可以实时监控生产系统的性能指标，提前发现并解决潜在的性能问题。</p>
</section>
</li>
<li>
<section style="color: #353535;"><strong style="color: #f83929;">自动化扩展与容灾能力</strong>：通过基础设施自动化（如 Terraform、Ansible），生产系统在面对突发流量时可以自动扩展资源，并在发生故障时进行自动化恢复。这种技术规模中的自动化能力，是生产系统在高负载或故障环境下能够保持高可用性的关键。</p>
</section>
</li>
<li>
<section style="color: #353535;"><strong style="color: #f83929;">蓝绿部署和金丝雀发布</strong>：在大规模生产环境下，通过蓝绿部署和金丝雀发布，可以减小新功能或修复补丁上线时的风险，确保在问题发生时能够快速回滚。其实就是灰度发布，或者说要严格地执行灰度发布。</p>
</section>
</li>
</ul>
<p style="color: #353535;" data-tool="mdnice编辑器">自动化能力不仅提高了生产系统的运维效率，还在生产规模扩展时提供了韧性和容错能力。</p>
<h3 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold;">2.1.4 技术债务管理与可维护性</span></h3>
<p style="color: #353535;" data-tool="mdnice编辑器">随着生产规模的扩展，技术债务的管理变得尤为重要。技术债务的管理不当会直接影响生产系统的性能和稳定性。技术规模中的<strong style="color: #f83929;">技术债务管理</strong>策略需要融入生产规模的规划中，以确保系统在扩展过程中不会因为技术债务的积累而出现故障或性能下降。</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #353535;"><strong style="color: #f83929;">定期重构与优化</strong>：随着系统的不断扩展，代码复杂度和技术债务不可避免地会增加。通过定期的代码重构和性能优化，可以减少技术债务的积累，确保系统在生产环境中的稳定性。例如，定期优化数据库查询或重构基础代码模块，可以避免随着业务增长而出现的性能瓶颈。</p>
</section>
</li>
<li>
<section style="color: #353535;"><strong style="color: #f83929;">技术债务的监控与清理</strong>：通过技术债务监控工具，团队可以定期评估系统中的技术债务，并规划技术债务的偿还时间。特别是在生产系统扩展时，及时清理技术债务能够大幅减少系统的不可预测性，确保生产系统的可维护性。</p>
</section>
</li>
</ul>
<p style="color: #353535;" data-tool="mdnice编辑器">更多技术债务的内容可以参考之前写的这篇文章：<a style="color: var(--weui-link);" href="http://mp.weixin.qq.com/s?__biz=MzIzNDU2NDA0NA==&amp;mid=2247484160&amp;idx=1&amp;sn=c58c50e6463118afbce6eaaaffb3b836&amp;chksm=e8f533a3df82bab594fac77ca586438dd25146796e4ef7688b276f2d902c8292065eea518428&amp;scene=21#wechat_redirect" target="_blank" data-itemshowtype="0" data-linktype="2"><strong>架构师必备：技术债务的识别、管理与解决之道</strong></a></p>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #222222;">2.2 管理开发规模</span></h2>
<p style="color: #353535;" data-tool="mdnice编辑器">开发规模指的是随着项目复杂度、代码库、开发团队人数的增加，如何有效管理开发流程、代码库和团队协作。包括以下几个部分：</p>
<h3 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold;">2.2.1 代码库与模块化管理</span></h3>
<p style="color: #353535;" data-tool="mdnice编辑器">随着项目的规模扩大，代码库的复杂度也随之增加。为了保持代码库的可维护性和可扩展性，合理的技术架构设计和技术栈选型至关重要。</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #353535;"><strong style="color: #f83929;">模块化与组件化</strong>：模块化设计（例如微服务架构）能帮助团队将系统拆分为多个独立的模块或服务，减少耦合性，并允许团队并行开发。合理的模块化设计不仅可以简化代码管理，还能减少不同团队之间的依赖，提升开发效率。</p>
</section>
</li>
<li>
<section style="color: #353535;"><strong style="color: #f83929;">技术栈的扩展性</strong>：技术栈的选择对开发规模的扩展至关重要。选用成熟、可扩展的技术栈（如Kubernetes、容器化、云原生技术）可以帮助团队更好地应对复杂的开发需求。技术栈选型不仅影响系统的运行能力，还影响团队的学习曲线、代码质量和开发速度。</p>
</section>
</li>
<li>
<section style="color: #353535;"><strong style="color: #f83929;">接口设计与抽象</strong>：合理的接口抽象能够减少模块之间的依赖。通过面向接口编程，团队可以在不破坏项目整体架构的情况下，灵活地扩展或替换某些模块。这种设计使得开发团队在面对复杂业务时，能够保持系统的灵活性和可维护性。</p>
</section>
</li>
</ul>
<h3 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold;">2.2.2 开发流程与自动化</span></h3>
<p style="color: #353535;" data-tool="mdnice编辑器">随着团队人数的增加和代码库的扩展，开发流程的复杂性也随之增加。为了提升开发效率，技术规模中的基础设施扩展性和自动化能力是开发流程中的重要组成部分。</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #353535;"><strong style="color: #f83929;">持续集成与持续交付 (CI/CD)</strong> ：自动化工具链是开发规模扩展中的关键要素。通过自动化测试、构建、部署流程，开发团队能够更频繁地发布代码，减少人为操作的风险。技术规模中的自动化工具（如Jenkins、GitLab CI、CircleCI，各公有云的云效产品）对开发效率的提升至关重要。</p>
</section>
</li>
<li>
<section style="color: #353535;"><strong style="color: #f83929;">代码评审与规范</strong>：制定统一的代码规范，确保团队成员的代码风格一致，避免“代码腐化”为难以维护的“意大利面条式代码”。通过代码评审（Code Review），团队可以发现潜在问题，提升代码的整体质量和可维护性。</p>
</section>
</li>
<li>
<section style="color: #353535;"><strong style="color: #f83929;">自动化测试</strong>：技术规模扩展中的自动化程度直接影响开发团队的效率。通过引入单元测试、集成测试、端到端测试，团队可以在不断扩展的代码库中保持代码质量，并快速识别回归错误。</p>
</section>
</li>
<li>
<section style="color: #353535;"><strong style="color: #f83929;">技术债务管理与重构计划</strong>：随着开发规模的扩大，技术债务的管理变得尤为重要。技术债务的积累会降低开发效率，增加维护成本。因此，定期的技术债务清理和代码重构计划是开发流程管理中的必要步骤。通过技术规模中的架构优化和代码重构，团队可以确保系统在业务增长时依然保持可维护性。</p>
</section>
</li>
</ul>
<h3 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold;">2.2.3 团队协作与知识管理</span></h3>
<p style="color: #353535;" data-tool="mdnice编辑器">开发规模不仅仅依赖于技术架构和工具链的管理，还需要通过良好的协作机制和知识管理确保团队的高效运作。技术规模中的技术栈选型和架构设计也会影响团队的协作方式。</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #353535;"><strong style="color: #f83929;">知识共享与文档化</strong>：在开发规模扩展的过程中，技术栈的复杂性增加，团队成员需要通过高效的知识管理平台（如Confluence、Notion）来共享与管理技术文档。特别是当团队采用复杂的技术架构时（如微服务或分布式架构），通过文档化来规范开发流程和技术决策，可以减少沟通成本，提升协作效率。</p>
</section>
</li>
<li>
<section style="color: #353535;"><strong style="color: #f83929;">技术栈选择对协作的影响</strong>：选择合适的技术栈不仅影响系统的技术规模，也会影响团队的协作方式。例如，采用微服务架构可以让不同团队独立开发、部署自己的服务，减少团队之间的依赖。而采用更紧耦合的单体架构则需要更多的沟通与协调。因此，技术栈的选择在开发规模扩展中起到至关重要的作用。</p>
</section>
</li>
</ul>
<h3 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold;">2.2.4 选择合适的开发模型</span></h3>
<p style="color: #353535;" data-tool="mdnice编辑器">开发模型是帮助团队组织开发流程、管理代码质量和发布节奏的框架。在不同的开发规模下，开发模型需要根据技术规模中涉及的技术栈、架构设计和自动化能力进行调整。</p>
<p style="color: #353535;" data-tool="mdnice编辑器">在开发规模扩展的过程中，技术栈和架构设计往往决定了开发模型的选择。例如：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #353535;"><strong style="color: #f83929;">微服务架构与敏捷开发模型</strong>：微服务架构鼓励独立发布和独立开发，因此更适合敏捷开发模式。在这种模式下，技术团队可以迭代地发布小的功能模块，并通过自动化测试和持续集成工具确保代码质量。微服务架构的技术规模管理要求开发模型灵活且高效，以适应快速变化的业务需求。</p>
</section>
</li>
<li>
<section style="color: #353535;"><strong style="color: #f83929;">单体架构与瀑布模型</strong>：对于采用单体架构的系统，开发模型往往倾向于传统的瀑布模型或迭代开发模型。由于单体架构的耦合性较强，系统的发布和开发需要更为慎重，开发模型在这种情况下会更注重前期设计、集成测试和代码审核。</p>
</section>
</li>
</ul>
<h1 style="color: #000000;" data-tool="mdnice编辑器"><span style="color: #ffffff;">3 小结</span></h1>
<p style="color: #353535;" data-tool="mdnice编辑器"><strong style="color: #f83929;">管理规模的扩展不仅仅是对技术的挑战，更是对一个企业工程化与系统化能力的考验</strong>。通过清晰的架构设计、自动化工具的引入、规范化的流程和有效的团队协作机制，企业可以在规模扩张的同时保持研发效能和系统的稳定性。</p>
<p style="color: #353535;" data-tool="mdnice编辑器">这不仅要求架构师从技术角度进行弹性设计，还需要研发管理者从整体角度系统化地规划团队协作和流程优化。<strong style="color: #f83929;">规模扩展的成功，依赖于工具、流程、架构和团队的有机结合与协同运作</strong>。只有通过持续的工程化改进和系统化的管理方法，企业才能在面对规模扩展时从容应对，并建立起长久的竞争优势。</p>
<p style="color: #353535;" data-tool="mdnice编辑器">规模的扩展并不可怕，真正的挑战在于能否通过合理的手段，保证系统和团队在快速变化的环境中依然具备强大而灵活的应对能力。</p>
<p style="color: #353535;" data-tool="mdnice编辑器">正如一座高楼，<strong style="color: #f83929;">只有在扎实的地基之上，才能随风而屹立不倒</strong>。在研发管理的世界里，规模的管理就是那座高楼的地基。通过科学的规模管理，企业不仅能够应对当前的增长，更能够为未来的持续创新打下坚实的基础。</p>
<p style="color: #353535;" data-tool="mdnice编辑器"><strong style="color: #f83929;">最后再次推荐一下 cursor 编辑器，写起来代码来真的很 6。</strong></p>
<p style="color: #353535;" data-tool="mdnice编辑器">以上。</p>
]]></content:encoded>
			<wfw:commentRss>https://www.phppan.com/2024/10/scale-management-in-software-development-engineering-and-systematic-approach/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>架构劣化，系统复杂度飙升，如何应对？</title>
		<link>https://www.phppan.com/2024/10/how-to-prevent-architecture-degradation/</link>
		<comments>https://www.phppan.com/2024/10/how-to-prevent-architecture-degradation/#comments</comments>
		<pubDate>Sat, 19 Oct 2024 02:59:40 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[架构和远方]]></category>
		<category><![CDATA[架构]]></category>
		<category><![CDATA[架构师]]></category>
		<category><![CDATA[研发效能]]></category>

		<guid isPermaLink="false">http://www.phppan.com/?p=2284</guid>
		<description><![CDATA[在构建和演进复杂企业级系统时，架构师常常面临一个令人头痛的现象：架构劣化。 当系统初始设计时一切都井然有序，但 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p style="color: #000000;" data-tool="mdnice编辑器">在构建和演进复杂企业级系统时，架构师常常面临一个令人头痛的现象：<strong style="color: #0e88eb;">架构劣化</strong>。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">当系统初始设计时一切都井然有序，但随着业务需求的不断增多、新功能的迭代、技术栈的多样化引入，系统开始逐渐变得复杂，模块间的耦合度不断上升，开发者在维护和扩展时难免感到力不从心。系统的可预测性降低，Bug 频发，技术债务迅速累积，甚至每一次小的改动都可能引发意想不到的问题。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">为什么曾经清晰的架构会走向失控？<strong style="color: #0e88eb;">如何在长期的系统演化中，保证架构的灵活性与可维护性，而不让其逐渐腐化？</strong></p>
<p style="color: #000000;" data-tool="mdnice编辑器">这一切都指向了一个关键问题：<strong style="color: #0e88eb;">架构设计中的一致性</strong>。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">正如 Fred Brooks 在《设计原本（The Design of Design）》中所言：「<strong style="color: #0e88eb;">一致性应该是所有质量原则的根基。</strong>」</p>
<p style="color: #000000;" data-tool="mdnice编辑器">今天我们将从<strong style="color: #0e88eb;">风格一致性</strong>、<strong style="color: #0e88eb;">解决方案一致性</strong>、以及<strong style="color: #0e88eb;">形式一致性</strong>三个方面，聊下架构设计中如何实现一致性。</p>
<h1 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">1 风格一致性：统一的架构模式</span></h1>
<p style="color: #000000;" data-tool="mdnice编辑器"><strong style="color: #0e88eb;">何谓风格？</strong></p>
<p style="color: #000000;" data-tool="mdnice编辑器">架构风格是构建系统时遵循的一套原则和模式，它为系统的设计提供了抽象框架。风格可以看作是架构中一系列可重复的<strong style="color: #0e88eb;">微观决策</strong>，这些决策在不同上下文中应用，旨在最小化开发者的脑力负担。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">风格具有其属性：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">妥适性</strong>：根据奥卡姆剃刀原理，风格应避免引入不必要的复杂性，满足基本功能即可。这意味着架构设计中应当聚焦于最核心的需求，避免过度设计。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">普遍性</strong>：风格应该具备广泛适用性，能够通过有限的功能支持多种结果。这种普遍性有助于减少架构中的冗余，提升系统的灵活性。</section>
</li>
</ul>
<p style="color: #000000;" data-tool="mdnice编辑器">架构风格的一个经典例子是「管道-过滤器」模式。在数据处理系统中，通过一系列过滤器对数据流进行处理，开发者只需理解这种模式的核心思想，即可快速理解系统的其他部分。这种风格的一致性使得系统更加可预测，减少了开发和维护中的复杂性。</p>
<p style="color: #000000;" data-tool="mdnice编辑器"><strong style="color: #0e88eb;">风格的一致性的落地会从架构到系统设计。</strong></p>
<p style="color: #000000;" data-tool="mdnice编辑器">风格一致性要求在设计系统时，所有模块都遵循相同的架构模式。例如，在一个复杂的企业应用中，如果我们选择了领域模型来处理业务逻辑，那么整个系统的其他部分也应遵循这一模式，而不应在某些模块中使用事务脚本。这种不一致会导致开发者陷入不同模式的转换中，增加理解和维护的成本。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">风格一致性的核心在于<strong style="color: #0e88eb;">正交性原则</strong>，即各个模块应独立处理自己的职责，减少彼此间的耦合。通过保持架构风格的一致性，系统可以更好地实现模块化和松耦合，这不仅有助于当前的开发，还为未来的扩展打下了基础。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">需要注意的是，架构风格并非一成不变。随着技术的发展和业务需求的变化，架构风格也会不断演化。因此，架构师应当通过<strong style="color: #0e88eb;">文档化</strong>的方式，确保风格的一致性能够在团队内传播和延续。文档不仅是风格的记录，更是团队成员在开发过程中保持一致的指南。</p>
<h1 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">2 解决方案一致性：统一的实现方式</span></h1>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">2.1 为什么解决方案需要一致？</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器">风格一致性更多体现在宏观的架构层面，而<strong style="color: #0e88eb;">解决方案一致性</strong>则体现在系统具体实现的细节中。解决方案的一致性要求在同一系统中，开发者应使用相同的技术栈、设计模式和实现方式，以避免由于不同方案混用而导致的系统复杂性。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">举例来说，假设在一个大型系统中，某些模块使用了<strong style="color: #0e88eb;">Node.js</strong>和<strong style="color: #0e88eb;">Express</strong>作为后端技术栈，而其他模块则使用了<strong style="color: #0e88eb;">Java</strong>和<strong style="color: #0e88eb;">Spring Boot</strong>。这种不一致的解决方案会导致以下问题：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">开发效率低下</strong>：Node.js 和 Java 的编程范式截然不同，前者是 JavaScript 的异步、事件驱动模型，后者则是 Java 的多线程模型。开发者在不同模块之间切换时，需要调整思维方式和适应不同的编程风格。这种上下文切换会降低开发效率，尤其是在跨模块协作时。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">技术债务增加</strong>：两种技术栈在依赖管理、错误处理、性能调优等方面有着不同的最佳实践。团队需要为每个技术栈制定不同的管理策略，这可能导致技术债务的积累。例如，Node.js 的异步编程需要处理回调或 Promise 链，而 Java 则更多依赖传统的 try-catch 机制。如果开发团队未能统一错误处理方式，后续的维护工作将变得更加复杂。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">测试和部署复杂化</strong>：不同技术栈会导致不同的测试和部署工具链。例如，Node.js 项目可能使用 <strong style="color: #0e88eb;">Jest</strong> 或 <strong style="color: #0e88eb;">Mocha</strong> 进行测试，而 Java 项目则依赖 <strong style="color: #0e88eb;">JUnit</strong> 或 <strong style="color: #0e88eb;">TestNG</strong>。在部署阶段，Node.js 通常使用 <strong style="color: #0e88eb;">npm</strong> 来管理依赖并构建项目，而 Java 则依赖 <strong style="color: #0e88eb;">Maven</strong> 或 <strong style="color: #0e88eb;">Gradle</strong>。这意味着，CI/CD 流水线需要针对不同的模块配置不同的工具链，增加了自动化部署的复杂性。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">团队协作障碍</strong>：团队中的开发者可能对某一种技术栈更加熟悉。如果团队成员分工不明确，或者需要在不同技术栈的模块间协作时，可能会遇到技能鸿沟。例如，擅长 Java 的开发者在接手 Node.js 代码时可能不熟悉 JavaScript 的异步处理方式，导致 Bug 频发或进度延迟。反之亦然。</p>
</section>
</li>
</ul>
<p style="color: #000000;" data-tool="mdnice编辑器">相反，通过保持解决方案的一致性——例如，统一选择使用<strong style="color: #0e88eb;">Java + Spring Boot</strong>或<strong style="color: #0e88eb;">Node.js + Express</strong>作为后端技术栈——可以确保团队在开发、测试和部署的各个阶段都能使用一致的工具和框架。这样不仅降低了学习成本和上下文切换的负担，还使得团队在协作时更具一致性。测试和部署流程也可以标准化，开发者能够更加专注于核心业务逻辑的实现，从而提高整体开发效率和系统的可维护性。</p>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">2.2 如何实现解决方案一致性？</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器">为了实现<strong style="color: #0e88eb;">解决方案一致性</strong>，我们需要采取一系列技术和管理上的措施，确保团队在开发过程中能够遵循统一的标准和原则。以下是我们在实际工作中常用的一些的策略和实践：</p>
<h3 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e88eb;">2.2.1 建立统一的架构原则和技术规范</span></h3>
<p style="color: #000000;" data-tool="mdnice编辑器">在项目启动或架构设计的早期，架构师或技术负责人需要制定明确的<strong style="color: #0e88eb;">架构原则</strong>和<strong style="color: #0e88eb;">技术规范</strong>，并确保团队中的所有成员都理解并遵守这些规范。具体措施包括：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">制定技术选型指南</strong>：明确系统中使用的核心技术栈（如数据库访问技术、缓存管理、消息传递机制等）。例如，团队可以决定在整个项目中统一使用Spring Data JPA作为ORM解决方案，而不允许直接使用原生SQL或其他ORM框架。这种技术选型需要根据系统的需求和团队的技能水平做出合理的决策。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">定义设计模式的应用场景</strong>：对于常见的问题，架构师应当指定适当的设计模式。例如，规定在服务层使用策略模式（Strategy Pattern）来处理不同的业务逻辑，而不是让开发者随意选择不同的模式或技术实现。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">确定编程规范与代码风格</strong>：统一的代码风格不仅能提高代码的可读性，还能增强代码的一致性。通过制定编码规范（如命名规则、注释风格、格式化规则等），并在代码中使用一致的编程风格，可以避免因风格差异导致的困惑和误解。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">文档化架构决策</strong>：对于每一个重要的架构和技术决策，都要形成文档。这份文档不仅是为了当前的团队成员，也是为了以后加入的开发者能够快速了解并遵循既定的架构规范。</p>
</section>
</li>
</ul>
<h3 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e88eb;">2.2.2 使用代码模板和生成工具</span></h3>
<p style="color: #000000;" data-tool="mdnice编辑器">代码模板和生成工具可以帮助团队在技术实现上保持一致性。通过提供预先定义好的代码模板，开发者可以快速生成符合架构规范的代码，避免了手动编写过程中出现的风格不一致问题。具体措施包括：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">使用框架提供的代码生成工具</strong>：如 beego 框架的  bee generate 。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">创建内部代码模板</strong>：团队可以根据项目的实际需求，创建一系列内部的代码模板。这些模板可能包括控制器、服务层、数据访问层的标准实现，确保每个模块的代码结构一致。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">自动化配置管理</strong>：对于基础设施的配置（如数据库连接、日志管理、安全配置等），可以使用框架中的自动化工具或约定优于配置原则，减少开发者手动调整配置的需求，从而保证一致性。</p>
</section>
</li>
</ul>
<h3 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e88eb;">2.2.3 落实 Code Review</span></h3>
<p style="color: #000000;" data-tool="mdnice编辑器">Code Review 是确保解决方案一致性的有效手段之一。通过固定的代码审查机制，以及定期的代码评审，团队可以及时发现并纠正不一致的实现方式，确保整个系统遵循统一的设计和技术规范。具体措施包括：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">建立严格的代码审查流程</strong>：每个开发者在提交代码前，必须经过团队的代码审查。审查的重点除了代码质量之外，还应包括检查代码是否符合项目的架构规范、是否使用了统一的技术栈和设计模式。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">引入静态代码分析工具</strong>：使用静态代码分析工具（如SonarQube、Checkstyle等）可以自动检测代码中的不一致问题，包括代码风格、架构违规、潜在的错误等。这种工具能够根据预先定义的规则对代码进行检查，并在问题出现时发出警告，帮助开发者在早期修复问题。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">定期的架构评审</strong>：架构评审是对整个系统架构设计及实现进行统一检查的活动。在架构评审中，团队可以讨论当前的架构是否依然适用，是否有新的技术或模式需要引入，以及现有的解决方案是否一致。通过架构评审，还可以确保整个系统的技术决策继续符合既定的架构原则。</p>
</section>
</li>
</ul>
<h3 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e88eb;">2.2.4 保持团队的沟通与协作</span></h3>
<p style="color: #000000;" data-tool="mdnice编辑器">解决方案一致性不仅仅依赖于技术选型和工具，它也需要团队成员之间的高效沟通和协作。团队中的每个人都应该理解和认同一致性原则，并遵循这些原则进行开发。具体措施包括：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">定期技术分享与培训</strong>：为了确保所有开发人员对系统的架构和技术栈有深入理解，团队可以定期组织技术分享会或培训，帮助开发者熟悉统一的解决方案和设计模式。例如，可以安排关于如何正确使用Spring Data JPA的培训，确保每个开发者都能使用该技术栈的一致实现方式。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">建立架构讨论机制</strong>：在遇到复杂的技术问题或不确定的实现方式时，开发者应及时与架构师或其他团队成员进行讨论，而不应各自为战。这种持续的沟通有助于避免不一致的解决方案和技术决策。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">跨团队协作</strong>：在大型项目中，可能会有多个团队同时开发不同模块。在这种情况下，跨团队的技术交流和协作至关重要。团队间的定期同步会议、共享架构文档和技术决策，都有助于确保各个团队在技术实现上的一致性。</p>
</section>
</li>
</ul>
<h3 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e88eb;">2.2.5 标准化的工具链与 CI/CD 流程</span></h3>
<p style="color: #000000;" data-tool="mdnice编辑器">工具链和自动化流程的标准化是实现解决方案一致性的另一个关键因素。通过使用相同的开发工具、CI/CD 流程和部署工具，团队可以在从开发到发布的各个环节保持一致性。具体措施包括：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">统一的开发环境</strong>：为所有开发者提供标准化的开发环境。例如，通过 Docker 容器提供统一的开发环境，确保每个开发者在本地的开发环境与生产环境一致，从而避免由于不同环境配置导致的实现差异。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">标准化的CI/CD流程</strong>：在 CI 和 CD 中，使用统一的流水线和自动化测试，确保每次代码提交都经过相同的测试和质量检查流程。例如，可以在 CI 管道中集成代码质量检查、单元测试和集成测试工具，确保每个模块都通过相同的验证过程，避免出现质量参差不齐的代码。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">统一的发布和部署策略</strong>：通过标准化的部署工具（如Kubernetes、Docker Compose等）和配置管理工具（如Ansible、Terraform等），确保系统在不同环境中的部署过程一致，这样可以避免因不同的部署方式导致的运行时错误和不兼容问题。</p>
</section>
</li>
</ul>
<h3 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e88eb;">2.2.6 逐步消除遗留系统中的不一致</span></h3>
<p style="color: #000000;" data-tool="mdnice编辑器">在大型项目中，遗留系统中往往会存在解决方案不一致的情况。为了实现解决方案一致性，团队需要有计划地逐步消除这些不一致的问题。具体措施包括：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">逐步替换不一致的技术栈</strong>：对于遗留的模块，如果存在与当前技术栈不一致的实现方式，可以通过重构或替换的方式，将不一致的部分替换掉。例如，将原先使用的手写 SQL 查询逐步替换为统一的ORM框架。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">分阶段的技术债务清理</strong>：技术债务的积累往往是导致解决方案不一致的主要原因之一。团队应定期对系统中的技术债务进行评估，并分阶段清理那些导致解决方案不一致的部分。通过持续的技术债务清理，确保系统在长期演进中保持一致性和可维护性。</p>
</section>
</li>
</ul>
<p style="color: #000000;" data-tool="mdnice编辑器"><strong style="color: #0e88eb;">解决方案一致性</strong>是软件系统成功的关键之一，它不仅可以降低系统的复杂性，还能提升团队的协作效率和系统的可维护性。通过制定明确的架构原则、使用统一的技术栈、引入代码审查机制、保持团队的沟通协作，以及标准化工具链和 CI/CD 流程，团队可以有效地实现解决方案的一致性。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">在一个长期演进的系统中，解决方案的一致性有助于减少技术债务，避免「架构腐化」，让系统在面对不断变化的需求时依然保持灵活性和可扩展性。通过这些实践，团队能够构建出更加可靠、易于维护的系统，并为未来的扩展提供坚实的基础。</p>
<h1 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">3 形式一致性</span></h1>
<p style="color: #000000;" data-tool="mdnice编辑器"><strong style="color: #0e88eb;">形式一致性</strong>是指系统设计中各个部分的结构、风格、和实现方式在形式上保持统一和协调。它不仅仅体现在代码的外观和风格上，还包括系统在设计原则、接口定义、组件交互方式等方面的统一性。形式一致性确保了系统的各个模块之间能够无缝协作，减少了理解和维护的困难，并使得系统更加易于扩展和演进。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">形式一致性要求设计者在系统的各个层次上都遵循同样的简约和清晰原则，确保每个模块的设计具有相同的模式和风格。例如，系统中所有 API 的命名规则、参数传递方式和返回结构都应保持一致，这样开发者只需学习一次，便能理解和使用所有接口。在前端设计时，所有的用户界面组件应遵循统一的界面规范和交互逻辑，以确保用户在不同模块之间切换时能够获得相同的用户体验。</p>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">3.1 简约</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器">在形式一致性中，<strong style="color: #0e88eb;">简约</strong>意味着设计需要尽可能地去除冗余，确保每个组件都是必要的、功能明确的。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">简约不仅意味着少量的代码或元素，还意味着减少不必要的复杂性。通过使用更少的元素来完成更多的功能，简约的设计不仅减少了开发和维护的成本，还提升了系统的可预测性和稳定性。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">在简约的系统中，开发者能够快速理解每个模块的设计意图，并能够在不增加复杂性的前提下对系统进行扩展。</p>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">3.2 结构清晰</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器"><strong style="color: #0e88eb;">结构清晰</strong>是形式一致性的重要组成部分。它要求系统的设计逻辑应该是直截了当的，模块的职责和功能应该易于理解。每个模块都应具备独立的功能，且模块间的依赖关系应当保持最小化。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">结构清晰的系统不仅让开发者能够快速掌握系统的整体架构，还能轻松推测出其他模块的设计方式。在一个结构清晰的系统中，开发者不必反复查阅文档或进行复杂的调试，因为模块的设计和交互逻辑都是一致且直观的。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">如在一个微服务架构中，假设我们有一个用户管理服务和订单服务。为了保持结构清晰，这两个服务应该各自负责单一的职责：用户管理服务处理用户注册、登录、个人信息管理等，订单服务则负责订单的创建、支付以及状态管理。这两个服务之间通过 API 进行通信，并且彼此独立，避免了不必要的耦合。如果将用户信息直接嵌入到订单服务中，会导致结构复杂化，增加了理解和维护的难度。通过保持清晰的模块划分，开发者可以很容易地理解每个服务的职责，并在系统发生变化时轻松进行调整。</p>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">3.3 隐喻</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器"><strong style="color: #0e88eb;">隐喻</strong>是系统设计中提升可理解性的重要工具。通过使用简单易懂、与现实世界或常见概念相类比的隐喻，开发者能够更快速地理解系统的设计意图。隐喻的使用不仅让系统的架构更具亲和力，还减少了开发者的认知负担。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">在形式一致性中，隐喻的应用应当贯穿整个系统——无论是从命名到设计模式，还是从接口定义到用户交互，都应当遵循同样的隐喻理念。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">如在构建文件系统时，使用「文件和文件夹」的隐喻可以帮助开发者和用户更好地理解系统的组织结构。现实生活中，人们处理物理文件和文件夹的经验非常直观——文件夹用于存放文件，文件可以被打开、编辑、删除或移动。将这种现实生活中的概念引入到计算机系统中，使用户和开发者能够迅速理解系统的操作模型。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">通过这种隐喻，用户不需要理解系统背后的复杂实现逻辑，就能够基于现实世界中的经验快速掌握系统的使用方式。同时，开发者在设计时也能够遵循这一隐喻，确保系统结构和操作符合人们的认知习惯，提升了系统的可用性和可维护性。</p>
<h1 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">4 小结</span></h1>
<p style="color: #000000;" data-tool="mdnice编辑器"><strong style="color: #0e88eb;">系统架构设计的本质在于持续演进，而一致性则是这种演进过程中不可或缺的基石。</strong></p>
<p style="color: #000000;" data-tool="mdnice编辑器">风格、解决方案、形式上的一致性不仅能够<strong style="color: #0e88eb;">减少开发者的认知负担</strong>，还能为系统的扩展和维护提供有力的支持。一个具有一致性的系统，往往更具可预测性、更易于理解，并且能够在面对复杂的业务需求和技术变革时保持灵活性与稳健性。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">正如 Fred Brooks 所言，一致性不仅是质量的根基，也是系统能够在复杂环境中持续演进的保证。通过在架构设计中贯彻一致性原则，我们不仅在解决当前的问题，更是在为未来的变革与创新铺平道路。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">
<p style="color: #000000;" data-tool="mdnice编辑器">以上。</p>
]]></content:encoded>
			<wfw:commentRss>https://www.phppan.com/2024/10/how-to-prevent-architecture-degradation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>研发团队没有战斗力，怎么解？</title>
		<link>https://www.phppan.com/2024/10/how-to-boost-development-team-productivity/</link>
		<comments>https://www.phppan.com/2024/10/how-to-boost-development-team-productivity/#comments</comments>
		<pubDate>Sun, 13 Oct 2024 03:12:17 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[架构和远方]]></category>
		<category><![CDATA[研发效能]]></category>

		<guid isPermaLink="false">http://www.phppan.com/?p=2282</guid>
		<description><![CDATA[研发团队没有战斗力，怎么解？ 在现代企业中，研发团队的战斗力是企业竞争力的重要组成部分，尤其是在技术驱动型的公 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p style="color: #000000;" data-tool="mdnice编辑器">研发团队没有战斗力，怎么解？</p>
<p style="color: #000000;" data-tool="mdnice编辑器">在现代企业中，研发团队的战斗力是企业竞争力的重要组成部分，尤其是在技术驱动型的公司。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">一个高效、有战斗力的研发团队不仅能快速适应市场变化，还能通过技术创新为企业创造更多的价值。那么，如何才能打造一个有战斗力的研发团队？</p>
<p style="color: #000000;" data-tool="mdnice编辑器">我们先界定问题，拆解问题，然后再看怎么系统化的去解。</p>
<h1 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">1 界定问题</span></h1>
<p style="color: #000000;" data-tool="mdnice编辑器">我们需要明确什么是「有战斗力的研发团队」，并清楚当前团队与理想状态之间的差距。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">用我和我们家闺女常说的，当有人和你说一些事情的时候，需要看一下他说的「<strong style="color: #0e88eb;">是一个观点还是一个事实</strong>」。「研发团队没有战斗力」，这明显是一个观点。基于这个观点，接下来我们要做的，就是去拆解这个观点背后的事实，并找到支撑这个观点的具体原因。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">那事实有哪些呢？</p>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">1.1 任务完成效率低</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器">团队的任务完成效率可以通过数据来衡量。如果团队频繁出现项目延期、任务积压，或者在完成某些任务时总是比预期时间拖延很多，这通常会被认为是研发团队没有足够战斗力的重要表现之一。这里的事实包括：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">项目计划与实际进度的差距有多大？</section>
</li>
<li>
<section style="color: #010101;">每个任务的平均完成时间是否过长？</section>
</li>
<li>
<section style="color: #010101;">团队在解决问题时是否常常遇到瓶颈？</section>
</li>
</ul>
<p style="color: #000000;" data-tool="mdnice编辑器">这些数据可以通过项目管理工具（如 Jira、Trello 等）来进行追踪和量化。一旦明确了当前的情况，我们就能更好地了解团队效率低下的具体原因。</p>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">1.2 沟通不畅</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器">沟通问题是研发团队中非常常见的困扰之一。它可以通过以下事实来体现：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">团队成员之间是否常常因为沟通不足而产生误解？</section>
</li>
<li>
<section style="color: #010101;">在跨部门协作中，是否有任务交接不清、信息传递不准确的情况？</section>
</li>
<li>
<section style="color: #010101;">是否存在因为沟通问题导致的工作重复或返工？</section>
</li>
</ul>
<p style="color: #000000;" data-tool="mdnice编辑器">通过团队内部的回顾会议、跨部门的反馈等方式，可以明确沟通问题的具体表现和影响。沟通不畅往往会拖慢整体效率，降低团队的战斗力。</p>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">1.3 团队士气低落</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器">士气低落是另一个常见的观点化描述，但它背后有很多具体的事实可以支撑：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">团队成员是否主动承担任务，还是常常出现推诿现象？</section>
</li>
<li>
<section style="color: #010101;">团队的离职率是否高于行业平均水平？</section>
</li>
<li>
<section style="color: #010101;">团队成员是否经常表现出疲惫、倦怠，缺乏对工作的积极性？</section>
</li>
</ul>
<p style="color: #000000;" data-tool="mdnice编辑器">如果团队中缺乏成就感、归属感，激励机制不到位，这些都会导致士气低落，进而影响团队的整体战斗力。通过员工满意度调查、绩效考核结果等数据，我们可以准确捕捉到士气低落的事实。</p>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">1.4 技术债务积累</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器">「技术债务」经常会被忽视，但它实际上是研发团队战斗力不足的重要原因之一。以下事实可以帮助我们判断团队是否面临技术债务问题：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">系统是否频繁出现 BUG，导致大量时间用于修复问题而非开发新功能？</section>
</li>
<li>
<section style="color: #010101;">是否有大量遗留的代码或架构问题，导致团队在进行新功能开发时效率低下？</section>
</li>
<li>
<section style="color: #010101;">系统的可维护性和可扩展性是否在不断下降？</section>
</li>
</ul>
<p style="color: #000000;" data-tool="mdnice编辑器">技术债务的积累不仅会拖慢整个团队的开发进度，还可能让团队陷入“救火”而非创新的状态，这无疑是战斗力下降的一个重要体现。</p>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">1.5 质量问题严重</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器"><strong style="color: #0e88eb;">质量问题</strong>也是影响研发团队战斗力的一个重要因素，并且算是一种非常关键的事实表现。质量问题不仅影响产品的稳定性和用户体验，还会对团队的效率、士气和创新能力造成负面影响。在「研发团队没有战斗力」这一观点下，质量问题可以归结为以下几个具体事实：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">有频繁的产品缺陷和返工，可以使用缺陷率、线上故障数、SLA 等指标来衡量</section>
</li>
<li>
<section style="color: #010101;">项目交付质量不达标，如功能不完整，性能问题，用户反馈差等</section>
</li>
<li>
<section style="color: #010101;">缺乏严格的代码审查和质量控制流程</section>
</li>
</ul>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">1.6 工程化和系统化问题</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器">「工程化和系统化问题」是影响研发团队战斗力的重要因素之一，尤其是在团队规模扩大、项目复杂性增加的情况下。工程化和系统化不足通常会导致团队的开发流程混乱、效率低下、交付质量不稳定、可扩展性差，甚至会影响团队的整体协作能力和长期发展。其主要体现在如下几个方面：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">缺乏标准化流程</section>
</li>
<li>
<section style="color: #010101;">自动化程度不足，缺乏自动化测试，手动操作的事项较多，重复劳动多</section>
</li>
<li>
<section style="color: #010101;">系统化不足，缺乏整体架构设计，模块耦合度高或者扩展性差</section>
</li>
</ul>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">1.7 人才梯队问题</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器"><strong style="color: #0e88eb;">人才梯队</strong>是指团队中不同层级的人才储备和发展体系。如果团队中缺乏明确的人才梯队，意味着团队内部没有清晰的发展路径，成员的技能水平参差不齐，导致团队的整体战斗力不足。以下是一些具体的事实表现：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">缺乏明确的晋升机制</strong>：团队中没有明确的晋升机制和路径，导致优秀的员工看不到职业发展前景，逐渐失去动力。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">关键人员依赖严重</strong>：团队中的某些核心人员承担了过多的技术关键任务，一旦这些人离职或出问题，整个项目或团队都会陷入停滞。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">缺乏接班人</strong>：当团队中的高层或资深技术人员调岗或离职时，缺乏能够快速接替其工作的接班人，导致项目推进或技术维护出现断档。</section>
</li>
</ul>
<p style="color: #000000;" data-tool="mdnice编辑器">这些现象说明团队在人才梯队建设上存在严重不足，导致团队的持续作战能力和抗风险能力较差。</p>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">1.8 人才密度问题</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器"><strong style="color: #0e88eb;">人才密度</strong>指的是团队中高水平技术人才的比例。如果团队的人才密度不足，即高水平人才较少，团队整体的战斗力自然会大打折扣。以下是一些具体的事实表现：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">技术水平不均衡</strong>：团队中技术能力强的人数较少，大多数成员的技术能力不足以支撑复杂的项目开发，导致高水平的成员承担了大部分工作，而低水平的成员拉低了整体效率。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">问题解决能力差</strong>：团队整体在面对复杂问题时，解决问题的能力不足，往往需要依赖外部资源或高层决策，无法自主高效地解决技术难题。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">技术创新动力不足</strong>：由于缺乏高水平人才的引领，团队内部的技术创新能力较弱，难以提出具有前瞻性的技术方案。</section>
</li>
</ul>
<p style="color: #000000;" data-tool="mdnice编辑器">人才密度直接影响到团队的技术创新和问题解决能力，因此提升人才密度是打造高战斗力团队的关键。</p>
<h1 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">2 分解问题</span></h1>
<p style="color: #000000;" data-tool="mdnice编辑器">在明确了研发团队战斗力不足的主要表现后，我们需要进一步分解问题，以便逐步分析并找到解决方案。根据 <strong style="color: #0e88eb;">MECE</strong> 的原则，可以将战斗力不足的问题分解为下列几个方面：</p>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">2.1 效率问题</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器">效率是衡量研发团队战斗力的最直接指标之一。如果团队的任务完成效率低下，项目延期频繁，势必会影响整体战斗力。这一问题可以分为以下几个子问题：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">流程不清晰</strong>：团队的开发流程、测试流程、发布流程是否标准化？是否有明确的职责划分和操作步骤？</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">工具使用不当</strong>：项目管理工具、代码管理工具、自动化工具是否充分使用？是否存在大量的手动操作和重复劳动？</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">不合理的资源分配</strong>：团队成员的任务分配是否合理？是否存在某些成员工作过载，而其他成员任务量不足的情况？</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">瓶颈无法突破</strong>：团队在某些技术领域或开发阶段是否经常遇到瓶颈，导致任务卡住？</section>
</li>
</ul>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">2.2 沟通协作问题</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器">沟通不畅往往是导致研发团队效率低下和战斗力不足的主要原因之一。沟通问题可以进一步分解为：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">跨部门沟通障碍</strong>：研发团队和其他部门（如产品、运营、市场等）之间的沟通是否频繁出现误解或信息不对称？</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">内部沟通不畅</strong>：团队内部成员之间是否缺乏有效的沟通渠道？是否存在信息流动不畅或不透明的情况？</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">技术与业务脱节</strong>：研发团队是否充分理解业务需求？技术方案是否能够及时响应业务的变化？</section>
</li>
</ul>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">2.3 士气和激励问题</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器">研发团队的士气低落通常是由激励机制不合理、工作压力过大或缺乏成就感引起的。这个问题可以进一步分解为：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">激励机制不健全</strong>：绩效考核、薪资、奖金等激励机制是否能够有效激励员工？团队中是否存在“吃大锅饭”的问题，导致优秀员工失去动力？</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">成就感缺失</strong>：团队成员是否能感受到工作的意义？是否有足够的成就感和归属感？</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">工作倦怠</strong>：团队成员是否长期处于高压、加班的状态，导致出现工作倦怠？</section>
</li>
</ul>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">2.4 技术债务与质量问题</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器">技术债务和质量问题会严重影响团队的战斗力，因为它们导致团队需要花费大量时间在修复错误和维护上，而不是开发新功能或创新。技术债务和质量问题的细分包括：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">代码质量差</strong>：团队是否有严格的代码评审流程？代码是否有良好的可读性、可维护性？</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">技术债务积累</strong>：系统中是否存在大量的历史遗留问题（如未重构的老旧代码、架构问题等），导致维护成本高、开发效率低？</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">缺乏自动化测试</strong>：团队是否有足够的自动化测试覆盖？是否依赖大量的手工测试，增加了测试和发布的成本？</section>
</li>
</ul>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">2.5 人才梯队建设不足</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器">人才梯队建设不足意味着团队缺乏不同层次的人才储备，导致团队的整体战斗力和可持续发展能力受限。具体问题包括：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">晋升机制不明确</strong>：是否有清晰的晋升机制和职业发展通道？员工是否知道如何通过努力获得晋升或更多的成长机会？</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">接班人缺失</strong>：是否有计划培养接班人，确保每个关键岗位都有后备力量？</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">关键依赖严重</strong>：团队是否过度依赖某些核心人员，一旦这些人离职或请假，项目进展是否会受到严重影响？</section>
</li>
</ul>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">2.6 人才密度不够</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器">人才密度不够会导致团队在面对复杂技术问题时缺乏足够的解决能力，团队的技术创新能力也会因此受到影响。这个问题可以进一步分解为：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">招不到合适的人</strong>：招聘过程是否存在瓶颈，导致无法及时引入高水平的技术人才？</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">人才培养不足</strong>：是否有系统的内部培训机制，帮助团队成员提升技术水平？</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">技术水平参差不齐</strong>：团队成员的技术能力是否存在较大的差异，导致整体效率不高？</section>
</li>
</ul>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">2.7 工程化和系统化不足</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器">工程化和系统化不足会导致团队效率低下、交付质量不稳定，无法应对复杂的项目需求。具体问题包括：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">开发流程不标准</strong>：是否有统一的开发、测试、发布流程？是否存在大量的手动操作？</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">自动化程度不够</strong>：系统的开发、测试、部署等环节是否充分利用了自动化工具？是否存在大量重复的手工劳动？</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">架构设计不合理</strong>：系统的架构设计是否能够支持业务的扩展和未来的发展需求？是否存在模块耦合度过高、扩展性差等问题？</section>
</li>
</ul>
<h1 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">3 体系化的解决问题</span></h1>
<p style="color: #000000;" data-tool="mdnice编辑器">解决研发团队没有战斗力的问题，是一个多维度、跨职能的系统性工程。它涉及到组织文化、组织结构、技术架构、流程设计、工程系统和度量考核等多个方面。每个维度的优化和提升都能够为研发团队带来战斗力的增强，但这些维度并非孤立存在，而是相互关联、彼此支撑的。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">我们需要明确的是，研发团队战斗力的提升<strong style="color: #0e88eb;">不仅仅是为了提高「速度」，更是为了提高「质量」和「价值」</strong>，即更高效地交付更优质的产品，满足业务需求，并为公司创造长期的价值。</p>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">3.1 组织文化和沟通机制构建</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器">组织文化是企业的灵魂，它直接影响员工的行为和思维方式。一个以创新和协作为核心的组织文化能激发员工的创造力，鼓励他们尝试新方法和新技术，并在失败中学习和改进。文化的塑造对研发效能提升而言，是打下「地基」的工作。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">如何构建？</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">建立跨部门沟通机制</strong>：通过定期的跨部门会议或项目复盘，确保技术、产品、业务等不同职能部门之间的沟通顺畅。可以采用 <strong style="color: #0e88eb;">OKR</strong> 或<strong style="color: #0e88eb;">双向沟通机制</strong>，让各部门了解彼此的目标和进展，减少信息孤岛。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">鼓励知识共享</strong>：定期组织 <strong style="color: #0e88eb;">技术分享会</strong>、<strong style="color: #0e88eb;">内部培训</strong>，以及设立 <strong style="color: #0e88eb;">技术博客</strong> 或 <strong style="color: #0e88eb;">Wiki</strong>，这样可以促进技术积累和知识在团队内的流动。还可以通过内部的 <strong style="color: #0e88eb;">导师制</strong>，帮助新员工快速融入团队。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">认可和激励创新</strong>：设立相应的 <strong style="color: #0e88eb;">奖项</strong> 或 <strong style="color: #0e88eb;">肯定机制</strong>，对提出创新方案或成功实施新技术的员工进行公开表扬和奖励。比如可以设立 <strong style="color: #0e88eb;">季度创新奖</strong>，以鼓励员工在日常工作中不断试验和改进。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">领导层的共识</strong>：研发负责人应确保与高层管理者达成一致，使研发效能提升工作得到高层支持。领导层的共识会帮助在资源分配、目标设定、团队管理等层面为研发效能的提升提供保障。</p>
</section>
</li>
</ul>
<p style="color: #000000;" data-tool="mdnice编辑器">我们可以进行如下的一些具体的操作：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">定期组织 <strong style="color: #0e88eb;">跨部门的需求讨论会</strong> 或 <strong style="color: #0e88eb;">研发复盘会</strong>，确保各个部门的需求和反馈能够及时传递。</section>
</li>
<li>
<section style="color: #010101;">设立 <strong style="color: #0e88eb;">激励计划</strong>，对优秀的创新项目和技术方案进行奖励。</section>
</li>
<li>
<section style="color: #010101;">通过 <strong style="color: #0e88eb;">员工满意度调查</strong> 或 <strong style="color: #0e88eb;">一对一访谈</strong>，了解员工对现有文化的看法，并持续改进。</section>
</li>
</ul>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">3.2 调整组织结构</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器">组织结构决定了信息的流动、资源的分配以及决策的效率。一个灵活的、扁平化的组织结构能够促进创新，加速决策过程，同时减少层级间的沟通障碍。通过合理的组织结构设计，可以让团队在面对复杂问题时具备更强的反应能力。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">组织结构的调整需要根据实际的团队情况以及业务情况来做优化，是职能型，还是项目型，还是矩阵型等等，可以有如下的一些参考思路：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">小型化、自治化的团队</strong>：采用 <strong style="color: #0e88eb;">跨职能团队</strong> 的形式，促进团队成员之间的紧密合作。每个团队都拥有相对独立的决策权，能够快速响应业务需求。采用 <strong style="color: #0e88eb;">Spotify 模式</strong> 或 <strong style="color: #0e88eb;">Scrum 团队</strong> 的形式，打破职能部门壁垒，形成更快速决策和执行的团队。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">灵活的项目管理机制</strong>：引入 <strong style="color: #0e88eb;">动态人员管理</strong> 和 <strong style="color: #0e88eb;">内部创业机制</strong>，让团队能够根据项目的需求灵活调整人员和资源配置。通过设立 <strong style="color: #0e88eb;">内部孵化器</strong>，让员工能够在公司内部尝试新的项目和解决方案。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">减少管理层级</strong>：通过扁平化管理，减少中间层级的沟通障碍，形成更直接的反馈机制。管理者应该更多地起到 <strong style="color: #0e88eb;">协调者</strong> 和 <strong style="color: #0e88eb;">支持者</strong> 的作用，而不是微观管理。</p>
</section>
</li>
</ul>
<p style="color: #000000;" data-tool="mdnice编辑器">在实际操作过程中，我们可以：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">设立多个 <strong style="color: #0e88eb;">跨职能团队</strong>，每个团队独立负责某个产品或项目的端到端交付。</section>
</li>
<li>
<section style="color: #010101;">引入 <strong style="color: #0e88eb;">OKR 管理机制</strong>，确保各个团队的目标与公司整体战略保持一致，并且团队间可以灵活协作。</section>
</li>
<li>
<section style="color: #010101;">定期进行 <strong style="color: #0e88eb;">组织结构评估</strong>，根据业务需求和人员成长情况灵活调整团队架构。</section>
</li>
</ul>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">3.3 评估并调整技术架构</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器">技术架构的合理性直接影响团队的研发效率。如果架构设计不合理，团队的开发成本会持续增加，迭代速度会变慢，系统的稳定性和可扩展性也会下降。通过合理的架构设计，可以让团队更高效地应对变化和扩展需求。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">以下为一些评估和调整的思路或原则：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">模块化、低耦合的架构设计</strong>：在架构设计中，遵循 <strong style="color: #0e88eb;">高内聚、低耦合</strong> 的原则，确保系统模块之间的依赖性降到最低，便于独立开发和部署。采用 <strong style="color: #0e88eb;">微服务架构</strong> 或 <strong style="color: #0e88eb;">服务化架构</strong>，将系统拆分为相对独立的服务，确保每个模块可以独立扩展和维护。这虽然是老生常谈，但是很少有组织做得很好。且这里需要根据实际的业务需要和当前架构形态来决策。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">云原生架构</strong>：通过云原生架构，使用 <strong style="color: #0e88eb;">Docker</strong>、<strong style="color: #0e88eb;">Kubernetes</strong> 等容器化和编排技术，实现系统的一致性和可移植性，支持快速部署和环境隔离。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">灵活的技术栈</strong>：根据业务需求选择合适的技术栈，而不是盲目追求技术潮流。技术选择要与团队的技术能力和业务发展阶段相匹配。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">DevOps 和 CI/CD 实践</strong>：通过持续集成和持续交付（CI/CD）来加速产品发布，减少人工操作的错误，提升发布频率和质量。</p>
</section>
</li>
</ul>
<p style="color: #000000;" data-tool="mdnice编辑器">具体操作过程中，我们可以：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">进行 <strong style="color: #0e88eb;">架构评审</strong>，定期对系统的技术架构进行审查，确保架构能够支持当前和未来的业务发展。</section>
</li>
<li>
<section style="color: #010101;">引入 <strong style="color: #0e88eb;">DevOps 实践</strong>，通过自动化工具（如 Jenkins、GitLab CI 等）实现持续集成和交付。</section>
</li>
<li>
<section style="color: #010101;">采用 <strong style="color: #0e88eb;">微服务架构</strong> 进行系统划分，确保各个服务可以独立开发、测试和部署。</section>
</li>
</ul>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">3.4 优化研发流程</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器">研发流程设计是确保研发活动高效进行的关键。良好的流程设计可以减少非必要的工作，清晰定义各个阶段的输入、输出和质量标准。同时，优秀的流程设计能帮助团队在每个环节上减少浪费，提升整体效率。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">以下为常用的一些优化思路：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">引入敏捷开发方法</strong>：采用 <strong style="color: #0e88eb;">Scrum</strong> 或 <strong style="color: #0e88eb;">Kanban</strong> 等敏捷开发方法，确保团队能够快速响应需求变化，并通过短周期迭代逐步交付产品。不能为了敏捷而敏捷，根据当前团队情况来实施。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">精益开发思想</strong>：通过 <strong style="color: #0e88eb;">精益思想</strong>（Lean），消除流程中的浪费，减少不增值的工作。例如，减少不必要的会议、文档、审批流程，提升团队专注于高价值任务的时间。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">自动化流程</strong>：通过引入自动化工具，简化开发、测试和发布流程，减少手工操作和人为错误。比如自动化代码检查、自动化测试、自动化部署等。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">数据驱动的流程优化</strong>：通过 <strong style="color: #0e88eb;">数据分析工具</strong>（如 Jira、SonarQube 等）监控流程中的瓶颈点和低效环节，并持续优化流程。</p>
</section>
</li>
</ul>
<p style="color: #000000;" data-tool="mdnice编辑器">实际操作过程中可以通过以下的方式来做一些落地的操作：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">定期进行 <strong style="color: #0e88eb;">流程审查会议</strong>，分析当前流程中的低效环节和瓶颈，提出改进方案。</section>
</li>
<li>
<section style="color: #010101;">采用 <strong style="color: #0e88eb;">需求交付周期</strong> 和 <strong style="color: #0e88eb;">需求吞吐量</strong> 等指标，衡量每个迭代的效率，并根据数据优化流程。</section>
</li>
<li>
<section style="color: #010101;">使用 <strong style="color: #0e88eb;">自动化工具</strong> 完成代码检查、测试和部署，减少人工干预。</section>
</li>
</ul>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">3.5 优化工程系统</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器">工程系统是研发效能提升的基础设施。包括代码管理、构建、测试、部署等一系列工程实践。通过系统化的工具和方法，可以减少重复性工作，提升研发的效率和稳定性。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">工程系统如何优化？</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">统一的开发环境</strong>：建立统一的开发环境和工具链，确保团队成员在同一套标准下工作，降低环境差异带来的问题。采用 <strong style="color: #0e88eb;">Docker</strong> 等容器化技术，确保本地开发环境与生产环境的一致性。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">自动化测试平台</strong>：通过自动化测试平台（如 Selenium、JUnit、TestNG 等），实现单元测试、集成测试、回归测试的自动化，提高产品质量，减少人工测试的负担。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">版本控制系统</strong>：采用 <strong style="color: #0e88eb;">Git</strong> 等版本控制系统，建立合理的分支管理策略（如 GitFlow），确保代码的安全性和可追溯性。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">监控和日志分析系统</strong>：引入 <strong style="color: #0e88eb;">监控工具</strong>（如 Prometheus、Grafana）和 <strong style="color: #0e88eb;">日志分析工具</strong>（如 ELK Stack），确保系统的运行状况可视化，尽早发现问题并采取措施。</p>
</section>
</li>
</ul>
<p style="color: #000000;" data-tool="mdnice编辑器">在实际操作过程中我们可以：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">建立统一的 <strong style="color: #0e88eb;">Docker 镜像仓库</strong>，确保开发和生产使用相同的基础环境。</section>
</li>
<li>
<section style="color: #010101;">使用 <strong style="color: #0e88eb;">持续集成工具</strong>（如 Jenkins）进行代码的自动化构建和测试。</section>
</li>
<li>
<section style="color: #010101;">设立 <strong style="color: #0e88eb;">监控和报警机制</strong>，确保系统的健康状况能够被实时监控。</section>
</li>
</ul>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">3.6 构建度量考核</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器">度量考核是研发效能提升的反馈机制。它为团队提供了衡量成果和改进的依据，帮助团队识别问题、跟踪进度，并调整优化策略。没有量化的度量，研发效能的提升就缺乏方向和依据。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">同时，度量可以让战斗力这个概念可视化出来，更明确什么是有战斗力，什么是没有战斗力。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">我们可以用如下的方式落地：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">建立科学的度量体系</strong>：用一套符合团队实际情况的指标体系来衡量效能，覆盖项目进度、产品质量、团队效率等方面。常见的度量指标包括 <strong style="color: #0e88eb;">需求交付周期</strong>、<strong style="color: #0e88eb;">缺陷率</strong>、<strong style="color: #0e88eb;">代码覆盖率</strong>、<strong style="color: #0e88eb;">部署频率</strong> 等。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">定期审视数据</strong>：定期对这些指标进行审查，分析趋势和异常，找出影响效能的主要原因，并制定改进措施。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">将度量结果与激励机制挂钩</strong>：通过绩效考核，确保团队成员的贡献能够被量化和认可，并通过奖励机制激励团队不断提升效能。</p>
</section>
</li>
</ul>
<p style="color: #000000;" data-tool="mdnice编辑器">实际操作：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">建立 <strong style="color: #0e88eb;">研发效能仪表盘</strong>，实时监控团队的效能指标。</section>
</li>
<li>
<section style="color: #010101;">每月定期召开 <strong style="color: #0e88eb;">效能回顾会议</strong>，根据数据分析报告，制定下一步的改进计划。</section>
</li>
<li>
<section style="color: #010101;">将 <strong style="color: #0e88eb;">研发效能指标</strong> 纳入团队的 <strong style="color: #0e88eb;">OKR</strong> 或绩效考核体系，确保团队成员的目标与效能提升保持一致。</section>
</li>
</ul>
<h1 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">4 小结</span></h1>
<p style="color: #000000;" data-tool="mdnice编辑器">提升研发团队的战斗力是一个体系化、系统化的工程，涉及到组织文化、组织结构、技术架构、流程设计、工程系统和度量考核等多个层面。通过在这些维度上进行持续优化，可以显著增强研发团队的战斗力，提升产品交付的速度、质量和创新能力。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">如果要真正的解决研发团队没有战斗力的问题，在上面界定问题、分析问题和解决问题的基础上，还需要有如下的一些操作和逻辑：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">建立目标和成功判断</section>
</li>
<li>
<section style="color: #010101;">制定详细的解决方案</section>
</li>
<li>
<section style="color: #010101;">设定里程碑</section>
</li>
<li>
<section style="color: #010101;">制定详细的工作计划</section>
</li>
<li>
<section style="color: #010101;">风险判断和未来改进</section>
</li>
</ul>
<p style="color: #000000;" data-tool="mdnice编辑器">只有完整落地详细的工作计划，完成里程碑，一步一个脚印，才能真正的打造出有战斗力的研发团队。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">每个企业的实际情况不同，因此在执行时需要根据具体场景进行灵活调整。最终目标是帮助研发团队在高速变化的市场环境中，更高效、更稳定地交付高质量的产品，创造更大的商业价值。</p>
]]></content:encoded>
			<wfw:commentRss>https://www.phppan.com/2024/10/how-to-boost-development-team-productivity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>关于研发效能在组织层面的一些思考和总结</title>
		<link>https://www.phppan.com/2024/05/conway-law-optimizing-rd-efficiency-through-organizational-structure/</link>
		<comments>https://www.phppan.com/2024/05/conway-law-optimizing-rd-efficiency-through-organizational-structure/#comments</comments>
		<pubDate>Sat, 25 May 2024 11:45:38 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[架构和远方]]></category>
		<category><![CDATA[康威定律]]></category>
		<category><![CDATA[研发效能]]></category>
		<category><![CDATA[组织架构]]></category>

		<guid isPermaLink="false">http://www.phppan.com/?p=2207</guid>
		<description><![CDATA[组织结构决定了信息流动、资源分配和决策过程的效率。在研发效能的提升中，扁平化的管理层级、跨功能的团队配置以及灵 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p style="color: #000000;" data-tool="mdnice编辑器"><strong style="color: #0e88eb;">组织结构决定了信息流动、资源分配和决策过程的效率。</strong>在研发效能的提升中，扁平化的管理层级、跨功能的团队配置以及灵活的人员动态管理，都能够促进创新和加速决策过程。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">最近在思考关于软件研发效能的事情，而其中关于组织层面有一些想法和总结，如下：</p>
<h1 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">康威定律和逆康威定律</span></h1>
<p style="color: #000000;" data-tool="mdnice编辑器">在 1968年，梅尔·康威在《Datamation》杂志发表文章《How Do Committees Invent?》，探讨了组织结构和系统设计的关系。其中一句话后来被总结为康威定律:「<strong style="color: #0e88eb;">任何组织所设计的系统架构，都不可避免的反映为该组织沟通结构的副本。</strong>」</p>
<p style="color: #000000;" data-tool="mdnice编辑器">康威在开发早期电子计算机系统的组织中观察到，组织的真实沟通路径(即价值创造架构)与最终的软件架构之间存在强相关性。这种同态力将软件架构和团队结构塑造成相同的「形状」。也就是说，<strong style="color: #0e88eb;">构建软件需要理解团队沟通路径，以更加实际地考虑什么样的软件架构是可行的</strong>。如果理论上的系统架构与组织模型不符，就需要对其中之一做出改变。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">当组织结构变化时，系统架构就会被影响，身在局中的我们感触非常深刻，本来负责 A 业务，调整后负责 B 业务，原来的工作就不想动了；本来在重构某块技术，想把历史的债务还清先，调整后也没有了动力。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">作为一个技术人面对这种情况，有时也无能为力，调整后大量的时间是投入在当前的业务中，而看到的历史问题不在你的工作边界之中，只能看着历史债务越集越多，直到某一天，雪崩。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">特别是后端，作为业务核心的技术部分，一个 24&#215;7 要在线的，其稳定性，可用性都是非常重要的。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">如何通过系统化的机制保障后续架构的稳定演进，并且不会随着组织结构的频繁变动而频繁变动？</p>
<p style="color: #000000;" data-tool="mdnice编辑器">要想抵抗组织结构对系统架构的影响，一种办法是适度隔离，比如采用内部开源的方式，让系统脱离具体业务组织而存在，代码由核心小组统一维护。这种虚拟组织不会随业务变动而变动，适用于底层框架、中间件等非业务模块。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">但对于业务属性较高的模块，内部开源并不可行。因为其开发和维护需要对业务有深入理解，跨部门的认知成本太高。这时就需要换一个思路：利用康威定律，通过优化团队架构来引导系统架构，减少沟通和认知成本，实现理想的、高内聚低耦合的架构闭环。这就是逆康威定律的应用。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">逆康威定律是 2015 年微服务兴起之际，<span class="wx_search_keyword_wrap" style="color: var(--weui-link);">ThoughtWorks<i class="wx_search_keyword"></i></span> 技术总监 James Lewis 提出的概念，即<strong style="color: #0e88eb;">组织要根据他们想得到的软件架构来设计团队结构，而不是期望团队盲从一个被设计好的团队结构。</strong>。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">其中的核心观点在于，将软件架构看作一个独立的概念，认为它可以被孤立设计，然后交由任何团队来实现，这从根本上就是错误的。软件架构和团队结构的差异在所有架构类型中比比皆是，无论是客户端-服务端、SOA 还是微服务架构。这也是为什么为了让团队聚焦，单体架构需要拆分的原因。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">通过逆康威定律的应用，我们可以先设计出理想的软件架构，然后根据这个架构来调整和优化团队结构。这样做的好处是可以更好地匹配业务需求，提高系统的内聚性和可维护性，减少不必要的沟通和协调成本。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">具体来说，我们可以采取以下措施：</p>
<ol class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">根据业务领域划分微服务，每个微服务由一个独立的团队负责开发和维护。这样可以让团队对自己的服务有更清晰的认知和掌控，减少跨团队沟通。</section>
</li>
<li>
<section style="color: #010101;">建立跨团队的架构治理机制，制定统一的架构原则、接口规范、质量标准等，确保微服务之间的一致性和互操作性。</section>
</li>
<li>
<section style="color: #010101;">加强团队内部的自治和责任心，鼓励团队自主决策、快速迭代、持续改进。同时赋予团队端到端的交付职责，避免因职责割裂导致推诿扯皮。</section>
</li>
<li>
<section style="color: #010101;">建设公共的技术平台和工具链，提供标准化的开发、测试、部署、监控等功能，减轻团队的基础设施负担，提高研发效率。</section>
</li>
<li>
<section style="color: #010101;">营造开放协作的文化氛围，打破部门墙，鼓励团队之间主动沟通和知识共享，形成学习型组织。</section>
</li>
</ol>
<p style="color: #000000;" data-tool="mdnice编辑器">康威定律揭示了组织结构与系统设计的同构关系，而逆康威定律则为我们指明了一条突破之路：从组织架构入手，持续优化团队分工，才能推动系统架构向理想方向演进。这需要我们在组织设计上投入更多思考，用系统思维来对待研发效能问题。</p>
<h1 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">团队的认知负载</span></h1>
<p style="color: #000000;" data-tool="mdnice编辑器">认知负载是指在特定时间内，工作记忆中的信息负荷。对于个人而言，认知负载就是大脑需要同时处理的信息量。当我们将视角拓展到团队层面时，认知负载就变成了团队在执行任务时所承担的信息处理总量。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">一个团队的认知负载并不等于团队成员认知负载的简单加总。团队协作过程中产生的交流、同步、协调等活动，都会带来额外的认知负载。同时，团队成员之间知识和技能的差异，也会影响到认知负载在团队内部的分配。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">团队的认知负载也是影响软件研发效能的重要因素。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">当系统复杂度超出团队的认知极限时，就会导致生产力下降、质量恶化等问题。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">控制认知负载的关键，在于团队内部的&#8221;通晓全局&#8221;程度，即每个成员对系统的整体理解。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">那如何判断团队是否处于认知过载状态？</p>
<p style="color: #000000;" data-tool="mdnice编辑器">可以从任务执行、团队氛围、个人状态三个维度来观察。</p>
<p style="color: #000000;" data-tool="mdnice编辑器"><strong style="color: #0e88eb;">从任务执行的角度看</strong>，如果团队在面对新需求时响应速度明显变慢，对变更的适应能力下降，出现更多交付物质量问题，需要更多的返工和修复，这就是认知过载的典型信号。团队投入了更多的时间和精力，但产出的绩效却在下降，说明认知资源已经难以支撑高质量高效率的工作。</p>
<p style="color: #000000;" data-tool="mdnice编辑器"><strong style="color: #0e88eb;">从团队氛围的角度看</strong>，如果团队成员之间的沟通变得低效和困难，产生更多的误解和冲突，知识共享和协作的意愿下降，整个团队的创新能力和解决问题的能力下降，团队士气低落，抱怨和消极情绪在蔓延，这也提示团队正在经历认知过载。当团队的认知资源捉襟见肘时，成员往往会降低对他人和整体的关注，转而专注应对自己的工作压力。</p>
<p style="color: #000000;" data-tool="mdnice编辑器"><strong style="color: #0e88eb;">从个人状态的角度看</strong>，如果团队成员普遍感到疲惫和倦怠，对工作失去热情和主动性，工作与生活难以平衡，出现失眠、健康问题等身心状况，这往往是认知过载的结果。当个人长期处于高认知负荷状态，既要应对本职工作，又要参与大量协调和沟通，还要不断学习新知识，就很容易产生持续的压力感，陷入职业倦怠。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">团队认知过载不是孤立的问题，而是会从任务执行、团队氛围、个人状态等方面综合反映出来。作为团队管理者，需要保持敏锐的洞察力，及时捕捉这些危险信号，采取针对性的优化措施，从而保障团队的可持续发展。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">为了降低认知负载，我们可以从组织设计和架构设计时都做一些考虑。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">在组织设计时，可以考虑如下几点：</p>
<ol class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">适度聚焦</strong>。每个团队应该有明确的、聚焦的职责范围，避免过度分散精力。职责范围要与团队的认知能力相匹配，既不能太窄导致产能不足，也不能太宽导致认知过载。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">职责自治</strong>。团队对自己的职责范围应该有较大的自主权，可以独立做出决策和优化。过多的外部依赖会增加认知负载。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">边界清晰</strong>。团队之间、系统模块之间应该有清晰的边界和接口，减少耦合和认知依赖。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">知识共享</strong>。鼓励团队之间主动分享知识和经验，建立共同的认知基础。但要注意，知识共享不等于职责共担。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">弹性冗余</strong>。在关键领域，适当保留一定的冗余和备份，避免单点依赖。这样可以在保证产出的同时，降低认知负载的风险。</section>
</li>
</ol>
<p style="color: #000000;" data-tool="mdnice编辑器">在架构设计时，可以考虑如下几点：</p>
<ol class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">模块化和解耦</strong>。将系统划分为逻辑清晰、职责单一的模块，并通过松耦合的方式连接，减少模块之间的认知依赖。每个团队只需深入理解自己负责的模块。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">接口驱动</strong>。通过定义清晰、稳定的接口规范，将模块的内部实现和外部用途解耦。调用方只需了解接口，而无需关心内部细节。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">领域建模</strong>。从业务领域出发，识别出稳定的核心业务概念和流程，并据此设计系统模型。让软件架构尽量贴近真实世界，减少认知转换。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">约定优于配置</strong>。通过制定统一的架构原则、编码规范、工具约定等，在团队之间形成一致的认知基础，减少沟通成本。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">演进式架构</strong>。架构不是一成不变的，而是随着业务和技术的发展而不断演进的。因此要为变化留出空间，通过持续重构等手段，让系统在可控的范围内优化，避免大规模的推倒重来。</section>
</li>
</ol>
<p style="color: #000000;" data-tool="mdnice编辑器">通过对认知负载的有效管理，我们可以显著提升团队的工作效率和整体协同能力。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">认知负载，说到底是对人的真正尊重。而尊重，恰恰是最好的管理。</p>
<h1 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">三种常见的团队组织</span></h1>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">业务交付团队</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器">业务交付团队，是组织中最主要和基础的团队组织。</p>
<p style="color: #000000;" data-tool="mdnice编辑器"><strong style="color: #0e88eb;">业务交付团队是围绕清晰目标和职责，匹配持续变化的业务价值交付任务，形成独立高效工作流的长期、稳定、跨职能团队。</strong></p>
<p style="color: #000000;" data-tool="mdnice编辑器">一个业务交付团队通常对应<strong style="color: #0e88eb;">一条单一、完整的价值交付流</strong>，可以是一个产品、服务、功能集合、用户故事或用户画像等。<strong style="color: #0e88eb;">团队拥有端到端的能力</strong>，能够独立完成从概念到交付的全部工作，快速、安全地持续创造用户价值，而无需依赖其他团队。</p>
<p style="color: #000000;" data-tool="mdnice编辑器"><strong style="color: #0e88eb;">业务交付团队要尽可能贴近最终用户</strong>，通过生产环境实时监控，获得快速反馈，并据此迅速响应变化和问题。团队规模适中，由高素质的<strong style="color: #0e88eb;">跨职能成员组成，保持长期稳定性</strong>，而不是随项目起起落落。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">组织内通常存在多种业务交付团队，各自负责不同的业务流，如特定用户、业务领域、地理区域、产品条线等。无论承接何种业务流，团队都应围绕明确的待办事项和优先级开展工作，确保工作流的清晰和聚焦。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">一个高效能的业务交付团队应该是这样的：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">他们的工作就像一条流水线，特性开发的各个环节衔接顺畅，没有太多卡壳和浪费</section>
</li>
<li>
<section style="color: #010101;">团队时刻关注用户反馈和业务变化，能够灵活调整开发计划和优先级</section>
</li>
<li>
<section style="color: #010101;">他们勇于尝试新事物，通过小步快跑的试错方式来推动改进，并善于从成功和失败中吸取教训</section>
</li>
<li>
<section style="color: #010101;">团队内部各司其职、协同高效，很少需要跟其他团队交接工作</section>
</li>
<li>
<section style="color: #010101;">他们交付的速度又快又稳，代码质量也有保障，还能兼顾技术升级和团队成员的健康</section>
</li>
<li>
<section style="color: #010101;">团队会投入时间优化系统架构和代码，「修修补补」以防「房子」越来越破</section>
</li>
<li>
<section style="color: #010101;">他们懂得借助专业团队的力量，定期跟架构、基建、工具等团队沟通，补齐短板，让自己更专注</section>
</li>
<li>
<section style="color: #010101;">团队成员有足够的自主权，在技能上精益求精，工作目标明确，从而获得成就感和价值感</section>
</li>
</ul>
<p style="color: #000000;" data-tool="mdnice编辑器">业务交付团队是组织的一线力量和价值核心，其他辅助型团队如技术智囊团和基建平台等，都是为了补齐能力短板、降低认知负载，让业务交付团队得以更高效地运转和创新。这种以业务交付为中心的团队组织模式，是相对于传统的职能式、项目式组织的一种进化。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">组建长期、稳定、高度自治的业务交付团队，打造清晰的端到端业务流，是实现快速、频繁、可靠价值交付，适应快速变化的关键所在，代表了现代软件开发组织的进化方向。</p>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">平台团队</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器">平台团队的目标是赋能业务交付团队，使其能够高度自治地交付工作。平台团队提供的内部服务，使业务交付团队无须开发底层服务，降低了认知负荷。这里的平台是指其作为公司内部的基础产品，向开发团队提供自服务的 API、工具、服务、知识和支持。借助平台，业务交付团队获得了自主性，可以更快地交付产品特性，减少开发过程中的各种协调、沟通。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">业务交付团队可以方便地使用平台团队提供的自服务的网站门户和/或编程API（而非厚厚的使用手册）。「方便使用」是采纳平台的基本要求，并且平台团队必须将他们所提供的服务视为一种产品，无论这些服务是被内部还是外部用户所使用，要具有可信赖的、易用的、量身定做的特征。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">平台团队可以提供不同级别的服务，但如果所有业务交付团队都要求高等级服务（如零停服务时间、自动扩缩容、自动修复），平台团队则难以支持。为避免人人都要求高等级服务，可以为这些内部基础设施和服务定价，向使用团队收费。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">作为基础设施工程团队，平台团队需要聚焦于开发团队的工作流，以及应用和基础设施的改变如何影响用户。为了帮助开发团队用户更高效地使用平台，平台团队需要做到：</p>
<ol class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">把内部平台视为线上/生产系统，计划和管理维护时间</section>
</li>
<li>
<section style="color: #010101;">引入软件产品管理和服务管理技术</section>
</li>
</ol>
<p style="color: #000000;" data-tool="mdnice编辑器">一个高效能的平台团队应该有以下行为和产出：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">与业务交付团队密切协作，理解其需求</section>
</li>
<li>
<section style="color: #010101;">依赖快速原型，尽早引入业务交付团队以获得快速反馈</section>
</li>
<li>
<section style="color: #010101;">重点关注服务的可用性和可靠性，将平台视为产品，定期回访用户以确认服务是否满足需求</section>
</li>
<li>
<section style="color: #010101;">自己也应是所提供服务的用户，与业务交付团队并肩战斗</section>
</li>
<li>
<section style="color: #010101;">明白新的内部服务将像创新曲线那样被逐步引入，而非一蹴而就</section>
</li>
</ul>
<p style="color: #000000;" data-tool="mdnice编辑器">平台团队和传统的基础设施团队略有不同，突破了传统基础设施团队与业务团队之间的隔阂，通过提供自助式的平台服务，赋能业务团队快速构建和交付应用。与传统基础设施团队相比，平台团队更加贴近业务，团队成员除了技术能力外，还需要具备产品管理、用户体验设计等技能。</p>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">专业系统团队</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器">在软件开发过程中，有一些模块或逻辑涉及高深专业领域知识而显得特别复杂，开发和维护都需要相关领域的资深专家（人也特别贵），对于这样的专业系统，我们通常会单独构建团队，称为为「专业系统团队」。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">专业系统团队的成员都是某个领域的能手，精通子系统涉及的核心技术。比如 AI 算法模型、视频编解码、特定数学模型、实时交易算法、财务报表系统、人脸识别引擎等，都是典型的复杂子系统，需要专业系统团队来专门负责。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">组建专业系统团队的主要目的，是为了给使用这些核心子系统的业务团队减负。本来这些「绝世武功」需要专业系统团队的「武林高手」倾囊相授，现在业务团队只管安心用就行了，不必自己还得练上几年。这样不仅能让每个团队专注自己最擅长的事情，也能节省组织的时间和成本。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">需要注意的是，专业系统团队和传统的「组件团队」有本质区别。后者的设立往往是为了让多个团队共用同一个组件，而专业系统团队纯粹是为了「解决疑难杂症」，和代码复用无关。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">那么，一个高效能的专业系统团队应该是什么样的呢?</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">在子系统的设计开发阶段，专业系统团队要和相关业务团队齐心协力，共同定义需求、制定计划、开发功能、测试验证，即「同进同出、战略合作」。到了后期子系统逐渐稳定了，专业系统团队就可以相对独立，专注于系统演进、接口优化等核心工作，和其他团队的互动会少一些。</section>
</li>
<li>
<section style="color: #010101;">有了专业系统团队的加持，子系统的开发质量和速度都要明显好于单靠业务团队的情况。这可以作为考核专业系统团队绩效的一个重要指标。</section>
</li>
<li>
<section style="color: #010101;">专业系统团队的工作安排要以服务好业务团队为宗旨。要紧贴一线，及时响应需求，灵活调整计划，按业务优先级来排期交付。</section>
</li>
</ul>
<h1 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">一些观点</span></h1>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">并非所有的沟通和协作都是有价值的。</section>
</li>
<li>
<section style="color: #010101;">保持团队规模的相对稳定。</section>
</li>
<li>
<section style="color: #010101;">在实现软件交付之前，先统一团队语言和共同协作方式。</section>
</li>
<li>
<section style="color: #010101;">团队的代码所有权并非是在划分地盘。团队对代码的责任，不应该是「这是我的地盘，别人不能进来」，而应该是「这是我负责打理的一亩三分地，要让它生机勃勃」。</section>
</li>
<li>
<section style="color: #010101;">软件设计不是非黑即白的选择题，而是一种平衡，如在选择架构时，不是要在单体架构和微服务架构之间做出选择，而是要适配团队的最大认知负载。</section>
</li>
</ul>
<p style="color: #000000;" data-tool="mdnice编辑器">以上。</p>
]]></content:encoded>
			<wfw:commentRss>https://www.phppan.com/2024/05/conway-law-optimizing-rd-efficiency-through-organizational-structure/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>从定义到落地：如何系统构建研发效能优化机制</title>
		<link>https://www.phppan.com/2024/05/from-definition-to-implementation-how-to-systematically-build-an-rd-efficiency-optimization-mechanism/</link>
		<comments>https://www.phppan.com/2024/05/from-definition-to-implementation-how-to-systematically-build-an-rd-efficiency-optimization-mechanism/#comments</comments>
		<pubDate>Sun, 12 May 2024 09:45:13 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[架构和远方]]></category>
		<category><![CDATA[机制]]></category>
		<category><![CDATA[研发效能]]></category>

		<guid isPermaLink="false">http://www.phppan.com/?p=2201</guid>
		<description><![CDATA[在带团队过程中，经常会听到「搞一个机制」，[某某某机制]的场景，这种一般是出现了问题或故障之类的时候，或者为了 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p style="color: #000000;" data-tool="mdnice编辑器">在带团队过程中，经常会听到「搞一个机制」，[某某某机制]的场景，这种一般是出现了问题或故障之类的时候，或者为了某个特定的目标。又或者一天老板说，你搞一下研发效能优化的机制。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">那，机制到底是什么，包括什么内容，构建机制有什么价值，如何构建机制，如何保持机制的有效性和合理性？想以今天的文章大概回答一下这些问题。</p>
<h1 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">1 机制的定义</span></h1>
<p style="color: #000000;" data-tool="mdnice编辑器">从比较泛的概念来看，机制是指<strong style="color: #0e88eb;">为了实现某种目标或功能</strong>，而建立起来的<strong style="color: #0e88eb;">一整套运作方式、管理方法和规则体系</strong>。它是由一系列相互关联、相互作用的要素和环节构成的，通过这些要素和环节的有机结合和协调运转，来保证整个系统高效、有序、可持续地运行，从而实现预期的目标或功能。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">提取关键词：实现目标或功能，一整套体系，可大可小。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">从管理上来看，机制通常包含以下几层含义：</p>
<ol class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">体制层面</strong>：是由一系列制度、规则、流程等构成的框架，用以规范和指导组织的运作。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">运作层面</strong>：是在既定的体制框架下，通过各要素之间的互动、协调和反馈，推动组织高效运转的动态过程。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">方法层面</strong>：是为实现特定管理目标，在体制和运作的基础上，采取的一系列具体的管理方法、工具和技巧。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">保障层面</strong>：是为维持机制的正常运行，提供必要的资源、环境和监督等支持条件。</section>
</li>
</ol>
<p style="color: #000000;" data-tool="mdnice编辑器"><strong style="color: #0e88eb;">机制强调系统性、规范性和持续性</strong>。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">建立科学完善的机制，有利于在组织内形成清晰的责权利关系，规范有序的工作流程，可预期的行为模式，从而提高组织效率，实现组织目标。同时，机制也强调动态优化，需要在实践中不断评估改进，以适应内外部环境的变化。</p>
<h1 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">2 机制的价值</span></h1>
<p style="color: #000000;" data-tool="mdnice编辑器">机制的价值在机制的定义中做了说明，其价值就是为了实现某种目标或功能，其价值大小和机制本身强相关联。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">以项目研发管理机制来看，其定义是指在项目的研发过程中，为了提高研发效率、控制研发成本和确保项目质量，所制定的一系列管理规范和方法。其价值在于提高研发效率、控制研发成本和确保项目质量，更细一点，价值在机制的落地文档中有明确说明。</p>
<h1 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">3 如何构建机制</span></h1>
<p style="color: #000000;" data-tool="mdnice编辑器">构建一个完整的机制是一项系统工程，从大来说需要全面考虑组织的战略目标、业务规模和特点、资源条件等因素，从小来说需要考虑具体的问题，目标，条件限制等等。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">一个大的管理机制的构建大概会是如下的步骤，小的机制也可按此逻辑，但过程中的相关人员等都可缩小范围：</p>
<ol class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">确定问题、目标或需求</strong>：在构建管理机制的过程中，<strong style="color: #0e88eb;">明确问题和目标</strong>是首要步骤。这一步骤要求明确机制建设的主要目的和目标，如提高工作效率、增强员工激励、防范潜在风险等。这些目标应与组织的整体战略紧密相连，确保机制的设计能够支持组织的长远发展。接下来的<strong style="color: #0e88eb;">需求分析</strong>阶段则涉及到对组织内外部需求的全面分析，这包括理解员工的期望、管理层的要求、合作伙伴的互动方式以及环境的变化。这一阶段的目的是确保新机制能够解决实际问题并满足不同利益相关者的需求。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">设计机制框架</strong>：在<strong style="color: #0e88eb;">制定原则</strong>环节，需要依据组织的文化和战略目标来设定机制设计的基本原则和标准，确保机制既符合组织的核心价值观，又能实现预定的战略目标。<strong style="color: #0e88eb;">选择机制类型</strong>阶段则涉及选择合适的机制类型来应对特定的需求，例如激励机制用于提高员工动力，约束机制用于规范行为，协调机制用于优化部门间合作。<strong style="color: #0e88eb;">草案设计</strong>则是将这些原则和类型综合起来，形成一个初步的机制设计草案，这一草案将详细描述机制的具体内容和操作方式。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">征求反馈与优化</strong>：在<strong style="color: #0e88eb;">内部沟通</strong>阶段，将草案在组织内部进行广泛讨论，这通常涉及不同层级的员工和管理者，以确保机制的设计能得到广泛的支持和理解。通过<strong style="color: #0e88eb;">收集反馈</strong>，机构可以利用会议、问卷等方式广泛收集员工、管理层甚至是客户的反馈意见。这些反馈将在<strong style="color: #0e88eb;">修改优化</strong>阶段被用来调整和优化机制的设计，以确保其最终的实用性和有效性。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">制定实施计划</strong>：在这一阶段，组织需要<strong style="color: #0e88eb;">制定详细步骤</strong>，包括机制实施的时间表、具体步骤和责任人。这有助于确保实施过程的有序进行。同时，<strong style="color: #0e88eb;">准备资源</strong>环节要确保所有必要的资源都已到位，例如技术支持和培训材料等。此外，<strong style="color: #0e88eb;">风险管理</strong>则要求预见并计划应对可能的挑战和风险，确保机制能够顺利实施。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">执行与监控</strong>：这一阶段的关键在于<strong style="color: #0e88eb;">正式实施</strong>，按照既定计划开始执行机制，并进行必要的员工培训和指导。<strong style="color: #0e88eb;">监控执行</strong>阶段要持续跟踪机制的实施效果，监控包括员工接受程度和机制的运行状态。在此基础上，<strong style="color: #0e88eb;">数据收集</strong>对操作数据和反馈信息的收集是必不可少的，这些数据将用于后续的评估和调整。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">评估与持续改进</strong>：<strong style="color: #0e88eb;">效果评估</strong>是通过定期的机制效果评估来检查是否达到了预定的目标。这一阶段的重点是根据评估结果对机制进行<strong style="color: #0e88eb;">必要的调整</strong>，以实现持续改进。组织应该建立一种机制，使得每一次评估都能成为未来改进的基础，确保机制始终能够适应组织发展的需求和外部环境的变化。通过这种循环反馈的方式，组织可以持续优化管理机制，从而持续提升组织的整体表现和效率。</p>
</section>
</li>
</ol>
<p style="color: #000000;" data-tool="mdnice编辑器">总的来说，就是明确目标和需求、设定原则和方案，征求意见，试点运行，完善优化，全面实施，评估改进。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">以下以构建研发效能优化机制为例来看下如何落地。</p>
<h1 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">4 构建研发效能优化机制</span></h1>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">4.1 确定问题、目标或需求</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器">在构建研发效能优化机制时，首先需要明确当前研发效能存在的主要问题，例如：</p>
<ol class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">研发交付质量不高，缺陷率居高不下</section>
</li>
<li>
<section style="color: #010101;">研发进度频繁延误，影响产品上市时间</section>
</li>
<li>
<section style="color: #010101;">研发资源利用率低，存在大量低效无谓的工作</section>
</li>
<li>
<section style="color: #010101;">缺乏客观的研发效能度量指标和手段</section>
</li>
<li>
<section style="color: #010101;">团队士气低落，人员流失率高</section>
</li>
</ol>
<p style="color: #000000;" data-tool="mdnice编辑器">在问题分析的基础上，结合公司的战略目标，确定研发效能优化的目标，比如：</p>
<ol class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">提高产品质量，将严重缺陷率降低30%</section>
</li>
<li>
<section style="color: #010101;">缩短产品研发周期，平均交付时间缩短20%</section>
</li>
<li>
<section style="color: #010101;">提高人均产出，研发资源利用率提升15%</section>
</li>
<li>
<section style="color: #010101;">建立完善的研发效能度量体系，实现全流程数字化管理</section>
</li>
<li>
<section style="color: #010101;">提升团队凝聚力和工作热情，人员流失率降低10%</section>
</li>
</ol>
<p style="color: #000000;" data-tool="mdnice编辑器">同时，需要充分理解各利益相关方的需求和期望：</p>
<ol class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">高层管理者关注公司整体研发效率和产品竞争力</section>
</li>
<li>
<section style="color: #010101;">业务部门关注产品能否快速满足客户需求</section>
</li>
<li>
<section style="color: #010101;">研发人员关注个人成长和技术挑战</section>
</li>
<li>
<section style="color: #010101;">客户关注产品质量和使用体验</section>
</li>
<li>
<section style="color: #010101;">竞争对手关注公司的技术实力和创新能力</section>
</li>
</ol>
<p style="color: #000000;" data-tool="mdnice编辑器">只有在全面了解问题，明确目标，洞察需求的基础上，才能设计出切实有效的优化机制。</p>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">4.2 设计机制框架</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器">根据 4.1 中确定的目标和需求，设计研发效能优化机制的总体框架。机制应该围绕以下几个方面展开：</p>
<ol class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">度量体系</strong>：建立科学合理的研发效能评估指标，包括质量指标（如缺陷率，测试通过率），速度指标（如需求交付周期，缺陷修复时间），效率指标（如需求吞吐量，代码复用率），以及满意度指标（如客户满意度，员工敬业度）等。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">组织结构</strong>：调整组织架构，成立专门的效能优化小组。明确各级研发主管在效能管理中的职责，将效能目标纳入绩效考核。建立高管领导下的跨部门协调机制。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">流程优化</strong>：对现有的研发流程进行梳理和优化，包括需求管理，设计评审，代码开发，测试验证，发布部署等各个环节。引入成熟的敏捷开发、精益开发等方法。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">工具支撑</strong>：引进或自研效能管理工具，实现需求、任务、缺陷、代码等的全流程跟踪管理和数据分析。提供自动化测试、持续集成等工程化手段。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">文化建设</strong>：倡导以结果和价值为导向的工程师文化，鼓励创新和持续改进。加强技术培训和经验分享，帮助员工提升能力。营造开放透明、相互信任的团队氛围。</p>
</section>
</li>
</ol>
<p style="color: #000000;" data-tool="mdnice编辑器">以上五个方面构成了研发效能优化机制的主要框架，后续需要进一步细化每个方面的具体内容，形成一套科学、系统、可操作的方案。</p>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">4.3 征求反馈与优化</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器">在设计出研发效能优化机制的初步框架后，需要广泛征求相关利益方的意见和反馈，包括:</p>
<ol class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">研发人员</strong>: 作为机制实施的主体，研发人员的意见至关重要。通过问卷调查、座谈会等方式，了解他们对指标体系的看法，对流程优化的建议，以及可能遇到的困难和挑战。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">研发管理层</strong>: 与研发管理层沟通机制设计的思路和细节，获取他们基于管理实践的反馈和改进建议，确保机制在管理层得到足够重视和支持。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">相关部门</strong>: 与产品、测试、运维等部门沟通，了解机制实施对其工作的影响，以及他们对机制的期望和建议。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #000000;"><strong style="color: #0e88eb;">外部专家</strong>: 寻求外部专家如管理咨询、敏捷教练等的专业意见，借鉴其他企业的优秀实践经验。</p>
</section>
</li>
</ol>
<p style="color: #000000;" data-tool="mdnice编辑器">在广泛收集反馈的基础上，对机制方案进行系统的优化和改进，使其更加切合组织的实际情况。优化的内容可能包括但不限于:</p>
<ol class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">调整指标体系，选择更加关键和可度量的指标</section>
</li>
<li>
<section style="color: #010101;">简化优化流程，去除不必要的环节，提高灵活性</section>
</li>
<li>
<section style="color: #010101;">完善配套的激励和考核措施，调动研发人员的积极性</section>
</li>
<li>
<section style="color: #010101;">加强机制实施的过程管理和风险防范</section>
</li>
</ol>
<p style="color: #000000;" data-tool="mdnice编辑器">反馈和优化是一个循环迭代的过程，可能需要经过多轮才能最终确定一个相对成熟和可执行的机制方案。</p>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">4.4 制定实施计划</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器">在机制方案优化成型后，需要制定详细的实施计划，包括:</p>
<ol class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">实施步骤</strong>: 将机制的实施分解为若干个步骤和阶段(如先试点再推广)，明确每个步骤的目标、内容和时间节点。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">责任分工</strong>: 明确各个步骤的责任人和参与人，划分具体的工作任务。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">资源准备</strong>: 确定实施机制所需的人力、财力、工具等资源，提前进行准备和调配。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">宣传培训</strong>: 制定机制实施的宣传方案，让所有相关人员知悉机制的内容和要求。针对关键岗位人员开展必要的培训。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">应急预案</strong>: 梳理机制实施可能遇到的风险和问题，制定相应的应对措施和处理流程。</section>
</li>
</ol>
<p style="color: #000000;" data-tool="mdnice编辑器">一个详细的实施计划能够指导机制的落地执行，确保按既定的方向和步骤稳步推进，降低实施过程中的混乱和风险。</p>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">4.5 执行与监控</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器">按照实施计划，正式启动研发效能优化机制，主要做好以下几点:</p>
<ol class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">各部门和团队根据流程规范开展具体工作，形成常态化机制。</section>
</li>
<li>
<section style="color: #010101;">严格执行指标度量，定期收集和分析相关数据。</section>
</li>
<li>
<section style="color: #010101;">通过会议、邮件、看板等形式，持续跟踪和传递机制运行的关键信息。</section>
</li>
<li>
<section style="color: #010101;">收集研发人员和相关部门在执行过程中的反馈，及时协调和处理遇到的问题。</section>
</li>
<li>
<section style="color: #010101;">对机制执行过程进行抽查和巡检，对重点环节进行督导，确保执行到位。</section>
</li>
</ol>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">4.6 评估与持续改进</span></h2>
<ol class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">建立评估机制</strong>: 制定机制实施成效的评估办法，明确评估指标、周期、方式和责任人。评估指标应该聚焦机制的预期目标，如研发交付及时率，缺陷率，需求响应时间等。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">定期开展评估</strong>: 按计划定期开展评估，全面审视机制执行的情况和效果。可采用定量与定性分析相结合的方式，深入剖析机制运行中的问题和不足。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">评估结果应用</strong>: 将评估结果形成正式的报告或总结，作为后续优化和完善的重要输入。针对暴露出的问题，及时制定整改方案，落实到责任人。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">持续优化改进</strong>: 研发效能优化是一个长期的、动态的过程。要以开放的心态接纳各方的反馈，根据实际效果和环境变化，对机制进行持续的改进和调整。可借鉴业界的最佳实践，定期进行对标学习。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">形成优化闭环</strong>: 将优化措施落实到位，形成闭环管理。将成功的经验固化到机制中，并在组织内推广。长期坚持，追求卓越，构建起一套行之有效、持续进化的研发效能优化长效机制。</section>
</li>
</ol>
<p style="color: #000000;" data-tool="mdnice编辑器">只有通过持之以恒的评估优化及持续改进，研发效能优化机制才能真正发挥作用，帮助组织不断提升研发效率和质量，增强市场竞争力。同时，这也是一个不断学习和改进的过程，需要组织上下的共同努力和长期坚持。</p>
<h1 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #0e8aeb;">5 小结</span></h1>
<p style="color: #000000;" data-tool="mdnice编辑器">构建机制是一项系统工程，需要从全局出发，综合考虑组织的战略目标、现实问题、资源条件等因素。总体而言，构建过程可分为六个主要步骤：确定问题和目标、设计机制框架、征求反馈与优化、制定实施计划、执行与监控、评估与持续改进。每个步骤都环环相扣，缺一不可。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">以研发效能优化机制为例。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">在其设计过程中，需要从度量体系、组织结构、流程优化、工具支撑、文化建设、外部合作等多个维度入手，形成一套科学、系统、可操作的方案。方案的制定需要广泛听取各方意见，不断迭代优化，以确保其能够真正解决问题，满足各利益相关方的需求。在实施过程中，更需要全员参与，上下协同，在执行中不断监控，及时发现和解决问题。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">研发效能优化不是一蹴而就的，而是一个持续改进的过程。只有建立常态化的评估优化机制，持之以恒地推进，才能让研发效能不断提升，让追求高质高效的理念深植于研发文化之中。这需要组织上下的共同努力和长期坚持。通过构建研发效能优化机制，组织能够不断提升产品质量，加快创新速度，提高资源利用率，增强市场竞争力，实现可持续发展。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">在整个过程中，需要研发团队的负责人坚持系统思维、问题导向和以人为本。</p>
]]></content:encoded>
			<wfw:commentRss>https://www.phppan.com/2024/05/from-definition-to-implementation-how-to-systematically-build-an-rd-efficiency-optimization-mechanism/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>关于写年度技术 OKR 的 9 个关键思考点</title>
		<link>https://www.phppan.com/2024/01/9-key-thoughts-on-writing-your-annual-technical-okrs/</link>
		<comments>https://www.phppan.com/2024/01/9-key-thoughts-on-writing-your-annual-technical-okrs/#comments</comments>
		<pubDate>Sat, 13 Jan 2024 13:45:57 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[架构和远方]]></category>
		<category><![CDATA[OKR]]></category>
		<category><![CDATA[研发效能]]></category>

		<guid isPermaLink="false">http://www.phppan.com/?p=2150</guid>
		<description><![CDATA[新的一年了，又到了做规划和 OKR 的时候了。 作为一个技术团队的管理者，此时除了面对业务的诉求，从技术架构、 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p style="color: #000000;" data-tool="mdnice编辑器">新的一年了，又到了做规划和 OKR 的时候了。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">作为一个技术团队的管理者，此时除了面对业务的诉求，从技术架构、从团队管理、从未来发展应该做些什么呢？</p>
<p style="color: #000000;" data-tool="mdnice编辑器">以下是最近一段时间来，个人的思考。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">从经营的角度来看，研发团队成本对于软件企业来说是成本的大头，作为团队的负责人需要在满足业务需求的前提下，提高研发团队的产出和产出的价值，同时尽量降低过程中的成本，也就是在之前文章中所说的研发价值。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">这里的研发价值可以具象到研发效能这个概念，在我们做技术规划和 OKR 时，底层思考中的研发效能不仅仅是衡量研发资源使用的效果，更进一步，是指研发团队达成既定目标和结果的能力，换句话说，就是提升当前研发团队的核心竞争力。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">研发效能不仅包括了技术层面的各种实践，如代码复用、自动化测试、持续集成（CI）和持续交付（CD），还包括了效能度量、流程优化，团队协作、项目管理、需求理解和用户反馈的及时整合等多个方面。</p>
<p style="color: #000000;" data-tool="mdnice编辑器"><strong style="color: #ff3502;">研发效能的核心目的是优化交付的价值链</strong>，通过提高效能来缩短产品从构思到市场的时间，提升产品质量，降低开发成本，以及增强对市场变化的响应能力。这不仅能提高客户满意度和用户体验，还能为企业带来更大的经济效益和更强的市场竞争力。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">每个企业，每个团队在做规划时，应该是基于现况，基于客观事实来做规划，明确当下最重要，最需要解决的问题是什么，确认目标，一个个去解决。比如当前大家意识层面有所欠缺，那就想办法拉齐认知「共读一本书」；又或者当前研发流程混乱或者效率不高，那就梳理研发流程，把研发的过程一个个掰碎了，揉散了看哪里有问题，该去掉去掉，该优化优化；又或者当前无法看到效能情况，没有体系化的指标和系统支撑，那就去构建，去实践……</p>
<p style="color: #000000;" data-tool="mdnice编辑器">各家不同，各有章法，这里我们从研发效能的定义出发，扩展出其要解决的问题，再到具体包含的内容来思考整个过程，不会大而全，也不会特别深入，只是一个思路。</p>
<h1 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #3f3f3f;">1 概述</span></h1>
<p style="color: #000000;" data-tool="mdnice编辑器">在《软件研发效能权威指南》中对于研发效能的定义是指<strong style="color: #ff3502;">更高效、更高质量，更可靠、可持续的交付更优的业务价值</strong>。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">将其拆解开来，可以分为三个方面：一是高效和交付更优化的业务价值，关注的是价值交付，二是可持续，关注的是能力构建，三是高质量和可靠，关注的是成本控制。延展开来可以分为效能认知、组织结构、效能度量、研发流程、工程体系、架构能力、技术能力、质量管理和稳定性管理九大模块。整体如下图：</p>
<p style="color: #000000;"><img class="rich_pages wxw-img" src="https://mmbiz.qpic.cn/sz_mmbiz_png/suE0Ye6UeMyV0bNWDzPY7ukBCRtjWraNous8GF2lcDnz2jj70Jia6cDnxrjTiadeaMjryrCGJwKGne6Xz173pu5Q/640?wx_fmt=png&amp;from=appmsg&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" crossorigin="anonymous" data-galleryid="" data-imgfileid="100000329" data-ratio="0.7601851851851852" data-s="300,640" data-src="https://mmbiz.qpic.cn/sz_mmbiz_png/suE0Ye6UeMyV0bNWDzPY7ukBCRtjWraNous8GF2lcDnz2jj70Jia6cDnxrjTiadeaMjryrCGJwKGne6Xz173pu5Q/640?wx_fmt=png&amp;from=appmsg" data-type="png" data-w="1080" data-index="1" data-fail="0" /></p>
<h1 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #3f3f3f;">2 效能认知</span></h1>
<p style="color: #000000;" data-tool="mdnice编辑器">关键词：老板工程、规模化</p>
<p style="color: #000000;" data-tool="mdnice编辑器"><strong style="color: #ff3502;">研发效能是一个从上往下的老板工程</strong>，就算是一线的员工想要做并且努力做了，达到的效果也有限。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">其一定是实现了规模化后才有着明显的效果，从度量的效果上看，<strong style="color: #ff3502;">在规模化之后才能更好的发现和解决问题</strong>，个体差异在这里会被规模化效应所取代。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">研发效能要解决的是三个方面的问题：价值交付、能力构建、成本控制。</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">价值交付主要关注交付的过程，通过过程中流程的梳理和优化，以及对软件自动化工具的建设提升研发的效能。</section>
</li>
<li>
<section style="color: #010101;">能力构建主要关注通过研发能力的构建，保证交付的可持续性。</section>
</li>
<li>
<section style="color: #010101;">成本控制主要关注研发过程中产生非正常成本的点，如质量、故障等等。</section>
</li>
</ul>
<p style="color: #000000;" data-tool="mdnice编辑器">以上只是概念性的简要的内容，基本上就是开头那张图了，可以把这些逻辑在团队内达成一致，知道全局是怎样的，现在正在哪里。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">再深化一些，可以就每个模块做一个指向性的成熟度模型，明确当前在哪里，以及将来要去哪里。强调一点，就算我们做了成熟度模型，我们也并不是追求成熟度模型指标上的成长，这只是一个过程，我们更看重的是研发效能的提升和价值的交付。</p>
<h1 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #3f3f3f;">3 组织结构</span></h1>
<p style="color: #000000;" data-tool="mdnice编辑器">关键词：信息流动、决策、协同</p>
<p style="color: #000000;" data-tool="mdnice编辑器"><strong style="color: #ff3502;">组织结构决定了信息流动、资源分配和决策过程的效率</strong>。组织结构是研发效能的基座和架子，一个合适的组织架构可以更好的提升研发的效能。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">以研发效能平台落地为例，如果提出需求的人在一个部门，实现需求的人在一个部门，两个部门的目标可能就会有一些不一致的地方，沟通上跨部门沟通的成本也会比较高一些，那这个项目的研发效率就会比较低。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">在一个组织内，信息流动的顺畅程度直接影响到研发的响应速度和能力。理想的组织结构应该是信息高度透明和流动性强的结构，这样可以最大限度地减少知识的壁垒和信息的延迟。<strong style="color: #ff3502;">创建开放的沟通渠道</strong>和<strong style="color: #ff3502;">建立跨部门的协作团队</strong>是关键，这样能够确保从需求提出到需求实现各个环节都能迅速连接，实现信息的快速传递。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">决策的速度和质量在很大程度上取决于组织结构。在一个层级过多的组织中，决策往往需要经过漫长的审批流程。<strong style="color: #ff3502;">扁平化管理</strong>模式有助于缩短决策链条，提高决策效率。在扁平化的组织结构中，决策权下放到更接近实际工作的团队和个人，这样不仅可以加速决策过程，还能提高决策的准确性，因为决策者能够直接获取到一手资料和反馈。任正非有提过：<strong style="color: #ff3502;">让听得见炮声的人做决策</strong>，这个论点在研发效能的提升上也同样有效。</p>
<h1 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #3f3f3f;">4 效能度量</span></h1>
<p style="color: #000000;" data-tool="mdnice编辑器">关键词：可视化、全局思维、机制</p>
<p style="color: #000000;" data-tool="mdnice编辑器">说到研发效能，大家都会想到搞一套指标，搞一堆系统，然后各种报告，觉得没有啥用。如果只搞这些，确实没啥用，甚至有些本末倒置。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">度量是为了什么？<strong style="color: #ff3502;">是为了可以看见，是为了消除系统性瓶颈。</strong></p>
<p style="color: #000000;" data-tool="mdnice编辑器">因为除度量外的操作都已经融入实际的研发管理工作，或多或少，而度量是一个将这些研发管理工作的成效可视化的过程，让人们更直接的感受到优化后的效果。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">效能度量只是研发效能中的一小部分，只是辅助效能提升的一种基础性的模块，我们过去对于其投入较少，缺少体系化的度量，当下要补足这个模块。并且这个模块是我们研发效能提升的眼睛，通过度量实现效能的可视化和研发效能提升过程中的反馈机制。它提供了衡量成果和改进的依据，帮助团队识别问题、跟踪进度，并调整优化策略。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">在效能度量过程中，我们会以一种相对科学的方式收集和清洗数据，建立一套和当前团队贴合的指标体系，涵盖项目进度、产品质量、团队效率等各个方面，建立机制定期审视这些指标，并根据数据进行决策和改进。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">度量的过程，从传统的大量质量指标，到体系化的效能指标，再到结构化的效能报告，有逻辑，更直观。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">在这个过程中，看见系统性的指标只是第一步，根据指标来进行决策和改进才是度量的关键逻辑。也就是说度量只是我们研发效能的开始，是结果的一种呈现，我们所追求不仅仅是这个结果，而是这个结果带来的效能提升和研发团队的价值提升。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">在度量时始终需要有全局性思维，不要为了指标而指标，将其变为一个数字游戏，也不要陷入到局部的细节指标中而忽略了为什么要做度量。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">注意，度量是有成本的，在实施的时候，不要追求度量的大而全，不要一开始就搞一个完整的度量体系，这是一个长期的渐进式的工作，从业务、产品、开发、QA 各方都需要介入的过程，并且最终需要落地到系统上来。</p>
<h1 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #3f3f3f;">5 研发流程</span></h1>
<p style="color: #000000;" data-tool="mdnice编辑器">关键词：有序、标准、端到端的流程</p>
<p style="color: #000000;" data-tool="mdnice编辑器">研发流程是为了确保研发活动有序进行的关键。良好的流程设计能够最大程度地减少不必要的工作，清晰地定义每个阶段的输入和输出，以及相应的质量标准。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">如果把软件开发比作一个生产产品的流水线，那么研发流程就类似于产品的生产工艺——它是定义产品从原料到成品的所有转换步骤的详细规划。</p>
<p style="color: #000000;" data-tool="mdnice编辑器"><strong style="color: #ff3502;">工艺的好坏决定了产品的好坏。</strong></p>
<p style="color: #000000;" data-tool="mdnice编辑器">在整个软件开发的「生产工艺」中，每一步都不是孤立的，而是与前后过程紧密相连，通过反馈和持续改进来提升最终产品质量。敏捷方法论和持续交付的实践强调了在整个研发流程中不断地评估和调整工艺步骤，以适应变化的需求和市场条件。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">从技术团队规划的角度，还是要拆解整个研发流程，或者说拆解整个工艺，引入敏捷开发方法和精益思想，持续迭代流程，以消除浪费，并通过自动化工具或系统减轻重复性工作负担。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">我们知道研发的好坏，以及研发的价值往往是由源头决定的，产品需求，甚至业务需求。因此，在我们做研发流程优化的时候，尽量把业务方、产品侧都纳入进来，<strong style="color: #ff3502;">做到从业务中来，到业务中去，实现端到端的控制和优化</strong>。</p>
<h1 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #3f3f3f;">6 架构能力</span></h1>
<p style="color: #000000;" data-tool="mdnice编辑器">关键词：复杂度、关系和结构</p>
<p style="color: #000000;" data-tool="mdnice编辑器"><strong style="color: #ff3502;">架构能力关注的是软件架构中的关系和结构，关注的是整个架构的复杂度。</strong>而不仅仅是搞个啥架构。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">在软件企业发展过程中，架构会随着业务的不断发展而呈现劣化、复杂化等趋势。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">我们在架构复杂度提升，规模不断增加、人员不断变化的前提下如何通过对架构的优化实现效能的提升是这里要做的命题。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">架构能力的提升包括三个方面：架构规划、架构审查和架构治理。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">架构规划是架构能力的首要环节，其必须综合考虑系统的功能需求、性能目标、安全性要求、可维护性及扩展性等多个维度。这种规划类似于建筑领域的城市规划，<strong style="color: #ff3502;">不仅要考虑当前的建设需求，还要预见未来的扩张和变革。</strong>在软件架构的世界里，这意味着设计时要有前瞻性，能够在不牺牲现有系统稳定性的基础上，适应快速变化的业务需求和技术革新。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">一个有效的方法是采用模块化设计，即将系统分解为多个相对独立、功能明确的模块。这样不仅有助于降低整体复杂度，还能够使团队能够并行工作，提高开发效率。但是，需要明确一点是不要过度，模块化的结构需要和当前业务状态、团队规模匹配，防止无意义的扩大，从而增加整个系统的复杂度。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">架构审查有点类似于医生的定期体检，它可以帮助团队识别潜在的问题，并在问题成为危机之前进行干预。这个过程中，我们可以利用各种架构评估方法，如 ATAM 评估方法（架构贸易分析方法）、CMAM 评估方法（组件建模评估方法或架构评估框架，以确保架构符合业务的目标和制约。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">架构审查也可以根据自身企业的情况，构建自身的标准，如类似于成熟度模型之类的来评估当前的架构状态。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">在评估审查中，应收集关键利益相关者的反馈，并结合各项指标和用户数据来做出决策。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">接下来就是架构治理，架构治理可能涉及到技术栈的变更、新技术的采纳、旧系统的淘汰等。这些调整应该是渐进的，并且与业务战略紧密对齐，确保每一步都朝着增强软件可交付性和业务价值的方向迈进。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">这里特别要强调一下关于架构评估过程中对于技术债务的偿还，在快速发展的企业中，这种债务特别明显，因为随着业务的发展，技术债务往往逐渐累积，这对架构的可持续性构成了威胁。技术债务可能源自早期的决策，当时的快速实现为了满足眼前的需求而牺牲了长期的可维护性。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">处理技术债务并不总是意味着需要进行大规模的重构，有时候持续的小步改进更为有效。通过持续集成和持续部署(CI/CD)的实践，可以在日常的开发流程中逐步减轻债务负担。此外，编码标准和代码审查可以预防新的技术债务的产生，这对于保持架构整洁和可管理至关重要。</p>
<h1 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #3f3f3f;">7 技术能力</span></h1>
<p style="color: #000000;" data-tool="mdnice编辑器">关键词：复用、标准、前瞻性</p>
<p style="color: #000000;" data-tool="mdnice编辑器">技术能力和架构能力相比<strong style="color: #ff3502;">更关注技术能力本身的上限或边界，是指用技术来提升产品竞争力的能力</strong>，如跨端复用能力、技术框架、业务框架、业务组件或能力，其本质是通过构建能力的复用实现能力的提升。</p>
<p style="color: #000000;" data-tool="mdnice编辑器"><strong style="color: #ff3502;">技术能力构建的关键逻辑在于复用性与标准化、以及技术的前瞻性。</strong></p>
<p style="color: #000000;" data-tool="mdnice编辑器">复用性意味着开发者可以在多个项目中使用同样的代码或组件，而无需重新发明轮子。通过创建通用的库、框架或服务，组织可以减少冗余劳动，加快开发流程，并降低出错的概率。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">而标准化则为这种复用打下基础。它确保了不同团队开发的组件能够无缝集成，无论是内部接口，还是面向外部的 API。标准化还涉及到编码规范、文档标准以及工具链的一致性，这些都是确保技术团队能够高效协作的要素。为了实现这些标准，组织往往需要建立起一套严格的质量保证流程，包括代码审查、自动化测试和持续集成。</p>
<p style="color: #000000;" data-tool="mdnice编辑器"><strong style="color: #ff3502;">复用性和标准化看到的是当下，通过现有业务和技术能力，提升复用率。而技术前瞻性则是面向未来，通过对技术发展的趋势预测，提前布局。</strong></p>
<p style="color: #000000;" data-tool="mdnice编辑器">技术前瞻性的构建需要团队的管理者刻意去构建，常用策略包括允许工程师在工作时间探索新技术；建立内部分享会，鼓励知识的交流；甚至与外部研究机构或高校合作，共同进行技术研究项目等等。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">同时，奖励那些能够带来创新思路和解决方案的个人和团队。这种机制可以是奖金，也可以是职业发展上的机会。同时，组织应该提供必要的资源支持，如投资先进的工具和技术、提供专业培训等，以确保团队成员能够不断提升自己的技术能力，并把这些能力转化为企业的持续竞争优势。</p>
<h1 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #3f3f3f;">8 质量管理</span></h1>
<p style="color: #000000;" data-tool="mdnice编辑器">关键词：永远的质量、全员参与</p>
<p style="color: #000000;" data-tool="mdnice编辑器">质量管理包括过程质量和结果质量（线上质量），最终目的都是结果质量。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">质量管理的目的是想通过质量控制减少因为质量问题带来的成本，如果一个产品问题到了用户反馈的程度，那将会卷入技术支持，QA、研发等同学，甚至会有客户成功的同学，将会有一个长长的流程把这些同学串起来以解决问题。如果这个产品问题在最前置开发的时候或者产品需求的时候，将会大大减少成本，提升整个的效率。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">其中，过程质量关注的是从产品设计到最终交付整个生产流程的各个环节。控制过程质量的目的是为了确保每一步骤都按照既定标准执行，从而预防质量问题的发生。在软件开发中，这可能会涉及代码审查、持续集成、自动化测试等实践。这些实践能够及早发现问题，防止它们在开发周期后期扩大。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">为了提升过程质量，我们都会建立一套完善的质量管理体系，这包括制定明确的质量目标、过程标准以及评估机制。例如，采用敏捷开发模式可以通过短周期迭代确保产品的持续改进和质量控制。通过将开发过程分解为更小的部分，团队可以更快地识别并解决问题，从而降低风险和成本。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">结果质量或线上质量主要指产品发到线上环境，直接服务于用户时的表现。这是质量管理最终的评判标准，直接关系到用户体验和产品的市场表现。因此，结果质量的衡量不仅仅是产品交付后的一个阶段，而是一个持续的过程。这要求我们在产品发布后继续监控其性能，收集用户反馈，并根据这些数据不断优化产品。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">为了确保结果质量，我们需要采取多种方法来监测产品性能，比如使用应用性能管理（APM）工具监控软件运行状况，或者设置用户反馈渠道收集用户意见。同时，定期进行用户满意度调查也是评估和保障结果质量的有效手段。</p>
<p style="color: #000000;" data-tool="mdnice编辑器"><strong style="color: #ff3502;">质量永远是技术规划或 OKR 的一部分，持续的去优化去实践。</strong></p>
<p style="color: #000000;" data-tool="mdnice编辑器">并且质量管理并不只是 QA 部门的责任，而是需要全公司上下共同努力的结果。这要求每个员工都要有质量意识，从每个人的日常工作中都要考虑质量管理。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">特别是管理者，是质量管理的关键，管理者需要持续的参与和支持质量管理，通过资源投入，策略制定甚至亲自参与到质量活动中来，以展现我们对质量的承诺。</p>
<h1 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #3f3f3f;">9 稳定性管理</span></h1>
<p style="color: #000000;" data-tool="mdnice编辑器">关键词：多维度、高可用、控制</p>
<p style="color: #000000;" data-tool="mdnice编辑器">稳定性管理是成本控制的另一个关键点，每一次稳定性的问题都会对用户产生影响，甚至可能对公司的品牌和财务状况造成长期的负面影响。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">关于稳定性管理我们可以从多个维度来解构它的实施路径，一般会包括运维合规、高可用架构治理、变更管控、容量管理、风险管理、故障管理等 6 个方面。</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;"><strong style="color: #ff3502;">运维合规</strong>：运维合规能够确保所有操作都符合既定的政策和标准。这意味着从数据中心的物理安全到云服务的配置，每一个环节都需要规划好并遵循明确的标准和最佳实践。合规化有助于减少人为错误，同时确保系统在面对审计时能够展示其稳定性和安全性。实践中，这常常涉及定期的审计和评估，以确保所有操作都在控制之下。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #ff3502;">变更管理</strong>：变更管理是确保系统稳定性的关键组成部分。在这个过程中，所有的系统变更——无论是软件更新、硬件替换，还是配置调整——都需要经过严格的审查和测试流程。这是为了确保任何变更不会对现有系统造成不可预测的影响。变更管理的核心在于减少不经意的后果，通过详细的记录、评审、批准、测试和监控变更流程，来提高系统的整体稳定性。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #ff3502;">风险管理</strong>：风险管理过程涉及对可能影响系统稳定性的潜在风险进行识别、评估和优先排序，并制定缓解措施。这个过程需要不断地进行，因为新的风险总是在不断出现。通过建立一个全面的风险管理框架，组织可以对付潜在的问题，减少未知因素带来的冲击，从而保持系统稳定。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #ff3502;">高可用架构治理</strong>：高可用架构的设计是为了确保系统即使在部分组件失败的情况下也能继续运行。这通常通过冗余、负载均衡、故障转移和分布式系统设计等技术实现。高可用架构的目标是减少单点失败的可能性，并且在出现问题时能够快速恢复服务，保证系统的连续运行。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #ff3502;">故障管理</strong>：故障管理关注的是如何有效地识别、响应、记录和分析故障。它包括建立一个透明的过程来处理故障，以及确保足够的资源用于故障恢复和后续的预防措施。通过彻底的根因分析，可以从故障中学习并防止未来的重复，从而提高系统的稳定性。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #ff3502;">容量管理</strong>：容量管理确保系统有足够的资源来满足日常运行和未来增长的需求。这包括对硬件、软件和服务的需求进行预测和规划，以避免过载导致的性能瓶颈。通过对现有资源的有效管理和对未来需求的精准预测，容量管理能够确保系统即便在负载增大时仍能保持稳定。</section>
</li>
</ul>
<h1 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bold; color: #3f3f3f;">10 小结</span></h1>
<p style="color: #000000;" data-tool="mdnice编辑器">在实际做规划时，并不需要在年度规划中把所有的项写上，而且也没有这么多的资源来做这个事情。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">在选取时规划时主要考虑当前业务所在的生命周期和团队规模。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">不同业务生命周期阶段对研发的要求有所差异。在业务启动阶段，研发团队应集中于快速且高质量地满足业务需求的交付。随着业务进入发展阶段，重点转向通过效能指标促进产品功能的标准化和业务能力的沉淀，为规模化复制做好准备。当业务成熟，研发应专注于提升稳定性和效率，降低成本，并通过技术创新寻求新机会。而在业务消亡阶段，关键在于资产的沉淀复用，以保留组织的长期投入价值。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">团队规模对研发效能策略同样有显著影响。小型团队，通常规模较小、专注领域单一，应聚焦于提升研发过程效率，而非任务交付量。中型团队面临着更复杂的业务和紧密的合作需求，应将研发效能建设集中在流程和标准化上，以简化协作并确保产出质量。大型团队则需要重视不同小团队之间的协调和合力，注重在宏观层面的业务影响，并聚焦于结果评估和效果衡量。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">我们当前需要基于公司战略和方向，根据团队的实际情况，明确资源和目标的匹配度，选取一些当下特别痛的点来突破。<strong style="color: #ff3502;">以全面的思考为整体技术规划的方向指引，以单点突破的方式逐步推进，从而达到整体研发效能提升的目的。</strong></p>
<p style="color: #000000;" data-tool="mdnice编辑器">以上，只是一个思路。</p>
]]></content:encoded>
			<wfw:commentRss>https://www.phppan.com/2024/01/9-key-thoughts-on-writing-your-annual-technical-okrs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>研发效能是不是一个伪命题：关于研发效能的思考</title>
		<link>https://www.phppan.com/2023/12/thoughts-on-rd-efficiency/</link>
		<comments>https://www.phppan.com/2023/12/thoughts-on-rd-efficiency/#comments</comments>
		<pubDate>Sat, 23 Dec 2023 08:28:21 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[架构和远方]]></category>
		<category><![CDATA[研发效能]]></category>
		<category><![CDATA[研发管理]]></category>

		<guid isPermaLink="false">http://www.phppan.com/?p=2142</guid>
		<description><![CDATA[周四下午作为分享嘉宾参加思码逸组织的关于研发效能的技术沙龙，在最后圆桌会议探讨环节，有同学提了一个问题， 研发 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p style="color: #3f3f3f;" data-tool="mdnice编辑器">周四下午作为分享嘉宾参加思码逸组织的关于研发效能的技术沙龙，在最后圆桌会议探讨环节，有同学提了一个问题， <code style="color: #ff3502;">研发效能是不是一个伪命题？</code>  现场回答了下，会后也有持续思考这个问题，基于会后的思考，做一个更完整一些的陈述和总结：从研发效能的定义出发，从背后的逻辑出发，从具体的实践方向出发，来看研发效能这个事情。</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">说到研发效能，大家可能会马上想到度量、指标、流程、CI/CD、代码平台等等东西。</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">但只是这些吗？为什么要做这些？做了这些有什么用？最终的目的是什么？…… 有很多问题冒出来。</p>
<h1 style="color: #000000;" data-tool="mdnice编辑器">研发效能是什么</h1>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">看研发效能是什么前我们先看一下效能是什么？</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">效能是一个衡量资源使用的效果的概念，常用于评价在完成一定任务或达成特定目标时资源（如时间、金钱、原料等）的使用效率。效能高意味着用较少的资源投入获得了较多的产出，或者用最优的方式使用资源以达到最佳的工作绩效。</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">在商业和管理领域，效能是指组织或个人在达成既定目标和结果的能力。<strong style="color: #ff3502;">商业和管理领域中的效能更加注重最终的成果而不仅仅是资源的使用</strong>。传统意义上的效能只是商业和管理领域效能的一个过程态，但我们当下所追求还是传统意义上的效能，通过这种效能的不断达成，使得组织的效能增加，从而帮助企业更有效地管理资源，提高组织能力，并在市场竞争中保持优势。</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">回到研发效能是什么，这里我们限定一下范围，主要是软件开发的研发效能，有代码产出的那种研发。对于软件开发来说，主要关注的还是人力成本，或者说是时间成本。后文中的研发效能都指软件开发的研发效能。</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器"><strong style="color: #ff3502;">研发效能是指通过有效地利用人力和时间资源，持续以最快的速度交付高质量的产品。</strong> 这句话可以换成上篇关于研发价值的文章中的公式：</p>
<blockquote style="color: #5b5b5b;" data-tool="mdnice编辑器">
<p style="color: #3f3f3f;">公式：<strong style="color: #ff3502;">研发的价值 = 单位有效时间内产出的价值 × 有效时间 &#8211; 非正常成本 &#8211; 正常成本</strong></p>
</blockquote>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">这是简化的研发价值模型，可以作为理解研发价值创造的基础框架。实际应用中可能还需要进一步的细化和调整，因为价值的计算可能远比这个公式复杂。</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">研发效能不仅包括了技术层面的各种实践，如代码复用、自动化测试、持续集成（CI）和持续交付（CD），还包括了效能度量、流程优化，团队协作、项目管理、需求理解和用户反馈的及时整合等多个方面。</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器"><strong style="color: #ff3502;">研发效能的核心目的是优化交付的价值链</strong>，通过提高效能来缩短产品从构思到市场的时间，提升产品质量，降低开发成本，以及增强对市场变化的响应能力。这不仅能提高客户满意度和用户体验，还能为企业带来更大的经济效益和更强的市场竞争力。</p>
<h1 style="color: #000000;" data-tool="mdnice编辑器">体系化的提升研发效能</h1>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">研发效能的提升和优化是一个体系化的工作，是一个多维度、跨职能的系统性工程。包括组织文化、组织结构、技术架构、流程设计、工程系统和度量考核等。</p>
<h3 style="color: #3f3f3f;" data-tool="mdnice编辑器">组织文化：创新的基石</h3>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">组织文化是企业的灵魂，它塑造了员工的行为和思维方式，对研发效能的提升起着至关重要的作用。一个以创新为核心的组织文化，能够激发团队成员的创造力，鼓励他们不断尝试新方法和新技术，甚至在失败中寻找改进的机会。</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">我们可以通过建立跨部门沟通机制、鼓励知识共享、认可员工创新成果等方式来营造一个开放和协作的工作环境。</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">在认知层面，特别需要对上达成共识，研发的负责人在领导层面达成一致，能够更好的推动研发效能工作的开展。</p>
<h3 style="color: #3f3f3f;" data-tool="mdnice编辑器">组织结构：效能的架子</h3>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器"><strong style="color: #ff3502;">组织结构决定了信息流动、资源分配和决策过程的效率。</strong>在研发效能的提升中，扁平化的管理层级、跨功能的团队配置以及灵活的人员动态管理，都能够促进创新和加速决策过程。</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">组织结构是提升研发效能的架子，我们可以推动小型化、自治化的团队模式，并通过灵活的项目管理和内部创业机制来激发团队的活力和创新能力。</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">但这只是一种较为理想的逻辑，实际中我们需要考虑当前组织的情况，人员的水平，公司的文化基因等等，不可一概而论，<strong style="color: #ff3502;">鞋合不合适只有脚知道</strong></p>
<h3 style="color: #3f3f3f;" data-tool="mdnice编辑器">技术架构：效能的核心</h3>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器"><strong style="color: #ff3502;">技术架构的合理性直接影响研发效能。</strong> 一个良好设计的技术架构应当具备高内聚、低耦合的特点，以便于团队成员高效协作，同时保障系统的稳定性和可扩展性。</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">我们开发过程中会采用微服务、容器化等技术架构，以支持敏捷开发和持续集成/持续部署（CI/CD）等。</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">当然，微服务、容器化架构和敏捷开发、CI/CD 没有强关联，在实际落地过程中，这些都非必选项，<strong style="color: #ff3502;">术法落地需要更多的考虑实际的场景和条件</strong>。</p>
<h3 style="color: #3f3f3f;" data-tool="mdnice编辑器">流程设计：效能的流动</h3>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器"><strong style="color: #ff3502;">流程设计是确保研发活动有序进行的关键。</strong> 良好的流程设计能够最大程度地减少不必要的工作，清晰地定义每个阶段的输入和输出，以及相应的质量标准。</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">我们通过引入敏捷开发方法和精益思想，持续迭代流程，以消除浪费，并通过自动化工具减轻重复性工作负担。</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">敏捷和精益都是一种落地的方法，需要考虑实际的情况，根据过程中的生产场景细化每个环节的时间和人力消耗，消除浪费。像我们经常用到的需求交付周期、需求吞吐量（单位时间交付需求个数）、在制品数等指标都会用于这个场景的度量。</p>
<h3 style="color: #3f3f3f;" data-tool="mdnice编辑器">工程系统：效能的支撑</h3>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">工程系统是研发效能提升的具体执行层面。它包括代码管理、构建、测试、部署等一系列工程实践，这些都需要通过系统化的工具和方法来支撑。</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">通过建立统一的开发环境、版本控制系统和自动化测试平台，以及监控和日志分析系统，以提升研发的效率和稳定性。这里提升效率的逻辑在于 <strong style="color: #ff3502;">通过系统和自动化的方式减少重复成本和认知成本</strong>。</p>
<h3 style="color: #3f3f3f;" data-tool="mdnice编辑器">度量考核：效能的反馈</h3>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">度量考核是研发效能提升过程中的反馈机制。它提供了衡量成果和改进的依据，帮助团队识别问题、跟踪进度，并调整优化策略。</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">以一种相对科学的方式收集和清洗数据，建立一套和当前团队贴合的指标体系，涵盖项目进度、产品质量、团队效率等各个方面，建立机制定期审视这些指标，并根据数据进行决策和改进。</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">度量只是我们研发效能的开始，是结果的一种呈现，我们所追求不仅仅是这个结果，而是这个结果带来的效能的提升和研发团队的价值提升。</p>
<h1 style="color: #000000;" data-tool="mdnice编辑器">最后</h1>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">最后回答一下研发效能是不是一个伪命题这个问题：研发效能不是一个伪命题。</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">因为<strong style="color: #ff3502;">研发效能本质是一个 ROI 的逻辑，是一个提升研发价值和核心竞争力的过程。</strong> 作为一个技术管理者，这个提升操作是必须且持续要做的，现在只不过以研发效能这种方式表现出来了。</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">研发效能是一个多维度问题，需要从组织文化、组织结构、技术架构、流程设计、工程系统和度量反馈等方面共同努力。</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">组织文化是创新的基石、组织结构是效能的架子、技术架构是效能的核心、流程设计是效能的流动、工程系统是效能的支撑、度量考核是效能的反馈。</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">每个维度都有其独特的挑战和实践方法，但它们相互关联并共同作用。只有全面考虑这些维度并协同推进，才能够真正提升研发效能，实现快速、高质量的软件交付，并最终为用户和企业创造价值。</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器"><strong style="color: #ff3502;">研发效能关注的不仅仅是技术和工具的应用，更重要的是人、流程、文化的协同进化，以及这一切如何共同作用于创造价值和实现企业战略目标的大背景下。</strong></p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">研发效能不仅仅体现在直接的经济效益上，<strong style="color: #ff3502;">它还帮助企业构建了一个可持续发展的技术优势和技术竞争力</strong>，培养了一支能够快速适应市场变化和技术进步的高效团队，并且能够不断推动产品和服务向前发展，满足甚至超越客户的期望。</p>
]]></content:encoded>
			<wfw:commentRss>https://www.phppan.com/2023/12/thoughts-on-rd-efficiency/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>研发效率提升的秘诀：日志管理的系统化策略</title>
		<link>https://www.phppan.com/2023/12/the-secret-to-improving-rd-efficiency-a-systematic-strategy-for-log-management/</link>
		<comments>https://www.phppan.com/2023/12/the-secret-to-improving-rd-efficiency-a-systematic-strategy-for-log-management/#comments</comments>
		<pubDate>Sat, 16 Dec 2023 14:09:13 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[架构和远方]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[日志]]></category>
		<category><![CDATA[研发效能]]></category>

		<guid isPermaLink="false">http://www.phppan.com/?p=2133</guid>
		<description><![CDATA[你是否也遇到过线上出问题了，查找日志，发现都是 ERROR 日志？ 你是否也遇到过虽然有日志，但是日志实在太多 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p style="color: #3f3f3f;" data-tool="mdnice编辑器">你是否也遇到过线上出问题了，查找日志，发现都是 ERROR 日志？</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">你是否也遇到过虽然有日志，但是日志实在太多，在茫茫日志中无法有效地定位到问题？</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">你是否遇到过要去排查前人写的代码产生的 BUG，却还需要把先把相关的代码过一遍，找到相关日志点，再去搜索日志？</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">你是否遇到过日志越来越多，不同的人都在打，有些日志没有用了，还是在不停的打？</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">你是否遇到过奇怪类型的日志，甚至相互冲突以至于无法定位问题？</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">你是否遇到过因为打个日志，导致客户端崩溃？</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">……</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器"><strong style="color: #ff3502;">当日志不在大家的视野中</strong>，凭着个人的喜好去打，去定位问题，最终整个日志就会变成一个不断膨胀的怪物，变成大家使用起来都感到困扰和无助的混乱池塘。</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">当日志的生成和使用没有统一的规范和标准，每个人都按照自己的方式和喜好来记录和查找日志，日志的内容和格式就会变得五花八门，导致理解和分析日志的难度大大增加。另外，无效的、重复的、甚至是错误的日志会像野草一样无序地生长，使得日志的数量越来越大，而有效的、有用的日志则可能会被淹没在这个日志的海洋之中。</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">此时，我们需要建立一套有效的日志管理策略，包括设定清晰的日志记录标准，实施有效的日志标准管理，优化日志存储和清理策略等。只有这样，我们才能把这个日志怪物驯化，使得日志成为我们解决问题的有力工具，而不是一种困扰。</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">从过往的经历和上面描述的这些问题里面我们洞察了如下的问题点：</p>
<blockquote style="color: #5b5b5b;" data-tool="mdnice编辑器">
<ol class="list-paddingleft-1" style="color: black;">
<li>
<section style="color: #010101;">日志规范管理的问题</section>
</li>
<li>
<section style="color: #010101;">日志无序增长的问题</section>
</li>
<li>
<section style="color: #010101;">日志劣化和无人维护的问题</section>
</li>
<li>
<section style="color: #010101;">日志导致的线上问题</section>
</li>
</ol>
</blockquote>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">那么我们如何有效的去解决这些问题呢？</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">大概有如下六个步骤：制定标准、系统化实现标准管理、实现统一的日志 SDK 接入、使用统一的日志管理系统、定期复盘标准并落地日志的生命周期管理。具体如下：</p>
<ol class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">
<p style="color: #3f3f3f;"><strong style="color: #ff3502;">制定标准</strong>：日志的标准应包括但不限于如下几个方面：</p>
</section>
<ul class="list-paddingleft-1">
<li>
<section style="color: #010101;"><strong style="color: #ff3502;">日志级别</strong>：定义不同级别的日志，如 DEBUG、INFO、WARN、ERROR 等，以便于过滤和查找。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #ff3502;">日志格式</strong>：定义统一的日志格式，包括时间戳、日志级别、日志来源、日志内容、错误堆栈等信息。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #ff3502;">日志内容</strong>：明确记录哪些信息，如请求信息、业务数据、错误信息等。避免记录敏感信息，如用户密码、身份证号等。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #ff3502;">日志保留时间</strong>：根据日志的重要性和存储成本，设定不同级别日志的保留时间。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #ff3502;">是否废弃</strong>：类似于接口的 Deprecated 注解，废弃的接口在定时间内会停止上报，并无法查询。</section>
</li>
</ul>
</li>
<li>
<section style="color: #010101;">
<p style="color: #3f3f3f;"><strong style="color: #ff3502;">系统化实现标准管理</strong>：以系统的方式将标准、SDK 下载管理起来，并且和集成的日志系统关联上，主要包括以下三点：</p>
</section>
<ul class="list-paddingleft-1">
<li>
<section style="color: #010101;"><strong style="color: #ff3502;">标准管理</strong>：实现日志标准的管理和维护，包括日志的级别、字段、格式等。此外，也应当支持标记废弃等生命周期相关的字段，以确保所有人员都能了解到哪些标准不再使用。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #ff3502;">SDK 下载</strong>：提供一个 SDK 的下载功能，允许开发同学根据需要下载适合特定平台或语言的日志 SDK。这种 SDK 应当已经集成了日志标准，以确保开发者在使用 SDK 时能够自动地遵循标准并上报到统一的日志平台。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #ff3502;">日志系统跳转</strong>：和真正的日志系统（如 ELK）打通。如提供一个默认的跳转链接，可以直接跳转到 ELK 的对应界面，查看满足这些参数的日志。</section>
</li>
</ul>
</li>
<li>
<section style="color: #010101;">
<p style="color: #3f3f3f;"><strong style="color: #ff3502;">实现统一的日志 SDK 接入</strong>：提供一个统一的日志 SDK，用于记录和上报日志。这样可以简化开发同学的工作，只需要调用 SDK 提供的接口，就可以按照标准记录日志。而且，SDK 可以处理一些公共的日志任务，如添加时间戳、格式化日志、<strong style="color: #ff3502;">处理错误堆栈、防止打日志时崩溃</strong>等。<strong style="color: #ff3502;">SDK 应该是跨平台、跨语言的。</strong></p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #3f3f3f;"><strong style="color: #ff3502;">使用统一的日志管理系统</strong>：使用一个专门的日志管理系统，来收集、存储、查询和分析日志。这样可以提供一致的日志服务，提高日志的可用性和可维护性。例如，可以使用 ELK（包括 Elasticsearch、Logstash、Kibana）作为日志管理系统。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #3f3f3f;"><strong style="color: #ff3502;">定期复盘标准</strong>：随着业务和技术的发展，可能需要更新日志标准。因此，需要定期复盘标准，看是否需要改进。定期复盘标准的频率可能会因为具体情况而变化。如果业务和技术环境比较稳定，那么可能每年复盘一次就足够了。如果环境变化比较快，那么可能需要每季度甚至每月复盘一次。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #3f3f3f;"><strong style="color: #ff3502;">日志的废弃管理</strong>：日志的生命周期管理包括日志的生成、收集、存储、查询、分析和废弃等步骤。其中，废弃管理是一项非常重要的任务，因为它直接关系到日志系统的健康和效率。日志的废弃管理可能包括以下几个方面：</p>
</section>
<ul class="list-paddingleft-1">
<li>
<section style="color: #010101;"><strong style="color: #ff3502;">过期删除</strong>：设置日志的保留期限，过期的日志将被自动删除。这个期限可能会根据日志的级别和重要性而变化。比如，ERROR 级别的日志可能需要保留一个月，而 DEBUG 级别的日志只需要保留 3 天。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #ff3502;">空间限制</strong>：设置日志的存储空间限制，当存储空间达到一定的阈值时，最旧的日志将被自动删除，以释放空间。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #ff3502;">废弃标识</strong>：为废弃的日志添加标识，这样在查询和分析日志时可以忽略这些日志。同时，废弃的日志应当尽快被删除，以节省存储空间。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #ff3502;">废弃通知</strong>：当一个日志标准被废弃时，需要通知所有相关的人员，以避免他们继续使用这个标准。同时，也需要更新日志 SDK 和管理系统，使它们不再支持这个废弃的标准。</section>
</li>
</ul>
</li>
</ol>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">回顾一下，我们制定了一套<strong style="color: #ff3502;">清晰的日志标准</strong>，随后通过<strong style="color: #ff3502;">系统化的管理方式</strong>实施和维护这些标准。借助<strong style="color: #ff3502;">统一的日志 SDK 和日志管理系统</strong>，我们可以提升日志生成和使用的效率。这样，日志便从混乱的信息池转化为强大的问题解决工具，从而<strong style="color: #ff3502;">提升整体的研发效率</strong>。</p>
]]></content:encoded>
			<wfw:commentRss>https://www.phppan.com/2023/12/the-secret-to-improving-rd-efficiency-a-systematic-strategy-for-log-management/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>万字长文，探讨有效的团队管理</title>
		<link>https://www.phppan.com/2023/12/effective-team-management/</link>
		<comments>https://www.phppan.com/2023/12/effective-team-management/#comments</comments>
		<pubDate>Sat, 16 Dec 2023 14:00:39 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[架构和远方]]></category>
		<category><![CDATA[团队管理]]></category>
		<category><![CDATA[技术管理]]></category>
		<category><![CDATA[研发效能]]></category>

		<guid isPermaLink="false">http://www.phppan.com/?p=2116</guid>
		<description><![CDATA[在一个软件企业中，人力成本往往是最高的，随着时代的进步，人员的学历更高了，情况也更复杂，管理团队的挑战不断增加 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p style="color: #000000;" data-tool="mdnice编辑器">在一个软件企业中，人力成本往往是最高的，随着时代的进步，人员的学历更高了，情况也更复杂，管理团队的挑战不断增加，常常被如何吸引和留住顶级人才，如何在团队中建立有效的沟通和协作机制，如何处理日益复杂的项目和任务，如何评估和提升团队的效能等问题困扰。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">如何有效的管理团队已经成为企业成功的关键因素之一。特别是在技术团队，在管理过程中都面临一些共性问题，如沟通不畅、目标不明确、流程混乱、人才流失等等。这些问题在很大程度上影响了团队的效率和产出。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">针对这些问题，我们将在本文中探讨什么是团队，团队的发展过程，以及如何有效的管理团队。</p>
<h1 style="color: #000000;" data-tool="mdnice编辑器"><span style="color: #0e88eb;">1 什么是团队</span></h1>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bolder; color: #0e88eb;">1.1 定义团队</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器"><strong style="color: #0e88eb;">从定义上来看，团队是为了达成某一承诺的共同目标而相互协作的一群人。</strong></p>
<p style="color: #000000;" data-tool="mdnice编辑器">团队可以被定义为一组由个体组成的实体，这些个体共享共同的目标，对其达成负有责任，并通过相互协作以实现这些目标。这个定义包含了团队的两个关键特性：目标的共享性和协作的必要性。</p>
<ol class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">共享的目标</strong>：团队的成员都应该对共同的目标有清晰的理解，并对达成这些目标有共享的承诺。这可能是完成一个项目，解决一个问题，或者达到一个业绩目标。这种对目标的共享理解和承诺为团队提供了方向，并保证了所有成员都在努力的推动团队向着同一方向发展。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">相互协作</strong>：团队的成员需要通过相互协作来达成这些目标。这可能涉及到分工协作，相互学习，以及共享资源和信息等行为。相互协作不仅可以提高团队的效率，也能促进团队成员之间的关系，增强团队的凝聚力，从而提高团队的整体效能。</section>
</li>
</ol>
<p style="color: #000000;" data-tool="mdnice编辑器">除此之外，还有相互依赖、尊重、信任和有效的沟通。</p>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bolder; color: #0e88eb;">1.2 团队是一个开放系统</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器"><strong style="color: #0e88eb;">从整体上来看，团队是个动态复杂的开放系统</strong></p>
<p style="color: #000000;" data-tool="mdnice编辑器">团队是由多个相互依赖、相互影响的部分组成的，这些部分包括团队的成员、团队的结构、团队的目标，以及团队的工作流程等。团队的各个部分都是动态的，都会随着时间和环境的变化而变化。其拆解来看可以分为三部分：</p>
<ol class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">动态：</strong> 团队的状态和行为会随着时间改变。这可能是由于团队成员的交互、团队成员的更换、新的任务或目标的设定，或者团队成员的个人成长和发展。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">复杂：</strong> 团队的行为和效能不仅取决于个体成员的行为，还取决于这些成员之间的交互和关系。因此，理解和管理团队需要考虑到这种复杂性。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">开放系统：</strong> 团队不是孤立存在的，而是和周围的环境相互作用的。这可能包括其他团队、组织的其他部分、组织的领导、客户、供应商、法规和社会文化等。这些外部因素都可以影响团队的行为和效能。</p>
</section>
</li>
</ol>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bolder; color: #0e88eb;">1.3 团队组成框架</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器"><strong style="color: #0e88eb;">从组成框架来看，团队包括 PCP、SCP 和 ICP 三个层面</strong></p>
<p style="color: #000000;" data-tool="mdnice编辑器">任务程序（PCP）、社会程序（SCP）和个体程序（ICP），这三个层面共同构成了团队的基本框架，它们互相交织、互相影响，共同推动了团队的运行和发展。</p>
<ol class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">任务程序（PCP）</strong>：任务程序是团队为了实现共同目标而进行的工作流程和规范。这可能包括任务分配、决策制定、问题解决等一系列的工作程序。一个有效的任务程序可以提高团队的效率，确保团队的工作有序进行，帮助团队成功地完成其目标。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">社会程序（SCP）</strong>: 社会程序是团队中的人际交往和沟通方式，它决定了团队内部的氛围和文化。有效的社会程序可以增强团队的凝聚力，提高团队成员的工作满意度，促进团队成员之间的良好关系。一些如决策程序、冲突解决机制和团队建设活动等，都是社会程序的重要组成部分。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">个体程序（ICP）</strong>:个体程序是指团队成员各自的行为模式和工作方式，它受到各个成员的个性、技能、经验等因素的影响。团队成员的个体程序会影响到团队的整体效能，因此，管理者需要关注团队成员的个体程序，尽可能地提供适合各个成员的工作环境和条件，以发挥他们的潜力。</section>
</li>
</ol>
<p style="color: #000000;" data-tool="mdnice编辑器">总的来说，团队可以被视为一个由任务程序、社会程序和个体程序共同构成的复杂系统。这个系统中的各个部分都是相互关联、相互影响的，只有当这三个部分都有效地运作时，团队才能够高效地运行，成功地实现其目标。</p>
<h1 style="color: #000000;" data-tool="mdnice编辑器"><span style="color: #0e88eb;">2 团队管理的发展过程</span></h1>
<p style="color: #000000;" data-tool="mdnice编辑器">我们常用的团队模型包括 Bruce Tuckman 的团队发展模型，Hersey-Blanchard 情境领导理论，Drexler/Sibbet 团队绩效模型。这三个模型各有偏重：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">Tuckman 的模型</strong>主要是为了解决团队成长过程中的冲突和团队动态问题。它帮助团队理解团队发展的自然进程，并通过理解各个阶段的特点，来更好地应对团队中出现的冲突，提高团队合作的效率。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">Hersey-Blanchard 模型</strong>的重点是领导风格如何应对团队成员的成熟度变化。它主要解决的是领导者如何根据团队成员的成熟度和能力级别，灵活地改变自己的领导风格，以激励团队成员，提高团队效能。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">Drexler/Sibbet 模型</strong>着重于团队的任务完成和效能提升。它解决的主要问题是如何通过明确的目标设定、建立信任、承诺和高效协作，帮助团队在完成任务的过程中提高效率和效果。同时，它也强调了团队在项目结束后的反思和更新。</section>
</li>
</ul>
<p style="color: #000000;" data-tool="mdnice编辑器">这里我们主要是根据 Bruce Tuckman 的团队发展模型来看团队的发展过程。</p>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bolder; color: #0e88eb;">2.1 团队发展模型</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器">Bruce Tuckman 的团队发展模型是一种描述团队从最初形成到最终达到高效运作的理论模型。这个模型最初在 1965 年被 Tuckman 提出，原本包含四个阶段：形成、激荡、规范和执行。然后，在 1977 年，Tuckman 和 Mary Ann Jensen 添加了第五个阶段：解散/休整。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">以下是这五个阶段的详细描述：</p>
<h3 data-tool="mdnice编辑器">2.1.1 形成阶段</h3>
<p style="color: #000000;" data-tool="mdnice编辑器">在形成阶段，团队成员刚刚被组织在一起，他们可能对团队的目标、结构和领导者感到不确定或不安。成员们可能会表现得比较矛盾，既希望被接纳，又害怕过度投入。通常，成员们会对领导者寻求指导和明确的指示。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">在此阶段，主要解决的问题是团队成员的熟悉和初步建立关系。团队成员可能会对彼此、团队的目标和期望、以及他们在团队中的角色感到不确定。这个阶段要解决的问题包括：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">什么是我们的团队目标？</section>
</li>
<li>
<section style="color: #010101;">我们每个人的角色和职责是什么？</section>
</li>
<li>
<section style="color: #010101;">如何分配和管理任务？</section>
</li>
<li>
<section style="color: #010101;">我们的工作流程和通信方式是什么？</section>
</li>
<li>
<section style="color: #010101;">我们如何决定和解决问题？</section>
</li>
</ul>
<p style="color: #000000;" data-tool="mdnice编辑器">针对这些问题，我们有一些常用的应对策略：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">生命地图</strong>：这是一种让团队成员分享他们的个人历史和经验的方法，让大家更好地了解彼此，建立信任和熟悉度。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">MBTI</strong>：MBTI（Myers-Briggs Type Indicator）是一种性格类型指标，由凯瑟琳·库克·布里格斯和她的女儿伊莎贝尔·布里格斯·迈尔斯在二十世纪中叶创立。这种指标基于荣格的心理类型理论，用于评估个体的性格特质和倾向。通过使用 MBTI，我们可以理解团队成员的个性类型，这有助于增进团队内的理解和接纳。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">团建活动</strong>：通过组织团队建设活动，我们可以通过共享的经验和挑战来增强团队的凝聚力。俗一点，喝点小酒不错，不俗一些，可以一起搞点事情，比如一起解决某个问题。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">新成员欢迎仪式</strong>：通过举行欢迎新成员的仪式，可以让新成员感到被接纳和重视。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">团队画像</strong>：提供一个框架，帮助团队成员理解和识别团队整体特征、动态和关系的工具。它可以是一幅图像，一张图表，或者一个模型，描绘出团队的结构，成员的角色，团队的目标，以及团队中的关系和互动等。</section>
</li>
</ul>
<h3 data-tool="mdnice编辑器">2.1.2 激荡阶段</h3>
<p style="color: #000000;" data-tool="mdnice编辑器">在激荡阶段，随着团队成员开始表达个人观点，冲突可能会开始出现。团队成员可能会对团队的目标、任务分配、工作方法或团队的领导产生分歧。这个阶段可能会有所挫折，但也是团队发展的重要阶段，因为它可以帮助清晰地定义团队的方向和结构。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">在此阶段，主要解决的问题是团队内部的冲突和分歧。团队成员可能会对团队的目标、工作方式或他们在团队中的角色产生分歧。这个阶段要解决的问题包括：</p>
<ol class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">职责和角色的定义</strong>：团队成员对自己的角色和职责是否有清晰的认识？是否存在角色冲突或不清晰的地方？</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">决策制度</strong>：团队有明确的决策流程吗？谁有权做重要决定？团队成员是否对这一流程感到满意？</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">沟通效率</strong>：团队的沟通是否畅通？是否存在信息传递不准确或不完全的情况？</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">冲突解决机制</strong>：团队内部出现冲突时，有明确的解决机制吗？成员们是否知道如何提出和解决问题？</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">团队文化和价值观</strong>：团队的价值观是否明确？成员们是否接受并认同这些价值观？</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">信任和尊重</strong>：团队成员之间是否存在足够的信任和尊重？是否有开放的、支持性的环境，让成员们能够表达自己的观点和感受？</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">团队合作</strong>：团队成员是否能有效地合作？是否有明确的工作流程和配合机制？</p>
</section>
</li>
</ol>
<p style="color: #000000;" data-tool="mdnice编辑器">针对这些问题，我们有一些常用的应对策略：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">团队委任状</strong>：通过明确团队的目标、角色和工作方式，可以帮助团队达到一致。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">团队原则</strong>：团队成员共同确定的行为准则和期望，这有助于他们更有效地协作。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">1 对 1会议</strong>：通过私人会议，可以促进直接的沟通和反馈，增强信任和理解。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">情感银行</strong>：通过积极的行为和互动，可以建立和保持信任，这是团队协作的重要基础。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">处理冲突</strong>：使用各种冲突解决策略来处理团队内部的分歧和冲突。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">建设性反馈</strong>：团队成员需要学习如何提供和接受反馈，这对改进工作效率和团队关系至关重要。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">双赢思维</strong>：鼓励团队成员寻找既能满足所有人需要又能满足个人需求的解决方案。</section>
</li>
</ul>
<h3 data-tool="mdnice编辑器">2.1.3 规范阶段</h3>
<p style="color: #000000;" data-tool="mdnice编辑器">在规范阶段，团队成员开始解决在激荡阶段出现的冲突，并开始建立更深的相互理解和协作。团队成员开始对团队的目标、角色和工作方式达成一致。团队凝聚力增强，团队成员开始更加尊重彼此，建立更强的关系。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">在此阶段，主要解决的问题是团队的凝聚力和工作方式。团队成员开始形成一种共享的工作方式和行为准则。这个阶段要解决的问题包括：</p>
<ol class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">如何建立并维护有效的团队规则和行为规范？</section>
</li>
<li>
<section style="color: #010101;">如何设计和实施有效的沟通机制以保证信息的准确及时传递？</section>
</li>
<li>
<section style="color: #010101;">如何提供具体且有效的反馈，促使团队和个人的持续发展？</section>
</li>
<li>
<section style="color: #010101;">如何监控和调整团队的工作效果以及内部的关系和氛围？</section>
</li>
<li>
<section style="color: #010101;">当团队或个人取得成就时，应如何进行有效的庆祝和认可以提高团队的凝聚力和动力？</section>
</li>
</ol>
<p style="color: #000000;" data-tool="mdnice编辑器">针对这些问题，我们有一些常用的应对策略：</p>
<ol class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">创建并传播团队原则和规则</strong>：建立清晰、明确的团队原则和规则是创建健康团队文化的关键。这些原则和规则应该包括团队的使命、价值观、行为标准以及决策流程等内容。所有团队成员都应参与到创建过程中来，这样可以确保这些原则和规则得到大家的认同。一旦原则和规则确定，就需要通过各种方式（比如团队会议、内部通讯等）在团队中进行传播，并在日常工作中持续实施和维护。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">提供及时的反馈并处理冲突</strong>：反馈是提升团队效率和效果的重要工具。建设性反馈应该是具体的、积极的，旨在帮助团队成员改善工作效果和个人发展。1 对 1的沟通机制可以提供一个私密的环境，让团队成员能够分享他们的观察、想法和感受。如果出现冲突，应立即进行处理。处理冲突的过程应以理解和解决问题为目标，避免指责和争吵，寻求双赢的解决方案。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">庆祝成功和成就</strong>：庆祝仪式是提高团队士气和增强团队凝聚力的有效方式。当团队或团队成员达到一定的目标或取得了显著的成就时，应进行适当的庆祝和认可。庆祝的方式可以多种多样，比如组织团队聚餐、颁发证书或奖杯、公开表扬等。重要的是，庆祝应该是真诚的，要让团队成员感到他们的努力和贡献得到了认可。</p>
</section>
</li>
</ol>
<h3 data-tool="mdnice编辑器">2.1.4 执行阶段</h3>
<p style="color: #000000;" data-tool="mdnice编辑器">这是团队发展的最后一个阶段，团队已经达到了高效运作的状态。在这个阶段，团队成员能够自我管理，解决冲突，并且能够有效地完成任务。团队的目标已经很清晰，所有的团队成员都对此有深入的理解，他们都为达成这个目标而努力工作。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">在此阶段，主要解决的问题是团队的效能。团队已经形成了一种有效的工作方式，并且能够高效地完成任务。这个阶段要解决的问题包括：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">如何保持和提高团队的效能？</section>
</li>
<li>
<section style="color: #010101;">如何适应和应对新的挑战和变化？</section>
</li>
<li>
<section style="color: #010101;">如何确保每个人都能持续地学习和发展？</section>
</li>
</ul>
<p style="color: #000000;" data-tool="mdnice编辑器">针对这些问题，我们有一些常用的应对策略：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">教练技术</strong>：通过使用教练技术，可以帮助团队成员提高他们的技能和效率，从而提高团队的效能。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">更新团队规则</strong>：团队的发展和变化可能需要我们更新团队的工作方式和期望。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">授权</strong>：团队领导人可以让团队成员有权做出决策，这样他们能更好地完成任务和承担责任。</section>
</li>
</ul>
<h3 data-tool="mdnice编辑器">2.1.5 休整阶段</h3>
<p style="color: #000000;" data-tool="mdnice编辑器">这是 Tuckman 和 Jensen 后来添加的阶段。在这个阶段，项目或任务完成后，团队开始解散。团队成员可能会对团队的解散感到不安，尤其是当他们在团队工作中建立了强烈的归属感和相互依赖时。这个阶段的关键是确保团队的努力和成果得到认可，同时支持团队成员进行过渡。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">在此阶段，主要解决的问题是团队的结束和转变。当团队的任务或项目结束时，团队可能需要解散或进行重组。这个阶段要解决的问题包括：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">如何处理团队成员的情绪和反应？</section>
</li>
<li>
<section style="color: #010101;">如何确保团队的知识和经验能够被保留和传递？</section>
</li>
</ul>
<p style="color: #000000;" data-tool="mdnice编辑器">需要注意的是，这个模型并不是严格线性的，团队可能会在不同的阶段之间来回移动，甚至可能会跳过某些阶段，或者同时具备两个或多个阶段的特点。</p>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bolder; color: #0e88eb;">2.2 领导者的成长阶段</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器">以上是团队的发展过程，对一个团队的管理者来说，也有一个类似的发展过程，用《礼记·大学》中我们特别熟悉的一句话来概括就是：「<strong style="color: #0e88eb;">修身齐家治国平天下</strong>」。这是一句讲自我修炼，一生成就的四个阶段，将其映射到团队领导者的成长上看，也是适用的。</p>
<ol class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">修身（个人）：</strong> 在这个阶段，重点是发展个人能力。这包括技术知识、专业技能、时间管理、沟通、解决问题的能力等。个人也需要建立自我驱动和自我学习的习惯，这样他们可以不断地学习新的技能和知识。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">齐家（团队）：</strong> 当从个人转向团队的角色时，需要发展一种新的技能集。这包括领导力、决策能力、团队建设、冲突解决、激励和教育团队成员等。领导者需要从个体视角转向集体视角，思考如何提高团队的整体效能，而不仅仅是提高个人的产出。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">治国（组织）：</strong> 当领导者从团队管理转向组织管理时，他们需要开始考虑更为复杂的问题。这包括组织战略、组织结构、文化建设、财务管理、风险管理等。领导者需要考虑如何建立和维护一个高效、稳定、健康的组织。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">平天下（行业/社会）：</strong> 在这个阶段，领导者需要考虑他们的组织如何影响更大的社会和行业环境。这涉及到公共政策、行业标准、社会责任等问题。领导者需要考虑如何利用他们的影响力来推动行业的发展，以及如何通过他们的决策和行动来产生积极的社会影响。</p>
</section>
</li>
</ol>
<p style="color: #000000;" data-tool="mdnice编辑器">每一个阶段都需要领导者具备不同的技能和认知，领导者需要根据不同的角色和责任来适应和发展。</p>
<h1 style="color: #000000;" data-tool="mdnice编辑器"><span style="color: #0e88eb;">3 有效的团队管理</span></h1>
<p style="color: #000000;" data-tool="mdnice编辑器">有效的团队管理是指通过一种系统化的方式，领导一个团队，运营之，以实现既定的目标。这包括以下几个关键要素：</p>
<ol class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">明确的目标</strong>：团队需要有一个明确和共享的目标或愿景，以指导其工作和决策。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">卓越的领导</strong>：团队需要有一个或多个能够激励和指导团队的领导者。这包括设定明确的期望，提供反馈，处理冲突，以及帮助团队应对挑战。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">明确的角色和责任</strong>：每个团队成员需要明确他们的角色和职责，以确保所有的任务都能得到有效的处理。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">良好的沟通</strong>：团队需要有良好的沟通机制，以促进信息和想法的分享，解决问题，以及提高团队的协调性和效率。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">有效的系统和流程</strong>：团队需要有一套有效的系统和流程来支持其日常运作。这可能包括决策制定的流程，任务管理的工具，以及反馈和评估的机制等。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">良好的团队关系</strong>：团队成员之间需要有良好的工作关系，以提高团队的凝聚力和满意度。</p>
</section>
</li>
</ol>
<p style="color: #000000;" data-tool="mdnice编辑器">将其概括一下，就是包括方向，领导力、角色分工、系统、沟通和关系六个方面。这六点是基础，在此基础上，有效的团队管理也需要有适应性和灵活性，以应对不断变化的环境和挑战。这可能包括调整团队的目标，改变工作方法，以及提供持续的学习和发展机会等等。接下来我们从这六个方面来阐述如何有效的管理团队。</p>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bolder; color: #0e88eb;">3.1 方向</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器">带团队如大海行舟，方向是第一要务。为什么要有方向，因为当所有人都对方向有共同的理解，并且同意并承诺支持这个方向时，他们有更大概率的有效地合作，并积极地向目标前进。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">方向主要关注三个问题：团队的目标和战略是否明确？每个团队成员是否理解并认同这些目标和战略？团队的目标是否需要随着环境的变化进行调整？</p>
<p style="color: #000000;" data-tool="mdnice编辑器">方向在团队管理中非常重要，原因有以下几点：</p>
<ol class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">共享目标</strong>：一个明确的方向为团队提供了一个共享的目标或愿景。这可以帮助团队成员理解他们的工作为何重要，以及他们的努力如何帮助团队实现其目标。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">决策指导</strong>：方向也提供了一个框架，用于指导团队的决策和优先事项。团队成员可以根据团队的目标来决定他们应该如何分配资源，选择哪些任务，以及如何执行这些任务。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">提高凝聚力</strong>：当团队成员对团队的方向有共同的理解和认同时，他们可能会感到更加投入和满足。这可以提高团队的凝聚力和满意度。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">提供动力</strong>：明确的方向也可以为团队提供动力。团队成员知道他们正在追求的目标，了解他们的工作如何贡献于这个目标，这可以激发他们的积极性和热情，将从被动执行任务变为主动推动目标的实现。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">测量进度</strong>：最后，方向可以帮助团队测量其进度和成效。通过比较当前的状态和目标，团队可以了解他们在实现目标方面的进度如何，以及他们是否需要改变策略或方法。</p>
</section>
</li>
</ol>
<p style="color: #000000;" data-tool="mdnice编辑器">在我们做战略沟通，或者在探讨方向时，需要考虑以下三个方向：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">Why</strong>：为什么我们要这样做？这通常涉及到组织的使命、愿景或核心价值观。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">What</strong>：我们要做什么？这是具体的目标或战略。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">How</strong>：我们如何做到这一点？这包括实施战略的具体步骤或方法。</section>
</li>
</ul>
<p style="color: #000000;" data-tool="mdnice编辑器">要想达成方向的一致，有许多方法，我们常用的方法如下：</p>
<ol class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">一对一讨论：</strong> 领导者可以与每个团队成员单独会面，讨论并达成共识。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">集体共创：</strong> 可以组织工作坊或大会，让所有人都有机会参与讨论和决策。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">单方宣导：</strong> 在某些情况下，领导者可能需要明确阐述他们的观点，并期望团队成员接受和支持。</p>
</section>
</li>
</ol>
<p style="color: #000000;" data-tool="mdnice编辑器">无论选择哪种方式，最重要的是确保每个人都有机会表达他们的观点，并且他们的观点被认真考虑。这样才能保证达成真正的共识，而不仅仅是表面的一致。</p>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bolder; color: #0e88eb;">3.2 领导力</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器">经常有人说「<strong style="color: #0e88eb;">领导者决定了团队的基因</strong>」，这说明领导者的行为、决策、态度、价值观和领导风格对团队的特质和行为有着重大影响。就像基因决定了生物的特性一样，领导者的特质和行为也可以决定团队的「特性」。其主要体现在以下 4 个方面：</p>
<ol class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">设定价值观和期望</strong>：领导者通常会设定团队的价值观和期望，这些价值观和期望形成了团队文化的基础。例如，如果领导者重视创新和风险承受能力强，那么团队可能也会发展出一种鼓励尝试新事物和接受失败的文化。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">塑造行为和决策</strong>：领导者的行为和决策模式对团队成员有示范作用。例如，如果领导者以开放和透明的方式进行决策，那么团队成员也可能会采取同样的方式。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">激励和驱动</strong>：领导者通过他们的激励策略影响团队的动力和表现。如果领导者激励团队成员追求卓越和持续改进，那么这可能会成为团队的一个核心驱动力。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">选择和发展人才</strong>：领导者在招聘和发展人才方面的决策也会影响团队的特性。例如，如果领导者倾向于招聘具有强烈团队精神和合作能力的人，那么整个团队可能也会具有这些特性。</p>
</section>
</li>
</ol>
<p style="color: #000000;" data-tool="mdnice编辑器">在领导者改变团队的过程中，领导的领导力是一个非常重要的因素，在团队管理和组织成功中扮演着重要的角色。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">当你在管理岗位上时，看看以下的一些陷阱你有没有遇到过：</p>
<ol class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">过度放权或忽视领导职责</strong>：领导者有时可能会过度放权，以至于放弃了领导权力，并忽略了团队管理的各种要素，如ICP/SCP/PCP（Input/Control/Process）。可能过于乐观地认为，只要给团队足够的自由，一切都会按计划进行。然而，这是一种误解。领导者不仅要放权，还要根据团队的成熟度正确使用权力，以及情景管理。我们应该与团队一起工作，帮助解决难题，而不是完全放手。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">以自我为中心，忽视团队需求</strong>：领导者可能过于关注自己的想法和目标，而忽视了团队的需求和感受。可能把人性假设得太理想化，缺乏对团队的爱和耐心。领导者应该以团队的理解和需求为出发点来进行沟通和赋权。他们也应该愿意为提高团队的能力付出努力，包括必要时进行人员调整。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">过度依赖自我思考，忽视团队输入</strong>：领导者可能会认为自己已经清楚了解了所有问题，结果导致团队成员只是执行者，没有参与决策的机会。这种做法可能会阻碍团队成员的发展和创新。领导者应该把团队成员视为平等的伙伴，愿意花时间进行沟通和同步，并相信他们具有巨大的潜力。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">过度参与执行，忽视领导职责</strong>：有些领导者可能过于关注执行任务，以至于忘记了他们的领导职责。他们可能会在周会上跟进每项任务，但忽视了作为领导者的责任，包括设定战略，提供支持，和激励团队。领导者应该意识到他们是团队的扩大器，他们的主要职责是领导和赋能，而不仅仅是执行任务。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">避免冲突</strong>：领导者可能会避免处理团队之间的冲突，以希望保持和谐。然而，未解决的冲突可能会升级，影响团队的士气和效率。<strong style="color: #0e88eb;">领导者应该勇于面对和解决冲突</strong>，而不是避开它。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">过度承诺</strong>：有些领导者可能会对团队成员或者与他们合作的人过度承诺，这可能会导致资源过于紧张，或者在无法达到承诺的时候失去信任。领导者应该明白他们的能力范围，并理性地做出承诺。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">忽视个人发展</strong>：领导者可能过于专注于团队的目标，而忽视了他们自己的个人成长和发展。这可能导致他们的技能和知识变得过时，无法有效地领导团队。领导者应该意识到，他们自己的发展同样重要，他们需要不断地学习和提高。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">忽视人才培养</strong>：领导者可能过于关注短期的目标，而忽视了人才的培养。这可能导致团队的长期发展受到限制。领导者应该投资于人才的培养，为团队的未来做好准备。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">抵制变革</strong>：领导者可能对变革持防御态度，尤其是当这些变革可能影响他们的权力和舒适区时。然而，变革是必要的，领导者应该积极接受并驱动变革，<strong style="color: #0e88eb;">以变化应对不断变化的环境</strong>。</p>
</section>
</li>
</ol>
<p style="color: #000000;" data-tool="mdnice编辑器">每个领导者都可能面临这些陷阱，关键在于认识到它们，然后采取行动来避免或者克服它们。避免这些陷阱需要领导者具有深度的自我认识，对团队的尊重和理解，以及对长期目标和策略的清晰理解。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">那么，领导力是什么？</p>
<p style="color: #000000;" data-tool="mdnice编辑器">领导力是一种复杂的能力，包含多个层面。领导作为团队绩效的放大器，他们的作用和影响占团队成功要素的 70%，他们的角色既不是独自承担所有工作，也不是放任不管，而是负全责。领导力有一个基本框架，可以分为以下 6 个层面：</p>
<ol class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">战略层面</strong>：这涉及到制定和实施长期目标和策略，以及识别和适应外部环境的变化。领导者在这个层面需要展示出前瞻性和战略性思考。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">人际层面</strong>：这涉及到与团队成员、客户、合作伙伴等各方进行有效的沟通和协作。领导者在这个层面需要展示出强大的沟通、协调和冲突解决能力。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">任务层面</strong>：这涉及到设置和实现具体的目标，以及管理和分配资源。领导者在这个层面需要展示出强大的组织、规划和执行能力。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">发展层面</strong>：这涉及到培养和发展团队成员，以及自我学习和成长。领导者在这个层面需要展示出教育、指导和激励他人的能力，以及开放性和学习意愿。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">情绪层面</strong>：这涉及到理解和管理自己和他人的情绪。领导者在这个层面需要展示出较高的情商，包括自我意识、自我管理、社会意识和关系管理。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">变革层面</strong>：这涉及到驱动和管理变革，以适应不断变化的环境。领导者在这个层面需要展示出创新思维、灵活性和适应性。</p>
</section>
</li>
</ol>
<p style="color: #000000;" data-tool="mdnice编辑器">换成宝洁的 5E 领导力模型来描述，即：高瞻远瞩(Envision)，凝聚他人(Empower)，发展他人(Encourage)，激励人心(Educate)，和高效执行(Evaluate)。</p>
<ol class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">高瞻远瞩（Envision）：</strong> 领导者需要有构建愿景的能力，能够给整个组织指明方向，激发团队内心的激情。好的愿景应该符合外部市场、用户和业务现阶段的需求，有足够的力量解决业务目前面临的根本问题，并且不只是口号，而要有实际的行动路线。要设计一个好的愿景，可以参照行业标杆，找出关键路径，建立 KPI。领导者需要清晰、有说服力地表述这个愿景，并展示出他们如何带领团队实现这个愿景。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">凝聚他人（Engage）：</strong> 领导者需要将员工、同事、客户甚至老板纳入自己的愿景达成梯队，让每个项目的所有参与者都把这个项目当成重要的项目。在这个过程中，需要保持开放的沟通，同步进展和规划，让每个人都有机会了解项目的全局情况并参与其中。这包括倾听他人的观点，尊重和理解他们的需求，以及鼓励他们在实现共同目标的过程中扮演积极的角色。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">发展他人（Enable）：</strong> 领导者需要确保团队有信心、有能力、有精力来做好自己的那部分工作。这包括提前告知工作需求和意义，提供全面的信息，及时提醒需要的方向调整，以及在可控的范围内给予团队犯错和改进的机会。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">激励人心（Energize）：</strong> 无论困境逆境，领导者需要保持团队的斗志。这可以通过保持积极的态度，使用幽默来化解压力，及时庆祝小胜利，反馈表扬，以及了解并回应每个人的想法来实现。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">高效执行（Execute）：</strong> 领导者需要保证任务的完美执行。这包括梳理工作，做好分配和排期，让每个人都有机会参与，不遗余力地寻求帮助，以终为始，及时检查里程碑，以最终体验为目标。</p>
</section>
</li>
</ol>
<p style="color: #000000;" data-tool="mdnice编辑器">作为一名领导者，需要持续的自我反思和对团队的深深关爱，<strong style="color: #0e88eb;">时刻反思</strong> ，时刻反思自己的行为和决定，以确保它们都是以团队的最佳利益为导向的。这意味着你需要放下自我，优先考虑团队的需求和利益。在决策时，你需要考虑的是决策对团队的影响，而不仅仅是对自己的影响。此外，你需要建立一个开放和透明的环境，鼓励团队成员提供反馈，以帮助你更好地理解他们的需求和期望。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">同时许以 <strong style="color: #0e88eb;">严格的爱</strong>。严格的爱是建立在对标准、规则和期望的坚持上的。这意味着你需要设定明确的期望，使团队知道他们需要达到什么样的标准。你也需要坚持规则和程序，确保所有的工作都按照既定的方式进行。同时，你需要提供及时和<strong style="color: #0e88eb;">具有建设性的反馈</strong>，帮助团队成员理解他们需要如何改进。在这一过程中，你也需要给予团队成员必要的支持和关心，以帮助他们达到这些标准。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">如 Python 中的「鸭子模型」：如果一个对象能够完成你需要的操作（也就是它“走起来像鸭子，叫起来像鸭子”），你就可以把它当作鸭子来对待（即不在乎它的真实类型或类别）。</p>
<p style="color: #000000;" data-tool="mdnice编辑器"><strong style="color: #0e88eb;">如果你像领导者一样思考，像领导者一样讲话，像领导者一样行动，那你就是一个合格的领导者。</strong></p>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bolder; color: #0e88eb;">3.3 角色和分工</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器">在有效的团队管理中，角色和分工十分关键。明确的角色和分工可以确保团队的高效运作，减少重复工作和冲突，同时也能让每个团队成员明确自己的责任和期望。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">首先，我们需要根据团队的战略和核心任务来规划组织结构，即「先岗再人」的原则。这一步包括：</p>
<ol class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">基于战略和核心任务的组织规划</strong>：在招募团队成员之前，我们需要首先明确团队的目标和任务，以确定所需的角色和这些角色在组织中的位置。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">任务性质和管理范围的团队分工和分层</strong>：根据任务的性质和管理范围来决定团队的结构和角色分配。这样可以帮助每个人清楚地理解他们的职责和与其他团队成员的关系。理解团队分工和分层就像是在打造一支足球队。首先，你需要了解比赛的规则和每个位置的特点（任务性质）。例如，守门员的任务是防守，而前锋的任务是进球。然后，你需要决定哪个球员去打什么位置（团队分工）。这取决于他们的技能和才能，以及他们与其他球员的协作方式。你还需要了解每个位置在球场上的位置（管理范围）。例如，队长可能需要管理全队的战术，而边锋可能只需关注自己的区域。最后，你需要明确哪些位置是领导位置，哪些位置是执行位置（团队分层）。例如，队长和教练需要做战略决策，而前锋和中场球员需要执行这些决策。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">明确关键岗位</strong>：我们需要确定哪些是关键岗位，这些岗位在实现团队目标和任务上起着决定性的作用。</p>
</section>
</li>
</ol>
<p style="color: #000000;" data-tool="mdnice编辑器">接着，我们要遵循「强将精兵高产出」的效率原则，以提高团队的效率：</p>
<ol class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">强将是核心</strong>：强将被视为团队或组织的核心，因为他们拥有推动力、领导力、专业知识和技能，同时他们的行为和态度常常被其他团队成员视为模范。他们不仅能推动团队前进，提供专业的解决方案，还能通过他们的领导力引导和协调团队的工作。另外，他们的存在为团队提供了稳定性和信任，特别是在面对挑战的时候，他们的冷静和果断能帮助团队保持稳定并继续前进。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">精兵至关重要</strong>：精兵是团队或组织的重要组成部分，他们的专业技能、执行力、稳定性和团队协作能力对于团队的成功起到了关键的作用。他们不仅能以高效和质量的方式完成任务，提升整个团队的效率，也通过他们的纪律性和可靠性为团队提供了稳定性。同时，他们的协作精神让他们能够与团队中的其他成员携手合作，共同推动团队的进步。并且，他们的专业性和忠诚度也使他们成为未来领导角色的有力候选人。</p>
</section>
</li>
</ol>
<p style="color: #000000;" data-tool="mdnice编辑器">最后，当团队规模越大，结构越复杂时，我们更需要重视核心团队的建设和分层管理，以形成像涟漪一样向外扩散的效应，拆解下来分为三个关键点：：</p>
<ol class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">核心团队的建设</strong>：随着团队规模的扩大和结构的复杂化，建设一个强大的核心团队变得越来越重要。核心团队的成员应具有关键的角色或岗位，并且能够对组织的目标和决策产生直接影响。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">分层管理</strong>：应使用分层管理的方式来应对团队规模的增长和结构的复杂化。每一层都有自己的职责和管理者，以保持信息流和决策过程的效率。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">涟漪效应</strong>：一个强大的核心团队和有效的分层管理系统可以在整个组织中产生积极的影响，就像在水面上投下一颗石子会产生涟漪一样。可以提高整个团队的效率和生产力。</p>
</section>
</li>
</ol>
<p style="color: #000000;" data-tool="mdnice编辑器">随着团队规模的增长和结构的复杂化，我们应更加重视核心团队的建设和分层管理，以实现有效的组织管理和协同工作，从而产生涟漪效应，提高整个团队的效率和生产力。</p>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bolder; color: #0e88eb;">3.4 系统</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器">这里的所说的系统是一种整体观念，强调整体大于部分之和，部分之间的互动关系对整体的性质和功能有决定性的影响。<strong style="color: #0e88eb;">以系统观来解决问题</strong>。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">系统可以理解为一套组织的流程、规则和机制，这些流程、规则和机制协同工作，以实现组织的特定目标。系统观强调整体性和协同性，而不仅仅是单个流程或机制。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">有效的团队管理中的系统，包括了流程（如工作流程、决策流程）、规则（如政策、规章制度）和机制（如奖励机制、反馈机制）。这些元素相互关联，共同构成了一个整体，以实现团队的目标。系统的设计和实施主要是为了解决团队管理中的各种问题，如效率低下、信息流通不畅、决策错误、员工满意度低、团队目标达成困难等问题。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">系统中的各部分都建议遵循目的、痛点、方案、行动的逻辑来走，这其实也就是我们之前聊过的解决问题方案中的第二类方法，深度分析类问题。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">系统的建设和实施需要以下几个步骤：</p>
<ol class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">明确目的</strong>：首先，需要明确系统的目的，即希望通过系统解决什么问题，实现什么目标。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">识别痛点</strong>：然后，需要识别和分析现有的问题和痛点，这将为系统的设计提供依据。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">制定方案</strong>：根据目的和痛点，制定相应的流程、规则和机制。这可能包括重新设计工作流程，制定新的政策，或设置新的奖励机制等。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">实施行动</strong>：将方案落实到实际行动中，这可能需要培训员工，改变工作方式，或调整资源分配等。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">持续优化</strong>：在实施过程中，需要收集反馈，评估效果，然后根据结果进行调整和优化，使系统能够更好地服务于团队的目标。</p>
</section>
</li>
</ol>
<p style="color: #000000;" data-tool="mdnice编辑器">这里的系统是指一系列的流程、规则和机制。今天我们主要简单聊一下流程和运营机制。</p>
<h3 data-tool="mdnice编辑器">3.4.1 流程</h3>
<p style="color: #000000;" data-tool="mdnice编辑器">对于流程建设，它的核心并不仅仅是管理者制定内部规章的过程，而更是一个机会，一个可以总结和提炼团队内部的最佳实践，同时也是管理者对于自身权力的一种约束。流程建设是将团队实践中的隐性知识沉淀为明文规定的最佳工具。</p>
<p style="color: #000000;" data-tool="mdnice编辑器"><strong style="color: #0e88eb;">流程本质上是人与任务的有效组合。</strong> 它是为了完成特定目标或任务，人们进行的一系列逻辑相关的，跨时间和空间的活动集合。流程是将投入转化为产出的方法，通常包含三个组成部分：投入、转换活动和产出。具有系统观点的人会将组织视为一个流程，而不是各自独立的部门。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">流程中的专责化的含义并不是专门的机构或者人员来负责团队所有的标准流程建设，而是谁负责工作，谁就应该负责流程的建设工作。流程建设是一种实践性的工作，源于实际工作，服务于实际工作。如果由专职人员负责流程，可能会导致一线管理者在责任上有所缺失。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">流程是一个过程性的制度，需要在过程中发现问题，解决问题，并随着业务的发展和变化进行持续迭代。当某些流程不再适用时，我们需要主动发起优化，按照更优的方向优化流程，精简冗余的流程，追求极简。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">一个组织实际上是由各种流程串联起来的。这些流程可能并不都是书面的，但一定隐藏在团队的常规操作和员工的习惯中。组织的工作效率在很大程度上受到流程的影响，组织的运行本质上就是业务流程的运行。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">每个管理者都应该学会建立和优化流程。建立流程的目的是高效管理业务，让大家可以按照流程解决问题，尤其是跨团队的问题，而不是寻找人来解决；每件事情都可以按照流程来解决，而不是频繁的开会沟通。那么如何来构建有效的流程呢?</p>
<ol class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">从实际出发</strong>：流程建设应该是为了解决实际问题或提高某个事情的效率，而不是为了流程本身。比如，如果在人力调度问题上需要频繁地找各级领导开会讨论，明显存在效率问题。为此，我们可以制定一个人力调度的流程，明确需要提供的信息，哪些人需要讨论，哪些人需要审批等。在此之后，大家可以按流程执行，无需频繁地找各级领导开会。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">灰度执行</strong>：流程建设完成后，不应立即全面实施，而应该先在某个部门或业务部门进行试点，发现可能存在的问题，如流程的顺序、时限等，然后有针对性地对流程进行优化和完善，再逐步扩大试点范围，最后全面实施。<strong style="color: #0e88eb;">这个逻辑和我们服务灰度的逻辑是一致的，尽量减少新变化的影响范围，使变化更好地落地。</strong></p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">持续迭代</strong>：流程全面实施一段时间后，需要对流程进行复盘和回顾，而不是一旦流程建立就不再关注。例如，如果公司是从事 toC 业务，现行的研发流程是双周迭代，运行了一段时间。但现在，公司要转向 toB 业务，这时候就需要重新审视双周迭代的流程，看是否需要优化，以满足新的业务需求。</p>
</section>
</li>
</ol>
<p style="color: #000000;" data-tool="mdnice编辑器">在流程的构建过程中需要注意<strong style="color: #0e88eb;">不是所有的事情都需要建立流程，关键的流程能够大大提升团队的效率</strong>，在出现以下的情况时，我们就需要注意是否要创建新的流程或者优化流程了：</p>
<ol class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">刻意跟进的重要不紧急（突破创新）的事情</section>
</li>
<li>
<section style="color: #010101;">多方共同参与，提升协同效率（流程/角色/决策等需要配置）</section>
</li>
<li>
<section style="color: #010101;">日常的重复性工作</section>
</li>
</ol>
<p style="color: #000000;" data-tool="mdnice编辑器">流程建设是一个动态的过程，需要管理者从实际工作出发，灰度执行并持续迭代，以达到提升工作效率，解决问题的目标。</p>
<h3 data-tool="mdnice编辑器">3.4.2 运营机制</h3>
<p style="color: #000000;" data-tool="mdnice编辑器">运营机制是一套规范团队运作的方法和流程，它解决的是如何有效管理和协调团队资源，以实现团队的目标。它的本质是制度和流程，它旨在提高团队的效率，减少混乱，提升团队的协作能力，以及适应环境的变化。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">在有效的团队管理中，以下是关键的运营机制：</p>
<ol class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">OKR 跟进</strong>：OKR（Objectives and Key Results）是一种目标设定框架，它明确了团队的目标（Objectives）和衡量目标实现程度的关键结果（Key Results）。团队需要定期跟进 OKR，以确保目标的实现。这个过程包括定期检查关键结果的进展，以及调整策略以更好地实现目标。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">常规基础工作</strong>：这是团队日常运营的重要组成部分，包括任务分配、项目管理、报告编制，以及其他常规的管理工作等。这些工作是确保团队正常运行的基础，也是团队能够有效执行其职能和达成目标的基础。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">处理突发问题/bug</strong>：在日常运营中，团队可能会遇到突发的问题或者 bug。团队需要有处理这些问题的能力，这包括快速定位问题，制定解决方案，并执行修复。这种能力不仅可以避免问题对业务造成影响，也是提升团队解决问题能力的重要方式。</p>
</section>
</li>
</ol>
<p style="color: #000000;" data-tool="mdnice编辑器">除此之外，还有关于团队、领导和反馈的一些机制，详细内容在前面讲过，这里带一下：</p>
<ol class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">明确的角色和职责</strong>：一个高效的团队需要有一个核心团队，其中每个成员的角色和职责都应该明确。这可以确保每个人都明白自己的工作是什么，以及如何与其他团队成员协作。明确的角色和职责，可以提高团队的协作效率，也可以有效地避免工作的重复和遗漏。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">团队领导的责任</strong>：团队的领导者（Owner）是决定团队成功的关键因素。他们需要对团队的成功负责，这包括确定和维持团队的战略方向，做出关键的判断和决策，以及协调资源以支持团队的工作。适当的领导可以激发团队成员的潜力，驱动团队的创新和进步。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">定期的跟进和反馈</strong>：团队需要进行定期的跟进和反馈，这包括<strong style="color: #0e88eb;">周度跟进和月度跟进，以及在关键节点的洞察</strong>。这些跟进和反馈可以帮助团队了解他们的进展，发现问题，并在需要的时候做出调整。定期的跟进和反馈，也是团队持续改进和学习的重要机制。</p>
</section>
</li>
</ol>
<p style="color: #000000;" data-tool="mdnice编辑器">通过以上这些运营机制，团队可以确保目标的实现，日常工作的正常推进，以及在遇到问题时能够有效地解决。这也可以帮助团队建立一个明确的定位和团队精神，使成功成为一群人共同的事情。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">从流程观到系统观，是一个从关注单个流程或机制，到关注整个系统如何协同工作以实现目标的转变。这需要明确目的，识别痛点，制定并实施方案，最后通过收集反馈和持续优化，以实现系统的最大价值。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">有系统观的团队管理，能使团队运行更高效、更有序，有助于提高工作效率，减少错误，提升员工满意度，最终实现团队的目标。同时，通过系统的反馈机制，可以不断学习、优化和改进，从而实现组织的持续改进和发展。</p>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bolder; color: #0e88eb;">3.5 沟通</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器">在团队管理中，沟通是一个至关重要的组成部分。沟通是团队成员之间交换信息、观点、想法和感受的过程。沟通不仅仅是说出自己的想法，更重要的是倾听和理解他人的观点。在沟通过程中，我们应首先接纳对方的观点，然后再去理解。这样的沟通方式可能更容易促成有效的合作。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">沟通从种类上来分，可以分为语言沟通或非语言沟通、口头沟通和书面沟通、正式沟通和非正式沟通，向上沟通、向下沟通和平级沟通等。</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">语言沟通或非语言沟通是从沟通的载体来区分，语言沟通包括书面沟通和口头沟通，非语言沟通包括面部表情，身体语言等；</section>
</li>
<li>
<section style="color: #010101;">口头沟通和书面沟通是从语言的载体来区分，口头沟通有会议、面谈、演讲、电话等，书面沟通有电子邮件、信函、刊物（电子和非电子）、报表、通讯录等传递书面文字的手段。口头沟通的特点是快速传递和反馈，但是可能传递过程中会失真，书面沟通更偏向于单向沟通、一般会缺少反馈且耗时较多。</section>
</li>
<li>
<section style="color: #010101;">正式沟通和非正式沟通更多的是在组织层面，通过是否具有系统性和结构性来区分。正式沟通是从组织所规定的路线和程序进行信息的传递和交流，如组织间的信函、内部的文件、汇报、会议等等；非正式沟通一般是线下的一些闲聊、喝酒时的吹牛以及一些小道消息等。</section>
</li>
<li>
<section style="color: #010101;">向上沟通、向下沟通和平级沟通，这里主要是以组织层级间沟通的对象为区分，以方向表述对象群体。向上沟通一般是指向你的老板沟通，即所谓的下情上达；向下沟通是指向你的下属沟通，即所谓的上情下达；平级沟通是指横向的沟通，如一些平级的部门负责人之间的沟通，以交接意见，互助互赢为主。</section>
</li>
</ul>
<p style="color: #000000;" data-tool="mdnice编辑器">沟通的主要目的有几个方面。首先，沟通可以帮助团队的成员对团队的目标、任务、策略和进度有清晰的理解，这需要我们寻找合适的沟通「切入点」。其次，沟通也可以帮助解决可能出现的误解或冲突，这需要我们正确对待和处理抱怨。最后，沟通可以增强团队的凝聚力和合作精神，这需要我们建立完善的内部沟通机制，消除沟通障碍，确保信息共享，引导团队成员之间进行充分的沟通。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">沟通在团队管理中的重要性不可忽视。首先，良好的沟通可以加强团队的协作效率，帮助团队成员更好地理解和接受团队的目标和策略。其次，通过沟通，我们可以及时发现和解决问题，避免小问题演变成大问题。此外，通过有效的沟通，我们可以建立一个开放、透明的工作环境，增强团队的凝聚力和合作精神。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">有效的沟通方法包括以下几个方面：</p>
<ol class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">定期的团队沟通</strong>：可以通过团队会议，一对一的交谈等方式进行定期的沟通，以确保团队成员对团队的目标和策略有清晰的理解。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">寻找沟通的「切入点」</strong>：寻找合适的沟通「切入点」可以使沟通更为有效。这可能是一个共享的目标，一个共同关注的问题，或者一个相关的话题。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">消除沟通障碍</strong>：消除沟通障碍，确保信息的准确、及时和有效的传递。这可能包括明确的表达，有效的倾听，以及建立开放和透明的沟通环境。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">处理抱怨</strong>：对于抱怨，我们应该先理解抱怨的原因，然后提供有效的反馈，最后寻找和实施解决方案。</p>
</section>
</li>
</ol>
<p style="color: #000000;" data-tool="mdnice编辑器">对于团队管理来说，需要建立有效的沟通机制。以下是一些常见的步骤和建议：</p>
<ol class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">明确沟通的目标</strong>：首先，我们需要明确沟通的目标，这可以帮助我们确定沟通的内容和方式。比如，我们的目标是提高团队的协作效率，还是解决具体的问题，或者增强团队的凝聚力。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">设定沟通规则</strong>：我们需要设定明确的沟通规则，这包括沟通的时间，方式，频率，以及参与的人员。规则需要根据团队的具体情况进行设定，比如，团队成员的地理位置，时间区域，工作方式等。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">选择合适的沟通工具</strong>：我们需要选择合适的沟通工具，以支持我们的沟通活动。这可能包括面对面的会议，电话，电子邮件，即时消息，视频会议，项目管理工具等。我们需要根据团队成员的需求和习惯，以及沟通的内容和目标，选择最合适的工具。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">提供沟通培训</strong>：我们可以提供一些沟通培训，以帮助团队成员提高他们的沟通技巧。这可能包括如何清晰的表达自己的观点，如何有效的倾听他人的观点，如何解决沟通中的冲突和误解等。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">鼓励开放和透明的沟通</strong>：我们需要鼓励开放和透明的沟通，让团队成员感到他们的观点和感受被尊重和接纳。我们可以通过设定安全和尊重的沟通环境，以及提供反馈和建议的机会，来实现这一点。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">定期评估和改进沟通机制</strong>：我们需要定期评估我们的沟通机制的效果，以便进行必要的改进。我们可以通过收集和分析沟通的数据，以及听取团队成员的反馈和建议，来进行评估和改进。</p>
</section>
</li>
</ol>
<p style="color: #000000;" data-tool="mdnice编辑器">通过这些步骤，我们可以建立一个支持团队目标和策略，增强团队凝聚力和协作精神，以及应对变化和冲突的沟通机制。</p>
<h2 style="color: #000000;" data-tool="mdnice编辑器"><span style="font-weight: bolder; color: #0e88eb;">3.6 关系</span></h2>
<p style="color: #000000;" data-tool="mdnice编辑器">这里的关系不是指拉帮结派，而是涉及到团队成员之间的相互作用、感情、理解和信任。这些关系能够影响团队的凝聚力、合作效率和整体的工作环境。这包括团队成员如何沟通、如何协作、如何处理冲突，以及他们对彼此的信任和尊重程度。有效的团队关系不仅涉及到个体与个体之间的关系，也涉及到个体与团队，以及团队与其他团队之间的关系。</p>
<p style="color: #000000;" data-tool="mdnice编辑器">团队关系对于有效的团队管理来说非常重要，其意义主要表现在以下几个方面：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">提高效率</strong>：当团队成员之间的关系良好时，他们更可能愿意共享信息，协作解决问题，这可以大大提高团队的工作效率。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">增强凝聚力</strong>：良好的团队关系可以增强团队的凝聚力，使成员感到他们是团队的一部分，愿意为团队的目标努力。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">提高满意度</strong>：当团队成员在工作中感到被尊重和被理解时，他们的工作满意度也会提高，这对于保持团队的稳定性和吸引优秀的人才非常重要。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: black;"><strong style="color: #0e88eb;">创新和解决问题</strong>：良好的关系可以促进不同观点的碰撞，从而激发创新和解决问题。</p>
</section>
</li>
</ul>
<p style="color: #000000;" data-tool="mdnice编辑器">建立良好的团队关系需要投入时间和努力，以下是一些有效的策略：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">建立信任</strong>：信任是关系的基础，需要通过遵守承诺、公平对待所有成员、开放和诚实的沟通以及接受反馈来建立。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">提供支持</strong>：团队领导应提供必要的资源和支持，帮助团队成员成功完成任务，同时也要关注他们的职业发展。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">鼓励开放沟通</strong>：团队领导应鼓励开放、诚实和尊重的沟通，以确保所有成员都能够表达他们的观点和感受。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">解决冲突</strong>：团队领导需要具备解决冲突的能力，以及确保冲突的有效解决。</section>
</li>
</ul>
<p style="color: #000000;" data-tool="mdnice编辑器">一旦建立了良好的关系，就需要进行维护。以下是一些有效的策略：</p>
<ul class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">定期沟通</strong>：团队领导需要定期与团队成员进行沟通，了解他们的需求和期望，解决可能出现的问题。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">公正和一致</strong>：团队领导需要公正地对待所有成员，确保所有的决策和行动都是公平和一致的。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #0e88eb;">承认和奖励</strong>：团队领导应该承认和奖励团队成员的努力和贡献，以增强他们的满意度和投入度。</section>
</li>
</ul>
<p style="color: #000000;" data-tool="mdnice编辑器">建立和维护良好的团队关系需要团队领导和成员的持续努力。在遇到破坏团队信任感的人，不能留，但用人不疑，疑人不用。团队关系在团队管理中起着关键的作用。通过建立信任、提供支持、鼓励开放沟通和有效解决冲突，我们可以建立和维护良好的团队关系，从而提高团队的效率，增强凝聚力，以及提高满意度。</p>
<h1 style="color: #000000;" data-tool="mdnice编辑器"><span style="color: #0e88eb;">4 团队有效性的评估和度量</span></h1>
<p style="color: #000000;" data-tool="mdnice编辑器">当我们做了一些手段来优化团队管理的有效性，就需要有一个评估和度量的过程。以下是一个基于各种机制的团队系统有效性评估表。其分为五个主要类别：决策与目标设定、沟通与任务分配、报酬与激励、绩效评估、人才管理和日常运营。</p>
<h3 data-tool="mdnice编辑器">1. 决策与目标设定</h3>
<section style="color: #000000;" data-tool="mdnice编辑器">
<table>
<thead>
<tr>
<th>项目</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>决策机制</td>
<td>评估团队的决策过程是否清晰、公平且有效。</td>
</tr>
<tr>
<td>OKR（Objectives and Key Results）机制</td>
<td>评估团队是否设定了清楚且可衡量的目标，以及这些目标是否与团队和组织的更大目标相一致。</td>
</tr>
</tbody>
</table>
</section>
<h3 data-tool="mdnice编辑器">2. 沟通与任务分配</h3>
<section style="color: #000000;" data-tool="mdnice编辑器">
<table>
<thead>
<tr>
<th>项目</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>沟通机制</td>
<td>评估团队的沟通是否有效，成员是否感到他们的声音被听到，以及是否有足够的机会进行沟通。</td>
</tr>
<tr>
<td>任务分配机制</td>
<td>评估任务是否根据团队成员的技能和兴趣进行分配，以及是否有机会进行新任务和挑战。</td>
</tr>
</tbody>
</table>
</section>
<h3 data-tool="mdnice编辑器">3. 报酬与激励</h3>
<section style="color: #000000;" data-tool="mdnice编辑器">
<table>
<thead>
<tr>
<th>项目</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>报酬机制</td>
<td>评估团队是否有一个公平和激励的报酬系统，这个系统是否与团队和个人的目标相一致。</td>
</tr>
<tr>
<td>激励机制</td>
<td>评估团队是否有有效的奖励和激励制度，以奖励和激励团队成员的努力和成就。</td>
</tr>
</tbody>
</table>
</section>
<h3 data-tool="mdnice编辑器">4. 绩效评估</h3>
<section style="color: #000000;" data-tool="mdnice编辑器">
<table>
<thead>
<tr>
<th>项目</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>绩效评估机制</td>
<td>评估绩效评估是否根据明确和公平的标准进行，团队成员是否有机会接收和提供反馈。</td>
</tr>
</tbody>
</table>
</section>
<h3 data-tool="mdnice编辑器">5. 人才管理和日常运营</h3>
<section style="color: #000000;" data-tool="mdnice编辑器">
<table>
<thead>
<tr>
<th>项目</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>人才招聘机制</td>
<td>评估招聘流程的有效性，应聘者的质量，以及新员工的留存率。</td>
</tr>
<tr>
<td>人才发展机制</td>
<td>评估是否有定期的技能培训，职业发展的机会，以及员工的满意度和忠诚度。</td>
</tr>
<tr>
<td>人才留任机制</td>
<td>评估员工的满意度，留任率，以及离职原因。</td>
</tr>
<tr>
<td>流程优化机制</td>
<td>评估工作流程是否清晰，是否有流程优化的机制，以及流程优化的结果。</td>
</tr>
<tr>
<td>风险管理机制</td>
<td>评估是否有风险预警系统，团队如何应对风险，以及风险管理的效果。</td>
</tr>
<tr>
<td>质量控制机制</td>
<td>评估是否有质量标准，质量控制的结果，以及质量改进的机制。</td>
</tr>
</tbody>
</table>
</section>
<p style="color: #000000;" data-tool="mdnice编辑器">使用此评估表时，可以为每个项目打分，比如在 1-5 的范围内，其中 1 表示不满意，5 表示非常满意。然后对所有分数进行总结，得出总体评估结果。也可以将这些分数与其他团队或行业标准进行比较，以获得更深入的洞察。</p>
<h1 style="color: #000000;" data-tool="mdnice编辑器"><span style="color: #0e88eb;">后记</span></h1>
<p style="color: #000000;" data-tool="mdnice编辑器"><strong style="color: #0e88eb;">花老师说：你是爱自己还是爱团队？</strong></p>
<p style="color: #000000;" data-tool="mdnice编辑器"><strong style="color: #0e88eb;">一言以蔽之：搭班子、定战略、带队伍。</strong></p>
]]></content:encoded>
			<wfw:commentRss>https://www.phppan.com/2023/12/effective-team-management/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
