01 | 程序员如何用技术变现?(上)

你好,我是陈皓,网名左耳朵耗子。

程序员用自己的技术变现,其实是一件天经地义的事儿。写程序是一门“手艺活儿”,那么作为手艺人,程序员当然可以做到靠自己的手艺和技能养活自己。

然而,现在很多手艺人程序员却说自己是“码农”,编码的农民工,在工作上被各种使唤,各种加班,累得像个牲口。在职业发展上各种迷茫和彷徨,完全看不到未来的希望,更别说可以成为一个手艺人用自己的技能变现了。

从大学时代帮人打字挣点零花钱,到逐渐通过自己的技能帮助别人,由此获得相对丰厚的收入,我在很早就意识到,从事编程这个事可以做到,完全靠自己的手艺、不依赖任何人或公司去生活的。

这对于程序员来说,本就应该是件天经地义的事,只是好像并不是所有的程序员都能意识到自己的价值。这里,我想结合我的一些经历来跟你聊聊。当然,我的经历有限,也不一定全对,只希望能给你一个参考。

学生时代

我是1994年上的大学,计算机科学软件专业。在1996年上大二的时候,因为五笔学得好打字很快,我应征到教务处帮忙,把一些文档录入到电脑里。打了三个月的字,学校按照每千字10元,给了我1000元钱。

由于我的五笔越打越快,还会用CCED和WPS排版,于是引起了别人的注意,叫我帮忙去他的打字工作室,一个月收入400元。我的大学是在昆明上的,这相当于那会当地收入的中上水平了。

后来,1997年的时候,我帮一个开公司的老师写一些MIS软件,用Delphi和PowerBuilder写一些办公自动化和酒店管理的软件。一年后,老师给了我2000元钱。

因为动手能力比较强,当时系上的老师要干个什么事都让我帮忙。而且,因为当时的计算机人才太少太少了,所以一些社会上的人需要开发软件或是解决技术问题也都会到大学来。基本上老师们也都推荐给我。

还记得1997年老师推荐一个人来找我,问我会不会做网页?5个静态页,10000元钱。当时学校没教怎样做网页,我去书店找书看,结果发现书店里一本讲HTML的书都没有,只好回绝说“不会做”。一年后,我才发现原来这事简单得要命。

初入职场

到了1998年,我毕业参加工作,在工商银行网络科。由于可以拨号上网,于是我做了一个个人主页,那时超级流行个人主页或个人网站。我一边收集网上的一些知识,一边学着做些花哨的东西,比如网页上的菜单什么的。

在2000年时,机缘巧合我的网站被《电脑报》的编辑看到了,他写来邮件约我投稿。我就写了一些如何在网页上做菜单之类的小技术文章,每个月写个两三篇,这样每个月就有300元左右的稿费,当时我的月工资是600元。

现在通过文章标题还能找到一两篇,比如《抽屉式菜单的设计》,已经是乱码一堆了。

大学时代被人请去做事的经历对我影响很大,甚至在潜意识里完全影响了我如何规划自己的人生。虽然当时我还说不清楚,只是一种强烈的感觉——我完全可以靠自己的手艺、不依赖任何人或公司去生活。

我想这种感觉,我现在可以说清楚了,这种潜意识就是——我完全没有必要通过打工听人安排而活着,而是反过来通过在公司工作提高自己的技能,让自己可以更为独立和自由地生活

因而,在工作当中,对于那些没什么技术含量的工作,我基本上就像是在学生时代那样交作业就好了。我想尽一切方法提高交作业的效率,比如,提高代码的重用度,能自动化的就自动化,和需求人员谈需求,简化掉需求,这样我就可以少干一些活了……

这样一来,我就可以有更多的时间,去研究公司内外那些更为核心更有技术含量的技术了

在工作中,我总是能被别人和领导注意到,总是有比别人更多的时间去读书,去玩一些高技术含量的技术。当然,这种被“注意”,也不全然是一件好事。

2002年,我被外包到银行里做业务开发时,因为我完成项目的速度太快,所以,没事干,整天在用户那边看书,写别的代码练手,而被用户投诉“不务正业”。我当然对这样的投诉置之不理,还是我行我素,因为我的作业已交了,所以用户也就是说说罢了。

同年,我到了一家新的很有技术含量的公司,他们在用C语言写一个可以把一堆PC机组成一个超级计算机,进行并行计算的公司项目。

当我做完第一个项目时,有个公司里的牛人和我说,你用Purify测试一下你的代码有没有内存问题。Purify是以前一个叫Rational的公司(后来被IBM收购)做的一个神器,有点像Linux开源的Valgrind。

用完以后,我觉得Purify太厉害了,于是把它的英文技术文档通读了一遍。经理看我很喜欢这个东西,就让我给公司里的人做个分享。我认真地准备了个PPT,结果只来了一个QA。

我在一个大会议室就对着她一个人讲了一个半小时。这个QA对我说,“你的分享做得真好,条理性很强,也很清楚,我学到了很多东西”。

有了这个正向反馈,我就把关于Purify的文章分享到了我的CSDN博客上,标题为《C/C++内存问题检查利器—Purify》。可能因为这个软件是收费的,用的人不多,这篇文章的读者反响并不大。

但是,2003年的一天我很意外地接到了一个电话,是一个公司请我帮忙去给客户培训Purify这个软件。IBM的培训太贵了,所以代理这个软件的公司为了成本问题,想找一个便宜的讲师。

他们搜遍整个中国的互联网,只看到我的这篇文章,便通过CSDN找到我的联系方式,给我打了电话。最终,两天的培训价格税后一共10000元,而我当时的月薪只有6000元,还是税前。

这件事儿让我在入行的时候就明白了一些道理。

  • 要去经历大多数人经历不到的,要把学习时间花在那些比较难的地方。

  • 要写文章就要写没有人写过的,或是别人写过,但我能写得更好的。

  • 更重要的是,技术和知识完全是可以变现的。

现在回想一下,技术和知识变现这件事儿,在15年前我就明白了,哈哈。

随后,我在CSDN博客上发表了很多文章,有谈C语言编程修养的文章,也有一些makefile/gdb手册性的文章,还有在工作中遇到的各种坑。

因为我分享的东西比较系统,也是独一份,所以,搜索引擎自然是最优化的(最好的SEO就是独一份)。我的文章经常因为访问量大被推到CSDN首页。因此,引来了各种培训公司和出版社,还有一些别的公司主动发来的招聘,以及其他一些程序员想伙同创业的各种信息。

紧接着我了解到,出书作者收入太低(作者的收入有两种:一种是稿费,一页30元;一种是版税,也就5%左右),而培训公司的投入产出比明显高很多,于是我开始接一些培训的事(频率不高),一年有个七八次。当时需求比较强的培训主要是在这几个技术方面,C/C++/Java、Unix系统编程、多层软件架构、软件测试、软件工程等。

我喜欢做企业内训,还有一个主要原因是,可以走到内部去了解各个企业在做的事和他们遇到的技术痛点,以及身在其中的工程师的想法。这极大地增加了我对社会的了解和认识。而同时,让我这个原本不善表达的技术人员,在语言组织和表达方面有了极大的提升。

其间也有一些软件开发的私活儿,但我基本全部拒绝了。最主要的原因是,这些软件开发基本上都是功能性的开发,我从中无法得到成长。而且后期会有很多维护工作,虽然一个小项目可以挣十几万,但为此花费的时间都是我人生中最宝贵的时光,得不偿失。

25~35岁是每个人最宝贵的时光,应该用在刀刃上

职业上升期

因为有了这些经历,我感受到了一个人知识和技能的价值。我开始把我的时间投在一些主流、高级和比较有挑战性的技术上,这可以让我保持两件事儿:一个是技术和技能的领先,二是对技术本质和趋势的敏感度。

因此,我有强烈的意愿去前沿的公司经历和学习这些东西。比如,我在汤森路透学到了人员团队管理上的各种知识和技巧,而亚马逊是让我提升最快的公司。虽说,亚马逊也有很多不好的东西,但是它的一些理念,的确让我的思维方式和思考问题的角度有了质的飞跃。

所以后来,我开始对外输出的不仅仅是技术了,还有一些技术价值观上的东西。

而从亚马逊到阿里巴巴是我在互联网行业的工作经历,这两段经历让我对这两家看似类似但内部完全不同的成功大公司,有了更为全面的了解和看法。

这两种完全不一样甚至有些矛盾的玩法让我时常在思考着,大脑里就像两个小人在掰手腕一样,这可能是我从小被灌输的“标准答案”的思维方式所致。其实,这个世界本来就没什么标准答案,或是说,一个题目本来就可以有若干个正确答案,而且这些“正确答案”还很矛盾。

于是,在我把一些价值观和思考记录下来的同时,我自然又被很多人关注到了,还吸引很多不同的思路在其中交织讨论。而从另外一方面来说,这对我来说是一个很好的补充,无论别人骂我也好,教育我也罢,他们都对我有帮助,大大地丰富了我思考问题的角度。

这些经历从质上改善了我的思考方式,让我思考技术问题的角度都随之有了一个比较大的转变。而这个转变让我有了更高的思维高度和更为开阔的视野。

可能是因为我有一些“独特”的想法,而且经历比较丰富,基础也比较扎实,使得我对技术人的认识和理解会更为透彻和深入。所以,也有了一些小名气。来找我做咨询和帮助解决问题的人越来越多,而我也开始收费收得越来越贵了。这里需要注意的是,我完全是被动收费高的。

因为父亲的身体原因,我没有办法全职,所以成了一个自由人。而也正因如此,我才得以有机会可以为更多公司解决技术问题。2015年,有家公司的后端系统一推广就挂,性能有问题,请我去看。

我花了两天时间跟他们的工程师一起简单处理了一下,直接在生产线上重构,性能翻了10倍。虽然这么做有点low,但当时完全是为了救急。公司老板很高兴,觉得他投的几百万推广费用有救了,一下给了我10万元。我说不用这么多的,1万元就好了,结果他说就是这么多。我欣然接受了,当时心里有一种技术被尊重的感动

2016年,某个公司需要做一个高并发方案,大概需要2000万QPS,但是他们只能实现到1200万QPS左右。

我花了两天时间做调研,分析性能原因,然后一天写了700多行代码。因为不想进入业务,所以我主要是优化了网络数据传输,让数据包尽量小,确保一个请求的响应在一个MTU内就传完。

测试的时候,达到了2500万QPS。于是老板给了我20万。

这样的例子还有很多。上面的例子,我连钱都没谈就去做了,本来想着,也就最多1万元左右,没想到给我的酬劳大大超出了我的期望。

这里,我想说的是,并不是社会不尊重程序员,只要你能帮上大忙,就一定会赢得别人的尊重

所以,我和一些人开玩笑说,我们可能都是在写一样的for(int i=0; i<n; i++) 语句,但是,你写在那个地方一文不值,而我写在这个地方,这行代码就值2000元。不要误会,我只是想用这种“鲜明的对比方式”来加强我的观点。

上面就是我这20年来的经历。相信这类经历你也有过,或者你正在经历中,欢迎你也分享一下自己的经历和心得。

那么,怎样能让自己的技术被尊重?如何通过技术和技能赚钱?下节课中,我将对此做一些总结,希望对你有帮助。

精选留言

  • Camio1945

    2017-12-23 08:57:18

    陈老师,近两年跟同事交流,都有一个非常非常大的困惑:像阿里云这样的服务商已经提供了几乎全套的提升web性能与安全的服务,比如负载均衡、云盾等等,我们公司是小公司,主要接web项目的,也会给客户推荐阿里云的各种服务,这样就省得我们自己去搭建服务器,也不花大力气去优化代码性能。既然别人都已经实现得这么好了,我们再去研究怎么提升性能也比不过阿里云,那么研究的意义在哪里呢?
    以你举过的例子为例,你说你花了两天时间给一家公司的后端系统提升了10倍的性能,赚了10万块钱。假设他们拿这笔钱去买阿里云的负载均衡、云数据库等等,也许也能达到相同的效果,而他们需要的只是一个能顺手使用阿里云服务的程序员,也不是一个你这样的专家。如果真是这样,那么是不是说后续的发展中,世界并不需要那么多“专家程序员”,而需要更多的“云服务使用程序员”呢?
    我有时候想到这一点,就没有动力了。
    盼解答。
    作者回复

    阿里云等云服务商只能提供基础层或是通用的技术产品,并不是有了负载均衡器和云数据库就可以提升性能的和稳定性的。更多的则是要应用层的事,因为应用层有独特的业务逻辑。举个例子:用户的应用是像微博这样的应用,毎个人的时间线完全都不一样,这样的系统云服务只能做底层支持,还有更多的需要业务层面来做。在细节上来说,云服务只能提供数据库和缓存服务,然而,数据库的分库分表,缓存的加载和淘汰策略等等都是云服务无法提供的。不知道道,我讲清了么?

    2017-12-24 15:15:01

  • 菡萏如佳人

    2017-10-17 18:56:52

    for循环的例子扎心了,皓哥…其实每个程序猿内心最大的成就感应该都是看到自己代码组成的产品,被很多人在使用,无奈的是不仅仅是只能写业务代码,而且写的还是一文不值的业务代码~
  • Forrest Li

    2018-05-13 18:47:01

    技术变现套路总结:
    1、程序员用手艺、技术养活自己,不依靠公司;
    2、提高工作效率,去研究那些难的,公司内外的核心技术;
    3、注重输出,输出技术、价值观,帮助更多的人,提高影响力。
  • 梳碧湖砍柴人

    2018-10-08 23:32:24

    23岁就看到这篇专栏可真是太幸运了
  • 二师哥

    2018-06-13 23:05:15

    差点儿走入歧途,确实不应该把大好年华浪费在那些无尽的功能上,虽然现在27了,但感觉不晚,提高自己,才是根本,耗子叔确实有一套
    作者回复

    加油

    2018-06-15 21:06:17

  • 恒逸

    2018-06-18 15:15:30

    读完之后,对我触动最大的是:程序员是个手艺人,靠自己的手艺挣钱本是天经地义的。而我,却一直把自己当成一名流水线工人,被动的被公司改变、塑造,对自己的期望,也慢慢变成了能完好的完成公司布置的任务。
    现在想来,如果照这样继续下去,我个人所能创造的价值(由需求和稀缺性决定)会越来越小,越来越单一。我要从现在开始,像耗子叔一样,自动化自己的工作,把剩下的时间用来学习更有价值的技术或其他。
  • mu

    2018-06-14 02:48:32

    2000wqps场景能说一下么 暂时想象不到这样的场景
    作者回复

    春晚抢红包

    2018-06-14 12:00:55

  • 大魔王村庄

    2018-09-13 16:16:31

    感觉像是读故事一样,我也想分享下我做技术被人尊重时的事儿,我写代码一般很少有bug,并且总能按时保质的交付,以至于后来产品和QA都会更多的听取我对一个事儿是否可以做的优劣分析及观点,这也让我坚定的认为,程序员永远不要只是当一个coder,不要把自己标榜为码农,我们是有思想,有追求的技术人。
  • 太阳雪

    2018-08-22 23:15:12

    拿着好牌,打了一手烂牌
    工作很多年,总觉得自己技术很厉害,实际上只是想下比,25~35的美好人生,不仅没有耗费在功能性的需求上,更没有用了扩展自己的技能和视野,看到您的履历才发现自己多么的无知和愚蠢,看到汗流浃背,终于明白,限制是自己造成的,不是没有机会,不是时代的问题。
    我要重新整理一下手里的牌,认真的打。
  • missa

    2018-03-12 21:27:33

    25~35 岁是每个人最宝贵的时光,应该用在刀刃上,目前27岁,工作4年多了,像耗子叔学习思想。
  • Morpheus

    2019-08-06 12:28:39

    皓哥好!
    我今年33周岁整,离35岁还有2两年,离40岁还有7年;
    现在在做开发项目的项目经理,由测试经理转的开发经理,代码能看懂但不会写,做过不少项目,上千万的有,几十万的也有,虽然有人说开发经理不一定要会写代码,但一直很遗憾自己不会写,一度很后悔自己毕业时没有坚持走开发这条路而走了测试,现在做开发经理也算是曲线救国吧!
    我的志向是做一辈子的程序员,但鬼使神差,走到这里了,也不能磨磨唧唧怨天尤人!
    在此立志,40岁成为开发总监,50岁成为CTO!
    希望自己能坚持下去,在皓哥的专栏里能得到成长。人生漫漫,希望得到皓哥的指点,谢谢!
  • 老赵

    2017-10-17 21:50:50

    很早就订阅了coolshell,看到这个专栏激动不已。技术人多数内敛,但是头脑大多敏锐(大概率). 之前看曹政,池院长,冯老师等人的微信文章,受益良多。 看陈皓老师的开篇文章,仿佛高手娓娓道来江湖事。感谢
  • Chan

    2018-10-25 20:46:59

    一位前辈推荐我来学习陈老师的专栏,刚看了一篇,觉得很受用。感谢!
     
    笔记:
      1.一定要提高自己的技术能力。途径有多种,如:自学、在工作当中学。
        2.要通过各种方式(如写博客)展现自己,知名度有了,那么变现就更容易。
        3.写博客就不要太随意,争取写得比别人好,要么就写别人没写过的。
        4.    “想尽一切办法提高交作业的效率,比如:提高代码的重用度、能自动化的就自动化、和需求人员谈需求,简化需求”,为了是有更多的时间研究公司里外更为核心更有技术含量的技术。
        这个正确的积极的态度值得我多学习。
  • JustDoIt

    2018-03-16 06:54:45

    我是得到的用户,看到极客时间有种相见恨晚的感觉,因为得到对it方面的课程比较少,可以说没有,发现极客果断注册,并购买了,有个建议,我们的app可以快点上线下载功能,隐藏播放功能,我们的产品需要像得到app学习啊
  • Voltric

    2017-11-14 21:29:07

    能做到一个MTU的地步的人太少了,需要加强学习!
  • 老表

    2019-02-12 14:43:32

    今天早上听了《左耳听风》第一讲,有很多思考,耗子叔说的对:并不是社会不尊重程序员,只要你能帮上大忙,就一定会赢得别人的尊重。

    我的思考:
    无效社交并非指所有陌生社交,而是陌生社交里的无用社交,比如闲聊,如果我们互不相识从未见过,你和我说一句你好,我可能礼貌回你一句你好,这是无用社交。

    陌生社交里也有有用社交,比如你在说完你好,建立了我们彼此基础认识后,你问我一个问题,我回答了,对于你来说,我就是有用社交,而对于我来说,还是无用的(当然不是一点用都没有),我怎么让这个社交变成有用的呢?分享知识,提升自己表达能力(可有一不可有二);学习新知,提升自己的硬实力(有挑战性,但比第一种好);知识收费,互惠互利的方法(对于我是最好的,而对于你,你要事先判定:我值不值这个价,能不能帮到你)。

    上面说了三种怎么把陌生社交变成有效社交的思路转变方法,是一个递进的过程,锻炼表达能力是最基础的,提升自己硬实力是刚需,知识收费是最终目的。

    陌生社交如果不能达到上面三个层面,我建议大家不要回应,因为所有无效社交对自身都是极大损耗,时间上的损耗是无法弥补的。

    提醒一下,我这里并没有一棒子打死所有无效社交,我只是希望大家根据自己所处的不同阶段,对自己的社交进行控制,我相信每个人会随年龄和处事的不同都会有自己的选择。
  • 邹毅🎸燚龘

    2019-04-03 08:45:58

    我现在接触到最高接口qps是压测openresty hello world,优化完linux 内核,需要压力机多节点多客户端发压,8C16g单机目测能到几十万qps,请问耗叔是用多少机器抗2000wqps,还能从哪些方面提升?数据包降到1个mtu以内?用http长链接压测的话算数吗?
  • CodeSprite

    2019-08-21 18:25:56

    我已35,已经错过文中所说的黄金10年,目前孩子还小,是家里的经济支柱,每天忙于工作,业余时间很少,对浩哥的见解很认同,也很憧憬不依赖公司,靠帮人解决难题赚钱的路子。但再有5年就40了,很担心自己就算拼尽力气,也无法实现这样的工作方式。
  • edisonhuang

    2019-05-16 09:21:25

    耗子哥用自己的过往经历向我们证明的技术变现的可能性,以及他的具体做法。
    从学生时代,初入职场到职业提升阶段,耗子哥的技术影响力逐渐加强,技术变现也变得越来越简单。更重要的是耗子哥的技术提升,价值输出,影响力加强,技术变现四者形成了正向闭环,随着时间推移不断正向增强:更强的技术带来更有价值的输出,更有价值的输出形成更大的影响力,影响力变大使得单位时间价值更高,变现能力增强,四者闭环迭代,然后最终让自己不用依靠任何公司和组织的背书,自动用技术获取收入。
    文中给我印象更深的是耗子哥从学生时代开始,就已经形成了自己迭代成长的路径,有意识的让自己的想法与他人不同,从而成就非常之事。
    对于技术人员来说,其实大家都在技术变现,只是普通人靠出卖时间获取收入,是低标准的表现,可能会因失业,生病等各种因素,当被动或主动的无法出卖时间时,变现路径就被中断。我回想自己刚毕业时候,在一家大公司做码农,因为无法在做事的过程中添加自己的特有价值,从而导致自己陷入无尽的重复,伴随着无尽的加班,时间被消耗,而技能又无法提升,随着时间推移技术价值降低,年龄变大,变现能力逐渐减弱,整个变成负反馈的闭环,越演越劣。幸得当时及时跳出自己的小圈子,看到更大的世界,积极试错,从而打断负向的链条,从而不至于陷入悲剧。感谢耗子哥的指路和分享。
  • 2018-12-12 08:48:36

    我帮朋友写了200行代码,给了2500。当时也是一种被尊重的感觉。😁😁