您现在的位置是:首页 > 正文

研发工作中感受颇深的一些著名定律

2024-04-01 02:52:20阅读 2

       在书中,我们经常能够看到这样那样的法则、定律。然而真正经历过这些事,回过头来进行深度思考的时候,才越来越觉的这些定律、法则的道理之处。下边简述了一些自己感悟比较深刻的定律,当然还有很多,不断学习,不断经历,不断感悟,不断成长吧。


一,在系统设计时,应该多思考“墨菲定律”:

1,任何事都没有表面看起来那么简单;

2,所有的事都会比你预计的时间长;

3,可能出错的事总会出错;

4,如果你担心某种情况发生,那么他就更有可能发生。

 

二,在系统划分时,也要思考“康威定律”:

1,系统架构是公司组织架构的反映;

2,应该按照业务闭环进行系统拆分/组织机构划分,实现闭环/高内聚/低耦合,减少沟通成本。

3,如果沟通出现问题,那么就应该考虑进行系统和组织架构的调整;

4,在合适时机进行系统拆分,不要一开始就把系统/服务拆分得非常细,虽然闭环,但是每个人维护的系统多,维护成本高。

 

三,在工期估算时考虑“霍夫斯塔特定律”:

实际花费的时间总是比预期的要长,即便你考虑到了本条定律。

 

四,在功能设计时考虑“伯斯塔尔定律”:

又称健壮性法则:发送是要保守,接收时要大方。

类似于一个社交原则“对自己严格,对他人宽容”。

发送是保守:告诉我们编写代码尽可能符合规范标准,让别人很容易接收、解析、理解……

接收时大方:告诉我们编写代码尽可能兼容更多的版本、更多的可能性……

 

五,在变动项目安排时,考虑一下“布鲁克法则”:

追加人员到延迟的项目更会影响项目的进度。

新员工的引入往往会带来的问题:

1,新员工不可能马上投入项目,他们需要经历一些培训。

2,需要在原本的员工中挑选几人脱离生产,用于对新员工进行培训

3,团队内部的沟通将会消耗更多的时间

4,团队的管理将会更加困难

5,新员工对于工作的不熟悉极有可能拖累项目进度

6,更多人参与设计导致概念的一致性遭到破坏,将会导致项目的缺陷增多

7,由于工作的先后顺序问题,所有的员工不一定能投入工作,“十个孕妇不可能在一个月内产下孩子”

更建议采取的方式(视情况而定):

1,向项目中追加时间,但这带来的二次商业成本将会非常高昂

2,带着问题发布新版本

3,减小目标,发布更精简的版本,并增添更多的后续版本计划

 

六,在分析问题时考虑“帕累托法则”,又称80/20法则:

1,对于许多现象来说,80%的后果都是 20%的原因造成;

2,在软件开发中,代码中80%的错误是由20%的代码造成;

3,还有,公司80%的工作是由20%的员工完成的。问题是你并不总是清楚谁是那20%。

 

七,在控制代码质量时,多考虑“林纳斯定律”:

足够多的眼睛,就可让所有问题浮现”(given enough eyeballs, all bugs are shallow)。

换句话说:只要有足够的测试人员及共同开发者,所有问题都会在很短时间内发现,而且能够很容易被解决。


       当然,还有很多,多积累,多思考,善于站在巨人简单上……

网站文章

  • 2012-01-31 学习笔记

    1.   Comprehend V$PROCESS VIEW2.   Comprehend PSEUDO PROCESS3.   Comprehend Database Process and how to related Operation System Process4.   Comprehend V$SESSION and V$PROCESS of relation5

    2024-04-01 02:52:13
  • 二叉树从根节点到r所指节点之间的路径并输出算法【C/C++】

    二叉树从根节点到r所指节点之间的路径并输出算法【C/C++】

    二叉树从根节点到r所指节点之间的路径并输出算法

    2024-04-01 02:51:31
  • 安卓相关测试

    安卓相关测试

    环境准备:网易Mumu安卓模拟器,里面还有adb方便调试: http://mumu.163.com/baidu/adb: brew cask install android-platform-tools动态调试adb连接,mac下网易mumu端口是5555,windows下是7555windows下:adb connect 127.0.0.1:7555adb shell...

    2024-04-01 02:51:24
  • SGI STL学习笔记(2):traits编程技法

    traits编程技法

    2024-04-01 02:51:17
  • 深度学习入门

    深度学习入门

    ---恢复内容开始---Softmax函数,或称归一化指数函数是逻辑函数的一种推广。它能将一个含任意实数的K维向量“压缩”到另一个K维实向量中,使得每一个元素的范围都在之间,并且所有元素的和为1。该函数的形式通常按下面的式子给出: forj= 1, …,K.wiki的资料看完了,就感觉softmax的作用只有归一化。cross-entropy loss...

    2024-04-01 02:51:11
  • Java跨域请求代码

    1、get请求的方式get请求中,如果拼接的参数字符串中带有空格,后台会报错无法请求成功,适用于通过属性值查询对象接口。import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.HttpURLConnection;import j...

    2024-04-01 02:50:29
  • 如何在一个页面中动态放置多个Droppable来接受不同的Draggable?(accept参数的用法)...

    如何在一个页面中动态放置多个Droppable来接受不同的Draggable?(accept参数的用法)...

    工作中遇到这个问题,问别人解决了。答案在问题的下半部分,仅供参考。http://stackoverflow.com/questions/6501812/how-to-use-danymic-accept-value-in-jqueryui-droppable 点击下载免费的敏捷开发教材:《火星人敏捷开发手册》转载于:https://www.cnblogs.com/JPAORM/...

    2024-04-01 02:50:24
  • 一种有趣的弱监督机器学习问题:比例标签学习(Learning from label proportions)

    一种有趣的弱监督机器学习问题:比例标签学习(Learning from label proportions)

    欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法...

    2024-04-01 02:50:16
  • sublime某些插件出现'Node.js was not find ...' 的解决方法

    丫路径中又中文吧。。step1: find "HTMLPrettify.py" and make a backup, it should be here ~/Library/Application\ Support/Sublime\ Text\ 2/Packages/HTML-CSS-JS\ Prettify/HTMLPrettify.pystep2: line 83, rep

    2024-04-01 02:49:35
  • Java程序员如何通过跳槽薪资翻倍?java开发项目经验描述

    Java程序员如何通过跳槽薪资翻倍?java开发项目经验描述

    一、面试官考点之索引是什么?索引是一种能提高数据库查询效率的数据结构。它可以比作一本字典的目录,可以帮你快速找到对应的记录。索引一般存储在磁盘的文件中,它是占用物理空间的。正所谓水能载舟,也能覆舟。适...

    2024-04-01 02:49:26