从边际成本角度思考程序员职业
程序员职业提供的是软件知识服务。
引语
程序员真的是以写代码为生?yes and no. 既是,也不全是。
从表面来看,程序员产出代码和软件,领工资过日子。再往里一层看,程序员职业提供的是软件知识服务。而产出代码和软件,只是软件知识服务的常见产出形式。为什么软件是服务业而不是制造业呢?因为软件并不生产制造实体商品,而是作为一种技术手段来提升实体商品的生产、制造、流通、消费的效率、质量和体验。
一个认真对待职业生涯的程序员,必然要仔细审慎地思考这个职业,充分发挥这个职业的真正价值。
价值产出
作为“理性经济人”,要特别注重边际成本。程序员也不例外。需要从经济角度来量化和从事职业活动,作为一个“理性经济人”,而不是一个傻傻的整天只知道写代码的技术人。
边际成本,是指每多生产一个单位的商品要付出的成本。这里的一个核心概念是“一个单位的商品”。如果仅仅只是局限在代码的层面上思考问题,那么“一个单位的商品”,就很难说清楚指的是什么。因为软件是一个整体。写多少行代码才能算得上生产了“一个单位的商品”?如何量化“一个单位的商品”?可以先从软件知识服务提供哪些价值产出形式说起。价值是经济活动的核心要素和起始点。
软件知识服务,可以提供哪些价值产出形式呢?
- 代码和软件提供的功能点和体验。 最常见最直接的主要产出形式。
- 方案文档和用户手册文档。经常被忽略的重要产出形式。
- 工程指导。 为实际项目工程的开发中所遇到的问题提供方法论和方案指导。
- 疑难杂症求解。解决生产服务运行过程中产生的各种疑难问题。
- 决策咨询服务。为重大项目的关键方向、架构设计等,提供有价值的设计决策和解决方案服务。
- 具体知识服务。提供关于特定技术的使用或者新知识新技术的咨询服务。
- 行业报告。提供关于行业领域的动态和趋势相关的分析和见解。
从这些价值产出形式来看,就能看得更清楚些。对于程序员职业而言,“一个单位的商品”,可以指:
- 一个能帮助用户做点事情的小的功能点
- 一篇有价值的用户手册文档
- 一个可复用的设计和实现方案
- 一次实际问题的求解
- 一次实际疑难问题的排查和解决
- 一次重要的设计咨询及方案输出
- 一篇阐述新知识新技术原理及使用的文章
- 一篇有价值的译文
- 一篇阐述行业发展趋势的分析报告
有了这些价值产出形式,程序员的职业活动就有了量化的尺度和前进的方向。
成本
边际成本里的另一个核心概念是“成本”,即必须付出的代价。
成本的基本形式是资源与时间。程序员最宝贵的资源是不可再生的时间。时间是程序员提供价值产出所付出的最主要成本。其次是好用的笔记本、物廉价美的服务器、云资源和其它设备。摸着胸口自问下:你的时间用在了哪里?产出了什么?
写完一篇有价值的文档,有多少人从中受益,花费了多长时间? 做完一个功能点,花费了多长时间,产生了怎样的经济效益?是否沉淀出通用的解决方案,花费了多长时间?写出有用的用户手册和帮助文档,花费了多长时间?是否为别人遇到的开发问题提供帮助,花费了多长时间?是否针对项目的疑难棘手问题、关键点给出了有益的决策建议,花费了多长时间?能否写出有价值的行业分析报告,花费了多长时间?
很少有程序员关心这些。有的程序员想方设法拖延,难以量化工作效率;有的程序员反复做最基本的开发,不去思考更高层次的问题和解决方案,随着时间的增长,产出价值一直处于初级水平;有的程序员不关心自己的工作产出价值,只关心代码和技术;有的程序员不关心自己花费了多长时间,时间哗啦啦如水流。不一而足。无意批评哪一种做法,只能说:种瓜得瓜,种豆得豆。各得其所。
职业规划
职业规划究竟是什么?很多人的理解可能就是,N 年要获得什么职位或头衔。
高级工程师与初级工程师的区别在哪里? 很多人的理解可能就是,高级工程师比初级工程师的“经验”更加丰富,做事更加熟练。
从边际成本的角度来看职业规划,就可以把职业规划看成一个量化的目标阶梯。即:在一定阶段,能够提供的价值产出形式与成本的关系的变化。
比如初级工程师,提供的价值产出主要是“功能点”、“文档”,所花费的时长通常以天计,而高级工程师提供的价值产出不仅包括“功能点”、“文档”,也包括“可复用的方案”、“实际问题的求解”、“疑难杂症求解”,部分还能提供一定程度的设计咨询和方案输出,时长通常以“小时”计;专家提供的价值产出,则更侧重“可复用方案”、“疑难杂症求解”、“设计咨询和方案服务”、“行业分析报告”等,时长以小时或分钟计。
来看看一个可复用可扩展方案的边际成本。假设开发一个扫描任务,需要花费 3 人天,价值 200 元,边际收益投资比是 200/3 = 66.6。如果方案不具可复用可扩展性,那么再开发一个扫描任务,依然是 3 人天,价值 150 元,边际收益投资比是 50。假设原来 3 人天开发了一个可复用的方案,使得后续开发一个扫描任务,只需要 1 人天,那么边际成本是 1 人天,边际收益投资比为 150。显然,开发可复用可扩展的方案,是具有很强的经济价值的。这也是加薪的有力依据。
小结
本文尝试从边际成本的经济角度来思考程序员职业生涯。边际成本的两个要素是:一单位的价值产出与成本(资源与时间)。感觉是,对一些事情看得更清晰了些。