专栏名称: Cocoa开发者社区
CocoaChina苹果开发中文社区官方微信,提供教程资源、app推广营销、招聘、外包及培训信息、各类沙龙交流活动以及更多开发者服务。
目录
相关文章推荐
51好读  ›  专栏  ›  Cocoa开发者社区

一个牛逼的程序员是怎样炼成的?

Cocoa开发者社区  · 公众号  · ios  · 2017-02-13 17:39

正文

来源:知乎

作者:金戈铁马


我是一名学着核物理的电竞选手(肆业学生)转行了做媒体编辑,而后又转行了程序开发,在程序开发过程中也从php后端转向了web前端。也就是,我现在是一名的web前端工程师,职位还算比较高,P7级架构师。


当然,如果非要突出亮点的是,由于在前面相对坎坷的历程中修炼出来的一些个人素质,让我只用了2年不到的时间将自己的开发能力从8K涨到了35K,这几乎是所从事工种的天花板了(所在的城市能给这一工种开出更高薪酬的项目或公司已不多,换一个城市还有更高,只是已落地生根并发了芽,换不了也不打算换了),再接下去我只有自己创业,否则很难顶破这一天花板。


当然,我现在算是在创业,项目在B轮,如果能走到D轮或IPO,或许我可以做到财务自由,再回去玩玩电竞或写写文字。ok,如果你觉得我这种经历还是比较有意思的,那么可以试着往下看,很长。

=============================================================

很长,先撸个大纲:


1999年-2003年,电子科大,肆业。(这个必须匿掉,免得对不起母校和学院)


2001年-2004年,坏学生+《星际争霸》半职业化选手,和不少知名选手有过交手记录,比如jaystar,比如魔兽人皇sky(对,他玩过星际),有过少量胜利的记录,但更多是被虐。


2003年-2010年,IT写手、IT媒体编辑,枪稿作者。工作以后,业余还打比赛,2005年底或2006年初的样子退役。


2008年-2012年,php开发。外包或企业级项目开发维护,杂七杂八的能力从来没有超过8K。


2012年-今天,前端开发。做过4个电商项目,花了约2年时间让自己从8K到35K,有机会拿到50W年薪的offer,不过我喜欢电商,第四个电商项目的创业合伙股东之一。


本来我把Coding那段经历发在这里的 Web前端的路该怎么走? - 职业发展,来回复题主关于web前端开发职业发展的问题,但我发现那个角度似乎写得有点超越了该话题本身的范畴,而这里我尝试把自己过往的经历理一理,去掉那些Web前端方面的行业技术感悟,增加一些转行相关的想法或内心的感悟,来回复本题主“如何转行的”,“转行辛苦吗”这样的话题。


相信,我这种非常规的转行路子,应该有点点你想不到的内容。

=============================================================

一、电竞游戏与颓废的大学


(这一段经历我尽可能写得详细,因为对我个人的影响实在太深远了,除了职业发展外,还深刻地改造着我的性格。但时间已然有些久远,很多事情已经记得不太清楚了,我只能尽力去回忆并把它写下来。)


(一)好学生学坏了!


开始时说过了,我的大学是电子科大,标准的工科学校,如果直接聊我现在的职业,其实不会有多少人认为我是转行的,毕竟从那所学校出来的人好多都是coder,最牛逼的当属丁磊。但并不是每个人都是按正常途径走到现在的,比如我这种。


首先,聊一聊电脑和游戏。2000年左右是电脑开始普及,网吧大量繁殖的时段。而我的大学其实算是电子类工科的典型代表,因此电脑几乎每个寝室都会有,当然我们的寝室也不例外。但当时的学校规定,大一是不允许买电脑的,因为还没有开设计算机语言相关的课程,因此我是大二第一学期才开始拥有自己的电脑的。


当然,大一的时候我还是非常努力的,并在第一学年过了英语4级(因为有高级别的学哥学姐们提醒,要在大一就努力把四级给过了,否则以后就更难过了,过不了就毕不了业的,我还算比较听话),这一年我的成绩还算可以,差点就拿到了奖学金(我记得同专业的前6才有,总共70名的样子),我大概在专业的10名左右吧,高数成绩还行,好像差点满分,记不清楚了。


但是进入大二学期之后,适应了大学并拥有电脑,就深深地热爱上了游戏,比如三角洲、星际。对就是星际,这个当时最火热的游戏,没有之一。暴雪最为成功的游戏之一。我这个人比较争强好胜,特别是在感兴趣的东西上,力争做到极致(对,极致),而这种性格对我后面的职业历程产生了深刻的影响。

星际争霸_百度百科


当然,在星际这款游戏上,我很快地就超越了身边所有的人。当时,热爱这款游戏的同学非常多,因为它真的做得非常优秀,尤其是108版本以后,三种种族的平衡性几乎做到了几乎完美,虽然和后来的许许多多游戏相比,它的画面并不是那么的精美,但是游戏的内涵绝对是即时战略类游戏世上的一座丰碑。


好了,这个游戏的好与不好,如果你没有接触过电竞游戏,那么你也或多或少,知道韩国电竞职业联赛这个玩意,其中《星际争霸》是其中最最悠久的并且是最受欢迎的联赛,曾记得slayerbox和yellow的对决,万人空港。这么说,我只是为了表达这款游戏确实很牛逼,并深刻地影响着我,以及我的人生。


就这样,大二下学期或大三上学期的样子吧,我就在校内网中找不到太多对手了。而科大在星际项目上的选手还是不错的。当然,还是赶不上四川大学那边,尤其是出现了世界级选手MTY(马天元_百度百科)。当然,他获得世界冠军的时候,我还只是无名小卒。


想当时,那时在内网曾经在线人数记录最高似乎达到了500人(没记错的话,科大其实也就5000左右人,除了女生和好好学习的人以外,几乎人人在玩星际了),而我们也举办了内网联赛,3局2胜制,1场2v2,两场1v1。比赛的当晚,基本也是教室空空,搬凳子观摩的人非常多,以至于宿舍的哥们想收门票。


我是第二个赛季才有机会出场的,但我出场的那个赛季(大二下学期,没记错的话)就获得了联赛的冠军,全部1v1加1场2v2,只要我出场的比赛,好像没有输的记录,要么2:1,要么3:0/2:0。


当然,冠军是有奖金的。100块还是50块了,结果请客吃饭多花了100多块,那天我醉了。后来,在内网中已经很少找得到对手了。可能觉得自己太牛逼了,我的游戏中的账户起得非常嚣张,比如“独孤求败”这种,打100场1V1,失利次数一般在5场左右吧。


有时候我建主机别人进来,查一下我的对战记录,别人就直接退出了,或者我进别人的主机,看到我的记录,直接就把我给踢出来。


为了多获得1V1对战机会,以及找到一个相对接近对手,我得自己故意输掉比赛来维护胜负对战记录的平衡,这种感觉其实挺好玩的。


当然,实力接近的对手还是有的,但不超过5个(因为我是5-10人的校队中必然能被领队安排出场的之一,领队是个美女,星际玩得不错),很多时候大家的时间对不准,或许忙着做别的事情,比如毕业设计或有课程安排,等等吧。


(二)一个电竞职业化的梦。

大三那会,校内网已经容不小我这号人了,而那时候《暗黑破坏神2》和《传奇》等网络游戏的崛起,带走了一大波玩星际的,内网的在线人数很快就将下来了。小水潭里面确实很难找不到像样的对手了,我决定去看看外面的世界。


于是我开始走向了网吧,去外网的星际战网寻求对手,比如北碚战网,AG亚联战网(后者尝试收费,没人理会,最后只能又免费,但名声已被玩坏了),没钱买不起正版的就上不了暴雪官方战网,后来补了一个正版,就当玩星际的后付费吧,这点心意还是要给暴雪的。


在外面战网里面,我才知道原来世界其实还很大,高手还有很多很多,我只是内网中相对出色的选手而已,包括好多同学校的玩家(比如nn、ming等国内顶级选手),在一开始经常被虐得体无完肤,而对战的地图已经不再局限于lost temple这一张地图了。高手对决的战术选择更加多变,基本功素养开始影响着向上升级的速度以及高度。

(这张图非常有影响力,几乎是高级别或职业化选手的反复练习的,包括魔兽、星际2


在外面训练,我有一段时间经常不回宿舍,就因为想更多的时间来练习和打比赛。后来,我开始加入外面的业余战队,比如CVA、EF、SVS、yaoyuan(对就是中国遥远星际录象下载网)。还有好多不记得什么名字等,从3-4线选手开始,一直打到2线 -> 1线候补 -> 1线打手 ->和顶级选手对决 ->尝试职业化,从这些业余或半职业化的战队走出去的高级别或职业选手非常多,比如[SVS]F91 (孙一峰_百度百科)


为了证明我没有在吹牛逼,刚刚在遥远星际下载站找了一下,还有2005年我和Jaystar(jaystar_百度百科)的对战胜利记录 http://yaoyuan.com/show.php?SID=39281(好兴奋,得下载回来观摩,好像下不了。。。),2005年的时候,我早已过了巅峰期(表现在APM的下降,多线操作的稳定度下降),当时只是一名普通的业余玩家,为所在的svs俱乐部出战当时中国最顶级的职业选手,1:2落败。


在尝试职业化的道路上,我有很长一段时间昼不伏夜不归,还好身体机能还算不错,但要想成为顶级的选手不付出常人的努力和代价也是不太可能的,但是能否成为顶级选手,其实除了努力外,基本功、天赋甚至运气这种玩意就开始起到决定性作用了,如果基本功不扎实,除非你有超越常人的意识,用你敏锐的意识来弥补基本功层面的弱点,但很多时候是不可能的,因为真正顶级的玩家一定是基本功扎实,而且天赋也都不差的那些人。


当然,和一些天赋极高的选手相比,我的天赋只能算是一般的,巅峰期APM在250-300之间的样子,过了巅峰期这个数字会下降得很快。我曾经带过1个徒弟,那家伙要战术没战术,要意识没意识,但是它的基本功非常不错,手速也超快(没有刻意训练APM一般都在250以上,要知道很多韩国顶级的职业选手也就这个水位),这是好苗子,一定要带带,非常适合做T族选手(我也T族),稍微和那家伙说说一些理念和战术素养的东西,很快就领悟了,而且陪着我一起打比赛,有时候我还让他替我打,那家伙的手速真的很快,通常300++。


后来他超越了我,只是后来的就业压力,工作的压力,我逐渐淡出了这个圈子,我们就很少再联系了。当然了,这种事情我也找不出证据来自圆其说,就当我吹牛吧(那家伙姓陈,单名一个飞字。如果你有机会看到了这篇文章,请务必出来给我作证啊,不枉我带你一场,就看在当年的师徒情分)。


可能很多人无法理解一款游戏为何能有这样的吸引力,但相信现在如果你还在玩魔兽、星际2、lol的玩家,如果你的水平能够看懂职业比赛的,那么你一定能够理解这其中的奥妙。


谁没有过年少的轻狂?

谁又没有过做过那些遥不可及的梦?

梦,其实是不分高低贵贱,

没有尝试过你又怎能知道它实现不了?

但年少轻狂的好日子,

一懂事就结束了!


(这里你可以尝试听听这个配乐,体会我码字的心情——信徒-张卫健,信徒在线试听,MP3免费下载,信徒歌词下载,如果你觉得可以,欢迎点赞或留言)


(三)做选手和做写手的日子。

想成为顶级选手的我,付出了很多努力,但同时代价也有点大了。大二还好,大三开始挂科,挂了好像3科,反正挂到5科就gg思密达,虽然我还没到那个位置。gg你懂吧?GG(竞技游戏礼貌用语(GoodGame)),顶级选手的职业素养之一,很重要,侯秀的玩家也需要具备良好的修养。


真的,没有良好(玩家)素养的玩家是不太可能成长成为顶级选手的。因为只有你有良好的修养,才可能在面对反复被比你优秀蹂躏,或者被技战术水平明显比你低的人出阴招玩弄之后,你无法赢得胜利的情况下,还有勇气并心平气和地称赞对手,shuo "good game!"


这种东西如果不是一个人的修养,我真不知道用什么词来形容好了。所以,顶级的选手一般是谦虚的,有修养的。当然,在你没有到达顶级选手的境界前,或许你会霸道嚣张,比如我当年内网的起一个类似“独孤求败”这样子的ID,够霸气吧?所以,那时我也只是一个普通玩家而已。


当然,我并没有能够成为顶级选手。我的比赛成绩很烂,尤其在成都这种顶级选手云集的赛区(比如MTY、PJ,包括jaystar),分区赛16强是我最高的荣誉记录了。但是,毕竟咱们和世界冠军已经很近,所以有很多机会观摩别人的训练和比赛,以及听听别人如何讨论技战术安排的。


如果说,顶级高手都是寂寞的,就好比独孤求败这种武术玩家。但你会相信吗?我非常肯定这就是事实的全部。


打住!一不小心就把玩家素养这种虚无缥缈的玩意页写出来了,很多人可能不喜欢这种东西,但这种素养会对我往后的人生历程,以及每当碰到挫折和失败时,都能够保持一种相对平和的心态去从容面对。或许,还有成功。这个谁说得准呢?你说对吧?


好吧,说这么多,其实我只是为后面的一些想法或做法做一个铺垫。让我们的思绪时间还是回到那个时刻。


大约2003年的样子。由于投入太多时间精力去打训练和比赛,搞得大四补考需要好多银子(1科200百,3科600百,不算多,但按当时的0收入能力以及相应的物价水平,确实已经很多了),这银子是大约是2个月的日常生活费用,不好意思和家里人说啊,而且家里条件其实一般,我就这样碰上了人生的第一次财务危机。


必须想想办法,没有办法也要想出办法来,我不是很熟悉比赛吗?写战报投稿(比如大众软件)似乎是可行的,再顺着这思路,嗯好像可以写点IT技术类稿件。


大家也都知道,2000年以后的很长一段时期内,由于电脑的大量普及(虽然配置有点儿低),人们对于电脑基础知识的渴望几乎是挂在脸上的,看得见摸得着,因此催生了大量的IT类技术媒体,比如电脑报、大众软件、微型计算机、电脑爱好者等后面还有一大大串死亡的名单。


那时候这些媒体对于技术类稿件的需求量是非常大的,而大家也应该能够理解,电脑游戏玩得好的人,电脑知识还是比较丰富的,为了有游戏可玩那是什么招数都会一点点的,比如拆机、破解,各种软件玩法,等等。当然,我也相当的熟练。


就这样在大四的时候,我通过稿费的方式度过了人生的第一次财务危机。但是一开始写稿的出发点,只是为了解决补考后训练经费不足的问题,并没有想太多,比如上一个月写稿,第二个月可以收到稿费,开始也就是300-500的样子,但是足够个人的训练费用了(那时要谁拖欠我稿费,以后我一定让人问候他祖宗的,没饭吃事小,耽搁训练事大,当时我就是这么想过,肤浅吧)。


(四)人生的第一次转行。

后来稿子质量还算不差,越来越多的编辑及其同行跑过来约稿。到了大四第二学期吧,一方面由于知道自己在天赋及努力层面和别的选手有着巨大的差距之时,知道电竞职业选手这条路走下去是不太可能的了;另一方面同学们也实习的实习,找工作的就去找工作,找不到工作的也努力继续找工作,但我有点点不太一样,我还要好好思考自己未来该怎么走!


为啥?你可以想想啊,我这种不算太好,但也算是较为少有的玩家了,绝对算够努力玩游戏的,当然成绩是不太可能不是很好,能及格就已经谢天谢地了,挂科补考才是正常状态。而且,更为重要的是我的专业主修的是物理学科!对的,例如爱因斯坦的能量方程式、狭义相对论还是能理解的,什么是薛定谔的不死不活猫觉得比较好玩,也努力去理解了,但是这种公式是什么玩意?


我就不太能理解了。因此,当我的同学要么去中科院XX所,要么就读研读博,继续研究量子物理、核物理这种相当高层次的人类活动的时候,我就在思考,未来到底该干什么?很明显,同学们的路子是不太适合我这种准职业玩家的,你说对吧?


当一个人想不明自己该干什么的时候,很容易放纵自己,我也一样。所以那时候我只要有稿费保障支撑饿不死,并且还交得起网吧的网费,我就努力提高自己的玩家素养,打比赛,以至于忘记了有一个挂掉的科目没有去补考,好像是《固体物理学》,记得不是很清楚了。


这个很重要,结果因为这个科目没去考,导致与学位证、毕业证玩了个擦肩。事实上,毕业后一年内还是有机会补拿的,只要按时回去重考,学校还是很通融滴。只是,这个时候的我已经想明白了未来一段时间该干嘛,也就无所谓了,没有这种敲门砖,其实也死不了人的。


这里我打算和在校的同学聊聊人生。毕竟,我觉得自己还有点点资格(老资格哈)。


看到这里,如果你的大学不顺(比如专业不对,学位拿到,甚至毕业证都没有),就参考一下我的历程,那么你就不应该气馁。人生其实有很多种活法,没有拿到毕业证、学位证难道就要去死吗?


尼玛,每当看到因为那些因为专业不好,厌学,逃避,跳楼的人,我只能说这种人就该早点投胎,要不以后也不会有什么出息,甚至是祸害。当然,我也没有出息过,但是从不想祸害谁,我对自己的未来还是充满希望的。人一时半会儿不知道自己干什么,没关系,谁没有脑子短路的时刻呢?


我不就是吗?其实,只要稍微上心一点,学位或毕业证我还是能拿到的,但又能怎样?我应该不可能像同学们那样,有没有那两个玩意其实对我来说并没有本质的差别,但还是得为自己拿不到它们的这种选择负责。


没有这种敲门砖,而且也不可能走职业选手这种路子时,我就努力写稿,能上大学的人即便文字修养再烂,也还是能把话说清楚的,不是吗?其实,如果我没有找到这种路子,以个人的性格也会找到其他路子,比如摆地摊,看网吧,或当服务员这种事情,但上过大学的你会去做吗?,学长我曾经做过。


好了,我有点儿激动了,就是发发牢骚,大家也别介意。


当然了,能顺顺利利把大学念完,这是再好不过的。我并不建议像我这样,不走寻常路,路子顺利一点,挫折少一点,没有什么不好的。每个人的人生都是不一样的,但是经历过了就不要后悔。


因此,我并没有后悔当初的选择,但是遗憾还是有的(后悔和遗憾是不一样的,对吧?),毕竟大学经历并不完整,但我也和大家一样,上过大学,也不算太差吧(我出生的地方,高考怎么也要有600分才能上,我的语文其实是不及格,其他方面就得多考一点点来补齐),这点我一定不会否认,你也不能否认过我有完整的大学经历,对吗?


所以,大学经历很重要,不管你最后的成绩是什么,经历过是最重要的,成绩真的并不重要!


还是回来说我自己,转行是必然的,因为研究不了核物理这种高深莫测的玩意。当写手并且还做得可以,那我就继续好好写东西,即便高考的语文属于不及格的水平,就选择对文学修养要求不那么高的IT媒体。于是我去了北京,在某个IT媒体里面做了编辑,但并没有做多长时间。

二、我的程序人生


(一)程序人生的起点。

在离开媒体之后,我并没有找到下一家,只是想着逃离IT媒体,遵照自己内心真实的想法去做一个必然的选择,压根没有考虑过我自己有多少积蓄,这种做法可能很多人以为是不可取的。


事实上,在任何一次人生的重大抉择上,我一直都只是遵照内心真实的想法走的,不会因为谁而改变自己的选择,包括我的父母兄弟,甚至是我的爱人。在这里,我想对她说声抱歉,有时候不是我不在乎她的感受,而是人应该按照内心真实的想法去做选择,才会为自己的选择负责,而这种负责的态度促使你更加投入和热爱上你的选择,而这样你才可能那个做得更好,更出色。


也就是说,如果人生再来一次,或许我还是选择就读电子科大,还是会选择竞技游戏(即便不是星际,也可能是魔兽,抑或是其他的),而转行进入IT媒体并不是我真正喜欢的,我并不是特别喜欢文学。到目前为止我没有看过文字版本四大名著,如果真正喜欢文学的人,这种事情是不太可能发生的,不是吗?


只是当时的我并没有太多选择的余地,但是玩弄电脑硬件确实是我喜欢的,因此,我对于转行做硬件编辑是不会有抵触的,这也是会为之奉献青春的根本原因。但事实上,我也并不是对电脑硬件一往情深,其实是我一直喜欢程序开发,这在大学以前就已经开始了。


也就是,我就读高中的时候,高二有DOS下编程的这门课程,涉及的语言是basic语言。我曾经代表学校去参加过省级的编程比赛,并获得了二等奖。这种爱好一直持续到上大学,在那里我一直都有研究basic语言,只是不知道它能用来干什么而已。


而游戏这玩意,一般喜欢程序开发的人都会喜欢,并且都玩得比较投入玩得比较好。相信很多人也是和我一样的,至于喜欢玩游戏还是更喜欢写程序,这谁?说得准呢?谁能把更爱老婆还是更爱老妈这个样的题目算出一个合理的解吗?


显然,我是不能的。也就是,我既热爱游戏,也热爱编程,就这样没为什么。可能是先喜欢了游戏,然后想弄一款自己玩得不厌的游戏而爱上了编程,这个解析应该比较靠谱。但编程一时半会还弄不出一款游戏的时候,却发现有一款竞技游戏竟然让我找到了百玩不厌的感觉,而让我陷入了追逐这一游戏极限的路途上,而遗忘了我曾经还是非常喜欢编程的。


这其实才是我内心最原始最纯真的想法。其中的各种坎坷和挫折,甚至放弃学业这种事情,让我备受父母的不理解,甚至直到我父亲离开人世的那一刻,才找到了我这种原始而纯真的爱好。


然而,不管过程多麽复杂,只要人尊崇了内心真实的想法去走,还是会找到原点的。


只是,这个起点稍微晚了一点,并且起步时刻急功近利了一点。


(二)冒险的创业和一个说要养你的女人。

当然,这种觉悟其实在决定转行的那一刻是不明白的,我只是按照内心的最真实的想法做了一个简单的决定,就这样,没有那么多为什么。


当从媒体出来之后,好些个硬件厂商给我发了邀请,让我考虑去做硬件相关的事物,比如硬件研发、运营推广等。也有部分的网络媒体,例如太平洋、泡泡网之类的让我考虑,但是我之前说过了,我只是单纯想玩玩硬件,为这些硬件书写评测文字其实并不是我的目的。


于是,我当时非常果断地拒绝了这些邀请或机会。做了一个非常冒险的决定,自己去尝试创业,那时候我自己的积蓄只有不到2W元,想做的项目是智能家居方案设计。


为什么要做这个决定?


其实是受到一个亲戚朋友的做安防快速发家的提示,而安防系统是智能家居中非常重要的一环,并且我做IT硬件编辑好久了,感觉到硬件智能化这种趋势应该快要到来了,所以我想尝试这个方向。然而,这个智能家居需求和家居装修紧密相连了,而家居设计又是房地产的相关产业,投入成本是超乎想象的。


而我只有那么一点点积蓄怎么可能玩得转这样的游戏呢?但是,顶级玩家在面对高风险高收益的时候,可能会做一些冒险性的尝试。你没有试过怎么知道行不行,连尝试的勇气都没有是永远成为不了高级玩家的。就这样,我向家里借了10多万进行了一次风险性很高的创业。


当然,不管过程怎么努力,我就是失败了,不到3个月时间。


其实,如果重新来一次,或许我还会做同样的事情。有时候性格这东西真的很难改变,而什么样的性格就决定了你在相同机会和条件下,都基本上会做出相同的选择。但是,这个过程中我并没有任何收益,除了损失看似不菲的家庭积蓄,但是让我知道了创业并不是那么简单,别人看起来能够轻易成功的事情,这背后一定有你不知道的努力和成功条件,运气其实决定不了什么。


在我创业的过程中,我深爱的那个姑娘一直陪伴在我身边,并且是辞职掉手上的工作,来到一个完全陌生的地方,陪着一起吃咸菜干饭,很傻吧!而且,创业的不易与困惑,让我一度失去了理智,做了一次我至今还悔恨的事情。这事不能说,只能自己一辈子记着就可以了,她应该知道的。


当要决定结束掉这场昂贵的(相对我而言)创业游戏时,我还是比较坚决的。对于一个游戏玩家而言,面对失败是非常重要的素养,这方面不能说修炼成仙,也算是个半仙了吧。因此,我其实是非常坦然的。


当时,我们只带了1万多块钱和一堆没有价值的智能家居产品回到广州。我们面临着生活没有着落的压力,还好我们原来租下的房子还在,至少有个落脚的地方。但是,两个人没有工作,在广州这种地方不能支撑多久的。还好她很快又找到了工作,2个星期不到吧,一份营销策划性质的工作,她其实很不喜欢,只是为了有饭吃,没有也不敢有太多其他的想法,而我这个时候还没想好自己该干嘛!


我还没有找到想要工作,在我看起来有点意志消沉的时候,她居然对我说,“别担心,大不了我养着你就是了!”要知道这时候她那份工作收入只有4K的样子,除去房租水电,两个人最多只够解决吃饭问题。


当时我愣了,真的愣住了!换作是你估计也会愣了吧?尼玛,男人碰到这样的女人不赴汤蹈火怎能行呢?


她其实很漂亮,娃娃脸,笑起来两个明显的梨涡,站在人群里面至少打80分吧,如果她稍微化妆一下,应该不会低于90分,只是她从来素颜。她是潮汕人,那边的女人都是以朴素、持家见长的,而且她的文学修养很高,古今中外的知名诗词很少有她不知道的,基本可以信手拈来。男人如果有幸碰到这样的,千万别手软。


其实,我不知道她为什么选择我,反过来,估计连我自己都不会喜欢我自己,没文化,家庭修养还不好,而且喜欢玩游戏,纯粹痞子一个。不说她,还是说我自己吧。


当时我还不能特别肯定未来要做什么,但是编辑素养还在,原来的媒体资源合作关系什么的还是保持得比较完好的。吃饭还不会成为什么问题,我接下来又重新给电脑报、电脑爱好者等媒体供稿,有几个月基本上我包揽了几乎一半以上的版面。


那时候,好几家IT媒体的专题都出自我手,合作的编辑应该相当轻松。选题我帮出,稿件也由我来写,而且稿件格式配图一定是到位的,错别字都比其他作者少,反正基本拿到稿件就直接发表了,甚至尼玛后来我看到的一些低级错误都原班不动地刊出来了,真不知道编辑和校对的人是干毛的。有兴趣可以去找找,2010年前后的IT刊物,就是这个知乎ID。


就这样吧,一个月的稿费还是有5K-6K的样子,并不比纯做编辑少,而且工作时间是自由的。也就是我又转行,回去做了写手这份相当熟悉的工作而已。


既然工作是自由的,那么心底里面喜欢代码的原始情节就自然而言地冒出来了。我又开始研究程序开发了。也就是,接下来的才算是我真正的程序人生。


(三)外包和企业项目的痛苦历程。

其实,外包项目的经历我不太想拿出来说的,但是有些话或一些看法可能不是那么客观,或者是非常主观臆断的。如果你是外包项目或相关公司的老板,可能在某种程度上是一种伤害。


但得先强调,我并不是否认外包这种服务形式,它是有存在的必要的,也是有市场的,而是希望从个人的角度来给这里面的人们一些思考或反思,不管你是企业主,还是从业者。


这里的时间是2011年前后的样子,我进入了一家营销传播性质的公司。这家公司主要业务是做互联网营销的,有很多自创的营销传播理念,但其实没什么营养,就是用自己的术语将别人提出来过的理念进行一层封装,然后拿出去到处销售。说白了,这是一家公关公司,以各种无底线的手段挣钱为第一目的。


当然,我进去并不是要做互联网营销推广,虽然我觉得自己有这种能力,而是做一个项目外包的开发和维护。这家公司的客户很复杂,有大公司也有中小型公司,也就是有大客户部,也有小客户部。我是小客户部下的一个子部门,做企业网站开发和运营。


主要的日常工作其实就是别人接单回来,你负责把东西弄出来,当然有人会来协助你完成psd设计,提案那种事情不属于开发人员的工作,但也会参与进去,因为需要我们提供专业的意见或建议,所以有时候也会跟着接单的同事一起跑。


当然了,我从来没有做过业务,但是相对丰富的媒体经验让我或多或少在与陌生的人沟通时显得从容淡定很多,特别是我还是一名技术人员。事实上,绝大部分客户并不知道开发一个企业网站需要些什么,只会问XXXX元能做一个网站吗?像xxx那样子的?为了尽可能提高客户对于网站开发的预算,谈单的业务员会想尽一切办法,以获得更高的提成。


既然是一切办法,那么我们这种人的价值除了将网站开发出来之外,还要提供一些战略威慑的作用,只要客户接受了第一次服务,业务员或公司层面会有很多种手段预设障碍,或故意预留程序或服务器陷阱,让用户的网站处于不稳定的状态,比如时不时就打不开,某个客户没有深究的功能是不能用的,只是在验收时不注意到的话。


当用户发觉不太对,就会问业务员这是怎么回事?业务员就可能让我们这些技术人员从服务器运维、网站安全、流量、功能复杂度等方面来告诉客户,反正一定要显得你很专业,而让用户自己觉得他的需求的确很难搞,进而价钱来讲一些半成品或故意预设的功能点给弄好或开放给客户,事实上,这些东西或功能点其实一早就做好了,并且可能是完善的,只是用技术的手段将它屏蔽起来而已。


就这样,一些客户一开始可能只希望3-5K的预算做一个简单的展示型网站,最后可能却要花更多的钱来获得本应该获得功能。我相信,这种做法外包类型的公司里面一定不会少,不是吗?


当然,如何才能避免这样的事情发生?


很显然,这个不能单纯地将责任归结到提供外包服务的一方,可能从公司层面要挣钱是应该的,只是我经历的这家公司做得更加出位而已,这个和它的企业类型或理念有关,营销推广是主业,而外包项目开发是副业,副业能多挣一些就是一些,没有考虑过手段有多麽高尚,那么业务员只会为了多拿提成而不择手段。


事实上,需要外包服务的一方在没有接受某家的服务之前,它还是绝对主动的,可以多加对比后再做选择,或者最好的就是有一个对于web网站开发有些许了解的人来提供帮助或跟进这个事情,否则一旦你接受了任何一家乙方的服务,就可能陷入我上述所说的那种被动。


简单滴说,没有付钱之前你就是大爷,付钱之后就是孙子。在信息不对称的情况下,掌握信息多一点的乙方就是想怎么玩你就怎么玩你。在这种利益关系中,技术员是信息是否对等的掌控者,很多时候就看你对于金钱的态度了。这时候你是这场游戏事实上的上帝或恶魔。


如果你是没任何底线的,那么就是让信息对等的绝对偏向于所在企业,那么业务员会非常喜欢你,公司也会喜欢你。更好玩的是,客户一般对业务员恨之入骨,而一般对于有技术的人还是比较尊重的。


如果你是有底线的,那么你就尽可能让客户知道里面可能存在的陷阱,或善意地提醒他学习一些相关的知识,让双方的信息尽可能对等起来,这样就可以最大限度地避免后续消费陷阱,但是业务员可能是不喜欢甚至是讨厌你的,而公司可能会处罚你。


我就是被处罚的,不到2个月就当成以没有良好的职场素养、不维护公司利益的害人之马剔除出队伍。在这里其实,我只是为了获得一份php技术开发的工作经验,而这个结果显然是达不到目的的。


因此,我才会在 Web前端的路该怎么走一文中强烈建议程序开发者“不去外包公司,不去外包公司,不去外包公司”的原因。


事实上,对我而言这并非一件坏事,因为如果选择了维护公司利益,或许会获得一些短期的利益,获得一些项目开发锻炼,但是这种对于一个人的成长是有害的,可能永远也不会在程序开发上有太高的修为,因为我已经变成了一个心术不正的码农。


还好,我没有那样做,但是换做是别人,可能没有多少人能够抵御金钱的诱惑吧?


事实上,这也是优秀的玩家或编辑素养的一部分。优秀的玩家一定是正直的,良善的,尊重对手,敬畏游戏的,而优秀的编辑或记者也一定具备类似的素养,而我还一直做得不错。


这家企业的经历很短暂,当然我不会让它出现在我的简历里面,就当没有发生过就是了,两三个月,随便说一个理由就能过去了,比如休假,多简单啊,或将上一家或下一家的离职或入职时间挪动一点点,就磨平了,这真不是什么大事,做人别那么死板,好吗?


后来我加入了一个人物专访性质的平煤,但负责网站业务的开发和运维。这家公司其实也是比较奇葩,老板是个河南人,让我负责建立一个海内外华人华侨沟通联系的平台,因为它是做人物专访的,想把专访内容放到网站上和杂志上,但其实这个老板没什么钱,就希望利用各种手段让人接受采访(一个专访好几万),只因为他手里拿着一个很高大上的刊号。


其实我的工作就是用一个开源程序制作一个网站,并负责网站的运营和运维。我在这里干了7个月的样子,具体时间忘记了,直到到2011年下半年。但问题是就这几个月,我被拖欠了3个月薪资,1万多吧,到现在还没给,这样让我对河南人印象差到了极点(我没有地域歧视,只是表达个人受伤后的一些情感)。


这个项目完成并上线,我用大约3个月时间将它的pr值运作到了PR5和百度指数1,日流量还是有几千的,因为有不少高质量的杂志任务采访方面的原创吧。不管怎样,让我或多或少主动了解了开发以外的一些事务,比如SEO。


技术开发层面,对于php的运用其实也只是一个入门,刚好可以用来完成相关逻辑,能做简单二次开发的样子吧。但是,没钱的活谁都不会傻傻等死吧?


(四)电商项目,前端开发。

这里的时间是2011年8月的样子。


我来到了转型前端开发的那家公司,一家知识产权代理交易起家的公司,是一家很有理想的企业。

在这里,让我对一个互联网项目从立项、招聘、开发、迭代等一些列流程有了完整概念,同时也是让我开启前端快速升级模式的起点,而且时间还很近,很多记忆仍然犹新。


第1个电商项目:


我进来这家公司的时候并不是以开发的身份,而是其内部刊物的主编,但由于老板对于这本刊物比较看重,想弄得声势浩大一点点,而且需要做一个同步的网站平台。


如果你详细看过我之前的经历,是否觉得我的技能点与这一需求是完美契合的呢?所以,我很轻松就进入了这家公司,月薪就税前7.5k,到我离开的那一刻都未曾变化过,这样坚持了2年多。但是,这家公司一定是我职场生涯中最最重要的一环,没有这段经历,我可能就没有转型前端的机会,但是过程并不是很美好。


后来,前前前东家要做个电商交易平台,一时半会找到合适的负责人,感觉我还看得过去就被赶鸭子上轿转做了项目主管,负责整个项目基础设施建设,其实就是招人和分配任务等,不过干得最出色就是切图和切图,虽然当时开发方式还属于未开化的刀耕火种,于是乎将自己定位成前端是比较靠谱,而php的活就兼顾一点是一点。


还好,虽然技术比较烂,但是那个项目发展得比较顺利,拿到了A轮(号称3000W美金,水分可能比较大,不过那也是两三年前的事情了,按互联网的3个月=1年的节奏,感觉真的好遥远),有钱之后引入了一批更牛逼的开发人员(主要是前端和php),虽然是我的手下,但那波人能力在当时来看绝对是很强,我也从来没敢把人当手下,甚至很多问题都得向人家请教,技术不行就要虚心请教,这没什么好害羞的。


人家确实也比较牛逼,带来一些先进的前端开发理念,比如前端构建、前端MVC、纯静态Html+Restful api构建web网站的开发方式。这些前端开发理念在2012年-13年那会儿绝对算是非常先进的技术,那时NodeJS还未成熟,而Grunt也才出来不久,fis可能还在萌芽阶段,而各大互联网公司对于NodeJS也只是内部尝试探索。


后来,随着项目发展,前端的需求越来越复杂,需要尝试MVVM、SPA的前端开发技术了,而我作为当时项目的前端负责人,也需要对前端代码做了重构才能适应项目的发展要求。


这是我做的第一个的大规模的前端项目重构,当时的技术总监评估给到我的时间是10天,但我拖到了20天才基本完成,基本天天9-10的节奏。从现在的角度看,绝对是一次失败的重构经历。但是,个人从其中获得了很多有价值的经验,让我有机会尝试了许多新的前端技术,包括:


1,构建工具使用gulp,那时才刚出来不久,之所以选择它也就是图个新鲜,这是前端开发的通病吧;

2,基于less预编译的css模块化,watch监控自动编译;

3,基于gulp.spritesmith的雪碧图自动构建,根据watch监控雪碧图目录,自动按目录生成sp图和一份less,less保存到CSS的模块中,进而自动触发less的自动编译;

4,js模块化是AMD方案,模块加载是用requireJS。我们只做了一点点小改进,那就是通过gulp自动生成require.config(开发和生产各一份),第三方js模块的路径根据一定规则自动构建,而不是手工配置。


js模块按目录的方式打包,打包后的文件带上MD5戳,非覆盖式发布,解决AB版迭代和缓存问题。现在看来那种按目录整体打包方式是相当粗暴的,代码冗余非常严重,但无奈当时的水平也就这样而已。不过呢,将需要重复手工配置的有规律的前端资源调度实现自动化,其实就是前端工程化的雏形,至少是给我打开了前端工程化探索的大门。


事实上,这种开发思维不是当时的我所能想到的,而是项目所引入的前端人才提供的开发思维。非常感谢这位同事,虽然一起共事的时间只有短短3个月,而我们也只是点头之交,甚至你现在还可能鄙视那时技术那么烂的我,但却还当着你的领导。不管怎样,感谢你让我看到了前端开发往深入发展的另一种可能。


应该说在很多大公司的互联网公司里面,前端开发在很多年前已经有成套的而且相当成熟的前端工程化开发体系,但对我个人或那个项目的而言,这种方式在当时绝对是非常非常新鲜的,以至于我们那个团队的人逐步离开后(那波人中的前端现在基本也是前端领域的能手了,有在YY的有在VIP也有在UC的),接手的前端无力接管这种不太一样的开发模式,而又只好用原始的方式来生产新版的前端静态资源。当然,绝对不是我留了什么后手,而是交接了一个月多,也找不到能够很好理解的前端。


大家别笑话,现在还有很多创业型项目的前端开发模式还依然停留在刀耕火种的开发模式下,包括很多已经名声在外的电商。在中国,电商从来都不是以技术为第一生产力的,技术很重要,但却没技术人想的那样重要,大家一开始都是以实现业务逻辑为前提,先把业务跑起来,领导管你用神马开发模式,老是不能按时出货就得滚蛋。


有兴趣,大家不妨研究一下一些知名电商的前端代码,没有模块化的知名项目还不少(包括上市的项目),而甚至还有各种裸奔的代码在线上跑的,当然这些其实是创业期发展过快的后遗症,发展太快就可能没有很好的契机做基础设施建设,那么现有的业务代码过于复杂,后来的人只能在原来的基础上改改改成能满足业务需求就万事大吉了。这其实是国情决定的,业务需求的实现大于一切,电商业务发展就像高速的列车,一旦开动起来就很难停下来。


这种情况下前端代码模块化和重构难度就非常非常大了,你见过哪个师傅敢说给一辆高速跑的列车换零件的吗?这种坑不是一般人有信心往里面挑的,谁碰谁倒霉。另一边却是代码生产和发布效率的日渐低下,可能只是改一段静态说明文字抑或是修正一个小bug,发布流程都要跑上个把星期才敢放上线,但是大家不也活的有滋有味的嘛。从业务的角度,技术真没那么重要了。


三、前端开发者快速升级通关的一些个人经验总结:


这纯属个人经验,不一定适合你。还是那句话,如果感兴趣就往下看,不强求。


在评论里面,我说了,从转行做全职前端,从切图开始升级发展到做电商前端架构,只是花了2年时间。不管你信不信,这绝对是事实。当然,我是有好几年php+前端混合开发基础的,不算是从白丁开始的,但转行那时候的前端技能最多就是初中级别,只会用jq插件完成逻辑。


我现在的好几下属,做前端的时间都比我长,有个已经5年了,但依然找不到方向。我平时在招聘前端时,面试的前端好多都干了3-5年了,还是那样。不是我想笑话这样的人,或绝对自己真的可以吹牛逼,我只是觉得可能是大家没有看清楚前端这个工种的未来,没踩准快速升级通关的节奏。当然,也可能你还不够努力。反正,种种原因吧,各有不同,我只能说我自己的。


这两年,我手机里面全部是前端开发书籍,没有100本页有50本,背包里面总有一本关于技术开发的书籍。每天除了上班干活,吃喝拉撒睡外,全部时间几乎全部放在看书写代码写demo上面。以至于忽略了很多事情,包括对家人的照料。这些努力是你看不到的。当然,除了自身努力外,我确实也踏对了前端开发迅猛发展的节奏,比较早地接触了Nodejs,比较早地看到了前端构建前端工程化的价值。


不过,有时候一个人的价值往往不仅仅是看他的代码能力有多少,经验有多少,还要看你能号召多少人跟你一起干。就好比一个人的财富,并不只是他所拥有的银行存款、固定资产或者股票等等他直接控制的财富的总和,而是除了这些意外,他能调动多少资源,所有他能调动的资源页都是他的财富。


技术人做到一定程度之后,再往上发展,需要有一定的号召力,因为绝大多数企业不会给你开那么高的薪酬,甚至给你股份期权。当有几个人愿意跟随你的时候,那么在找项目谈价格时,就会掌控议价的主动权。因为,你已经不是一个人在战斗,你的价值绝对不是以一个人的开发技能来衡量的,而是由跟随你的团队的整体实力来决定。


当然,有人愿意跟着我,是因为这两年我除了一直站在代码开发的第一线外,还坚持了以下几样东西:

1,从不藏私。把你知道的东西,毫无保留地分享给你周围的同学,记得是毫不保留。知道多少,分享多少,这样才会不断促使自己去知道的更多。技术层面不存在教会徒弟饿死师傅这种事情,如果你抱有这样的想法,那就太狭隘了。


2,对代码要有洁癖。洁癖到什么程度?包括一个空格,一个标点符号,不要觉得无所谓,一定要觉得有所谓。要追求能力极限上的完美,包括逻辑判断的严谨、文档的完善、代码格式的完美。


3,言出必行。一个需求来到我这里,只要我有答应别人的时间节点,不管如何也要想尽办法把它实现了。如果确实无法按时,一定提前沟通,但二次调整的时间一定一定要准时,下死命也要完成。事不过三,不给自己留任何后路或找理由。


总之,言出必行既是项目管理能力问题,也是个人诚信问题,这样团队里的其他人才会愿意相信你,依赖你,跟随你。


其实,很多时候技术和经验积累到一定程度之后,业务处理上的能力或技巧,大多数人的差距其实很小的,但拉开差距的往往不是技术本身,而是对待人,对待技术,或对待需求的态度不一样。