软件工程:帕金森定律

image

在软件开发中,你是否遇到过这种情况:

团队要开发一个简单的购物车应用,项目预期时间是2周工期。负责开发的工程师默认利用完整的2周时间来完成任务。在第一周,工程师会认为任务很轻松,有充足的时间来完成任务,所以会采取气定神闲的节奏。然而,在第二周,却发现了重要的设计缺陷,工程师需要更多的时间来修复问题。为了保证deadline,只能采取加班等方式来弥补。

上面这个小案例,就是一个典型的帕金森定律在软件开发中的发挥作用的场景。

在软件工程中,工程师团队应该避免过度依赖可用的时间,要合理的分解任务,监控进度,切及时的解决问题。

什么是帕金森定律

帕金森定律是指在软件开发中的一种现象,它描述了一个项目的时间表通常会根据可用的时间而扩展,而不是根据实际的需求而定。

换句简单的话说:就是项目中的工作,最终会填满为完成它而分配的所有时间。

这个定律的名称来源于帕金森病,因为它的创始人认为,这个定律在疾病中也是普遍存在的。

在软件开发中,帕金森定律通常表现为:当一个任务被分配给一个开发者时,他们倾向于填满他们所分配的时间,即使这个任务在更短的时间内也能完成。而这种情况,往往可能最终会导致项目的延迟和超预算。

而为了避免帕金森定律的影响,开发者和项目管理人员需要始终关注实际需求,并且对任务分配和时间管理进行谨慎的规划。在开发过程中,也需要不断地检查和评估进度,并对进度偏差进行及时的调整。

对软件工程的4个提示

帕金森定律,在我们的日常的软件工程中,可以带来以下的4个有效的启发提示:

  • 时间估计需要谨慎:帕金森定律表明,开发者倾向于根据可用时间来填充任务,而不是根据任务的实际需求。因此,在软件工程中,时间估计需要谨慎,需要考虑到任务的实际需求和可用时间。
  • 紧急情况需要处理:由于帕金森定律的存在,项目的时间表通常会因为可用时间而扩展,这可能导致项目超时。因此,当出现紧急情况时,项目管理人员需要及时采取措施,以确保项目能够按时完成。
  • 管理者需要持续监控:为了避免帕金森定律的影响,项目管理人员需要持续监控开发进度,并进行调整。这需要使用适当的项目管理工具和技术,以确保项目能够按时完成。
  • 任务需要做细化分解:帕金森定律表明,开发者倾向于根据可用时间来填充任务,而不是根据任务的实际需求。因此,在软件工程中,任务需要进行适当的分解,以确保任务的实际需求得到满足,同时也能够充分利用可用时间。

在软件工程中,要保质保量的按时完成预期目标,就需要对任务分配、时间管理和项目进度进行谨慎的规划和管理,团队要始终有前紧后松的意识。

工程中常见的5个误区

在我们日常的软件开发中,基于帕金森定律的习惯的误区,工程师很容易采取一些不合适的做法,会导致工程无法按时交付或者质量的低下。

以下是软件工程中比较常见的5个误区:

  • 着眼于可用时间而非任务需求:开发人员只关注可用时间,而忽略了任务的实际需求。这会导致开发的功能不符合实际需求,从而浪费了时间和资源。

  • 忽略紧急情况:开发人员在发现紧急情况时,选择忽略或者不及时处理。这可能最终导致项目超时或者直接走向失败。

  • 缺乏监控和调整:开发人员缺乏对项目进度的监控和调整,无法及时发现和解决问题。这会导致项目超时或者失败。

  • 任务分解不合理:开发人员任务分解不合理,任务过于复杂或者过于简单,导致无法充分利用可用时间,或者无法满足实际需求。

  • 理解上有巨大的偏差:开发人员对任务的实际需求存在理解上有巨大的偏差,导致任务的完成时间超出预期或者功能不符合实际需求。

在软件工程中,开发团队要有效的理解帕金森定律的意义,采取有针对性的关键策略,避免让项目陷入被动的局面,造成不能及时和高质量交付的情况。

写在最后

在软件工程中,帕金森定律是一个比较常见的现象,容易让开发人员忽略任务需求,而过度关注可用时间。

这会导致项目失败或交付系统质量低下,因此,工程师们需要认识到这个问题的存在,并采取适当的措施来避免出现此类误区。

工程师应该要充分理解任务需求,并根据需求合理分解任务,监控进度,及时解决问题。同时,工程师应该避免过分依赖可用时间,采取高效的时间管理方法,避免加班等低效的做法。

通过认识帕金森定律,并采取有效的措施,工程师门可以更好地管理自己的时间和任务,提高项目交付的成功率和质量。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/63752.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SPM(Swift Package Manager)开发及常见事项

SPM怎么使用的不再赘述,其优点是Cocoapods这样的远古产物难以望其项背的,而且最重要的是可二进制化、对xcproj项目无侵入,除了网络之外简直就是为团队开发的项目库依赖最好的管理工具,是时候抛弃繁杂低下的cocoapods了。 一&…

Camunda 7.x 系列【2】开源工作流引擎框架

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 2.7.9 本系列Camunda 版本 7.19.0 源码地址:https://gitee.com/pearl-organization/camunda-study-demo 文章目录 1. 前言2. 开源工作流引擎框架2.1 jBPM2.2 Activ…

Python识别抖音Tiktok、巨量引擎滑块验证码识别

由于最近比较忙,所以本周搞了一个相对简单的验证码,就是抖音Tiktok的滑块验证码,这也是接到客户的一个需求。这种验证码通常在电脑端登录抖音、巨量引擎的的时候出现。 首先看一下最终的效果: 验证码识别过程 1、利用爬虫采集图…

jenkins的cicd操作

cicd概念 持续集成( Continuous Integration) 持续频繁的(每天多次)将本地代码“集成”到主干分支,并保证主干分支可用 持续交付(Continuous Delivery) 是持续集成的下一步,持续…

【ArcGIS Pro二次开发】(57):地图系列

在ArcGIS Pro中,有一个地图系列,可以在一个布局中导出多个地图。 在SDK中为ArcGIS.Desktop.layout.MapSeries类和映射系列导出选项,可以以支持多页导出。 MapSeries类提供了一个静态CreateSpatialMapSeries方法,该方法使用指定的…

【0807作业】使用消息队列实现AB进程对话+使用共享内存实现A进程打印字符串,B进程逆置字符串,打印结果为【正序 逆序 正序 逆序】

作业一:使用消息队列实现AB进程对话 ① 打开两个终端,要求实现AB进程对话 A进程先发送一句话给B进程,B进程接收后打印B进程再回复一句话给A进程,A进程接收后打印重复1.2步骤,当收到quit后,要结束AB进程 ② …

K8s中的PV和PVC和监控

1.PV和PVC PV:持久化存储,对存储资源进行抽象,对外提供可以调用的地方(类似:生产者) PVC:用于调用,不需要关心内部实现细节(类似:消费者) 2.实…

ChatGPT 作为 Python 编程助手

推荐:使用 NSDT场景编辑器 助你快速搭建可编辑的3D应用场景 简单的数据处理脚本 我认为一个好的起点是某种数据处理脚本。由于我打算让 ChatGPT 之后使用各种 Python 库编写一些机器学习脚本,这似乎是一个合理的起点。 目标 首先,我想尝试…

8.7一日总结

后台管理项目(使用vue3) 1.创建项目 npm init vuelatest 2.进入项目,下载依赖 3.下载需要的项目依赖 下载重置样式表 npm install reset-css 在main.js中阴入 import reset-css 4.清理目录 将项目中不需要的内容删除 5.运行项目 npm run dev 6.将仓库推送…

Unity Shader编辑器工具类ShaderUtil 常用函数和用法

Unity Shader编辑器工具类ShaderUtil 常用函数和用法 Unity的Shader编辑器工具类ShaderUtil提供了一系列函数,用于编译、导入和管理着色器。本文将介绍ShaderUtil类中的常用函数和用法。 编译和导入函数 CompileShader 函数签名:public static bool C…

一百四十三、Linux——Linux的CentOS 7系统语言由中文改成英文

一、目的 之前安装CentOS 7系统的时候把语言设置成中文,结果Linux文件夹命名出现中文乱码的问题,于是决定把Linux系统语言由中文改成英文 二、实施步骤 (一)到etc目录下,找到配置文件locale.conf # cd /etc/ # ls…

Vue3 第三节 计算属性,监视属性,生命周期

1.computed计算属性 2.watch监视函数 3.watchEffect函数 4.Vue的生命周期函数 一.computed计算属性 计算属性简写和完整写法 <template><h1>一个人的信息</h1>姓&#xff1a;<input type"text" v-model"person.firstName" />…

100G光模块的应用案例分析:电信、云计算和大数据领域

100G光模块是一种高速光模块&#xff0c;由于其高速率和低延迟的特性&#xff0c;在电信、云计算和大数据领域得到了广泛的应用。在本文中&#xff0c;我们将深入探讨100G光模块在这三个领域的应用案例。 一、电信领域 在电信领域&#xff0c;100G光模块被广泛用于构建高速通…

什么是应用的贴身防护盾?来看F5洞察风险

从云原生的发展来看&#xff0c;由于云原生技术的革新以及现代应用随之进化&#xff0c;可以清晰地看到云原生吞噬一切的势头&#xff0c;但是云原生也面临着众多挑战。2022 年很多公开调查报告显示&#xff0c;在云原生发展中&#xff0c;CEO/CIO 最关注的就是云原生安全&…

FFmpeg将编码后数据保存成mp4

以下测试代码实现的功能是&#xff1a;持续从内存块中获取原始数据&#xff0c;然后依次进行解码、编码、最后保存成mp4视频文件。 可保存成单个视频文件&#xff0c;也可指定每个视频文件的总帧数&#xff0c;保存多个视频文件。 为了便于查看和修改&#xff0c;这里将可独立的…

SpringBoot整合Sfl4j+logback的实践

一、概述 对于一个web项目来说&#xff0c;日志框架是必不可少的&#xff0c;日志的记录可以帮助我们在开发以及维护过程中快速的定位错误。slf4j,log4j,logback,JDK Logging等这些日志框架都是我们常见的日志框架&#xff0c;本文主要介绍这些常见的日志框架关系和SpringBoot…

自然语言处理: 第六章Transformer- 现代大模型的基石

理论基础 Transformer&#xff08;来自2017年google发表的Attention Is All You Need (arxiv.org) &#xff09;&#xff0c;接上面一篇attention之后&#xff0c;transformer是基于自注意力基础上引申出来的结构&#xff0c;其主要解决了seq2seq的两个问题: 考虑了原序列和目…

拦截器对接口细粒度权限校验

文章目录 一、逻辑分析二、校验规则1.规则类型2.规则划分3.规则配置信息4.规则案例说明5.规则加载 三、拦截器定义1.自定义拦截器2.注册拦截器 四、获取请求参数1.获取get提交方式参数2.获取post提交方式参数&#xff08;1&#xff09;定义RequestWrapper类&#xff08;2&#…

【知网检索】2023年金融,贸易和商业管理国际学术会议(FTBM2023)

随着经济全球化&#xff0c;贸易自由化的进程加快&#xff0c;我国经济对外开放程度不断加深&#xff0c;正在加快融入世界经济一体化当中。当今世界各国竞争过程中&#xff0c;金融、贸易以及商业形态已成为其关键与焦点竞争内容。 2023年金融、贸易和商业管理国际学术会议(F…

科技云报道:向量数据库:AI时代的下一个热点

科技云报道原创。 最近&#xff0c;又一个概念火了——向量数据库。 随着大模型带来的应用需求提升&#xff0c;4月以来多家海外知名向量数据库创业企业传出融资喜讯。 4月28日&#xff0c;向量数据库平台Pinecone宣布获得1亿美元&#xff08;约7亿元&#xff09;B轮融资&am…