你的每行代码值多少钱?

简介:

我知道,“line of code”(LoC)是一种非常愚蠢的计量方式。不要急着喷我,请大家先听我讲讲我最近参与的两个项目,看一下一些非常有意思的数字。

项目#1:传统的同地协作

第一个项目是由一组程序员通过传统的同地协作来执行的。人数为20(不包括项目经理、分析人员、产品负责人、SCRUM大师等等)。该项目是一个大流量的网络拍卖网站(每天有超过200万的页面访问量)。

代码库的大小约为20万行,其中15万是PHP,3万5是JavaScript,其余则是CSS、XML以及Ruby等。这20万行只包括使用cloc.pl的非空和非注释行代码.

这是一个商业项目,所以具体名字我不便透露。

screenshot

大家在欧洲的同一个办公室里,每个人都“朝九晚五”地工作。我们可以一起开会、吃饭、面对面聊天以及通过其他多种非正式方式沟通。所有的任务都使用了JIRA跟踪。

项目#2:分布式

第二个项目是一个开源的Java产品,通过一个约15人的分布式团队开发。我们没有任何的交流也不做任何非正式的沟通。我们都是在Github上讨论问题。代码库明显要小很多只有大约3万行,其中约90%Java,其余则是XML。

screenshot

成熟的开发

这两个项目都是托管在Github上的代码库。

两个团队都使用了自动化构建、持续集成、静态分析和代码审查。这表明这两支项目团队都已经比较成熟。

这两个项目都满足了用户的需求。我提这一点是想强调,这两个项目的代码,都是有价值的。没有废物,也几乎没有重复的代码。

看看项目回报

在这两个项目中,我的角色是首席架构师。除此之外,我还有权限访问两者的Git代码库。所以我可以知道在某段时间内,比如说三个月时间里,代码库中新添加(或者改动)了多少行代码。

现在,让我们来看看这些数字。

第一个项目一个优秀的开发人员每年可以拿到大约50,000欧元,也就是约5600美元每月或35美元每小时。第二个项目则只需要对于已完成的任务支付20-35美元每小时。

第一个项目,在三个月内,写了59000行新的代码,并在改变主分支时删除了29000行,那么总计就是88000行代码。此过程历时约10000个工时(20程序员,三个月,每月170个小时)——相当于约35000美元。因此,每行代码的价格为

3.98美元

第二个项目,在同样三个月时间里,新代码产生了45000行,删除了9000行,也就是54000行。为了完成这项工作,根据XDSD原则,我们只花了7000美元(约用了350个工时完成了650个任务)。因此,该项目一行代码的成本仅仅是:

13美分

$35000 VS$7000,3.98美元VS0.13美元,你有何感想呢?

结论

我将这些数据公诸于众是为了告诉大家,分布式编程比传统的同地协作团队更为高效,也更节约资金。你看,0.13美元与3.98美元,相差30倍呢!

怎么做?

当然,你说你为了达到分布式合作的目的,决定让你的程序员在家工作而不必来办公室的话,那我就该笑你只会硬搬硬套了。可以实行XDSD这个严格的质量原则,整个团队都应该遵守的原则。

如果这些原则都能应用到位的话——那么你所需要付出的资金将会减少30倍。

顺便透露给大家以下这些项目的成本:

$12-103:crazyontap.com

$15-40:betterembsw.blogspot.nl

超过$5:joelonsoftware.com

如果大家有不同意见,欢迎指教。

文章转载自 开源中国社区 [http://www.oschina.net]

相关文章
|
3月前
|
存储 安全 前端开发
利用正则表达式取出“积分:9.0/余额:103.25”里面的数字
利用正则表达式取出“积分:9.0/余额:103.25”里面的数字
17 0
|
6月前
|
算法
代码随想录Day21 回溯 LeetCodeT216 组合总和III LeetCode T17电话号码的字母总和
代码随想录Day21 回溯 LeetCodeT216 组合总和III LeetCode T17电话号码的字母总和
31 0
|
9月前
学C的第十三天【应用多文件的形式实现 三子棋 程序(重点);练习:1. 打印9*9乘法口诀表、2. 求10个整数中的最大值、3. 分数加减交叉计算、4. 数一下 1到 100 的整数中出现了多少个9】
9.数组的应用实例1:三子棋(综合以前学习的知识) 三子棋的实现:(重点都在注释中) 1. 游戏不退出,继续玩下一把(循环) 2. 应用多文件的形式写代码
|
10月前
|
算法 程序员
【LeetCode——编程能力入门第一天】基本数据类型[在区间范围内统计奇数数目/去掉最低工资和最高工资后的工资平均值)
给你两个非负整数 low 和 high 。请你返回 low 和 high 之间(包括二者)奇数的数目。 示例 1: 输入:low = 3, high = 7 输出:3 解释:3 到 7 之间奇数数字为 [3,5,7] 。 示例 2: 输入:low = 8, high = 10 输出:1 解释:8 到 10 之间奇数数字为 [9] 。 提示: 0 <= low <= high <= 10^9。
76 0
|
10月前
打印流水号文字(递增、递减)
标签文件的批量打印,常以流水号(序列号)文字来区分标签,以实现标签的唯一性。最简单的“递增”流水号样式如:0001、0002、0003、0004...
65 0
|
C语言 C++
C语言经典实例:1-10例:三角求和、显示所占字节数、自增自减运算while语句输出最小值、计算快递费用、学生成绩统计
C语言经典实例:1-10例:三角求和、显示所占字节数、自增自减运算while语句输出最小值、计算快递费用、学生成绩统计
C语言经典实例:1-10例:三角求和、显示所占字节数、自增自减运算while语句输出最小值、计算快递费用、学生成绩统计
|
测试技术
PAT乙级1006.换个格式输出整数(15分)
PAT乙级1006.换个格式输出整数(15分)
54 0