编程于我,最初是星辰大海,进而如获至宝,也曾不胜其烦,最后如影随形。我对编程的热爱,起于对编程本身的热爱,终于(但非止于)对探索世界的热爱。
小时候家里穷,没有钱买电脑,更没机会学习编程,看着别人的小孩都在熟练的玩电脑,在漂亮的软件上面点来点去,于是我再心中种下一颗种子,有朝一日我要自豪的告诉别人,你们正在用的软件,是我开发的(不过至今仍未实现这个心愿)。于是在一个十几岁少年的心中,有了一片星辰大海。
我接触编程是2007年,当时在读高中。那时候,没有什么培训班,也没有课外加分,有的仅仅是一个中学老师,以及其因兴趣开设的编程兴趣小组。那时候,我学习编程的主要途径不是网络,而是一本1996年清华大学出版社出版的《Pascal程序设计》。
当然,选择pascal并不是我本意,因为我当时的兴趣是GUI编程,也就是编写那些在windows系统里很多按钮很多功能的软件。于是我上机时,除了要迅速完成老师布置的就像做数学题一样枯燥的编程任务后,就把时间花在VB上了。尽管是2007年,但我用的还是97年发行的Visual Basic 5.0,毕竟学校机房的电脑也是够老的。
2008年,开始和同学混网吧。不过惭愧的是,我同学打游戏的水平越来越厉害,而我并没有进步,因为当同学在打魔兽,红警时,我在安装VB,在拖拽UI,编写逻辑。其实那时候我真不知道要写什么软件,但我还是喜欢恶作剧的,写了很多奇怪的程序,例如点击某个exe,一个对话框弹出来然后到处飞,你得点到按钮才能把它关闭。还试过把这个程序带到课室的电脑去,设置好老师上课时弹出来到处飞,然后10秒后自动关闭,然后我暗地里观察老师懵圈的反应。
2009年高中毕业,选了「信息工程」专业,一个偏通信类的专业。原因是当时媒体都在渲染3G时代马上来临,我当时的志向是:我要给手机编写程序。但实际上我当时太嫩了,这个专业从来不教手机编程知识,也不教你组装手机,教的是傅里叶变化,信号处理等纯数学知识。当然,这些当时我看起来没用的知识,虽然日后确实也没直接用上,但也训练了我的思维,让我知道,技术世界从来就不是拖拽UI编写功能。
大一结束了,编程相关的课只学了一门C语言,于是为了把自己扳回「正道」,我跑去隔壁计算机学院选课。当时的政策是,我们系也承认其他学院的选修课,只要有技术相关性就行。于是我又修了操作系统原理,Linux,Java,C++等多门我们系没开的课。这时候的我如获至宝,我的技术视野得到了提升,例如面向对象这个概念,是从java课学回来的;系统调度,线程等概念,是从操作系统课学回来的。这时候我后悔当时报专业时为啥不直接报计算机专业,而要自以为是的去读个通信类专业。
学了这些课程后,我已经基本可以独立开发很多程序了,甚至开始接外包了。
毕业后,凭借着自己「多年」搞GUI程序的经验,找到了一个游戏公司的程序员工作,开始了朝九晚九的生活。2013年,移动互联网刚兴起没多久,3G时代即将结束,4G时代即将来临,那时候雷军说「站在风口上,猪都能飞起来」,于是,我们这些「猪」都在天天加班,希望赶紧追上风口。整个行业都打了鸡血,尽管那时候还没有996的概念,但每周六天甚至偶尔通宵真的是业界常态。
刚进入游戏公司,一切都是新鲜的,新的技术,新的UI框架,还是让我挺兴奋的。第一款游戏是一款儿童页游,上线一段时间就运营不下去了。当时觉得很惋惜,因为技术上是能容纳更多玩家同时在线的,但公司财务情况使得游戏没法运营下去,于是和几个朋友一起出来,成立了一家新的公司,不听老板指挥了,自己开发新游戏。
刚开始出来前,很兴奋,感觉手脚放开了,想法变多了,大家工作也很积极,加班也比以前多了。可是,工作了一年后发现,我们似乎太乐观了,不仅对市场太乐观,也对自己项目管理水平太乐观。首先说项目管理水平。渠道那边和我们约定的内测版本上线时间,我们基本都要跳票,或者即使上线了,也出一些奇怪的bug。市场方面,玩家似乎不太买账,七日留存水平很低,达不到正式上线的要求,于是我们反复修改玩法,想方设法让玩家多留存点,但收效甚微。
慢慢的,大家开始失去耐心,我开始讨厌每天都在修改UI,修改逻辑和功能,写代码于我而言,变得不胜其烦,由于长期996,加上没得到预期的回报,我感觉整个人burn out了。于是谋划着考虑其他机会。恰好深圳有家公司给我三倍的工资让我去带技术团队,于是我毫不犹豫的去了,周五离开旧公司,周六去深圳找房子,周日回广州打包行李,周一就到深圳上班了。
但事实上,这次跳槽并不能解决我内心的迷茫与烦躁。我在这个行业混了三年,感觉资源越来越向大公司集中,而且就好像我前面说的,我在网吧里没怎么玩过游戏,我对游戏的理解很浅,于是我越来越感受到自己在这个行业的天花板了。虽然我热爱技术,但我对游戏是没有热情的。于是我在工作的同时,开始考虑出国留学,换个环境。当时其实工作很忙,也没找留学中介帮忙,所以最后只申请了新加坡南洋理工大学一个学校。结果还录取上了,于是毫不犹豫的辞掉工作,开始了每天固定负收入的生活。
别看我硕士读的是「数字媒体技术」这个专业,但这不是搞媒体的专业,而是真的技术专业,每天都在研究媒体编码和压缩,图像分割等课题。我又像本科时一样,不安分的跑去选其他专业的课,学了门《计算生物学》,打开了机器学习的世界。于是技术视野又进一步开阔了。这时候,我的技术兴趣更多的从前台转向后台。
事实上,随着我工作年限增加,我花在写代码上的时间变少了。这不是因为我走向了管理岗位,而是因为我把更多的时间用在了理解业务上。我开始开悟,我学习技术,是为了解决问题,而不是为了像电影里的黑客耍酷。技术是手段,而不是目的。
这个阶段,技术对我来说如影随形,就像是自己的手脚一样,未必每时每刻都在用,没有了又不行;而且偶尔还要锻炼一下,以防止肌肉萎缩。
随着年龄增长,我变得对世界越来越有好奇心。这里不是说我走过了多少国家看过了多少风景,而是说我思考了多少问题,拟订了多少方案。而在这些方案里,技术不是全部,却能画龙点睛。
举个例子。反洗钱这个事是非常难的,你要做个智能的反洗钱系统,你需要连续几天都花在和业务人员沟通上,花半个月时间在看案例上,这样你才能构建有效的特征,从而识别出真正可疑的交易。在这之中,特征工程代码和机器学习代码,其实没多少行,但确实起到了画龙点睛之功效。
所以,如果你对技术失去兴趣,或者你可以考虑下,是不是你用技术这个手段,在做一些无趣的或者与你价值观不符的东西。如果价值观与你不符,你可以继续专研目前的技术,但换个行业,用你喜欢的技术解决你觉得有趣的问题;如果你觉得无趣,试试激发你内心的兴趣,例如走出去,和用户或者客户谈谈,或许能找到你解决问题的动力。