毕业生应该具有的基本素养

skills.jpg

Figure 1: Photo by Beatriz Pérez Moya on Unsplash

最近收到两封邮件:

10月5日 收到一封题为 "你好 我在学MFC 你能帮帮我么",内容为 "看不懂 MFC代码原理能帮我解解一下么" 的电子邮件;昨天又收到一封邮件,题为: "寻求帮助",内容:

你好,在网上关注到你,想问你一下,我明年准备找工作,想去互联网公司,只是我不是计算机专业,会一点c,不精通,但是我想的是,因为笔试会有很多类型的题目,啥操作系统,计算机组成原理等等,还是语言本身是一回事,把这些操作系统,计算机组成原理努力学好,能够尽量理解就行,还是需要认真掌握语言?我现在一直刷leetcode的。

以前也收到过类似的邮件,有问技术问题的,也有人和上面的一样临近毕业迷茫,技术选择、公司选择等等。各种原因吧,有的进行了回复,有些也就"置之不理"了。今天闲下来了统一聊一下我所理解的「毕业生应该具有的基本素养」,希望可以帮到在处在大学毕业之际(大三、大四)的学生们。

在开始之前,说一下目前我们面对的两个真实现状:

  1. 坏消息是,高校的教学方案变更远远跟不上互联网的发展节奏,这是我在毕业之后自己的一个感受。10 月底,我的一个大学老师张老师回国途径上海虹桥机场,聊了几个小时。真实的情况比我想象的还要可怕,我毕业也三年了吧,只是没想到高校的教学模式还处于我们那个时候的状态。高校自己也处于迷茫期,也在不断做调整优化。可想而知,处于高校的学生们的尴尬状态。到大四上学期的时候,我才第一次意识到中国的教育模式存在问题,最大的问题在于学生不知道为什么而学,就出现了:"上小学的目的是为了初中,上初中的目的是上高中等等…" 这种可笑的上学理论,而很多人抱着这种理论一直上到了博士(切勿对号入座)。我在以前的文章中说过了,原则上来讲,大学应该是从学生到社会的一个过渡阶段,而实际情况是,大学让我们丢了初高中累积的基本知识,让我们不会说话(不知道怎么高效的沟通),不会写字(不知道怎么去写一封正式的电子邮件,不知道怎么写个人简历)。这真是中国教育的悲哀,是我们的悲哀,更坏的是在短期内这个问题似乎得不到解决。
  2. 好消息是,随着互联网的发展,电脑的普及,获取的知识的途径越来越简单(如果你能突破的了那道墙的话,就更简单了),这个行业的入门门槛也越来越低。一个毫无专业基础的人,照着苹果官方的 iOS 开发教程,折腾一段时间也可以开发出自己的 App,再坚持做个一年两年的,你就是一个专业的 iOS 开发者啦。

回到正题,下面列一下我所认为的四点毕业生应该具有的基本素养或者说能力:

1、基本语言沟通能力与书面表达能力

说实话,当我收到 "看不到 MFC代码原理 能帮我解释一下么" 这种内容的邮件的时候,我的第一反应就是回复: 「不能」。

群里的:@SUNisD0wn 说:"太残忍了,这对新人是一个致命的打击啊,友善点让自己找资料得了 说自己没时间啥的";@吴磊 说: "xx 说的也对,感觉只是瞬间的,其实很多事情我们自己也或多或少经历过,或许应该更和善一点比较好"。

其实之前我也一直都是抱着能帮到别人就帮到别人的心态,每封邮件都是认认真真的回的,但是有一部分人你回复之后他们会有反馈,会表示感谢,还有一部分人他问了你问题花了 10 个字,我回复写了 100 个字,他要么再也不回复了,要么用一两句话敷衍过去。

后来我发现从邮件的内容就很容易区分出这两种人了,真想知道答案的人,我们抛开什么文笔、条理性什么的不谈,你从他的邮件内容上是可以看出诚意的,这样即便我花三四十分钟去琢磨回复也是有价值的。

我们再来看第二封邮件,他同时把这封邮件发给我两个邮箱(me@zhangjiee.com 和 chinajiezhang@gmail.com), 通过内容:

你好,在网上关注到你,想问你一下,我明年准备找工作,想去互联网公司,只是我不是计算机专业,会一点c,不精通,但是我想的是,因为笔试会有很多类型的题目,啥操作系统,计算机组成原理等等,还是语言本身是一回事,把这些操作系统,计算机组成原理努力学好,能够尽量理解就行,还是需要认真掌握语言?我现在一直刷leetcode的。

我知道了以下几个信息:

  1. 明年找工作,今年应该大四了
  2. 非计算机专业
  3. 学科类大课和计算机编程语言应该优先选哪个,需要掌握到什么程度
  4. 会一些C,刷 leetcode 的话应该有些数据结构和算法的基础
  5. 同时发给我的两个邮箱说明是希望得到我回复的

我想我没有理由不回复他,这也是我写这篇文章的根本原因。

不揣测第一封邮件的诚意什么的,那都是扯淡的。内容太过笼统了,我不知道怎么回复。第一、MFC 是一个很大的框架;第二、我没有碰那玩意已经四年了,忘的差不多了,如果你让我推荐书,我兴许还能推荐几本。

通过这两封简单的邮件对比,足以说明 "书面表达能力" 的重要性,看你文章或者邮件的人并不知道你写的时候的心态,他只能通过你的文字去揣测,你心里想的再好,你说你很努力了,他也不知道啊。

"沟通能力" 比 "书面表达能力" 更加重要,不过我要说的是素养,不是阳奉阴违,不是世故的聊天。是把一件事情清晰的阐述的能力,是把信息正确的、简明扼要的传递过去的能力。

这两样东西是每个毕业生必须要拥有的最基本的素养,也是我见过的很多新人做的最差的一部分,不需要华丽的文字,超强的逻辑思维,仅仅是把自己心里想的简单的、清晰的表达出来。

书面表达能力,通过多写东西,然后反复检查逻辑性、错别字、标点符号、断句等就可以了。而沟通能力的训练,因为不同的对话场景,每个人的当时心态、情绪、性格等都不一样,没有什么方式方法可循,只能平时多注意。

这些属于软实力,越早知道,越早注意,越早训练,日积月累养成习惯,发挥的作用要比你掌握一门技能要重要的多。

2、扎实的基础知识

考虑到这篇文章是写给将毕业的学生的,所以把技术部分提前了。下面是一个毕业找工作的人应该懂的最基本部分,这个其实是在大学的时候舍友祥子跟我讲的,我整理完善了一下:

  1. 一门编译语言: C/C++/Java/C#
  2. 一门脚本语言: Perl/Python/Ruby
  3. 一个操作系统: Windows/Linux/Mac OS X
  4. 一个可定制化的代码开发环境: Vim/Emacs/Sublime/Visual studio
  5. 基本的调试方法: 下断点啦,打LOG啦

这 5 条保证了你可以在自己的熟悉下的环境愉快的写代码了,基本上也能满足了大部分公司的开发任务,而且我觉得能满足这五条的话应该可以找一份不错的工作了。然而这五条只需要小半年的时间就可以轻松的拿下了。

再次,那些理论知识:

这些理论知识都很重要,但是暂时不需要花很多很多的精力去研究明白,而是通过反复的实践琢磨。最上面的 5 条,我相信任何人只要不傻、不懒,给他点时间,都可以轻松达到。谁都可以达到的东西:基础语言和工具,其实竞争力并不大。所以,我个人以为这些理论知识才是一个技术人员技术的核心竞争力(抛开业务能力)。

总结,对于毕业生来讲,前 5 条是必须要掌握的,后面的是锦上添花的,理论向的东西需要长期的琢磨和研究,优先级不用我说了吧。学两天 Python ,你可能就可以自己写脚本分析数据了,但是看完操作系统,你好像也没多明白什么, 这是常事。

讨论: 科班与非科班到底有没有区别?

这是一个极具争议性话题,因为邮件里涉及到了,我也就不避讳的谈谈自己的看法。所有现象都是有规律的,只不过很多人更相信自己看到的和感受到的小处,确忘了看大处。我们更相信美好的东西,但是忘记了自然界的基本规律。我举个几个例子:

这样的例子随处可见,我举这几个例子想说明的是环境对一个人的成长的影响是耳濡目染的,而且是不可抗拒的,不管这个人在不在乎,天赋高不高,想不想接受,他都没的选择。

所以在我看来科班和非科班是有区别的,但是不用太在意这些区别,因为这些区别人为无法左右和选择的。只能决定起点,但不能决定高度,我一直认为生命是一个过程,所以今天和明天才有的选择。

3、独立学习和思考的能力

互联网的发展速度远超过我们的想象,我很喜欢敏捷开发的一个观点:"拥抱变化"。

我们这里只谈技术,工作以后你就发现,坏消息是你每天都可能面对不同的技术和问题;好消息是大部分技术和问题都是触类旁通的,所以你要掌握技术的主线和不变的规律,并加以总结应用。

计算机类的知识学习并没有什么捷径而言,只有不断的学习、不断的训练强化,如果要说有一点捷径的话,就是勤思考。

4、培养开放的心态,面对未来

我记得我毕业要工作的时候,不是怕找不到工作,而是对未来的未知感到害怕。其实说白了就是心态不好,就最近几年的经历来讲(所经历的事,所面对的人),还都是很不错的,也就说明了我当时的担忧是多余的。

之所以放到最后,我认为心态是比其他东西要重要的多。因为刚毕业的面对的不是一份工作,而是一个社会。不管是生活上,还是工作上,都有很多的问题要去面对,要时刻保持一颗开放和积极的心态面对未来。


写文章之前邀请 TankyWoo 写了一下他认为的毕业生应该具有的基本素养,言简意赅,如下:

感谢 Tanky 在百忙之中(在加班,哈哈)抽时间整理。

Date: 2015-11-08 00:00:00

Author: JerryZhang