`
aijuans
  • 浏览: 1547357 次
社区版块
存档分类
最新评论

你的代码值多少钱

 
阅读更多

老板雇佣程序员来写代码,程序员的薪水是成本,产生的有效代码是产品。或者说老板从程序员那里买代码。程序员每写一行代码究竟能赚多少钱?不妨来推导一下。

我们规定程序员书写、重构、改bug产生的变化行数都算做生产行(Line),把所有生产行分为三个等级:框架(structure)、功能(feature)、逻辑(logic);将程序员在单位时间内写的三类生产行分别设为LsLfLl;每种生产行的权值分别为WsWfWl。生产行失效率为P(0到1之间),失效的生产行指在老代码运行过若干次后被重构成了新的代码(在开发阶段快速迭代重构只计算最终的生产行不算失效)或者被验证有bug后改正的代码。则该程序员在单位时间内写的代码的价值为Vt = (Ls×WsLf×WfLl×Wl);有效代码价值Ve = Vt×(1P)。设该程序员单位时间内的薪水为S,进一步可以得到该程序员的性价比C = Ve / S

 

公式只有这些,接下来随便假设一些数值代入公式做下计算。设有两个程序员:a(高级)、b(初级),假定a月薪5000,日代码价值50,(按22工作日计算,下同)月代码价值Vt(a) = 50×22 = 1100,则a的性价比为C(a) = Vt(a)×(1P(a)) / S(a) = 1100×(1P(a)) / 5000。同理可得b的性价比C(b) = Vt(b)×(1P(b)) / S(b)。考虑理想情况,ab的代码失效率都为0P(a) = P(b) = 0,若要ab程序员的性价比相同则有C(a) = 1100 / 5000 = Vt(b) / S(b) = C(b);如果b的日有效代码价值25,月有效代码价值25×22 = 550,月薪2500,则刚好C(a) = C(b),公司的薪资结构是平衡的。下面说一些你们可能有的问题和一些引申想法。

 

“我看到一些公司拿钱多职位高的写的代码量很少,贡献代码最多的是一些新人,性价比怎么会平衡?”代码行数不直接代表代码价值,这也是三种代码权值W存在的意义,写框架性的代码靠深厚的功底。框架、功能、逻辑的权值是依次递减的即Ws > Wf > Wl。项目初期高级程序员基本全部精力都在写底层框架而几乎不写上层应用,往往是每天想4个小时写2个小时再花2个小时重构,项目中后期在框架实在无事可做时高级程序员又往往在写功能、逻辑时贡献的代码量又是最多的。每天框架代码的生产量可能是很低的但是含金量很高,是整个项目存活与维持的基础。

“高级与初级程序员的性价比真的很理想化的相等吗?”不。理想化的性价比比在实验室里创建高温超导体还困难重重。原因在于很多不确定和随机因素。任何程序员都不可能一辈子一直写出滴水不漏不需要返工的高质量代码。上面的计算已经是把代码失效率当成理想的0来算的了,如果高级程序员更了解代码中的陷阱与欺骗从而能更好的避开,那就能写出失效率更低的代码,也就是说出错率高的新人要写更多的代码才能像高级程序员一样划算。

“行业薪资标准该怎么算?”在求职、入职与人事部门谈论薪资待遇时他们都会说:按掌握的行业统计数据给你的薪资为XXXX。这句话表面意思我非常理解,即行业薪资标准的建立需要大量统计数据。但我不知道各个公司是怎么统计与处理数据的。我想这么算一下:需要统计两样数据,程序员有效代码价值Ve,薪资数目S,这两样数据计算得到的就是上面推导过的性价比C = Ve / S。当有大量数据时我们可以得到性价比的一个行业平均值Cavg(如需做其它分析还要得到最大值、最小值、方差等)。在对一个程序员笔试面试过后可对其生产有效代码价值的能力做个初步评估,在此基础上可以给出该程序员的薪水,如果老板开给公司里大多数程序员的薪水过低,性价比高于Cavg则可能发生频繁跳槽与被挖角现象;如果开的薪水很高性价比过低,那也许能笼络到大量人才,但是那老板真有钱,还很阔绰。想稳稳当当就构建和Cavg持平的性价比即可。

“那身为老板,我为什么不全都雇佣性价比最好的高级程序员?”不可能也没好处。从业人员不可能每个人都有很到位的技术火候。如果老板雇到的全是最顶尖的程序大师却又安排不好这些人员那沟通与管理成本就会上升很多。一个高级程序员带队几个沟通顺畅的人(不管高级还是初级)那么做起事来会很有效率,如果是几个固执的高级程序员聚在一起吵来吵去那么生产效率还不如两个平庸的程序员加一个好的指导思想。此文只说和上面的公式相关的问题,公司内部的管理平衡本文不谈。

“怎样节省成本?”我一向吹嘘的两个程序开发原则是复杂度隔离和代码复用。降低了复杂度,代码阅读修改会变容易,扩展维护成本会变低;书写并使用能充分复用的代码也会减少repeat yourself的机会。发展与使用开源软件也是个好的方法。如果一个管理者成天摧程序团队把某某某功能做出来,那真的该反思一下这种只要尽快看到短期结果不求深谋远虑的施压造成的是什么情况:程序员赶工,效果是快速出来了,但代码经过推敲的时间少了,复杂性可能高了,潜藏的bug可能多了,以后复用的机会非常渺茫了……长远来讲,不如平心静气鼓励程序员写出高质量的可复用代码,使用、参与、投入几个开源项目,甚至鼓励程序员用一定自由时间做自己想写的程序(Google有此一招,每周一天,其若干商业项目起源于员工个人项目),这样公司的成本更低。假设一套代码(自己员工写的可复用代码或现成开源项目)有10万有效代码价值,还是按一个高级程序员1100月代码价值来算,在不出错的理想情况下这套代码可能为老板节省100000 / 1100 = 90.91人月的成本,5个高级程序员也要干18.19个月才能做出来,而老板能节省99.91×5000 = 45.45万元的金钱成本,又省时又省钱,何乐而不为?为什么不拿使用开源项目节省下来的开支给员工多加一些人性化的福利待遇?良好的企业文化不就这么出来了。我想大多数商业游戏引擎都出自国外的原因也就是因为他们不求短期山寨出能骗钱的游戏而是想安下心给程序员一定自由做出非常酷的程序出来,长远来讲,这些公司引领了行业标准,卖引擎就赚翻了。你还会一味盲目压进度吗。

“看你摆了这么一套,我很有收获或启发。我很认真!”认真你就输了!仅靠这种简单粗暴的公式就能量化出价值的程序员都不是将才!任何工程,说白了管理的不是项目而是人。而一个程序员最独特有力的价值可能不在实现某个功能写一篇代码上面,在于很多很杂,比如:能给团队带来什么样的提升,能在众人就某一问题困苦时灵感一现提出创造性的建议,人品极佳能协调好程序团队内外事务……

“身为程序员,我该怎样提高自我价值?”让自己写的代码不容易出错,让自己能从只会写简单代码的初级程序员上升为火候更到位的高级程序员……今天累了,改天再谈。

20
27
分享到:
评论
3 楼 a123159521 2012-08-03  
一天一行代码才是程序员追求的最高境界
2 楼 wangyanlong0107 2012-08-01  
顶啊,写的非常好,受益匪浅,俺会持续关注滴
1 楼 web001 2012-08-01  
好代码是廉价的代码 http://nodejs.iteye.com/blog/1614669

相关推荐

    C++源代码项目,大约有好几万,基础到进阶

    C++源代码项目,大约有好几万,基础到进阶

    Java代码实践12306售票算法(二)

    主要介绍了Java代码实践12306售票算法(二)的相关资料,需要的朋友可以参考下

    钱能C++第二版 清晰影印版PDF (分卷一)共两个分卷

    全书全部重新执笔,代码全部重写,涵盖了基本C++编程方法的全部技术特征。 本书以C++标准为蓝本,从过程化编程的基本描述,到对象化编程的方法展开,乃至高级编程的实质揭示,形成一条自然流畅的主线,通俗易懂,...

    自己动手写操作系统(含源代码).part2

    你会发现理论书籍好像一下子变得无用武之地,你会发现任何一个细节上的理解错误都可能导致自己辛辛苦苦编写的代码运行异常甚至崩溃。 我经历过这一切!我曾经翻遍了一本《操作系统:设计与实现》,也没有找到实现一...

    自己动手写操作系统(含源代码).part1

    你会发现理论书籍好像一下子变得无用武之地,你会发现任何一个细节上的理解错误都可能导致自己辛辛苦苦编写的代码运行异常甚至崩溃。 我经历过这一切!我曾经翻遍了一本《操作系统:设计与实现》,也没有找到实现一...

    meeting-ticker:简单的时钟,显示会议实际花费多少钱

    因此,在这些马拉松哈欠节之一的一天里,我整理了一段快速JavaScript,随着时间的推移,它显示了会议当前成本的估算值。 人们震惊地看到美元Swift攀升至数千美元。 大型IT商店就是它们的样子,什么都没有真正改变...

    Python语言基础:条件语句.pptx

    owemoney=int(input("欠信用卡多少钱:")) money=int(input("今天是否发了工资(发了回复1,没有发回复0):")) if money==1: offermoney=int(input("发了多少工资:")) remainmoney=offermoney-owemoney if ...

    汽车电子中的汽车电脑板原理与检修

    汽车电脑是按照预定程序自动地对各种传感器的输入信号进行处理,然后输出信号给执行器,从而...微处理器是单片机的核心部件,微处理器将输入模拟信号转化为数字信号,并根据存储的参考数据进行对比处理,计算出输出值

    7.11问题的MATLAB求解

    [蛮力法] 四个数相加和相乘都是7.11 算法设计与分析上的一道题,题意大概是这样, 一人买了四样东西,恰巧这四样东西的价格相加和相乘的值都是7.11, 请问这四样东西分别是多少钱?(要求用蛮力法解题) MATLAB源代码

    3105079_1582039317.zip

    直到你打印机不能使用报废而至,你算算你花多少冤枉钱啊 ,(一年你要清几次啊?把打印机拿去拿来多麻烦,还耽误工夫 ,离维修点远的如乡镇或小县城更是苦不堪言, 有的甚至来回几百里路程, 路费和时间都花不...

    java范例开发大全源代码

     实例66 求最大值、最小值和平均值 91  5.2 二维数组 92  实例67 二维数组的创建与使用 92  实例68 矩阵转置 93  实例69 奇数阶幻方 94  实例70 求方阵对角线之和 96  实例71 矩阵的加法 97  ...

    java_codes:Java实践代码

    研究几个拼车网站:创建一个应用程序来计算您的每日驾驶成本,以便您可以估计拼车可以节省多少钱,这还具有其他优点,例如减少碳排放和减少交通拥堵。 应用程序应输入以下信息,并显示用户每天开车上班的费用:a)...

    lokalrunde:#WirVsVirus-黑客马拉松原型

    告诉我们快乐到底值多少钱? 轻的代价是什么? 电晕危机改变了一切。 美食是一片废墟。 超过150万人正面临灭顶之灾。 你最喜欢的酒吧需要你! 在您最喜欢的酒吧喝一杯虚拟饮品并使用 PayPal 付款。 表示感谢并在...

    Spring+MyBatis/Hibernate+Ehcache+Maven的Demo Web项目

    只是一个Demo,没有多少逻辑代码,此项目的价值在于: 1.标题所提及技术的整合,Spring包括mvc、aop、ioc等。个人属于强迫症类型,技术水平...因此,此Demo在基础和细微的地方都处理得相当周到,10分钱所谓是物有所值

    LearnDNA:用于dna学习的初始存储库

    值多少钱? 例如,埃博拉病毒是一种病毒。 关于病毒的有趣之处在于,与动物或植物相比,它们的dna链通常很短。 实际上,植物dna很多时候都比人类DNA复杂。 事情就是这样,没有人能像计算机语言一样阅读dna,即:就...

    cars:二手车价格预测解决方案的原型

    :automobile: :money_bag:我的车值多少钱? :robot:二手车价格预测解决方案的原型 该项目的目的是创建一个完整的机器学习原型,从探索性数据分析到模型部署和用户界面开发。 在此存储库中,您可以找到: 作者

    C语言程序设计100题精解

    该存多少钱 14.怎样存钱利最大 15.捕鱼和分鱼 16.出售金鱼 17.平分七筐鱼 18.有限5位数 19.8除不尽的自然数 20.一个奇异的三位数 21.4位反序数 22.求车速 23.由两个平方三位数获得三个平方二位数 24.阿姆斯特朗数 25...

    网缘科技-悬赏帖子插件V1.0

    本插件代码有值得研究之处,自己写完也爱不释手,因为表面看好象制作上很简单,实际上是有技术困难的,如提交对各人的分钱项目,多少回贴并不知道,而提交给每个用户的钱的变量名又不能相同,我想尽方法 .........

    leetcode打不开-daily_coding_practice:每日编码挑战-来自Leetcode或其他地方

    该函数应该返回一个具有相同名称的对象/字典,显示成员应该支付或收到多少钱。 进一步的要点: 如果此人应从该组收到钱,则该值应为正数,如果他们欠该组的钱,则该值应为负数。 如果值为小数,则四舍五入到小数点后...

    STT2860Group6Project1

    STT2860Group6Project1 项目目标:使用R导入... (e)与封闭式房屋相比,露天物业仍欠多少钱(以千计)? (f)每个州的华盛顿总理集团财产的中位数是多少? 针对每种状态分别计算此度量。 (g)创建一个小标题,

Global site tag (gtag.js) - Google Analytics