Category Archives: 互联网的生涯

随笔(三)— 深圳的房价

第一次来深圳的时候应该是在 2011 年左右,作为博士生每年都有 21 天的假期,那自然是会回到家乡与家人团聚。从新加坡回大陆的话一般来说都有廉价航空(Tiger),所以为了省钱会制定一条较为折腾的路线。每次从新加坡返回家乡的时候都选择先去香港,再从香港进入深圳,最后从深圳返回贵州。笔者当时对深圳的印象也挺好,无论是从自然气候,空气环境,城市建设等方面,深圳与新加坡都是十分相似的。

在 2011 – 2012 年期间,笔者每年都会回国,会时不时地往返香港与深圳,笔者也经常拿这两座城市做比较。当时在香港居住的地方是钻石山的星河明居,附近拥有荷里活广场(Hollywood Plaza)和一些便利店,因此日常生活用品和做饭材料都可以在荷里活广场买到,整体来说生活也算方便。当时的星河明居有 A,B,C,D,E 这几栋,住的那一个屋子大约 50 平左右,有三个房间,再加上客厅的话总共有四个居住场所,所以日常的租户是 4 人。有一个房间就特别小,测量了一下大约只有 4 平左右。在居住的闲暇之余还去周边的房产中介看了一下,50 平左右的这个房子大约的价位是 550 万港币,总体来看,这些房子的均价大约是 10 万港币 / 平左右。

星河明居

从星河明居到罗湖口岸其实并不花太长的时间,从观塘线转到东铁线,再进入罗湖也就大约 1 个小时。一旦进入了罗湖,总想着也需要比较一下深圳和香港的房价,当年也在深圳的福田和罗湖浏览了一些小区的房价,当时福田不少小区的均价还在 2 万以下,在罗湖也能够找到 1 万多的小区。

星河明居楼下

当时关注的房子基本上都是小户型,毕竟即使是小户型也会远好于在星河明居只有 4 平方的房间。福田或者罗湖的一室一厅的面积都是在 20 – 40 平左右,一般来说不会到 60 平。当时关注的不少小区房价相对于香港还是便宜许多的,两者的距离仅仅相差了一个罗湖口岸。

当年关注过位于八卦岭的鹏益花园这个小区,小户型(一室一厅,小于 40 平方)的价格是有明显变化的。在 2013 年的时候,60 万人民币基本上可以拿下一套小户型,但是从链家的官网来看,房价处于一个高速上升的势头,不管是由于学区房还是其他原因,整体的房价都在提升。据不完全统计和肉眼观察,鹏益花园的房价基本上是:

  1. 2010 年大约是 10 k / 平;
  2. 2014 年大约是 20 k / 平;
  3. 2019 年大约是 50 k / 平;
  4. 2020 年大约是 90 k / 平;

除了鹏益花园之外,还有南山的诺德假日花园,同样呈现了较大的增长势头。从链家的交易记录来看,可以看到小区的交易价格大约是:

  1. 2010 年大约是 20 k / 平;
  2. 2016 年大约是 70 k / 平;
  3. 2020 年大约是 140 k / 平;

无论是鹏益花园,诺德假日花园还是深圳的其余小区。在短短的十年时间,二手房的价格大约涨了 8 – 9 倍。这对于应届生而言,如果是 2010 年来了深圳之后就迅速买房,虽说不一定能够保证财务自由,但是也足以节省一大笔钱,而且房产的资产增值幅度有很大可能已经远超工资上涨的幅度。如果是 2015 年来深圳的应届生,虽然也经历了 2015 年房价迅速增加的一段时光,但是估计也没想到有的小区在短短的 5 年之后还能够继续保持一定的涨幅,并且有些地区的涨幅基本上是翻倍了。

在 2020 年的初期,深圳的房价又一次出现了上涨的势头,整体的价格相对于 2019 年确实涨了不少。即使是从 2020 年的 8 月份算起,深圳的房价也呈现了稳中有升的局面,从价格上来看并没有出现下降的趋势。

10646元!2019年深圳市在岗职工月平均工资(即社平工资)出炉。记者分别从深圳市医疗保障局、深圳市社会保险基金管理局获悉,从7月起我市各项社保缴费基数和待遇偿付基数也随之调整,涉及到2019年全省全口径从业人员月平均工资、2019年深圳市在岗职工月平均工资的,分别按6756元、10646元/月计算。

这十年来的变化,使得深圳的二手房房价已经快追上了香港,2020 年的深圳房价已经不是 2010 年的水平了。但是其工资水平其实并没有发生那么多倍的变化,能够在早期入手购房的人说不定已经财务自由,但是对于刚来深圳的应届生而言,在深圳安家的成本就会变得越来越高,根据深圳市的调查,深圳市最新的社平工资为 10646 元。其链接是:我市最新社平工资为10646元/月 工伤发生人数下降15.28%

从深圳的平均工资和二手房均价来看,如果只是靠个人的薪水想要攒到深圳核心地段的房子首付确实是一件较难的事情,如果家里面能够提供必要的支持确实能够帮助应届生解决问题。此时,有的同事会选择在深圳打工,然后想办法供二线家乡城市的房子。毕竟无论在哪里工作,最终都是为了能够过上更好的生活。(未完待续)

随笔(二)—工作与生活

从小听过不少家长或者老师的“谎言”,读初中的时候,老师们总是说让大家努力学习,只要考上了高中就可以轻松学习了,毕竟从高中考大学是相对容易的;在高中的时候,老师们也总是说让大家继续努力学习,保持学习劲头不放松,等考上了大学就可以开始真正的素质教育了;但是到了大学的时候,才发现所谓的学习生活并不是跟高中老师所说的一样。从某种程度来看,大学教育在某些时候也是一种应试教育,跟高中的模式没有太大的区别,要想获得某门课程的好成绩同样也需要花费很多时间和精力的。

笔者在读博士的时候,在刚入学的第一年总想在很短的时间内做完某件事情,甚至在刚入学的第一个学期都没有在周边进行游玩和娱乐,也没怎么进行休息,一直在尽力地学习各种数学课程,阅读科研论文。等到了博士第二年的时候,心态就出现变化,毕竟博士生做论文并不是花费几个月就能够搞定的,科研与学习是有本质区别的。科研是一种生活状态,无论博士生在办公室,在路上,在家里,甚至在吃饭的时候,都可以思考问题,不断地考虑论文中的突破口,不停地进行各种各样的演算和尝试,在每一次的失败中寻求成功的路径。如果科研是一种生活状态,那就不太可能出现读完,写完某篇论文就不用继续努力付出的情况。对于博士生而言,科研与生活会长期并存,互相交织在一起。

其实无论是在中学,大学,研究生,还是博士阶段,甚至到了工作时期,都不太可能出现度过了某个阶段,下个阶段就无比轻松的情况。在不同的阶段都有着完全不同的任务和目标,都有着截然不同的挑战和困难。在小学,中学,大学的时候,大家还是以学生的身份而存在;到了研究生,博士阶段的时候,大家就要考虑未来的生计问题了;等到了工作期间,大家考虑和谈论的事情基本上就是事业,成家,立业等家庭问题;到了生儿育女的阶段,大家商讨的应该就是学区房,小孩成绩等诸多问题了。因此,无论在人生的哪个阶段,并不会出现丝毫没有任何压力的情况,也很难出现一个阶段过去了下一个阶段就很轻松的事情,说不定下一个阶段比上一个阶段更加的艰难。

在人的一生中,学习,工作,生活三者将会一直共存,进入工作阶段并不意味着学习的停滞,在学习期间也不意味着不需要生活,在工作阶段更不意味着可以永远不休息。生活和工作在每个人的人生中其实是不可严重割裂的两块,对大多数人而言,是很难做到不需要工作而只需要生活的,也很难做到不需要生活而只需要工作。当然,在某个短暂的阶段我们完全可以做到放弃其中的某一样而努力做到另外一件事情,但是以长远的眼光来看,工作与生活其实是长期并存的关系。

在一线城市工作,虽然日常会承受 995 甚至 996 的工作压力,但是总还是可以找到休息的机会。不过据说有的公司是 007 的工作状态,那么估计这些员工是没有生活了。但是 007 的工作状态也不会持续一辈子,毕竟人的体力和精力都是有限的,在某个合适的时刻这种工作状态会被改变的。如果不想拥有高强度的工作压力,就要合理地降低自身的欲望。如果想在职场发展中持续地赚到钱或者维持高收入,就必然要保持自身的竞争力。而竞争力的来源包括工作时长,技术能力,管理能力等诸多方面,其中工作时长是最容易体现竞争力的一个方面,这也许正是 996 的由来。但即使是高强度的工作,也可以尝试在工作间隙进行必要的休息和生活,例如午饭和晚饭的时间。工作人士可以在这两个时间段做一些自己喜欢的事情,体验一下与工作完全不同的生活。

工作在某些时候就跟读博士一样,千万不能够想着读完了博士就怎么怎么样,而是要学会把大任务拆解,安排好每个时间段的工作。只要每天,每周,每月,每年做完一定的任务之后就及时享受生活和体验人生。只有这样才能够保证自身的能量充足,能够长期在工作中保持战斗力。工作是人生的必经阶段,也是日常生活的一部分,为了更好地生活,我们需要努力的工作,但是并不需要为了工作而放弃所有的生活。

在工作的时候,通常任务有日常的常规任务,也有充满挑战的创新性任务。在做常规任务的时候,可以搞一些可以提升效率的工具,减少重复工作的时间。在做创新性项目的时候,就要一往无前地全力以赴,毕竟创新性的工作除了给人带来工资与收益之外,还能够给人带来巨大的成长,为今后的工作做必要的铺垫。只做重复性的工作很容易让人产生疲惫的心理,在互联网这种充满风险和挑战的地方还是要做一些对自己有提升的工作。一旦目前的工作都已经手到擒来,没有任何挑战,那就可以考虑去找一些更有挑战的项目来提升自己了。

工作与生活是不能被分割的两部分,很难放弃其中的一个而只选择另外一个。在日常的工作中,通过项目来精进自身的能力,在工作中获得一定的成就感。在生活中及时地享受人生,在娱乐之余及时地给予自己一定的奖励,只有这样,才能够更好地平衡工作与生活。

怀念 Jett

​之前笔者写过不少文章,其中不仅包括技术和数学文章,还有一些日常学习工作的心得,甚至还写过几篇关于旅游的流水账,但是却很少写关于人物的文章。最近我打算写一篇关于人物的文章,用于纪念在工作中一起战斗过的伙伴 Jett。

许多年前,我还在学校读书的时候,就有前辈告诉我,交朋友的时候基本上就只能够在学校,离开了学校之后在职场中想交到合适的朋友是比较困难的。当时作为一枚职场菜鸟的我,也只能够表示对这句话的认同。直到在工作后遇到了 Jett,我对这个观点就有了自己的看法。

屏幕快照 2019-08-10 下午10.02.49

我是2015年7月作为校招生进入公司,Jett 则是2015年10月通过社招进公司的。当年虽然两人身处同一个部门,但是由于不在一个中心,也不是同一条业务线,并且这两个中心平时也没啥日常工作的交集,因此我和 Jett 同处一个部门许久却互相不认识对方。就好比在学校里面,虽然身处同一个院系,甚至同一栋宿舍楼,由于种种原因而不认识对方。

随着工作时间的增加,到 2016 年的时候笔者就已经过了新手保护期。所谓新手保护期,就是每一个新人其实都有一段适应公司的过程,公司也会给人一定的保护时间,但是一旦过了这个时间就不算新人了。大约到了2016年5月份的时候,部门内部启动了一个用机器学习的方法来做安全对抗的项目。当年的安全中心并没有机器学习的从业者,因此需要从其他中心抽调人手去支持他们的项目。在一些机缘巧合之下,我作为数据团队的代表,就和安全团队的同事们同在安全大数据项目组。在公司里面,机器学习的人员通常都是和开发人员通力合作,各司其职,共建一个项目。在项目初期,其实 Jett 也不负责与我对接,后续随着项目的进一步发展和迭代,Jett 就成为了安全中心与我对接的人。

虽然 Jett 是和我对接的人,但是 Jett 主要也是负责平台开发,之前 Jett 在进入公司之前好像没有做过前端,但是在项目初期好像做了一些前端方面的工作,在邮件里面得到了领导的赞扬。这个应该是我对 Jett 的第一印象了,那就是一个靠谱的开发人员。当时虽然是成立了项目组,但是还是作为一个试点的工作来做,无论是算法的调研和平台的工作,都由我们两个来完成。这些项目在初期都是一大堆人在里面,但是随着项目的进展,人数都会越来越少,然后领奖的时候又出现了一大堆人。在项目的初期,我当时应该也只会 SQL,连 Python 都不算很熟悉,更没有开发过大型项目了。即使是作为一个试点的项目,其实个人也有着巨大的压力,毕竟这个方向在公司当年还处于一个相对不那么清晰的状态,也不知道该怎么做,甚至也不知道有什么资料可以查。不过作为一个 PHD,虽然写代码的能力不行,但是读论文和搜索资料的能力还是有点的。当时记得花了很多时间在网上找来找去,总算找到一两家号称做这个方向的创业公司,运气够好的是当时它们居然都发表了相关的论文。后来把它们的论文整理成资料和PPT,跟相关的同事沟通了一下,就打算复现这几篇论文。

屏幕快照 2019-08-10 下午10.01.49

当然,做项目总是有着各种各样的风险,况且当年本人的技术实力确实也不怎么样,写过不少的 SQL,做过很多数据分析的工作,查过一些数据方面的问题,至于其他方面也就那么回事。在项目的调研阶段和初期,大约是5月份-8月份,其实也没有什么特别大的产出,主要也是在积攒技术经验,把 Python 的各个工具库熟悉了一下。不过在公司里面总是有考核的,到了9月份的时候压力就比较大了,毕竟最终还是要对上线的效果负责的。在9月底的时候,我和 Jett 被拉去星巴克喝了一杯咖啡,然后被下达了任务和命令,也就是在十月份完成机器学习的效果指标。

屏幕快照 2019-08-10 下午9.59.46

既然被拉到星巴克去喝咖啡,也就是说明在9月份的时候,模型的效果都不算太好,估计再这样干下去也没有办法完成既定的目标。不过目标这种事情制定的时候都是根据当时的情况来制定的,很有可能会随着时间的变化而产生变化。虽然说目标总是在发生变化,但是整体的大思路是没有改变的。当时,作为开发人员的 Jett 问我要不要修改 XGBoost 的模型源码,我连忙说不用不用,其实就算让我改,我也没有本事修改别人的源码。既然不会修改模型的源码,那就只能够从数据和特征来入手了。在机器学习领域,只要把数据和特征处理好了,基本上就能够保证模型的效果和质量。于是 Jett 和我当时把成千上万条数据一起看了一遍,结果是发现正负样本有一部分混在了一起,于是模型的效果无论如何都做不好。

屏幕快照 2019-08-10 下午10.05.45
XGBoost 的 Github 主页

对于在校学生而言,通常来说都是 Python 跑完模型,然后得到一个模型文件,用它继续离线预测就可以得到最终的结果。但是在工业界,很多机器学习项目都需要进行上线的工作。这种时候只靠一个机器学习人员的战斗力是无法解决问题的,不可避免地需要有开发人力的介入。此时 Jett 发挥了作为一位开发人员的强大战斗力,一个人就能把线上的代码全部完成,没有让我撰写任何一行 C++ 的代码。在码农界有一种“结伴编程”的说法,也就是两个人共同搞一份代码,共同搞一个项目。我是负责数据处理和离线模块,Jett 是负责平台开发。有一次在核对数据的时候,把 Python 的预测结果和 C++ 的预测结果进行核对。也就是为了交流方便,那次我把 Mac Air 搬到了 Jett 的桌子上,两个人并排坐在一起,一起核对数据的准确性和可靠性。

不过核对数据只是机器学习项目的第一步,并且也是长期需要做的一步,因为数据总是会出现各种各样的问题。即使数据没有问题,也不代表最终的模型效果达标。到了2016年10月中旬的时候,我俩的压力也已经很大,每天晚上都在万利达五楼加班到十点以后。每天我都在训练模型和数据分析,Jett 每天也在做平台开发的工作,虽然我不懂他在做什么,但是总是感觉很忙的样子。而且项目经理每两天都会催一次进度,顺带着会有各种大大小小的会议。其实当时 Jett 是作为业务部门的人,压力更大的是压在他那一边。在思考了大半个月之后,在一个星期日的夜晚,我去华润万家买了一堆小本子,把整个项目的细节仔仔细细地思考了一遍,突然灵光一现,发现其实有一个优化点,于是就顺手写在了小本子上。到了周一的时候,我把小本子上面的想法去实现了一遍,结果效果瞬间提升,业务指标瞬间完成。当我把这个好消息告诉 Jett 的时候,Jett 还在 RTX 上说了一句:“等我去哭一会”。最终我俩猛加班两天,把模型往线上一扔,效果直线上升,而此刻的报表系统早已齐备,瞬间就看到了效果的提升,甩掉前面的模型五条大马路。

6EC4948295154B525FD67EAC9B309320.jpg
当年撰写思路的小本子

在2017年初的时候,模型的整体效果已经很好了,整体的路线其实已经基本走通。因此后续更多的是平台建设方面的工作,这一块做得更多一点的是 Jett,最终他还真是完成了无算法人员参与就能够自动接入各种业务的全自动流程。不过随着时间的流逝,我俩都各自都被抽调去做其它的项目,合作的时间和机会在项目成功之后就变得越来越少了。万幸的是,在2017年9月5日-2017年9月9日,我俩共同去了台湾进行了一次团建。参见《五日台湾行》。

640

640-2
2017年的台湾

后来,由于种种原因,我也不再继续从事安全方面的工作,与 Jett 的交集也越来越少。虽然后面也有吃饭聚餐等时候,但是却没有了在一个项目中一起为了一个目标奋斗的机会,心中不免有少许遗憾。随着去年的大调整,Jett 和我已经不在同一个部门。今年 Jett 由于家庭原因离开了公司,恐怕短期内已经再也没有通力协作,互帮互助的机会了。也许这个项目是我俩共同做的最后一个项目,但是当年在万利达五楼共同奋斗的时光,却是一段珍贵的回忆。

机器学习算法工程师的日常

目前笔者已经在互联网行业从事机器学习方向三年有余,经常也被问到做机器学习算法工程师是一个什么样的体验,同时也常常在其他平台上看到其他人问类似的问题。于是提笔写下此文,供有志投身于这个行业的人参考。

日常生活

数学博士的时候,通常的日子是这样的:

根据论文或者某个讲座得到的信息来提出某个数学猜想 -> 然后开始在 Google 上搜索论文 -> 再花费几周到几个月的时间来读论文,并且思考这些论文的优点和缺点 -> 思考 -> 思考 -> 思考 -> 继续读更多的论文 -> 思考 -> 思考 -> 思考 ->…-> 放弃。。。。

在互联网公司做机器学习的时候,通常的日子是这样的:

根据行业的PPT或者业务中的某些痛点来提出技术方案 -> 然后开始收集数据,不仅要问遍组内,还要去其他组收集各种各样的需求 -> 根据之前的技术方案来进行数据的预处理 -> 撰写特征工程 -> 训练模型 -> 调参 -> 调参 -> 重新收集数据 -> 数据的预处理 -> 收集更多数据 -> 调参 -> 调参 -> 调参 ->…->放弃。。。。

1

业务理解

就做机器学习的经验来看,通常来说在做业务之前,一定要清楚的弄明白项目的业务需求是什么,弄清楚这个问题是什么比一开始就写代码重要得多。意思就是在回答问题之前,一定要把问题的内容弄清楚。有的时候,虽然看上去是一个很大的需求,但是实际操作起来的时候使用一些简单的办法也能够达到项目指标。有的时候,虽然看上去很简单,但是实际操作起来并不是一件容易的事情。从之前做理论数学的经验来看,通常数学里面的一些问题是是非题,不能够添加条件的。在 PDE 等方程领域,定理的条件越多,表示定理越不值钱。不过在工作中,这些条条框框会相对减少很多,只要能够达成项目目标,无论是添加样本,添加特征,添加服务器数量其实都是可以的,并且要把机器学习模型业务指标有机结合才能够达到最终的项目指标。

2

一般搞数学科研的时候都是单打独斗,通常来说都是自己干自己的事情,别人也没办法帮自己。但是在工作中是不一样的,工作中除了干好自己的事情之外,周边的很多资源其实是可以在一个合理的范围内去争取的。无论是人员的数量,还是人员的种类,只要最终能够达成项目目标即可。无论是算法人员,还是开发人员,产品经理,最终都是要为一个项目的结果负责的。之前听过一句经典的话“失败的项目里没有成功的个人”,因此,无论怎么做,最终都要保证项目尽量成功。

3

数据清洗和特征工程

而在机器学习算法工程师的日常生活中,除了上面的小段子之外,其实最重要的是样本层和特征层的处理工作。在学术界,都是使用开源的数据,别人都已经完全标记好了,学术圈的人通常来说只需要在这些数据的基础上提出更好的模型,更创新的算法即可。但是在工业界就完全不一样了,不要说有人帮你标记数据了,有的时候连数据在哪里都不知道,数据的质量如何也不知道,因此更多的时候是进行数据的处理和清洗工作。之前做一个项目的时候,准确率和召回率始终上不去,但是等把样本里面的脏数据清理掉之后,模型的效果瞬间提升了一个档次。在脏数据面前,再好的模型都是没有用的,在训练模型之前,一定要先看一下数据层的问题。

4

除了数据的问题,通常来说在一些场景下,样本的数量并没有那么大,因此深度学习等方案不一定特别适合。在这种情况下,一般就会使用传统的机器学习方法,并且会使用一些基于业务的特征工程。这种时候就需要机器学习从业者对业务有一个精准的理解,只要业务理解得好,有的时候写一些简单的规则就可以解决问题。特征工程也是机器学习里面的一个重要问题。

持续学习

在人工智能这个领域,无论是 CV,NLP,还是机器学习,里面的技术迭代都是非常快的,而且是需要相对专业的人才能够从事这些领域。在这种情况下,机器学习从业者的持续学习就显得尤其重要,几年前的技术在新的业务场景下就未必适合,可能需要使用其他的模型或者框架才能够更好地解决问题。所以,除了完成日常的搬砖工作之外,建议每天抽一点时间来阅读论文,保持对业界技术的跟进和迭代。不过这个行业鱼龙混杂,有的时候论文或者 PPT 里面的技术框架其实没有办法复现,能够精准地判断哪些方案好,哪些方案差绝对是算法工程师必备的关键能力之一。

5

编程能力

如果是在工业界的话,编程能力是非常重要的。因为从事算法的人通常来说会有一些算法上的优化,工程上的改进,数据分析之类的工作。在这种情况下,首先需要有一定的业务直觉。而业务的经验积累需要通过各种各样的基础数据提取,在海量的数据分析工作中逐渐积累的。在这种情况下,提取数据的工具就是必须要掌握的,例如 SQL 等。其次,分析数据的工作也是必须要具备的,无论是使用 SQL 来进行分析,还是使用 Python 来做数据分析,都是自行编程解决的。再次,在从事机器学习方向的时候,不可避免的就会进行算法的效果对比。而在这种情况下,算法的效果对比是需要机器学习从业者通过写程序来实现的。最后,工业界的算法通常来说都强调上线,如果能够自行把离线,上线,效果验证,ABTest都做完,其实是最好的状况。在这种情况下,通常 Python 就不太够了,需要使用 C++ 或者 Java 等其他编程语言。因此,熟练使用多种编程语言也是一个算法工程师的能力。

6

常用工具

在互联网公司里面笔者用过的机器学习工具大概有这几个:

  1. XGBoost:做分类的工具,提供离线的Python训练和在线的C++调用功能,方便机器学习从业者训练模型和线上部署;不仅在推荐场景可以用,在安全,运维等领域都有着用武之地。
  2. Tensorflow:这个也不用多说了,深度学习的经典工具之一,离线训练和在线服务都是不错的。
  3. ScikitLearn:单机版本的机器学习工具。方便学生在校学习知识,文档详细感人,关键是还开源。其实在工业界,如果数据量不大的话,其实用 ScikitLearn 就基本上够用了。
  4. Pandas:表格类数据或者时间序列数据的经典工具。尤其是在时间序列的处理上面有特别独到的优势,应该还有其他功能,但是笔者暂时了解不多。Pandas 的接口和函数特别多,每次遇到问题的时候可以搜一下,其实比自己重头写好得多。
  5. Spark:在大数据的情况下用得比较多,通常是推荐系统一类的,海量样本的前提下,单机版的模型根本搞不定,因此会用分布式的工具。
  6. SQL:提数工具。如果不掌握这个的话,基本上什么都做不了。。。。。
  7. FbProphet:稍微小众一些,Facebook 的开源工具之一,在时间序列预测的场景下才能用到。

7

工作感受

给自己压力。一般来说,转专业求职是一个艰苦的过程,但是入职之后的生活则更加辛苦。因为公司的考核是每半年甚至两个月就一次,所以,在这种情况下,任何人都需要有一个上手的速度。有的人因为在学校学过相关的内容,或者之前实习过,因此上手的时候比较快;但是有的人转专业就面临上手慢的情况。其实这些对于应届生来说都可以理解,毕竟所有的人都需要有一个适应的过程。在这种情况下,在工作的初期一定要给自己一定的压力。意思就是说:在刚工作的第一年,每三个月就要让自己有一个飞速的提升;在工作的第二年,每半年就要让自己有一个提升;后续的话,每一年都要让自己有提升才是关键。因此,无论是本专业还是转专业的同学,都建议在前两年工作的时候,多给自己一些压力,只有这样,才能够让自己有更好的进步空间。

对业务的理解。公司里面有很多东西并不是直接使用开源代码就能够发挥作用的,在公司里面无论做什么事情,最重要的一点就是对业务的理解。在对业务的理解方面,老员工相对于新人来说确实有着不少的优势。其次,在做业务的过程中,通常都会经历很多的坑,无论是别人主动挖的,还是自己踩坑踩出来的,都是自身宝贵的财富和经验。而这些经验只能够通过靠做大量的业务来获得。如果要想长期保持自身的优势,通过长期的训练和学习确实是一个有效的办法。无论是天才还是普通人,要想提升自身的技术,不花一定的时间去学习是不可行的。因此,无论在任何时候都不能够放弃让自己学习和充电的机会。

勇于接受新的挑战。公司里面除了已有的项目之外,通常来说都会开启各种各样的新项目,在这种情况下,如果有机会做新的项目,也就是别人没有做过的项目。这种机会已经要把握住,因为对于新人来说,能够接触全新的项目肯定是好过维护已有的项目的。但是几乎所有的人都是从维护旧的项目开始的,只有旧的项目做好了,才有机会拿到新的项目。

不要永远抱着已有的方向不放手。在公司里面,业务方向总会或多或少的发生变化,随着部门的调整,方向的变化,所做的内容总会发生一些变化。在工作的时候,最好不要抱着我就是来做这个方向的,除了这个方向之外其他的内容我一概不想做。因为当时的工作岗位未必能够提供你想做的方向,但是说不定能够提供其他的研究方向。有的时候,在公司里面,根据方向的变化来调整自己的工作内容也是一个必要的技能。而且,在公司的时候,一定要多做一些有挑战的项目,只有通过这些项目,才能够让自己的技术壁垒更加深厚。当然,在求职的时候,每个人都有着自己的想法和选择,所以,在求职的时候,是可以选择一个自己喜欢的方向来做的。

8

经验总结

通常来说,在干了两三年算法工程师之后:(以下是从其他地方看到的小段子,出处忘记了~~~)

  1. 能够熟练写各种脚本;
  2. 80%的时间在写脚本;
  3. 能够说出几种机器学习算法的名字;
  4. 轻松完成各种脏活累活(叫小弟做);
  5. 对无法解释的结果已经习以为常,能够强行解释一波,让领导信服;
  6. 调参前,都会去寺庙烧柱香;
  7. 桌上堆着很多崭新的技术书籍,没怎么翻过,大概都会有一本叫做《统计学习方法》的书。

9

 

2019年的博客

个人使用时间最长的博客平台就是 WordPress,从 2011 年开始算起,大约有 8 年时间了。

当年笔者还在南京大学本科读数学专业的时候,就见到大神 Terence Tao 建立了个人的网站:What’s new(terrytao.wordpress.com),并且后续数十年如一日的更新个人 Blog。在他的 Blog 上面,除了常见的数学基础知识和课程安排之外,更多的是当前数学界的一些新发展和新方向。由于数学系的博文或者论文除了文字之外,更多的是各种各样的数学公式,而这些数学公式使用公式编辑器一类的东西来处理是极其繁琐的,只能够使用 LaTex 等工具来写。恰好的是,WordPress 除了能够支持日常的文本编辑之外,还能够使用 LaTex 来对数学公式进行撰写,也就是说用户只需要在编辑框内写 LaTex,就能够编译成数学公式。因此,WordPress 对数学公式的支持是相对友好的,这对数学系爱好写数学博客的学生,工作人士提供了非常便利的条件。

除了整理数学公式比较容易之外,WordPress 上面还可以相对方便的选择各种各样的主题,这样的话刚注册的新用户也可以较为容易的上路,不用一开始就陷入编辑网站等一些繁琐的事情上面。同时,WordPress 上也有各种各样的小工具,包括日历(可以查看发表 Blog 的时间),文章的目录,比较受欢迎的文章或页面,文章的类别等内容。用户可以根据自己的爱好自行选择栏目,从而可以轻易地搭建出一个个人网站。另外,WordPress 可以统计出 Blog 的点击数量,包括每天,每周,每月,每年的具体点击数量。

第一次使用 WordPress(zr9558.com)正好是攻读博士学位一年,除了日常的科研工作之外,也打算写点东西来记录一下自己的成长。后续读博士期间也逐渐的写了一些数学方面的文章,不过后续回想起来其实应该在读本科的时候就开始写 Blog。如果这样的话,当年所学过的各种数学知识,整理过的各种资料都会更加清晰一些,也更加容易保存一些。毕竟写 Blog 的一个重要目的是给自己回顾用的,看看这段时间自己的积累是什么,自己学到了什么知识,相比去年成长了多少。其实,有的时候偶尔去浏览一下 Terence Tao 的博客,虽然也看不懂,但是可以明显地感受到“大神”的努力程度。牛人尚且如此努力,我等凡人有什么理由不努力呢。

当年在 NUS 读博士的时候也承担了一些教学的工作,并且也会给学生们讲解习题课。但是每年讲课的内容其实都差不多,于是在讲解习题课的时候,尤其是大学数学(MA1505),曾经做过一份 Tutorials,也就是把习题课的内容写在 WordPress 上面。不仅可以在课堂上方便地给学生们讲解,也可以让学生在课后方便的复习。时过境迁,当年听课的学生(还是大一)早已本科毕业,后面可能也会有学生看到这份资料,希望对大家有所帮助吧。链接在这里:MA 1505 Mathematics ITutorials

后面进入公司之后,有的时候工作繁忙,整理 Blog 的时间就会减少许多。但是一份工作除了能够给人带来必要的薪资之外,更重要的是给自己不停地积攒经验。无论是现在还是将来都可以让自己在职场中更加值钱。因此,除了日常的搬砖工作之外,也要时刻注意自己的成长和经验的积累。而搬砖的经验会随着项目的结束和时间的迁移在记忆中逐渐淡忘而去,于是,适当的记录就成为了必要的工作。俗话说得好,“好记性不如烂笔头”。因此,隔一段时间(通常来说可以设定为一到两个月的时长)就整理一下经验就显得尤为重要,也是提升个人技术和经验的方法之一。但是在整理 Blog 的时候,一定要注意 Blog 的质量,只有不断地提炼自己 Blog 里面的内容才能够保证文章的质量。

不过现在的 Blog 远没有当年受欢迎,在各种各样 APP 横行的时代,已经比较少有人主动去看别人的 Blog 了。不过在使用搜索引擎来搜索某些关键字的时候,有的时候还是能够看到一些高质量的 Blog。在学习这些 Blog 的同时,其实也可以互相比较一下,取长补短才能够使自己的博客越做越好。其实,无论有没有人读自己所写的内容,都要坚持写下去,因为:

即使最后没有人为你鼓掌,也要优雅地谢幕,感谢自己的认真付出。

25 岁做什么,可在 5 年后受益匪浅?

25 岁做什么,可在 5 年后受益匪浅?

很久之前在知乎上看到一个问题:“25 岁做什么,可在 5 年后受益匪浅?

25 岁的时候

在写这篇文章之前先回忆一下自己在 25 岁的时候在干什么。

笔者在 25 岁的时候应该是 2013 年,正好是在 NUS 读博士的时候。当时笔者的科研进展缓慢,几乎处于无法自我推进的状态。而在笔者迷茫了大半年之后,碰巧在网上看到一本书叫做《战胜拖拉》,于是笔者花了几天功夫读完了整本书之后就将知识用于实战,目标是战胜自己长期拖延不科研的状态。不过花费了一段时间之后,效果比较明显,没花费多少时间就把当时论文里面的第一步 Real Bound Theorem 搞出来了。事后想起这件事情的时候,最感谢的就是《战胜拖拉》那本书的作者,作者在书中确实提供了不少有用的建议。在解决了毕业论文里面的重大难题之后,笔者写了两篇关于拖延症的文章,希望对大家有帮助。

PHD 身边的时间陷阱

战胜拖延-让PHD达成每天必要的工作时间

在看完拖延症的书籍并做完论文的第一步之后,当然要完成的就是论文的全部。在做科研的过程中整体来说还是比较辛苦,以至于读完博士之后还写了一篇文章来介绍科研整件事情,那就是”科研这条路“。

选择比努力更重要

所有的博士生在拿到博士学位之后自然就是面临就业的问题。笔者 2005 – 2015 年一直在数学系攻读学位,回顾读书这十年给笔者最大的感受就是,学校招聘老师的标准是越来越高。刚开始的时候,如果博士的学校较好,也许没有太多的论文都能够进一个还不错的大学。到了 2010 年之后,即使有了不少的论文也不能够保证一定能够进好大学。同时,博士生的数量也是越来越多,在学校的教师岗位根本无法容纳下那么多博士生的情况下,很多无法找到教职的博士生就要去企业工作或者继续从事博士后的岗位。不过有的专业找工作确实相对容易一些,有的专业找工作相对难一些。假设有一个博士生在 2010 年选择机器学习专业,那么在他毕业的时候,正好就是机器学习刚刚火起来的时候,那么肯定会非常容易就业。不过在 2010 年的时候,机器学习也不算什么热门方向,企业所提供的岗位也相对较少。因此,有的时候要想在未来获得更大的收益,选择当前热门的领域并不是一件很好的事情,选择未来有可能火的领域才是关键。不过要想判断未来哪个领域会火实在是太难了。因此,选择比努力重要的多,无论是整个大的行业,还是研究方向,甚至到每天手上所做的那件事情。

自我的成长

在选择了一个合适自己的方向之后,那就要去努力做这件事情,无论是在上学的时候,还是工作的时候,都要时刻注意自己的产出。在学校的时候,学生需要注意的就是这半年需要做什么,能够达到的目标是什么。然后从后往前反推此刻应该做什么,需要做什么样的事情才能够达到相应的结果。比如,如果在开学的时候就想要在期末考试的时候获得一个不错的成绩,那么在开学的时候不仅要下定决心学好这门课,还要根据课程的实际情况制定出相应的学习计划,最后才能够在期末考试中获得相应的成绩。又比如,如果目标是半年后写一篇论文,那么就需要准备开题报告,论文规划和预期效果,以及相应的时间节点。但是做论文的时候最大的风险点在于不确定性,所以很多时候需要根据论文的实际情况来进行调整。如果是在公司里面的话,通常来说都是季度考核,半年考核,全年考核等几个大的阶段。而且在项目的不同时期,考核的方式也是截然不同的,在项目的初期,可能也只是需要有一些调研方向和小的产出;在项目的中期,可能就需要有阶段性的成绩;在项目的后期,可能就需要把整个项目进行回顾,然后总结成功点和失败点,再让所有项目组成员来学习成功点,总结失败点,避免在未来的项目中走同样的弯路。其实无论是在学校里面还是在公司里面,“项目管理”这类知识还是挺有用的,在学校的时候可以用来管理自己的学业,在公司的时候可以用来管理项目的进展。

工作的意义不仅仅在于获得一份工资,有可能的话最好从工作中获得一定的自我认同感,更重要的是获得个人的持续成长。刚开始进入公司的时候,由于是新人,所以可以学的东西其实非常多。无论是专业技能,业务沟通,还是项目管理,每一个领域都够一个新人学一段时间。因此,在刚进入公司的时候,需要给自己一定的压力,前一年半其实是个人成长最快的时候,在这个时候最好需要充分利用上下班的时间,甚至周末最好也花一定的时间进行自我充电。而到了两年之后,成长的速度就会明显放缓很多,感觉每隔半年才会成长一点。

专业的问题

在学校的时候,通常学生都只会关注本专业的知识,只有遇到了想转行的时候才会去主动学习别的学科。但是在工作的时候,如果只想做本专业的知识,那么在其实就是在限制自己的发展空间,千万不要让自己的专业限制了自己的发展。无论是在学校还是工作中所学到的经验是一种财富,但是这些经验在有的时候也会形成自己的绊脚石。一般来说,在工作中做一些相对成熟的事情是容易出成绩的,做未知的事情是需要承担风险的。在做成熟事情的时候大家都会采用已有的方案继续做下去,在做未知事情的时候就需要有人去做很多的调研工作,看看这件事情是否值得做下去,是否能够达到预期的收益效果。如果调研了之后确实能够达到预期的效果,那就值得做下去;如果有一定的风险,那就要把预期降低,在一个合理的预期之内做适当的事情。

明确不想做的事情

可以在学校期间明确一下自己不想做的事情。通常来说,你问别人,你想做什么,他能够七七八八的说出一堆,但是绝大部分都不会去做。而且随着时间的迁移,每个人的想法都会产生变化,今年想做的事情明年不一定想做。但是就一般情况而言,一个人不想做的事情是不会发生太大变化的。如果一个人不喜欢学习物理,那么十几年过去之后可能还是这样;如果一个人不喜欢写作,那他肯定也很难提起自己的笔去认认真真地写一篇文章。所以,可以在学校或者工作的时候确定自己不喜欢做什么事情,然后在选择专业或者就业的时候避开这些专业或者岗位。因为在学校里面会与这些专业相伴几年,而工作的时候在岗位的时间有可能比在家的时间还要多。

 

不要为已经打翻的牛奶而哭泣

当年,曹操与刘备在汉中决战,两军久久僵持不下。曹操见久攻不下,心中烦闷,此时士兵来询问夜间的口令,曹操顺口说一句:“鸡肋。”而主簿杨修听到这句话,便开始收拾行装,并告诉周边的人一起收拾行装。众人不解,反问之,杨修解释道:“鸡肋鸡肋,食之无肉,弃之有味,今丞相进不能胜,恐人耻笑,明日必令退兵。”而杨修因为这句话而引来了杀身之祸。

三国1

熟读三国演义的人都知道,曹操杀了杨修之后,便令众军前进。其实到了最后,曹操也未能战胜刘备,获得汉中攻略战的胜利,只能退回许昌。虽然现在我们很难猜测曹操当时的想法是什么,不过“夫鸡肋,弃之如可惜,食之无所得”这句话却由于这个故事而流传下来。无论是当年的曹孟德,还是现在的很多平凡的普通人,身边总有一些事物与鸡肋一样,食之无味而弃之可惜。

在经济学中可以用沉没成本来描述鸡肋这个概念。沉没成本指的是已经付出了,但是不能收回的成本。例如,有一家电影院不允许顾客退票,有位顾客买了一张电影票,但是他看了半小时的电影之后觉得电影十分难看,这种时候他就有两种选择:

1. 继续看下去;

2. 中途离场,去做自己想做的事情。

其实绝大多数的人都会忍着看完这部难看的电影。而从经济学上的观点来看,如果人是足够理性的,当这个人在做决策的时候,是应该把沉没成本放在一边而不去考虑的,因为沉没成本是无法被改变的。按照上面的例子,无论他选择是否继续看下去,这个电影票的钱都已经无法退回,而此时需要做决定的事情是是否继续看完电影。通常这种情况下,按照经济学的理论来说,经济学家会建议这个人选择中途离场,去做任何自己想做的事情。因为这样的话他只是浪费了一张电影票的钱,但是省下来的时间却可以做其他更有趣的事情。

COSTS

虽然这只是书本上的一个简单例子,但是这样的例子在生活中比比皆是。无论是对学生还是职场人士,无论是对普通人还是位高权重的决策者,都面临着沉没成本是否放弃的难题。对于学生而言,最常见的情况就是这个学生在大学期间学了四年根本不感兴趣的专业,但是在面临存在转专业的机会时,是否要放弃原有的技能而重新学习一个新的专业便成为了一个难题。对于在职人士而言,在面临一个有挑战但是并不熟悉的行业或者领域的时候,是否愿意放弃原有的一些经验,是否存在勇气进入一个新的领域也是一个难以抉择的问题。

沉没成本其实很影响一个人的决策。对于学生而言,如果在某个方向上花费了巨大的精力和时间,是很难下定决心转一个全新的方向的;对于工作后的人士而言,主动放弃已经拥有的一些经验,放弃已经掌握的一些人脉和资源,也是十分困难的。但是,在人生的十字路口,其实又必须要下定决心做一些事情。众所周知,学校里面的不少专业其实就是“鸡肋”,完全符合“食之无味,弃之可惜”的条件,无论是学生的就业率和成材率都处于所有专业的底部。如果这些专业的学生不放弃自己的专业,将会在这些专业里面越陷越深,最终无法自拔。其实,这些专业的学生继续从事该专业的学习都不能称之为“坚持”,而是在“死扛”,用自己的大好前途来耗费在一些没有任何用处的专业技能上。有的技能虽然看上去比较高大上,但实在是“屠龙之技”,离开了已有的圈子,学校之后就再无任何用武之地。这些专业还能继续招生的原因大概就是学校招聘了不少这些专业的教师。因此,对于这些专业的学生而言,不破不立,只有勇敢地走出自己所在的圈子,才能够体会到其他专业的精妙之处。

CHOICE

而对于职场人士而言,基本上都会想靠一些好项目来升职加薪,但是在整个社会的大环境下,有的方向确实是在走下坡路,行业越来越饱和,竞争越来越激烈,所做的技术难度越来越低。随着技术的发展,原有的一些技术和框架都会逐渐被淘汰,掌握的技能价值也会越来越低,甚至可能出现找一些应届生培训几个月之后就能够达到老员工的水平。在这种情况下,随着行业的整体下滑,如果还抱着原有的技术栈不松手,那只能变得越来越没有竞争力。在这种情况下,就要主动寻求突破,寻找自己所拥有的技能和其他专业的共同点,将自己的技能主动地迁移到更有潜力的方向上。在职场上,一定不要死抱着一个东西不放手,一定不要抱着我就是来做这个方向的想法,而其他的方向都不去了解和尝试。在工作中,应该审时度势,创造或者寻找优质的项目和资源,因为一个有潜力的项目和优质的资源所能够带来的好处有的时候会远远大于自己当年所做的方向,那个自己当年不舍得放弃的方向。

上升通道

整体来说,在一个人面临着决策的时候,沉没成本最会影响一个人的决策。无论是从经济学的原理上来说,还是从日常经验上来讲,其实都应该放下包袱,轻装上阵,寻找一个更有前景和前途的方向去发挥自己的特长。

 

授人以渔—从博士生和新员工的成长谈起

众所周知,无论是在学术界还是工业界,所有的人都是从新手开始,一步一步地走向正轨。如果想在高校谋得一个教授的职位,所有的人都是从本科开始,然后到 Master 阶段,最后走向 PHD 的漫长时期。即使拿到了博士学位,也就是一个预备军的阶段,相当于获得了一个学术界的入场券。通常来说,在获得了博士学位之后,通常还需要一段时间的博士后工作经历,才有可能在学术界谋得一席之地。在工业界,除了少数大牛之外,几乎所有的人都是从底层干起,一年一年的升级打怪,最终获得职位上的晋升。作为一个在学术界和工业界都混过几年的人,在这两个地方都踩过不少的坑,这几年也看到周边的同学在学术界上的分别走向不同的道路,身边的同事也在工业界上作出各自的选择。近期正值博士生开学和新人入职的时期,正好有一些个人的感悟跟大家交流一下。

循序渐进

对于一个在读博士生来说,如果最终想留在学术界工作,并且在高校或者研究所谋得一个讲师或者教授的职位,那么博士期间的工作就显得至关重要。对于一个博士生而言,博士期间的课题通常来说都是导师帮忙定下来的,从一开始的课题收集,开题答辩,整理思路,撰写论文,导师在其中将会发生着至关重要的作用。选择的课题好坏直接决定着博士生最终的产出和收益。其实,要想让一个博士生做不出来课题是非常容易的,直接让他去攻克 Riemann Hypothesis 就可以了,但是这样做并没有任何的意义。导师的作用是培养一个又一个合格的博士生,让其所在的研究方向能够逐渐壮大,从而在国际上处于领先地位。如果让博士生去攻克 Riemann Hypothesis,不仅没有任何好处,也会对博士生造成毁灭性的打击。在博士生刚入学的时候,导师要根据自己的多年以来的工作经验,给博士生选择一个能够出成绩,但是又不是特别难的课题,而不是给学生一个本方向的终极难题。只有这样,博士生才能够在最终答辩和找工作的时候占据一定的优势,并且也有机会在学术界存活下来。

即使选择了一些合适的课题,也不能够让博士生从正面直接攻克它。因为最终的问题可能还是相对偏难一些,对刚进入博士阶段的 PHD 来说可能并不合适。在这种时候,需要采取循序渐进的策略。就拿笔者之前所研究的动力系统方向来举例,刚刚开始攻读博士的时候,尤其是在前两年,只需要做一个 Ergodic Theory and Dynamical Systems 这种级别的论文就可以了。因为这种时候需要的是稳定军心,让 PHD 能够有信心继续从事一些更难的课题。在博士生第三年至第五年的时候,尽量去做一个更难一些的题目,然后其博士论文的课题大致能够发表在 Communications in Mathematical Physics 这种级别上。这样的话,博士生寻找一个博士后岗位甚至一个教职都没有太大的问题。在找到了工作之后,通过会有两种选择,一是可以继续做之前的课题,保持一个持续的领先优势,二是可以做更难一些的问题。如果能够有持续的小论文产出,并且最终有一个大论文的话(例如发表在 Annals of Mathematics)上,基本上 Tenure 之路已经接近稳妥。整体来看,在博士生期间最好的策略是选择一个循序渐进的过程,而不是想一口气吃成一个胖子,给了一个超难的课题让博士生自生自灭。

对于刚刚工作的人也是一样的道理,无论是实习生还是刚入职的应届生,在公司层面都会制定一个所谓的“师傅”或者直系领导帮忙带一下。对于实习生而言,其实他们在公司里面的工作时间也就两三个月,并且最终会面临一个实习生考核,来决定是否录用。在这种时候,如果是想当一个负责任的老员工,在这种时候就一定要给实习生一个相对容易出成绩的项目。而这种项目则不能是那种很难的长期项目,但是与长期项目又需要有某种千丝万缕的联系,最好就是长期项目所需要的核心部分。老员工需要做的就是把这一部分内容从整个项目中剥离开,该准备的数据,该搭建的工具环境都需要提前准备好。只有这样,实习生才能够在一个相对紧凑的时间段内迅速的出成绩,然后最终产出的时候获得一个不错的成绩。

融入圈子

无论是在学术界还是在工业界,都强调一个圈子的概念。在学术界选择导师的时候,就好比足球运动员选择各种各样的俱乐部,有的俱乐部可能比较大并且人才济济,有的俱乐部可能比较小但是却很有发展潜力。在进入了这个俱乐部的时候,导师除了需要把必要的论文资源和材料,相应的方向指导清楚之外,其实最重要的就是带领学生们进入这个圈子。可以通过举办一些学术会议的方式,让学生们去参加,并且主动结识同行中优秀的人才。也可以通过开讨论班的方式,让博士生主动认识院系里面的各位大佬。其实,在未来找工作或者教职的时候,不仅是需要老板的推荐信,还需要同行们的一些评价和建议,甚至由同行大佬们提供一个岗位。因此,提前融入相应的圈子对于一个博士生来说非常重要。在这种时候,导师需要做的就是主动把自己的学生介绍给自己的学术界朋友认识,说不定在互相交流的过程中会有一些灵感出现,对学生做论文也是有益无害的。而且导师也是有着自身的局限性,不可能在学术领域里面面面俱到,这种时候,如果有同行的协助,那么对学生的成长方面则是会很有益处的。整体来看,主动帮博士生寻找必要的资源则是一个合格的导师应该做的事情。

如果是对于公司里面的新员工或者实习生来说,很可能面临的事情就是项目无法推动,无法在团队内部找到资源。这种时候,如果没有老员工一些必要的协助,实习生或者新员工将会举步维艰。因为公司里面的代码,架构,技术很可能散落在各个地方,文档的管理建设方面也未必特别合理。这种时候,只有老员工才知道哪里有坑,哪些人能够解决哪些事情,哪些人能够提供相应的资源。这些是新员工无法预先了解到的事情。如果是一个合格的师傅,就需要及时了解新人在做项目过程中所遇到的困难,所需要寻找的资源和技术,然后协助新人去寻找相应的资源,把项目整体推动下去。在一些集体活动方面,也需要帮助新人主动地融入团队的圈子,避免出现新人被孤立的情形。

避免坑人

无论是在学术界还是工业界,都存在着导师坑博士生,老员工坑新员工的情况。在公司里面,老员工和新员工可能还存在某种竞争关系,因此会出现老员工不太愿意教新员工的情况,甚至主动坑新人的事情。有的时候可能是因为老员工的能力不太行,自己无法开疆拓土,只能靠坑新人来拉开自己和新人之间的差距。有的时候是因为老员工不愿意把自己的核心技术告诉新员工,担心新员工有朝一日取代自己。其实,是否主动教人是完全自愿的,这个看每个人的性格和具体情况来定,但是在团队内部,如果主动坑新人就是老员工的不对了。老员工可以不主动传授别人知识,但是万万不能主动坑害新人。所有的人都是从新人阶段逐步走过来的,如果在项目中老员工发现了一些坑,那么有的时候是需要主动告知新人,避免犯同样的错误。而老员工在一些时候,则需要给新人一些独立成长的机会,让新人能够在项目中获得相应的成长,只有这样,才能够最终独当一面,在未来成为一个合格的员工。

无论是导师在学校带博士生,还是老员工在企业里面带新员工,整体来说,如果新人比较靠谱的话,对导师或者老员工来说其实是有相应的收益的。无论是学术界还是工业界,其最终的目的都是使得课题越做越好,发的论文档次越来越高,项目的收益和技术影响力越做越大。

 

短板与长板理论

之前听说过一个木桶理论:“一个木桶能够装多少水,取决于最短的一块板”。这个理论听上去确实很有道理。在高考的时候,如果一个学生的英语只能考 20 分,那么即使其他课程都是满分,也是上不了最好的学校的。反之,如果一个学生的每门课都很好,即使他没有达到每科顶尖的水平,在填写高考志愿的时候也是会比前者能够选择得更多。因此,在高中的时候,老师们都会奉劝大家不要偏科,因为在高考的大环境下,过度的偏科确实没有太大的好处。

后来念了大学和研究生,发现在一个知识爆炸的时代,在一个人的精力实在是有限的前提下,实在是无法做到面面俱到。即使在数学专业,几乎也无法做到一个人精通数学的所有领域(当然精通本科数学课程那种程度实在是不能算)。一般来说,研究分析和研究代数的就是两拨人,这两拨人的技能点和兴趣点都不太一致。在数学界尚且如此,更不要说跨行业的精通了。就像在企业里面,很难找到一个前端,后台,设计,机器学习统统都精通的人(不是说找不到,而是非常稀缺)。在这种情况下,每个人都面临着选择,是选择做一个全栈工程师,还是一个只精通一个领域的人。

如果选择做一个什么都会做,面面俱到的人,首先就要跨领域的多学习各种东西,例如前端,后台,机器学习等等。在精力上就要像高考的时候一样做到相对均衡的分配,在每个领域都需要有所涉及。这样的好处就是什么样的活都能干,如果团队里面暂时缺少某个领域的人,这类人就可以及时补上,能够把项目顺利完成。这类人在就业的时候选择面也会广一些,因为他们什么任务都能够做。而且很多时候,在团队里面确实需要一些这样的人才。但是这类人才可能也会有一些问题,那就是精力会相对分散。毕竟研究的面广了之后,研究的深度可能就要打折扣。不过,这件事情也是因人而异的,毕竟人和人之间是不一样的。

如果选择做一个精通某个领域的人,那么他的精力就会相对集中。在同等智力条件下,他所研究的深度就会比面面俱到的人所研究得深。说句实在话,在知识爆炸的时代,即使是人工智能领域,其实也很难做到样样精通。例如,自然语言处理所使用的技巧和方法与图片处理所用的方案是有一定的区别的,在推荐系统上所使用的技术到了运维系统上可能就不能生效。在这种时候,如果企业要解决某个业务难题,无论是防止黑客攻击还是做一个智能运维系统,都会聘请一个在这些领域有过相关经验,并且在业界有一定知名度的人才来帮忙解决这个问题。一般来说,在这种时候不太可能选择一些没有相关工作经验的人来重新培养,因为一来成本太高,二来无相关工作经验的人可能也无法胜任这类工作。总之来说就是风险太大。

就普通成年人而言,一般都有着自己的工作习惯和专业技能。如果一个人的学习能力还可以,那么就可以把他已掌握的技能迁移到其他类似的领域去;但是却很难去让一个成年人进入一个他完全不了解的领域。如果进入一个完全陌生的领域,一来重新学习新的技能成本太高,二来放弃自己所掌握的技能是一件很困难的事情。所以,有的时候这个人能否做不同类型的工作就看此人是否具备技能迁移的能力了。

整体来说,做通才或者专才看的是这个人的性格和能力,每个人都需要根据自己的实际情况作出最适合自己的选择。在精力充足的情况下,可以选择多学习一些方向,掌握不同的技能点;在精力有限的情况下,不如根据自己的兴趣爱好,选择一个最擅长的领域做下去,然后在这个领域形成自己独有的竞争力。

 

从高考志愿谈起

高考志愿

2018年6月10日,又是一年高考刚结束的日子。每次到了这个时候,都会回想起笔者在 2005 年高考填写志愿的时候。记得当年最火的方向应该是生物工程或者生命科学一类的专业,然后有不少优秀的学生去选择了这类专业。当时貌似还有人说计算机的人才过剩,会出现过了几年人才过剩,毕业生不好找工作的情况。不过当年自己也没想那么多,就完全凭着兴趣选择了最想学的方向,也是大多数人不会选择的方向,那就是数学与应用数学专业。

一般提到数学专业,绝大多数人的反应就是:“读完之后大概只能够当老师了吧?”有的人也会说:“读了数学专业,再去金融或者计算机专业会变得容易许多。”这一类的话笔者当时确实也听了不少。不过,当年还年轻,也没想那么多事情,就一门心思的想把数学学好,做自己喜欢做得事情,也就是所谓的 Follow My Heart。

当年笔者在本科一直研究着数学,后来又在博士生阶段继续从事数学研究。在数学界学习的时候,笔者一直在学习数学相关的知识。通常来说老师只会告诉书本上的内容,包括定理和证明之类的。并没有告诉学生们这些数学知识该怎么用。这个其实也不怪老师们。毕竟大多数老师并没有工业界的工作经验,基本上都是在搞科学研究。事后回想起这些数学知识,就好比了解了一个精巧的工具箱,里面有着各种各样的工具,但是却没有人告诉笔者这些工具该如何使用,该用在什么实际场景中。所以,经常就会有人问老师:“学习那么多数学知识究竟有没有用?”

剑宗与气宗

其实,数学并不是没有用,而是对大多数人没有用。数学有没有用就看每个人对数学的掌握程度和应用程度,如果一个人只能掌握到高中的水平,那基本上也就是加减乘除这种量级了。如果一个人能够掌握微积分这种程度,那就可以从事机器学习的相关工作。通常来说,在工业界搬砖的话,如果是机器学习的面试,一般或多或少都会问到一些微积分和线性代数的知识。如果是博士生去面试投行的 quant ,还需要会概率论,随机过程等统计学知识。

从笔者在工业界工作这几年的情况来看,一般工业界能够用到的数学边界,通常来说就在泛函分析,抽象代数,微分流形,随机过程这几门课的难度,再高级一点的课程恐怕就用不上了。而数学专业的两门基础课数学分析和高等代数,在工业界可以说是无处不在。而学习数学课,通常来说就像打基础的一个过程,更像是一种修行,好比学武的修炼内功。

金庸的《笑傲江湖》里岳不群这样说:三十多年前,咱们气宗是少数,剑宗中的师伯、师叔占了大多数。再者,剑宗功夫易于速成,见效极快。大家都练十年,定是剑宗占上风;各练二十年,那是各擅胜场,难分上下;要到二十年之后,练气宗功夫的才渐渐的越来越强;到得三十年时,练剑宗功夫的便再也不能望气宗之项背了。然而要到二十余年之后,才真正分出高下,这二十余年中双方争斗之烈,可想而知。

而学习计算机的正反馈其实相对快很多,在 GitHub 上下载源码装上了环境就可以运行,就能够看到效果。而学习数学的正反馈其实慢很多,毕竟看了很多数学书也不见得马上能够投入生产环境使用,甚至可能一辈子都无法投入实际使用。但是学习数学有一个好处,那就是思考问题和分析问题的时候会把实际问题抽象出来,把实际的问题转化成以前解决过的问题,用类似的方法和技巧进行解决。

其实选择什么样的专业也跟一个人的性格有关系。有的人就喜欢那种立竿见影的效果,学习一个东西就希望能够立刻投入生产使用,能够看到有产出,希望得到正反馈;而有的人会把得到正反馈的时间延长,期待通过长时间的学习,获得一个更大的正反馈。如果是学习工科的话,通常来说做一个东西所得到的正反馈就会很快;如果是学习理科的话,得到正反馈的时间就会变得很长,甚至没有正反馈。

数学的作用

其实,并不是学数学的人就一定能够做成每一件事,能够干好每一个行业。如果是数学系的学生刚刚进入工业界,最有可能面临的情况就是短期内无法产出,没有相应的成果,毕竟在公司内部都是半年甚至三个月考核一次。数学系的人的产出在短期内估计无法与计算机系的人相比。只有当数学系的人具备了写代码的能力,并且能够独立负责一个模块,能够实现一个功能的时候,这个人的数学能力才能够发挥出来。

虽然现在是一个知识爆炸的时代,但是数学系的课程却没有发生过太大的改变。十年前的课本和现在的课本也差不了多少,估计未来也不会发生巨大的改变,最多是删减一些内容。最关键的是,数学课本上写成公理,定理,推论这类的东西是正确的,是不会被推翻的(当然课本上也有写错的时候)。十年前是正确的,现在是正确的,未来也是正确的。但是其他学科就不太一样了,技能更新太快,现在所学的技能未来很可能就没有用处了。数学从来就没有大热过,很多人根本就不会选择数学专业,也不需要主动去劝退别人,数学系的学生从来都是主动退出。从中小学开始,就有很多人被数学虐得死去活来了,也不会去做“明知山有虎,偏向虎山行”的事情。

不过,凡是热衷于干脑力劳动的人,一般都会觉得当年要是多学一点数学该有多好。在最后,摘选知乎上的一段话:https://www.zhihu.com/question/47952938/answer/375655910

虽然说计算机和金融这俩行业都不能迷信数学,即把数学在其中的地位无限拔高。但这俩行业离开了数学,就是达内培训班和清华叉院的区别,就是银行柜员和文艺复兴的区别。就冲这个区别,数学的王者地位,还是无可动摇的。

 

开公众号之后的一些感想

从2015年11月左右开始写订阅号的文章,至今也有大半年的时光了。其中得到了很多朋友的帮助和建议,也有朋友在后台留言,在此感谢大家。不过在看到一些问题的时候,有一些想法,在此写出来和大家一起分享。

PS:自己踏入社会也没多长的时间,可能其中也会有一些偏见,希望大家多多指教。

1. 范例思维

在写《博士生涯》系列文章的时候,有的朋友会在后台留言咨询这类问题:“在NUS读完PHD之后能否去美国或者欧洲做博士后?能否回国去985,211高校?”

关于这一类的问题,可能和大家在中学,大学所受到的教育有关系。在中学的时候,大家只有一个目标,那就是高考,所有事情和所有人都必须围绕着这件事情转,沿着这条路走下去。但是到了大学之后,就会明显的发现身边的同学不再只围绕着学习这一件事情,比方说有很多同学会去参加社团活动,有不少同学会去做社会实践,当然也有一批同学依旧以学习为主业,持续着中学的生活。其实,这几种生活方式都是可以接受的,毕竟在18岁之后,很多事情就需要自己亲自做决定。这个时候就会带来一个问题,如果学生明确知道自己想做什么事情,那就不会产生迷茫,肯定就一股脑的做下去了。但是,很多学生是不清楚自己该做什么,不该做什么的。那么在大学里面就会有老师,辅导员甚至学长学姐来给大家提供经验,告诉大家应该做什么,只有做什么能够带来最大的收益。

到了国外攻读博士学位的阶段,这种环境就会产生巨大的变化。不再有老师的就业辅导,不再有辅导员这个职位,甚至没有学长学姐的经验总结。用常见的话说就是:一切皆有可能。比如,在NUS读PHD的过程中,自己亲眼见过自己的朋友遇到过各种各样的悲剧。有的是导师辞职离开学校,把学生留在学校不闻不问的;有的是即使导师在学校,也对学生的科研不关心的;有的是拖着学生长期不给毕业的。身边的朋友也做过各种各样的选择,包括读博期间换导师的,转专业的,甚至退学的。至于毕业的去向,不仅有去欧美做博士后的,有去大学做助理教授的,也有去投行的,甚至有去互联网公司的。每个人都有着自己的生活,除了特别亲密的朋友,你不再会去关心别人做什么样的工作,过什么样的生活了。每个人根据自己的情况,走着完全不同的路,根本就没有模板一样的人可以模仿。每个人都需要为自己的选择负责,为自己的未来做着准备。

2. 线性思维

还有一些经常碰到的问题就是:“在NUS读完PHD,能够去投行工作吗?”,“在读博士期间需要去考CFA吗?”,“博士毕业工资能够拿多少?”,“这个硕士生或者博士生的项目竞争力如何,值得去读么?”

这些就是典型的线性思维,就是做了事件A,必然会导致事件B的发生。在现实生活中,人的发展不仅要考虑自身的情况,还需要考虑历史的进程。也就是说,很多时候并不是因果关系而是某种相关性导致了事件的发生。首先,读PHD,没有人能够保证博士生一定能毕业。其次,学生也不知道自己要读几年才能够毕业,只能够根据师兄师姐的毕业年限计算一个期望值。再次,导师给学生的推荐信质量也是不同的,师兄能够去985,说不定由于导师不喜欢某学生导致该学生只能够去二本教书,即使这个学生的论文发的水平远远高于师兄。并且跟一些厉害老板的学生的出路也不见得比一些普通老板的学生出路好。最后,能不能够去投行,能拿到多少工资基本上都是因人而异。曾经见过纯数学的同学去投行做quant,去互联网公司写代码,做着和博士论文基本上没有关系的工作。真正厉害的人,不在于多读了一个学位或者考了一个CFA,而在于那些让他们厉害的背后因素,一些其他人根本不具备的素质,比如性格,意志力等。

3. 学生思维

之前某天写过一篇转行的文章,有人在后台留言:“这些技术能不能进了企业再开始学?”,“转行到底要花多少时间?”,“在公司有没有人带着干活?”

在学校的时候,无论是本科,硕士,还是博士阶段,学生都可以告诉老师,虽然我不会,但是我愿意学。但是按照普通企业的招聘标准,一般都是观察这个人能否胜任该岗位的需求(或者说有潜力胜任这个岗位),而不是看这个人愿不愿意学。在企业工作,是需要时刻有产出的,无论是成功的项目还是失败的项目,都需要给出一个交代。企业是一个商业机构,需要员工有产出,然后从中获取利润的,而不是像学校一样的培训机构。

至于转行的时间肯定是因人而异的,不同的人有着不同的思维方式,不同的知识结构,所能够做的事情也会有所不同。不过如果想好了要转行的话,早准备肯定胜过不准备。还有的人会问如何快速的学习HIVE,C++之类的,这一类问题实在是不知道怎么回答。不过如果有一个人问我,如何在十天内快速学会实变函数,我一定会告诉他这是一件不可能的事情。

刚进公司的时候,一般来说会企业都会指定一位导师,给新人划定工作的范围,甚至有明确的deadline,看上去其实和学生时代没有什么两样。但是如果只是抱着完成任务的心态来工作,那这个项目基本上就完蛋了。上级一般来说会希望员工主动去思考一些问题,主动做一些事情,甚至有一个较为长远的规划。做这些事情都是希望员工能够成长起来,能够在工作中独当一面,能够和别的团队甚至和其它公司竞争。在学校中,一般来说老师都会主动教学生很多知识,希望学生学会这些技能。但是在工作中,有人主动传授知识和技能,绝对一种可遇而不可求的事情,很多技能都需要自己主动地去学习。别人出于援手帮助是由于他们的好心,如果没有出手也不必苛责。每个人在公司里面都有着做不完的业务,忙不完的事情,实在是没有多余的时间去指导其他人。既然在别人都可以自学成才,为何不自己动手主动学习,丰衣足食?在大多数情况下,一定要放弃“老师教才会学”的学习方法,企业雇佣一个人是用来产生价值的,而不是不是消耗公司资源的。

4. 不独立的思维

在学校的生活中,除了读PHD期间课题的未知性,在中学,本科,硕士的作业甚至论文几乎都有标准答案,考试也有规定的范围。在学生生涯中,除了读博士阶段,一般来说老师都会告诉学生该怎么做,不该怎么做。但是到了工作中,处处都是未知,每一天都是一种“考试”,没有固定的答案可以参考,没有现成的模版可以参考。学生思维的人一般都会以一种被动的方式去接受任务并完成任务,当然这并没有错。不过以职场的角度来说,这样就会处于一种非常被动的方式,一般都会在做一些繁重而没有多少技术含量的任务。在职场混,不但要学习,还需要主动给业务方甚至自己的团队出谋划策,想各种方案应对当前的问题。

在实际工作中,不仅需要提升自己的技能点,亲自动手做调研的工作,还需要学会和业务方沟通,想办法从其它地方获取资源供自己调用,甚至知道如何管理项目。如果独立负责一个小项目的话,不仅需要自己把控项目的进度,积极反馈产品的不足之处,还要推动项目其余成员去做该做的事情,一起把项目做好做大。在项目的进展中,不仅需要把具体的任务落实到每一个人身上,还需要实时地与大家沟通,了解项目的困难点和关键时间点,更好的完成项目。