zoukankan      html  css  js  c++  java
  • 《架构即未来》阅读笔记03

    过程是可扩展的关键

    过程的目的

    根据维基百科,业务过程的定义是,“为特定的客户产生特定的服务或与产品相关的结构化活动或任务的集合。”这些过程可以是直接为客户提供产品或者服务,如制造,或者是支持性的过程,如会计。软件工程研究所把过程定义为整合了组织里的人、方法和工具三个关键维度。根据软件工程研究所发布的能力成熟度模型研发1.2版,过程帮你解决可扩展性问题,并提供如何吸收知识把事情做得更好的方法。过程让团队可以迅速应对危机、查明故障的根源、确定系统的容量、分析扩展的需求、实施扩展的项目、解决可扩展系统和组织的许多基本问题。如果希望系统随着组织的增长而不断扩展,那么这些活动是至关重要的。例如,当系统服务中断时,如果你依赖随机的现场响应来恢复服务,那宕机时间将不可避免地延长。相反,如果有一套明确的步骤指导团队来响应、沟通、调试和恢复服务,宕机时间将相对较短。

    正确的时间和正确的过程

    组织是由不同的经验、背景和关系的人组成的。正如没有两个人完全相同,也没有两个组织是完全相同的。组织处于一种不断变化的状态。正如时间改变人,时间也改变一个组织。一个组织可以从过去的错误中学习如何避免重蹈覆辙,或者学习如何重复过去的成功。组织的成员可能增加他们在某些特定领域的技能,并改善他们与组织以外的关系。有些人加入组织,也有些人离开组织。

    如果所有的组织都是不同的而且处于一种不停变化的状态,这对组织的过程意味着什么?必须首先对这些过程进行评估,以确定其严谨性、可重复性及其与组织的匹配度。小型组织可能需要较少的过程,因为团队成员之间的沟通比较容易。然而,随着组织的发展,过程需要更多的步骤和更高的严谨性,以确保高度的可重复性。例如,当公司初创时,员工只有你和另一个工程师,使用产品和服务的客户也很少,危机处理的过程很简单,就是半夜起床重启服务器。因为可能没有客户会在半夜使用服务,所以如果错过了警报,可以在天亮时重启。当团队由50名工程师组成,公司有成千上万客户,如果采用相同的过程,必然会导致客户的焦虑和收入的损失。在这种情况下,就需要定义过程,给出过程的每个必要的步骤。当重大事件发生时,可以不断重复使用这个过程。

    什么时间实施过程

    如果一项共同的任务由团队中的几个人分别执行,结果迥异,则是过程需要改进的另外一个迹象。也许一个工程师把错误修复的代码检入到主干,而另一个则检入到维护分支。其他工程师可能根本就不把代码检入到源代码库,而是留在自己的机器上。这种方法上的差异必然意味着结果的差异。在这种情况下,研发过程可以帮助我们规范代码控制的方法。度量和改进预期的结果。

    员工由于琐碎任务而负担过重,是第三个需要提高过程严谨性的迹象。这些事情会分散员工的注意力、影响时间、精力和创造力。这些问题的早期迹象可能包括越来越多的工程师抱怨他们的时间花在什么地方。如果技术人员觉得工作中有障碍,或有更好的方法去完成某项任务,他们通常不会保持安静。

    过程的复杂度

    过程的复杂度不是一蹴而就的事情,而是需要不断地调整确定当下过程的复杂度。

    可以选择使用一个方法或者采用混合方法直到找到最佳的过程。在混合方法中,让团队决定这个过程,但随后你可以稍微下调一级,以确保过程可以被迅速地采用。如果团队成员觉得他们需要一个非常严格的代码分支管理过程,可以建议他们在最初的时候放松一点,允许在命名约定和分支管理时间要求上有一定的灵活性,直到每个人都熟悉了这个过程为止。过程完全建立后,经过一两个迭代,你可以修改这个过程,纳入原先的命名约定和时间控制建议。

  • 相关阅读:
    测试用例怎么写
    002-利润计算
    001-无重复数字组合
    ftp上传与gui button的练习
    文件操作
    py2exe制作python可执行.exe的setup.py
    猜数字大小的游戏
    GUI简单例子学习
    新的旅程
    回车键搜索兼容性问题
  • 原文地址:https://www.cnblogs.com/baimafeima/p/13097244.html
Copyright © 2011-2022 走看看