你的每行代码值多少钱?

简介:


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

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

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

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

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

Brazil (1985) by Terry Gilliam

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

项目#2:分布式

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

Shaolin Temple (1982) by Chang Hsin Yen

成熟的开发

这两个项目都是托管在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

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


作者:程序人生

来源:51CTO

相关文章
|
6月前
数列中,第一项为3,后一项都比前一项的值增5。下列给定程序中,函数fun的功 能是:计算前n(4≤n≤50)项的累计和。在累加过程中把那些被4除后余2的当前累 加值放入数组中
数列中,第一项为3,后一项都比前一项的值增5。下列给定程序中,函数fun的功 能是:计算前n(4≤n≤50)项的累计和。在累加过程中把那些被4除后余2的当前累 加值放入数组中
|
9月前
学C的第十三天【应用多文件的形式实现 三子棋 程序(重点);练习:1. 打印9*9乘法口诀表、2. 求10个整数中的最大值、3. 分数加减交叉计算、4. 数一下 1到 100 的整数中出现了多少个9】
9.数组的应用实例1:三子棋(综合以前学习的知识) 三子棋的实现:(重点都在注释中) 1. 游戏不退出,继续玩下一把(循环) 2. 应用多文件的形式写代码
|
10月前
|
测试技术
【解决方案 二十三】带单位的数值转大写人民币金额
【解决方案 二十三】带单位的数值转大写人民币金额
77 0
|
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
|
C语言 C++
C语言经典实例:1-10例:三角求和、显示所占字节数、自增自减运算while语句输出最小值、计算快递费用、学生成绩统计
C语言经典实例:1-10例:三角求和、显示所占字节数、自增自减运算while语句输出最小值、计算快递费用、学生成绩统计
C语言经典实例:1-10例:三角求和、显示所占字节数、自增自减运算while语句输出最小值、计算快递费用、学生成绩统计
有一个长度是10的数组,数组内有10个人名,要求去掉重复的人名,并输出
有一个长度是10的数组,数组内有10个人名,要求去掉重复的人名,并输出
232 0
|
测试技术
PAT乙级1006.换个格式输出整数(15分)
PAT乙级1006.换个格式输出整数(15分)
54 0
|
算法
改错题:用户从键盘任意输入一个数字表示月份值n,程序显示该月份对应的英文表示,若n不在1~12之间,则输出“Illegal month”。 注意: (1)请将修改正确后的完整源程序拷贝粘贴到答题区内。
改错题:用户从键盘任意输入一个数字表示月份值n,程序显示该月份对应的英文表示,若n不在1~12之间,则输出“Illegal month”。 注意: (1)请将修改正确后的完整源程序拷贝粘贴到答题区内。
256 0
输入7个整数(0-100),代表7个整数,用空格隔开.小数点后保留两位小数,每行输入后换行.去掉一个最高分一个最低分,输出每组的平均分.用一个循环完成(7个面试官问题)
输入7个整数(0-100),代表7个整数,用空格隔开.小数点后保留两位小数,每行输入后换行.去掉一个最高分一个最低分,输出每组的平均分.用一个循环完成(7个面试官问题)
122 0
输入7个整数(0-100),代表7个整数,用空格隔开.小数点后保留两位小数,每行输入后换行.去掉一个最高分一个最低分,输出每组的平均分.用一个循环完成(7个面试官问题)