zoukankan      html  css  js  c++  java
  • 面试连环炮系列(十八):了解康威定律吗

    1. 了解康威定律吗

      • 定律一:组织沟通方式会通过系统设计表达出来,就是说架构的布局和组织结构会有相似。
      • 定律二:时间再多一件事情也不可能做的完美,但总有时间做完一件事情。一口气吃不成胖子,先搞定能搞定的。
      • 定律三:线型系统和线型组织架构间有潜在的异质同态特性。种瓜得瓜,做独立自治的子系统减少沟通成本。
      • 定律四:大的系统组织总是比小系统更倾向于分解。合久必分,分而治之。
    2. 你认知的比较深刻是哪一条?
      定律二和定律四比较深刻。

      • 开发中也经常碰到,产品经理的需求太复杂了?适当忽略一些细节,先抓主线。产品经理的需求太多了?放弃一些功能。
      • 目前火热的微服务就符合这个定律,将大型系统拆分,更利于开发和管理。
    3. 这几个定律如何解释微服务的合理性

      • 人与人的沟通是非常复杂的,一个人的沟通精力是有限的,所以当问题太复杂需要很多人解决的时候,我们需要做拆分组织来达成对沟通效率的管理。
      • 组织内人与人的沟通方式决定了他们参与的系统设计,管理者可以通过不同的拆分方式带来不同的团队间沟通方式,从而影响系统设计。
      • 如果子系统是内聚的,和外部的沟通边界是明确的,能降低沟通成本,对应的设计也会更合理高效。
      • 复杂的系统需要通过容错弹性的方式持续优化,不要指望一个大而全的设计或架构,好的架构和设计都是慢慢迭代出来的。
    4. 依据这个定律,让你去管理一个团队,你会怎么做

      • 我们要用一切手段提升沟通效率,比如github,wiki。能2个人讲清楚的事情,就不要拉更多人,每个人每个系统都有明确的分工,出了问题知道马上找谁,避免踢皮球的问题。
      • 通过MVP的方式来设计系统,通过不断的迭代来验证优化,系统应该是弹性设计的。
      • 你想要什么样的系统设计,就架构什么样的团队,能扁平化就扁平化。最好按业务来划分团队,这样能让团队自然的自治内聚,明确的业务边界会减少和外部的沟通成本,每个小团队都对自己的模块的整个生命周期负责,没有边界不清,没有无效的扯皮。

    参考文章(摘抄的文字版权属于原作者):

    https://yq.aliyun.com/articles/8611

  • 相关阅读:
    Linux中带颜色输出的printf使用简介(33)
    Windows中检测当前是否有窗口全屏
    duilib WindowImplBase BUG修复 --- 按一次ESC键, 关闭多个窗口
    【转】OSI七层模型与TCP/IP五层模型
    linux修改文件所有者和文件所在组
    【转】开发人员该如何应对线上故障
    【转】jstack命令的使用
    【转】【JVM】jmap命令详解----查看JVM内存使用详情
    【转】【JVM】jstat命令详解---JVM的统计监测工具
    阿里开源java诊断工具Arthas
  • 原文地址:https://www.cnblogs.com/xiaoyangjia/p/11676587.html
Copyright © 2011-2022 走看看