热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

开发者应该负责多少代码?

当我在越来越多的组织中工作之后,我编译时候遇到的有趣问题也越来越多。严格来说,我也有了很多待办事宜。而此处的有趣并不是讽刺。这种有趣就像是你听见一个醉汉夸夸其谈他的政治观点,然后回答说

当我在越来越多的组织中工作之后,我编译时候遇到的有趣问题也越来越多。严格来说, 我也有了很多待办事宜。而此处的有趣并不是讽刺。这种有趣就像是你听见一个醉汉夸夸其谈他的政治观点,然后回答说“哦,那……很有趣”。

把这些问题放在哲学层面上真的让我很感兴趣。它们让我想去了解我从来没有想过的事情。今天我从众多问题中选出一个,然后搞清楚。这个问题是一个客户在不久之前问过我的:“开发者应该对多少代码负责呢?”

为什么要问这个呢? 好吧。是因为他们有一个值得称赞的目标。 他们有一个相当庞大的遗留代码库,并且不想那些在其上工作的人负担过重。 “我们知道我们的代码库有X行代码,所以多少开发人员可以组成一个完美的开发团队?

他们以数据驱动的方式问了一个很好的问题。然而,由于缺乏更仔细的检查,所有理由都不成立。 我今天会说出为什么会如此。下面是一些关于这个想法的问题列表。

集体代码所有权

首先,此处不谈针对集体代码所有权的异议。历史上,应用程序开发的经理出于特殊的目的往往将软件工作和体力劳动做对比。

有一堆需要挖的洞? 分配给每个团队成员一些挖洞的任务。有一堆需要编写的代码? 分配给每个团队成员需要编写的代码段。

当你意识到代码与挖洞是不同的,代码块不是商品的时候,你就要准备好应对麻烦事了。也就是说,你不能拿它们做互换交易。所以当你对代码进行了划分,刚好碰上编写 X 模块的人请了两个星期假,那你只是能把任务搁置,直到那个人回来。

个人代码所有权也会带来其他问题,但往往是对业务影响最大的。有人称之为“公共要素”。但是无论你叫它什么,当你开始谈论团队成员对现有代码的“负责”时,你应该鼓励此类行为。 因团队本应该对代码库负责。 仅此而已。

代码量意味着什么呢? 无所谓?

对于那些年纪比较大的.NET开发者来说, 你可能会把你的编程历史分为"BL"和"AL". 即"Linq前"和"Linq后"。

在 Linq 出现之前, 你写了大量的指令性的代码,,遍历嵌套循环直到找到你想要的对象。而Linq一经问世, 所有这些都变成了声明式的代码。但它不是通过一对一的智能海量映射做到的。它是将你的冗长的就像快要爆炸了的中子星一样的指令性代码,分割成一系列更小的部分。

通过这些,我们知道了代码量在不同的语言、开发者甚至语言的不同版本之间,都会有巨大的差异。因此,"How Much" 作为一个数值指标变得相当不稳定,以至于有很少的可度量的值.

从商业的观点看, 代码就像库存, 它提供了商业可能性, 但是它放在那儿,就是你的负债。你希望开发者用尽可能少的代码完成一个功能。而比较讽刺的是,有些开发者们更趋向于为每一个功能写尽可能多的代码,他们就应该为"最少代码"负全责。毕竟有时候, 多不一定更好。

代码的不确定性

我提出的第三个也是最后一个反对意见是关于代码不确定性的。这里,我指的是给定文件或代码段的更改频率。

要理解代码的不确定性会在哪产生分歧,请考虑两个极端。首先,考虑一个稳定的、被充分考虑的模块,它包含了一百万行代码。每隔3-4年,就会出现一些新的政府监管规定,需要对这里或那里进行一些细微的调整,但除此之外,它如产品链上的梦幻一般运行良好。

另一方面,考虑一个10,000行应用程序。但是这个应用程序有各种各样的运行时问题。这里,为了更说明问题,假定持股人在不断改变着他们对软件行为的想法,导致大量粗制滥造。

对于这两个代码库,您完全可能将100万行的代码库交予1个开发人员维护,而你需要一整个团队来为第二个代码库工作也是完全可能的。尽管后者的代码库的大小是前者的1%,这依旧是有理可据的。

我提供这个例子来说明一个重要的观点。光用代码的行数来作为维护的依据是欠妥的。因此,仅仅使用代码行数来评估维护计划会成为悲伤的故事。

根据代码库对团队进行评估

那么,你如何根据代码库来划分一个团队大小?如果不可行,那么开发人员应该负责多少代码,或者说“开发人员应该承担多少责任?”

我将给出一个既简单又难以衡量的方案:开发人员应该承担多大的责任?基于这点考虑,可以让代码变得更加规范。

在敏捷(Agile)开发的世界里,这一思路产生了故事地图(story mapping)和计划活动(planning activities)。将软件的目标划分为待办事项列表中的特性,然后让团队对这些特性进行分析处理。如果团队在业务上进展过慢,则表示你的团队需要壮大。如果人们无所事事,说明你的团队人员冗余。

在自顶向下计划/瀑布模型的世界中,会呈现出一种类似的动态现象,而你所能做的就只是算算会在什么时候先于计划完成(哈,就是这样)或是开始落后于计划。先于计划,那就是团队人数太多了,落后于计划,就是人数还不够。

诚然,你得通过计算和观察软件所实现的功能是否能跟上业务需求的演进步伐,才能估量出开发人员所要承担的责任范围。



推荐阅读
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • Google在I/O开发者大会详细介绍Android N系统的更新和安全性提升
    Google在2016年的I/O开发者大会上详细介绍了Android N系统的更新和安全性提升。Android N系统在安全方面支持无缝升级更新和修补漏洞,引入了基于文件的数据加密系统和移动版本的Chrome浏览器可以识别恶意网站等新的安全机制。在性能方面,Android N内置了先进的图形处理系统Vulkan,加入了JIT编译器以提高安装效率和减少应用程序的占用空间。此外,Android N还具有自动关闭长时间未使用的后台应用程序来释放系统资源的机制。 ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
  • macOS Big Sur全新设计大版本更新,10+个值得关注的新功能
    本文介绍了Apple发布的新一代操作系统macOS Big Sur,该系统采用全新的界面设计,包括图标、应用界面、程序坞和菜单栏等方面的变化。新系统还增加了通知中心、桌面小组件、强化的Safari浏览器以及隐私保护等多项功能。文章指出,macOS Big Sur的设计与iPadOS越来越接近,结合了去年iPadOS对鼠标的完善等功能。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • 3.223.28周学习总结中的贪心作业收获及困惑
    本文是对3.223.28周学习总结中的贪心作业进行总结,作者在解题过程中参考了他人的代码,但前提是要先理解题目并有解题思路。作者分享了自己在贪心作业中的收获,同时提到了一道让他困惑的题目,即input details部分引发的疑惑。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了StartingzookeeperFAILEDTOSTART相关的知识,希望对你有一定的参考价值。下载路径:https://ar ... [详细]
  • 本文介绍了在使用vue和webpack进行异步组件按需加载时可能出现的报错问题,并提供了解决方法。同时还解答了关于局部注册组件和v-if指令的相关问题。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 本文介绍了2020年计算机二级MSOffice的选择习题及答案,详细解析了操作系统的五大功能模块,包括处理器管理、作业管理、存储器管理、设备管理和文件管理。同时,还解答了算法的有穷性的含义。 ... [详细]
  • 企业数据应用挑战及元数据管理的重要性
    本文主要介绍了企业在日常经营管理过程中面临的数据应用挑战,包括数据找不到、数据读不懂、数据不可信等问题。针对这些挑战,通过元数据管理可以实现数据的可见、可懂、可用,帮助业务快速获取所需数据。文章提出了“灵魂”三问——元数据是什么、有什么用、又该怎么管,强调了元数据管理在企业数据治理中的基础和前提作用。 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • 在2022年,随着信息化时代的发展,手机市场上出现了越来越多的机型选择。如何挑选一部适合自己的手机成为了许多人的困扰。本文提供了一些配置及性价比较高的手机推荐,并总结了选择手机时需要考虑的因素,如性能、屏幕素质、拍照水平、充电续航、颜值质感等。不同人的需求不同,因此在预算范围内找到适合自己的手机才是最重要的。通过本文的指南和技巧,希望能够帮助读者节省选购手机的时间。 ... [详细]
author-avatar
咖喱2502894907
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有