程序员的核心价值

前言:可能是最近一直在想怎么成为一个优秀的程序员,程序员职业生涯如何可持续发展,从而引发了这一次的思考。

引子

一个经验丰富,技术精湛的程序员(老鸟)离职,公司需要另一个程序员来补位。
有时,招来的甚至是刚毕业的大学生(小白),经过一年半载的磨炼,似乎也比较 NO PROBLEM。
可是,之前为老鸟支付的工资可能 DOUBLE 小白,那么,问题来了,老鸟体现的哪些价值能够让人愿意为他付相对较高的工资呢?

销售工作可以根据销售额来判断一个人的能力,技术工作呢,比如怎么判断一个程序员更优秀?

思考

职场中可以被替代是必然的,若是某人离职之后项目就进展不下去,那就是人事部门、技术主管的责任。而且,如果没有某人就不行,那他可能会累死,而且,万一他想走,又怎么能安心的甩手离开?

第一,能用新人替代,是不是因为老鸟做的事还是不够有技术含量,没有体现出足够的价值?

有时,公司的安排确实不怎么合理,老鸟可能一直也觉得自己没有做有挑战的工作,既没发展前景(价值没有足够体现,工资自然无法水涨船高),也学不到东西。
工资可能是技术水平 + 工作经验(资历) + 学历(不同学历下,同工不同酬也比较常见) + 谈判,共同得出的,对于日常工作中体现的部分,反倒没有那么被重视。

公司管理层面上可能有以下问题:

  1. 直接负责的技术领导没有足够的发言权,真正有权力的却完全不懂技术。
    即便懂技术,也经常不会去注意到下面所有人的发展。
  2. 有些岗位被公司认为是没有创造足够价值,不是核心价值的部分,所以不被重视。

当然也有可能,虽然工作可以做,但是工作质量的好坏,其实还是在那里的。

哪些地方能够体现一个程序员工作的质量呢,或者说:

第二,程序员的工作能体现出什么核心价值,让 BOSS 愿意付钱的点?

正好,上网一搜,收到知乎上的这个问题:程序员的核心竞争力是什么?为什么?

我是比较赞同排第一的、姚东的回答,比较符合我一贯的态度,其中提到:

  1. 学习能力(自学能力)
    离开学校之后的所有技术积累,都只能靠自己耐住寂寞的用心专研。
    再也不会有很多朋友一起陪你上晚自习了(一起 dota 倒是可能)。
  2. 动手能力
    尤其赞同,不能整天专研书上的名词解释,绝不能 “说什么什么懂,做什么什么不会”。
    我比较赞同:用实践推进理论学习。Talk is cheap,show me the code
  3. 耐心、毅力
    任何精湛的技艺都离不开无数次乏味的练习,我完全无法想象一个人靠所谓兴趣和热情做成一件事情。
  4. 表达能力(沟通与待人接物)
    有人的地方就有江湖。不会准确地表达自己的意思,不会与人相处,怎么做成一件事情?
    要微笑,要会开玩笑,要控制住坏脾气(不要在心情不好的时候随意发泄)。

还有提到了一点:“现任老板不可能给出让你满意的工资,下一任老板才会。”,有一定道理。

以上几点就很好了,但是我还是想补充两句:

  1. 善于借力,善于经营。
    资源协调好了,没有什么做不成。
    要善于经营自己的资源,比如时间、声誉(技术品牌)、人脉。
  2. 敢于承担,敢于挑战。
    大部分时候,真正的问题是你不敢面对问题,其实,办法总比问题多,找办法,不找理由。
  3. 乐于分享。
    现实中,很多人主张 “总要留一手”,其实意义不大,真正的竞争者是那个不好的自己。
  4. 工作是为了更好地生活。

第三,我自己有哪些地方还需要注意?

  1. 态度要好,要更好,做人的态度、做事的态度。
  2. 坚持每天花一点时间用来提升技术。
    即便是想偷懒,不想努力,那也不要用 “用空(假期)学习” 这个借口麻醉自己。
  3. 要想清楚,发展方向,然后从粗到细,指定一个可行的计划,然后,重点是:执行!
    不要贪多,坚持才重要,等在一个方向(绝对要和工作有关)上取的突破,有一定积累之后,其他方向也一定可以一以贯之的。