IT职场人生系列之二十四:程序员如何增加收入

这是IT职场人生系列的第二十四篇。(序言专栏目录

程序员的收入是广受关注的问题,很多人从业35年之后就会遇到这个收入瓶颈。尽管物价不断上涨,程序员尤其是初、中级程序员的收入不升反降。即使上次在某个文章中看到有中国第一程序员之称的某位,月薪也只有3万,尽管这个数字已经很高了,但这个“中国第一”,也只有众多小型软件企业总监级别的收入而已。为什么这么高水平的技术人员在公司中的位置仍然显得与日俱降?本文会分析其中的原因,并依据原因给出相应的建议,为收入遇到瓶颈的程序员找到出路。

要理解一个人能赚多少钱,先要理解钱的流转规律。对于程序员,总是认为若自己能力提升了,自己的收入就应该相应提升。不过,请先读一下任正非写给华为员工的邮件中的一段文字:

因此,没有责任心,不善于合作,不能集体奋斗的人,等于丧失了在华为进步的机会。那样您会空耗了宝贵的光阴,还不如试用期中,重新决定您的选择。进入华为并不意味着高待遇,因为公司是以贡献定报酬的,凭责任定待遇。对新来员工,因为没有记录,晋升较慢,为此十分歉意。如果您是一个开放系统,善于吸取别人的经验,善于与人合作,借助别人提供的基础,可能进步就会很快。

从中可以看出,先要替公司赚到钱,承担责任,一个员工才能拿到钱。

分析

若一个程序员技术水平一个顶十个,在他替公司赚钱的道路上还有哪些障碍呢?典型障碍有很多,比如:

1. 这个程序员开发的功能中有50%客户不常使用

因此,客户要么没有选择这个产品,要么只愿意付出更低的价格。“这怪产品经理啊,为什么怪我?”错。若赚到了钱,论功行赏的分配方法有很多;但若赚不到钱,分配方法就一种:大家都没钱。也就是在一家产品方向失败的公司,即使最顶级的程序员,也赚不到钱;或者说,他赚到的钱,可能还不如一个产品方向正确的公司的一个普通程序员。

2. 这个程序员开发的底层库中,有50%不被调用

很多顶级的程序员都迷恋编写底层库,认为这才是施展技术实力的地方;他们多数不愿意参与业务级别的工作,认为工作过于简单还要和客户打交道。这时候编写出来的东西,经常会出现“需求镀金”,就是最终代码中充斥着大量的无用的功能。本人做过一段这种事情,所编写的一个库,可能几年后使用率也不超过一半。

如果这两个问题不解决,我们表面上看到的看到的10倍的能力,真正能转化到生产力上的不足25%。公司的钱赚不来,个人收入低的问题也就很好理解了。

3.顶尖高手在公司内部的位置已经不再重要

现在已经不是当年两个修自行车的能造飞机的英雄时代了。现在的软件很少像当年KV300WPS一样可以由一个高手独立写成,多数都依托于一个十多人乃至近百人的大型团队。如果这个团队的整体实力很强,里边一个顶三、五个的程序员大有人在,那么单个的能顶十个的程序员贡献能有多大,就值得商讨了。

10年前参与的一家公司中,有一位自己躲在自己办公室的“扫地僧”,功力超过我们团队的最顶级的程序员还要数倍。不过,他却在独立开发一个与公司方向不符的小产品,由于他是老板的朋友,老板也执拗不过,就随他去了。几年后公司上市,不过是因为我们所在的25人团队的产品占据市场份额60%以上。毕竟这种规模的团队,如果技术和管理又能跟得上(这个团队就是本人第一次遇到松结对编程、139团队的那个团队),生产力不是一个两个游击队员能够相比的。如果不能把自己的能力转化为企业的盈利,收入就无从谈起。

答案

有了这两个分析,就不难得到答案,整体上分两个方向,最后我们再总结两个截然不同的方向的共同点。

一个方向,是转向关注业务。具体说来,包括成为产品经理,或称为对产品需求负有责任的技术兼业务高手。

为何产品经理的收入很高?三星刚刚重奖了GalaxyIII的产品经理,而腾讯、阿里的产品经理也久负盛名,而他们的所谓“高级程序员”一般都默默无闻。原因就是产品经理是“掌舵”的,不是“划船”的,他对团队生产力的贡献,不是加法,而是乘法。国内征途以几十人团队每年几亿的收入,腾讯以9千人超过中国电信5万人的营业额,国外Apple及FB的崛起,靠的不是技术高手的加法,而是产品经理的乘法。

作为纯技术高手,可能直接转为产品经理很难,或者不愿意转,那么,至少要变成关心需求的技术兼业务高手。也就是不能只沉迷技术,而要关心是否正在开发客户关注的核心需求,业务实现是否有效、友好,与竞争对手定位于功能比较等内容。

作为掌舵的人,更容易帮助团队把技术能力转化为生产力,提升绩效,也更容易获得更高的收入。

第二个方向,是作为技术领导,将自己的技术与管理结合起来,提升整个团队的战斗力。

技术高手作为团队的领导具有得天独厚的优势,毕竟软件管理是个复杂的过程,需要结合技术、团队、过程的各方面才能做好。

比如设定这样一个目标:“促进团队的代码复用,以提升进度和质量。”个人参与过的几个项目都证明做好这件事情意义非比寻常,然而做好却很难。个别技术高手可以以1/4代码写出相同的功能,然而整个团队却很难做到,原因是缺少恰当的团队管理方法。而作为纯管理出身的项目经理,又不理解应该建立何种复用结构,如何分工。要让纯管理的人跨越技术壁垒是比登天,而让技术高手帮助进行管理则只是一念之间的事情(虽然也很难!)。

如果一个高手,能够帮助自己身边的三、五个程序员提升水平,那么很容易再获得相当于几个人的生产力,这是他个人提升所很难再获得的。本人在十年前遇到一位高手,跟他学了一年,感觉自己提升了三四倍的水平(从完成任务所需的功能量缩减而言,何况还有技术、质量方面的提升),而身边另外几个师兄弟,也都长进迅速,有一两个甚至都超过了师傅的水平。除了传授技术之外,这个团队后来在这位高手带领下,还改善了管理结构,演进成为一个松结对和1-3-9团队,在不到一年时间从5人扩展到25人,而产品质量没有明显的下降,后来市场占有率更是达到60%以上。

这两个方向有一个共同点,就是把自己卓越的技术能力对团队的贡献,从加法变成乘法。高手必须认识到自己对团队和企业的最大贡献,不是自己独立承担的那点任务,而是影响产品和影响团队的能力。

最后一个常见问题:

“我传授了徒弟,最后却被一脚踢掉怎么办?”这是很多技术高手所担心的事情。其实,老板都是很聪明的人,技术、管理、业务可能都一般,但识人、用人绝对超过我们,否则怎么会我们给他打工呢!一个高手如果被踢掉,更可能是因为沉迷技术逐渐变得钻牛角尖、封闭,最终变成无用之人。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/449804.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASP 代码当前记录集不支持更新问题的解决办法。

错误类型:ADODB.Recordset (0x800A0CB3)当前记录集不支持更新。这可能是提供程序的限制,也可能是选定锁定类型的限制。 /Model/manage/Admin_Admin.asp, 第 35 行 找到放在数据库文件的--- 右键--》属性---》安全----》添加IIS来宾用户---》权限为&#…

@PathVariable 注解 说明

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 PathVariable 映射 URL 绑定的占位符 带占位符的 URL 是 Spring3.0 新增的功能,该功能在SpringMVC 向 REST 目标挺进发展过…

数据清洗,筛选

本人在私募,负责数据收集以及清洗,就是包括收集数据,按照领导要求,选出满足条件的数据,用于校验策略是否正确。 现在就在这进行代码上传,即用于自己总结整理,也用于供大家学习了解,实…

JS媒体查询

样式的改变使用C3的媒体查询 行为和功能的改变使用JS的媒体查询 matchMedia()方法参数可写任何一个CSSmedia规则,返回的是新的MediaQueryList对象,该对象有两个属性 media:查询语句的内容matches:检查查询结果,返回boo…

Ruby初步介绍

Ruby是脚本语言,与传统的C, Java不同的是,它不需要经过编译,而是直接可以被执行 Ubuntu下执行第一个ruby脚本 print("Hello David, This is your first Ruby script.\n") davidubuntu:~/RubyTrain/Basic$ ruby Hello.rb 运行结果: Hello David, This is your first R…

C/C++ main用法总结

今天看到一篇很好的文章,详细的讲解了C、C中的main函数,以及returne的用法。转载过来大家一起分享下。转自:http://www.cnblogs.com/ct6816678/archive/2012/10/26/2741824.htmlreturn是C预定义的语句,当return语句提供了一个值时…

如何将数据写入excel中,而不覆盖原有数据

之前直接用pandas库,然后to_excel(),结果直接将原始数据直接覆盖,幸亏有备份。(友善提醒,做数据处理之前,先将数据本地备份一份,确认完全没有问题,然后还是备…

对List集合中的元素进行排序

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 ollections对List集合中的数据进行排序 有时候需要对集合中的元素按照一定的规则进行排序,这就需要用到 Java中提供的对集合…

Jmeter----5.1 设置中文

注意:JMeter5需要Java8 以上,本文环境是Win7 64位 设置永久默认汉化:在Jmeter的安装目录下的bin目录中找到 jmeter.properties这个文件,用文本编辑器打开。在#languageen下面插入一行languagezh_CN 这样,再次打开Jmete…

pandas计算移动平均值

本人今天遇到遇到一个任务,计算同月份合约当天各合约总持仓量的移动平均值。立刻写下了这个函数: group df.groupby([合约系列,date]) f pd.DataFrame(group[持仓量].sum().rolling(20).mean()) 上交后,提出要求,不行&#xff…

一个优美的架构需要考虑的几个问题

随着公司的架构逐步发展,越来越多的问题被提出来,也发现一个良好的技术架构需要考虑的问题 1 架构的可扩展性 这里面又包括以下几个方面 水平垂直可拆分服务无状态数据可缓存可异步处理(提高性能)可复制(提高效率&…

HSTS的来龙去脉

前言 安全经常说“云、管、端”,“管”指的是管道,传输过程中的安全。为了确保信息在网络传输层的安全,现在很多网站都开启了HTTPS,也就是HTTPTLS,在传输过程中对信息进行加密。HTTPS使用了对称加密、非对称加密、消息…

利用XShell上传、下载文件(使用sz与rz命令) 超实用!

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 rz、sz 安装方式:sz/rz命令安装方式 借助XShell,使用linux命令sz可以很方便的将服务器上的文件下载到本地&#…

quantaxis使用docker安装,解决了一个很奇特的问题

之前使用docker-compose pull 更新之后,使用docker-compose up进行安装。出现 qaweb显示address already in web,cmd中显示Starting qa_web is wrong。之前一直觉得什么毛病啊,试了很多办法。 比如关闭8010接口: netstat -ano|findstr “801…

基础数学落后与高端人才流失

这个话题令人感到很痛苦,也很无奈。我本不该提起这个话题。但是,无穷小微积分专业网站不久即将开通,我不得不认真备课,仔细研读 J.Keisler 的“初等微积分”电子版教材。在研究该教材内容的过程中,参照国内的《高等数学…

Datawhale MySQL 训练营 Task2 查询语句

目录 MySQL 管理MySQL 用户管理 参考数据库管理SQ查询语句1. 导入示例数据库,教程 MySQL导入示例数据库2. 查询语句 SELECT3. 筛选语句 WHERE ,过滤4. 分组语句 GROUP BY5. 排序语句 ORDER BY6. 函数作业总结MySQL 管理 MySQL版本 8.0.15 MySQL 用户管理…

记录一个相当好用的反编译工具下载地址

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 下载地址见:https://download.csdn.net/download/stoneepigraph/9817144 下载后直接双击该程序就可以用,十分方便…

2021-07-09

#先引入后面可能用到的包(package) import pandas as pd from datetime import datetime import backtrader as bt import matplotlib.pyplot as plt %matplotlib auto #正常显示画图时出现的中文和负号 from pylab import mpl mpl.rcParams[font.sans…

Patrick Wyatt:代码没问题 程序却有bug?

摘要:相信每个程序员都遇到过“不可能的bug”,代码没有任何问题却出错了!问题肯定是出在操作系统上,或者是工具,甚至是因为计算机硬件的问题?!?当然,魔兽之父也不例外&am…

视差滚动(Parallax Scrolling)插件补充

13. Windows Windows (github) 是一个让你用占据整个屏幕的section来构建单面网站的插件。该插件提供给你一些回调函数,当新的section出现在可视区并且并且处理快照时被调用,所以你可以轻松的继承它来自定义导航菜单或更多的东西。下面是一个例子&#x…