导读:从事编程这个事可以做到,完全靠自己的手艺、不依赖任何人或公司去生活的。但道理我都懂,怎么做才是关键。本文摘自陈皓(左耳朵耗子)在极客时间 App 开设的付费专栏“左耳听风”。
正文
shell
1 写在前面
程序员用自己的技术变现,其实是一件天经地义的事儿。写程序是一门“手艺活儿”,那么作为手艺人,程序员当然可以做到靠自己的手艺和技能养活自己。
然而,现在很多手艺人程序员却说自己是“码农”,编码的农民工,在工作上被各种使唤,各种加班,累得像个牲口。在职业发展上各种迷茫和彷徨,完全看不到未来的希望,更别说可以成为一个手艺人用自己的技能变现了。
从大学时代帮人打字挣点零花钱,到逐渐通过自己的技能帮助别人,由此获得相对丰厚的收入,我在很早就意识到,从事编程这个事可以做到,完全靠自己的手艺、不依赖任何人或公司去生活的。
这对于程序员来说,本就应该是件天经地义的事,只是好像并不是所有的程序员都能意识到自己的价值。这里,我想结合我的一些经历来跟你聊聊。当然,我的经历有限,也不一定全对,只希望能给你一个参考。
2 学生时代
我是 1994 年上的大学,计算机科学软件专业。在 1996 年上大二的时候,因为五笔学得好打字很快,我应征到教务处帮忙,把一些文档录入到电脑里。打了三个月的字,学校按照每千字 10 元,给了我 1000 元钱。
由于我的五笔越打越快,还会用 CCED 和 WPS 排版,于是引起了别人的注意,叫我帮忙去他的打字工作室,一个月收入 400 元钱。我的大学在昆明,这相当于当地收入的中上水平了。
后来,1997 年的时候,我帮一个开公司的老师写一些 MIS 软件,用 Delphi 和 PowerBuilder 写一些办公自动化和酒店管理的软件。一年后,老师给了我 2000 元钱。
因为动手能力比较强,当时系上的老师要干个什么事都让我帮忙。而且,因为当时的计算机人才太少太少了,所以一些社会上的人需要开发软件或是解决技术问题也都会到大学来。基本上老师们也都推荐给我。
还记得 1997 年老师推荐一个人来找我,问会不会做网页?5 个静态页,10000 元钱。当时学校没教怎样做网页,我去书店找书看,结果发现书店里一本讲 HTML 的书都没有,只好回绝说“不会做”。一年后,我才发现原来这事简单得要命。
3 初入职场
到了 1998 年,我毕业参加工作,在工商银行网络科。由于可以拨号上网,于是我做了一个个人主页,那时超级流行个人主页或个人网站。我一边收集网上的一些知识,一边学着做些花哨的东西,比如网页上的菜单什么的。
在 2000 年时,被《电脑报》的编辑看上了,写来邮件约我投稿。我就写了一些如何在网页上做菜单之类的小技术文章,每个月写个两三篇,每个月有个 300 元左右的稿费,当时我的月工资 600 元。
现在通过文章标题还能找到一两篇,比如《抽屉式菜单的设计》,已经是乱码一堆了。大学时代被人请去做事的经历对我影响很大,甚至在潜意识里完全影响了我如何规划自己的人生。虽然当时我还说不清楚,只是一种强烈的感觉——我完全可以靠自己的手艺、不依赖任何人或公司去生活。
我想这种感觉,我现在可以说清楚了,这种潜意识就是——我完全没有必要通过打工听人安排而活着,而是反过来通过在公司工作提高自己的技能,让自己可以更为独立和自由地生活。
因而,在工作当中,对于那些没什么技术含量的工作,我基本上就像是在学生时代那样交作业就好了。我想尽一切方法提高交作业的效率,比如,提高代码的重用度,能自动化的就自动化,和需求人员谈需求,简化掉需求,这样我就可以少干一些活了……
这样一来,我就可以有更多的时间,去研究公司里外那些更为核心更为有技术含量的技术。
在工作中,我总是能被别人和领导注意到,总是有比别人更多的时间去读书,去玩一些高技术含量的技术。当然,这种被“注意”,也不全然是一种好事。
2002 年,我被外包到银行里做业务开发时,因为我完成项目的速度太快,所以,没事干,整天在用户那边看书,写别的代码练手,而被用户投诉“不务正业”。我当然对这样的投诉置之不理,还是我行我素,因为我的作业已交了,用户也就是说说罢了。
同年,我到了一家新的很有技术含量的公司,他们在用 C 语言写一个可以把一堆 PC 机组成一个超级计算机,进行并行计算的公司项目。
当我做完第一个项目时,有个公司里的牛人和我说,你用 Purify 测试一下你的代码有没有内存问题。Purify 是以前一个叫 Rational 的公司(后来被 IBM 收购)做的一个神器,有点像 Linux 开源的 Valgrind。
用完以后,我觉得 Purify 太厉害了,于是把它的英文技术文档通读了一遍。经理看我很喜欢这个东西,就让我给公司里的人做个分享。我认真地准备了个 PPT,结果只来了一个 QA。我在一个大会议室就对着她一个人讲了一个半小时。这个 QA 对我说,“你的分享做得真好,条理性很强,也很很楚,我学到了很多东西”。
有了这个正向反馈,我就把关于 Purify 的文章分享到了我的 CSDN 博客上,标题为《C/C++ 内存问题检查利器—Purify》(登录极客时间 App 看外链)。可能因为这个软件是收费的,用的人不多,这篇文章的读者反响不大。
但是,2003 年的一天我很意外地接到了一个电话,是一个公司请我帮忙去给客户培训 Purify 这个软件。IBM 的培训太贵了,所以代理这个软件的公司为了成本问题,想找一个便宜的讲师。
他们搜遍完整个中国的互联网,只看到我的这篇文章,便通过 CSDN 找到我的联系方式,给我打了电话。最终,两天的培训价格税后一共 10000 元钱,而我当时的月薪只有 6000 元钱,还是税前。这件事儿让我在入行的时候就明白了一些道理。
要去经历大多数人经历不到的,要把学习时间花在那些比较难的地方。
要写文章就要写没有人写过的,或是别人写过,但我能写得更好的。
更重要的是,技术和知识完全是可以变现的。
现在回想一下,技术和知识变现这件事儿,在 15 年前我就明白了,哈哈!随后,我在 CSDN 博客上发表了很多文章,有谈 C 语言编程修养的文章,也有一些 makefile/gdb 手册性的文章,还有在工作中遇到的各种坑。
因为我分享的东西比较系统,也是独一份,所以,搜索引擎自然是最优化的(最好的 SEO 就是独一份)。我的文章经常因为访问量大被推到 CSDN 首页。因此,引来了各种培训公司和出版社,还有一些别的公司主动发来的招聘,以及其他一些程序员想伙同创业的各种信息。了解到,出书作者收入太低(作者的收入有两种:一种是稿费,一页 30 元;一种是版税,也就 5% 左右),而培训公司的投入产出比明显高很多后,我开始接一些培训的事(频率不高),一年有个七八次。当时需求比较强的培训主要是在这几个技术方面,C/C++/Java、Unix 系统编程、多层软件架构、软件测试、软件工程等。
我喜欢做企业内训,还有一个主要原因是,可以走到内部去了解各个企业在做的事和他们遇到的技术痛点,以及身在其中的工程师的想法。这极大地增加了我对社会的了解和认识,这对我来说是非常重要的。而同时,让我这个原本不善表达的技术人员,在语言组织和表达方面有了极大的提升。
其间也有一些软件开发的私活儿,但我基本全部拒绝了。最主要的原因是,这些软件开发基本上都是功能性的开发,我从中无法得到成长。而且后期会有很多维护工作,虽然一个小项目可以挣十几万,但为此花费的时间都是我人生中最宝贵的时光,得不偿失。
25~35 岁是每个人最宝贵的时光,应该用在刀刃上。
4 职业上升期
因为有了这些经历,我感受到了一个人知识和技能的价值。我开始把我的时间投在一些主流、高级和比较有挑战性的技术上,这可以让我保持两件事儿:一个是技术和技能的领先,二是对技术本质和趋势的敏感度。
因此,我有强烈的意愿去前沿的公司经历和学习这些东西。比如,我在汤森路透学到了人员团队管理上的各种知识和技巧,而亚马逊是让我提升最快的公司。虽说,亚马逊也有很多不好的东西,但是它的一些理念,的确让我的思维方式和思考问题的角度有了质的飞跃。
我开始对外输出的不仅仅是技术了,还有一些技术价值观上的东西。而从亚马逊到阿里巴巴是我在互联网行业的工作经历,这两段经历让我对这两家看似类似但内部完全不同的成功大公司,有了更为全面的了解和看法。
这两种完全不一样甚至有些矛盾的玩法让我时常在思考着,大脑里就像两个小人在扳手腕一样,这可能是我从小被灌输的“标准答案”的思维方式所致。其实,这个世界本来就没什么标准答案,或是说,一个题目本来就可以有若干个正确答案,而且这些“正确答案”还很矛盾。
于是,在我把一些价值观和思考记录下来的同时,我自然又被很多人关注到了,还吸引很多不同的思路在其中交织讨论。而从另外一方面来说,这对我来说是一个很好的补充,无论别人骂我也好,还是教育我,都对我有帮助,大大地丰富了我思考问题的角度。
这些经历从质上改善了我的思考方式,让我思考技术问题的角度都随之有了一个比较大的转变。而这个转变让我有了更高的思维高度和更为开阔的视野。
可能是因为我有一些“独特”的想法,而且经历比较丰富,基础也比较扎实,使得我对技术人的认识和理解会更为透彻和深入。所以,也有了一些小名气。来找我做咨询和帮助解决问题的人越来越多,而我也开始收费收得越来越贵了。这里需要注意的是,我完全是被动收费高的。
因为父亲的身体原因,我没有办法全职,所以成了一个自由人。而也正因如此,我才得以有机会可以为好多公司解决技术问题。2015 年,有家公司的后端系统一推广就挂,性能不足,请我去看。
我花了两天时间跟他们的工程师一起简单处理了一下,直接在生产线上重构,性能翻了 10 倍。虽然这么做有点 low,但当时完全是为了救急。公司老板很高兴,觉得他投的几百万推广费用有救了,一下给了我 10 万元。我说不用这么多的,1 万元就好了,结果他说就是这么多。我欣然接受了,当时心里有一种技术被尊重的感动。
2016 年,某个公司需要做一个高并发方案,大概需要 2000 万 TPS,我给他们做了一个。但是他们只能实现到 1200 万 TPS 左右,又把我请去了。
我花了两天时间做调研,分析性能原因,然后一天写了 700 多行代码。因为不想进入业务,所以我主要是优化了网络数据传输,让数据包尽量小,确保一个请求的响应在一个 MTU 内就传完。
测试的时候,达到了 2500 万 TPS。于是老板给了我 20 万。
这样的例子还有很多。上面的例子,我连钱都没谈就去做了,本来想着,也就最多 1 万元左右,没想到给我的酬劳大大超出了我的期望。
这里,我想说的是,并不是社会不尊重程序员,只要你能帮上大忙,就一定会赢得别人的尊重。
所以,我和一些人开玩笑说,我们可能都是在写一样的for(int i=0; i