会学习的孩子

By | 2019年5月2日

上周末和两个同事(Z和H)一起打羽毛球,大概打羽毛球的技术是Z > 我 > H。

第一次和他们俩打球,结束后和他们聊了下之前他们的背景。Z有一定的基础,到少年宫打球的时候和老师请教过一些基础的击球技巧以及基本步法。H就是以前随便打打,没有专门研究过击球、脚步移动的技巧。我高中有段时间几乎每周都打羽毛球,虽然没专门练过,也有一些击球的「球感」,但是明显能够感觉到和Z的差距很大——虽然我也不是一直打不过他,但是就是能够发现他打球比我省力。

打球休息的间隙,跟Z聊天时我发现了自己羽毛球打的不够好的原因,以及之前学习中遇到的一些误区。

我向Z请教正确的击球知识是怎样的时候,他给了我这样一个回答。

「从你的击球距离来说,小臂的力量是足够的,但是你的击球方式不对。每次球下落到合适高度的时候,应该用大臂去带动小臂击球,是一个很舒展的动作,而你击球时仅仅用到了小臂,所以即使你的小臂力量还算不错,但是总是很难打到底线附近。你的步伐也有些乱,不过你的移动速度非常快」,Z对我说,而且给我演示了一下正确的姿势。同时他还点评了一下H的打球风格。

我当时真的被他的回答给惊讶到了,不仅给出的建议非常到位,而且我真没想到他在打球的时候,把这一切都分析出来了,而我真的只是在娱乐。

同时,我还发现了他身上其他的几个优点。他的实力几乎是完胜H的,在H和Z对局时,他会把节奏放慢,练习自己的发球——Z的发球技术是个短板。我们打球时旁边的人想要我们双打,旁边那组明显是打球非常好的,而我们就算是娱乐局,他很欣然的同意了,并且主动要求和那个打的最好的一个人过招。

看吧,这就是一个很典型的会学习的孩子:有较为扎实的基础(这个肯定是之前就下了很多功夫反复练习的),会冷静分析自己跟身边人的长处与短处,抽空就练习自己不足的地方,同时愿意和自己优秀的人挑战与学习。

相比于Z,我不仅羽毛球打的不够聪明,连学习方法与节奏上,都是有误区的。

这次打羽毛球,我学习到了很多。

来自技术的焦虑

By | 2019年4月6日

前段时间一个同学和我聊到,他的工作是传统行业,部门技术较为落后,想要换方向,想从C++转到Java。说我有过类似的经历,听听我的经验。

我说C++的经验我仅限于刷题以及面试,而写Java又只是在业务层面做些简单的复制粘贴罢了,不会啥。

我想了想,觉得其实这个话题可以衍生为三个子话题:1)业务与技术;2)技术的新旧对我们提升的影响;3)我们能够学到的技术有多新。

为什么某个业务不使用新技术?

技术是服务于业务的,一块业务不使用新的技术,可能是因为压根就没有这个必要。甚至,当下业务场景使用新技术带来的问题,可能会比收益还多。

技术的新旧对我们的提升有影响么?

很明显,是有影响,但是影响有我们想象的那么大么?我个人认为在一个技术较为落后的团队中,个人的提升空间依然很大。第一,我们都是刚毕业,编程功底还没有特别扎实,基本功扎实这一步,新旧技术的影响是比较小的,这是技术层面的提升。第二,技术是服务于业务的,旧的技术不妨碍我们理解业务,这是业务层面的提升。第三,写代码的高层次抽象是解决问题,但是解决问题不仅仅是靠写代码,在一个需要不同团队协作才能解决问题的复杂系统中,思考方式、协作能力等软实力的提升,都是潜移默化的,这是个人通用能力的提升。

我们可能一直保持自己掌握最新或者是较新的技术么?

不太可能。在一个发展较快的行业里,技术是在不停迭代出新的。新来的应届生很可能就会掌握更新的技术,而且从一个较长的时间维度考量,我们的学习能力(简单得说就是体力、脑力的一个函数值)是在下降的,那么我们到时候如何能够比应届生带来更多的产出?可能这才是我们应该担心的问题。

下面分享两个身边发生的事情以及我个人的启示。

我们组一个工作七年的“老员工”,上家在京东,本来是写C++的,后来因为技术栈更新,开始迁移到Java,当时他已经工作4年左右了,这从头再开始学习新的技术栈,得失怎么算呢?

我们部门合并到北京,现在有一个服务要使用北京的,人家用的是C++和Scala,变化总是不期而至。

做为一个程序员,不应该只拘泥于某一个平台或者某一门语言。在中国程序员的“黄金时代”,可能“一招鲜吃遍天”足以。现在互联网的人工红利已经过去,新入行的程序员更需要把基础打牢,才能适应未来职业发展上的一些变化。

硕士研究生阶段应该怎样度过

By | 2019年2月10日

不同的人过法不同。

如果你的目标是要出国读博,研究生阶段大部分精力应该在准备英语以及申请自己心仪的国外高校。如果你不喜欢科研想要早早工作,想要有个研究生文凭提高自己的竞争力,那么尽早实习减少科研时间的投入可能是个不错的选择。但凡牵扯到选择、决策的问题,都是个非常主观的问题,越是遵从内心越好。

那么我写下这些文字的意义是什么呢?我希望通过自己之前读研的经历,以及和身边同学交流之后的反思,给没有明确规划的人带去一些参考。每个人在特定时刻的经历有限,和别人交流经验(获得间接经验)可以扩大自己对世界的认知。

下面的几个方面,希望正在研究生阶段或者即将踏入研究生阶段的你,仔细思考一番。

一、实习

实习,是走向工作岗位前,最重要的一件事了。

对于理工科的专业而言(我猜测人文、社科类的应该也接近),不论未来是否读博,实习都是非常必要的。实习能让你了解到专业领域内现状是什么,自己对某个细分方向是否有热情,自己在某个方向的长处是什么、不足在哪里……

简而言之,实习会让你明白:市场需要什么样的人才,你的技能符合了哪些。有了这些先验信息之后,你在科研中不同方面投入的精力都会有所不同。

二、科研

科研应该是研究生阶段与本科生阶段最大的区别了。在本科阶段,大部分学生只会在做课题的时候参与一些接近科研的工作。即使是有参与实验室工作的学生,更多的也是配合导师或者是博士与硕士(有些学校在本科阶段就可以选择导师参与科研的)分配的任务即可。但是到了研究生阶段,导师就会希望你有些产出了,不仅仅是配合就行,他会希望你能贡献出一些有意义的成果,这就需要你不停地追最新的一些科研成果。

我建议读研的学生们,如果有机会,潜心去进行一些科研的工作,对未来的发展是有很大帮助的,尤其是你未来想要从事相关内容的工作(即使这份工作不是科研本身)。

好像有很多人抵触从事科研工作,在我尚未读研之前也是这样的。但是等我自己真正地接触科研,并且工作以后,才发现科研并没有想象中那么枯燥、令人反感,反倒是我从科研的经历中收获很多。

科研其实和其他的工作没有什么太大的区别,只是它和学习更加紧密一些。

在科研的过程中,为了解决当下遇到的问题,你需要不停地关注最新的研究动态,研读最近几年领域内进展的论文,需要关注媒体对相关内容的报道(我当时的方向和深度学习相关,而当时这个方向又特别热门),参加相关的学术会议去结实更多厉害的团队,甚至找相关论文的作者的主页,向他们寻求帮助。

你会接触很多时下的前沿技术,去认识更多出色的人。

想到这些,你会不会觉得科研是一项有意思并且具有挑战性的事情?

科研中最糟糕的感觉就是花了很多的时间却毫无进展,接着导师在后面催成果。其实这个在其他工作中,不也会遇到同样的问题么?堆砌了很多时间却毫无进展,有上级来催活,枯燥占据了工作中的大部分时间。即使你从事的是非技术性的工作,在处理人际关系中,也需要不停地揣测别人的想法,牵线搭桥认识更多的人,从而带来更多的机会。

如果你做的事情,可以简单地通过询问身边的人就解决,那么可能恰恰意味着,你的工作是低价值的,可替代性比较高。

科研和其他工作的区别,确实只是它和学习更紧密一些。

而在科研过程中,你对枯燥事务的适应能力,对新技术的学习能力,拓展人脉的能力,以及对当下技术的发展方向的思考,都是会对未来一个较长时间,带来积极得影响的。

三、是否读博

在读研之前,我是比较抵触读博的,但是研究生阶段之后,尤其是进入工作之后,开始有想要读博的考虑了。

从我个人的感觉而言,工作之后和当时科研的时候最大的区别是,有太多的事情需要考虑、需要关注(当然这也可能是现实工作中原本就存在的一些挑战),这样就使得自己的精力特别分散。比如我在研究生阶段做科研的时候,我需要关注的仅仅是课题相关的内容,技术大概的方向做了一段时间之后也比较清楚了,业务在做一段时间也能够熟悉。虽然期间也会遇到给其他学校的老师发邮件问问题,看paper跟进技术迭代这样繁杂的事情,方向整体还是比较明确的。到了工作之后,很多任务是不同方向,你所需要交流的人也是来自不同的岗位(比如产品、运营和技术等),远远不如科研的时候工作那么“纯粹”。当精力分散了之后,就没有那么多时间去积累技术了。

如果是读博的话,就能更专注于某一个方向,技术和业务的积累都会更有效率一些。

同时,从中国的发展看来,对高新技术的人才还是非常需要的。现在国家正希望突破西方的技术壁垒,这也是一个长期的问题,在这段时期内,新兴技术的人才都会遇到更多的机会。在读博的过程中,接触到的新技术、学习到的新工具,都会对未来工作带来很多积极的影响。

而且,随着出国读博的机会越来越多,在一个长期的时间维度,能够站在国际的视角理解行业的发展方向,对个人见识的增长以及技术的积累,无疑会带来巨大的帮助。

希望聪明的你,能遇到更出色的自己。

我以前还写过《我们的大学应该怎样度过》,如果有兴趣,可以看一看。未来有时间,这些思考都会再更新一下的。