计算机系应届生求职指北

最近帮了一个朋友的朋友作了下职业规划,结合以前在微博上的一些问答,以为很多应届生同窗对求职有蛮多误解的,因此这里分享下个人一点经验吧。虽然本文题为指北,但只是一个面向对行业、对业界技术不熟悉的同窗的操做手册。各位技术大牛可能以为粗浅,请见谅。html

本文略长,会谈及如下问题。前端

  • 职业规划越早越好
  • 必定要珍惜校招的机会窗口
  • 应届生的求职策略
  • 技术职位的选择
  • 语言和技术栈的选择
  • 技术栈的优化
  • 简历的书写

下边咱们一点一点来说。git

本文做者 @Easy ( weibo.com/easy ),方糖全栈课( quanzhanke.com )主讲人,有多年大规模网站、云平台开发经验、曾运营过用户数十万的程序员拍卖平台,为上千名程序员找过工做。转载请保留以上做者信息和连接,谢谢。程序员

内容更新通知github

可微信扫码(未关注直接关注)订阅本指北更新。算法

职业规划越早越好

职业是一个很是特殊的东西,它有两点很特别,一个是「不可重来」,另外一个是「验证耗时」。以前和一个老友聊天,他感叹说,回过头看看,本身的整个职业过得乱七八糟。等到如今明白这点的时候,已经来不及了。由于通常一段职业经历短则一到两年,长则三到五年。换两家公司,十年一晃就过去了。若是你在这十年中没有很好的成长,又不幸身在某些公司,那三十多岁可能就面临被清退的处境了。后端

我通常不屑于去和别人分享什么人生经验,毕竟有些坑不本身跳下去是不会牢记在心的。但职业的坑不同,等你发如今坑里时,可能已经晚了。因此我花了蛮多时间来研究这个。有兴趣的同窗能够去读读个人《程序员跳槽全攻略》,专门讲职业规划的。( 在个人我的网站上能够免费读 方糖气球🎈|程序员跳槽全攻略 )浏览器

必定要珍惜校招的机会窗口

我大学的语文老师曾告诫咱们说,人生就像四季同样,春天该播种,你去播种,秋天该收获,你去收获,这样是最省力的。你非要倒过来呢,也不是不行,但就是会很累,会付出更多的精力和代价。服务器

校招也相似,它是社会和企业为从未步入职场的同窗特地准备的一个绿色通道。在这个通道里,咱们将候选人当作一张白纸,能够没有经验、没有行业常识,只要对工做充满热情、有还算聪明的头脑,基本都算是合格的。企业会为这些同窗准备培训,并留足适应期,有的甚至还会安排一对一的老员工来带。微信

可是,一旦你错过了它,那一切都不同了,由于你进入了名为「社招」的红海。在这里,全部已经毕业的人变成了你的竞争对手,不但要面对和你同样工做年限的人竞争,还要面对其余工做时间更长、经验更丰富的同行跳槽带来的竞争。甚至常常发生由于招到了一个中级岗位的候选人,取消掉两个初级岗位的状况。

因此校招很是重要,必定不要错过。

应届生的求职策略

既然校招这么重要,那么咱们怎么才能在其中占据优点呢?记住两个词「择优录取」和「跑赢同窗」。

择优录取

在微博上常常能够看到这样的问题:「我这个也会、那个也合格,凭什么他们就不招我呢?」这是典型的没有明白招聘本质的表现。要明白,求职不是「会考」而是「高考」,不是什么产品的出厂合格校验,而是一场中国这个资源紧缺型国家里的又一场优质资源争夺战。

那些薪水高、发展空间好的知名企业(后文简称大厂),每一年招聘的人数是必定的。极端点说,若是如今全部候选人的水平都下调20%,他们依然要招人的,否则无法发展(严格讲会有一些调整空间,但也扛不了多久)。

因此,尤为是在校招里边,「绝对能力」并不重要,「相对能力」才是最重要的。

跑赢同窗

我来说一个很老的童话,听过的同窗请装做没听过。两我的在森林里边遇到了熊🐻,kuma 看见他们就嗷嗷的追了过来。一个同窗转身就跑,另外一个问他说,咱们怎么跑也跑不过熊的,那跑有什么用呢?这个同窗回答说,我只要跑赢你就行了呀。

那其实校招也是同样的。它不是说你的能力要有多少,其实再牛的应届生的水平放到行业里边,都是不入流的,由于不少水平是靠海量的用户压出来的,你没有遇到过这些场景,怎么可能知道怎么去应对。

因此应届生和那些社招的候选人比,一般都是没啥胜算的,但幸运的是,咱们和他们是不一样的赛道。要跑赢一个在大厂核心岗位工做了一两年的人不容易,但要跑赢那些和你同样在大学只学了一堆理论基础,甚至理论课都没好好学每天在寝室吃鸡的同窗,就容易不少了。

要认可,即便这样,要跑赢某些天资聪颖、能力拔群的学霸仍是有难度的。但这场比赛是不公平的,由于它没规定每一个人必须同时开始跑。鲁迅说得好,笨鸟先飞。(鲁迅:我没有说过)若是咱们能更早的认识到这点,花更多时间去准备,那么赢的几率就会成倍提高。

我自己就是一个很是好的例子。严格的讲,个人能力算是平庸偏上一点点的,虽然在当时不管如何我都不会认可。当我在大一下半期认识到这一点时,就开始自学 PHP,大二的时候写了一堆没人用的开源项目,大三上半期找了家公司作兼职,已经能把学费挣回来了。当大三下半期开始找实习时,个人简历已经能够秒杀同校同窗,小小PK 一流高校的同窗了。

因此你觉得校招比的是能力,其实对于执行力中等的同窗来说,校招比的实际上是认知。越早认识到本质的人,就越容易在这场游戏里边胜出。从这个角度讲,坚持读到这里的你,甚至可能已经赢了一半了。因此记得要把这篇文章分享给你的好朋友,而后千万别让你不喜欢的同窗知道。

技术岗位的选择

技术岗位的大致分布如图:

如今几乎全部的软件都已经互联网化了,就算没有互联网化的,它之后也会互联网化,因此咱们就不单纯地去说软件开发这个行业了。

开发岗

首先就是开发岗,这个就包括了前端开发、后端开发和移动开发。

前端开发和后端开发,主要是 B/S 结构里的。B/S 结构就是 Browser-Server 结构。而前端指的就是浏览器这个端;后端指的就是服务器这个端。

前端

前端主要作的事情,就是把从服务器端读取到的数据展示给用户,而后经过各类 UI 控件和用户互动,再将新的数据送回服务器端。具体的技术包括 HTML、CSS、JavaScript,还可能有一些嵌入浏览器运行的组件,好比 Flash 、 WebGL 。

后端

后端则主要送数据给前端,通常有两种方式,之前用的比较多的是,将数据在服务器端先渲染完,而后将输出的结果发送给前端;如今用的比较多的方式是将纯数据经过 Json 或者 xml 等格式发送给前端,在浏览器中经过 JS 来进行渲染。

因此之前不少后端的工程师每每也懂一些前端的知识,好比我认识的不少 PHP 程序员,他们不但懂 MySQL 和 Apache,还懂 HTML 、 CSS 、 JS 和 PS。这种先后端都懂的工程师,也叫全栈工程师。

后端能够用各类语言开发,国内用的比较多的包括 Java、PHP ,还有相对小众一些的 Python 、 Ruby 、 Go。其实 C 也是能够写后端的,不过如今已经不多有公司直接用它写了。

后来有了 NodeJS ,JavaScript 也能跑到后端了,因此不少前端工程师也有了后端开发的能力,他们也占了全栈工程师的很大一部分。

客户端

相对于 B/S 结构,还有 C/S 结构,就是 Client-Server 。C/S 结构下不用浏览器来展示数据和交互,而是用客户端,通常是 Mac/Win/Linux 三大平台。

移动端

手机大潮起来之后,无论是 B/S 结构仍是 C/S 结构,所有移动化了。B/S 结构对应的就是适配手机浏览器的移动网页、以及嵌入在微信、微博里边的 H5 页面; C/S 结构就是 APP ,通常覆盖 iOS 和 Android 两个主流平台。

除了这些标准开发岗,而还有一些新兴或者相对小众的开发方向,好比人工智能/算法工程师、作智能硬件的硬件开发工程师、给企业作解决方案的企业软件工程师。

其余岗位

软件并非开发出来就完了的,在上线或者发布以前,咱们还须要「测试工程师」来进行测试;而上线之后,还须要「运维工程师」来管理和优化服务器集群。如今服务器都虚拟化和容器化了,运维工程师中也出现了懂开发的分支,叫作 DevOps。

中高级岗位

无论是开发岗仍是测试、运维岗,都有其对应的中高级岗位。开发通常是技术经理;运维通常是架构师;测试通常是测试总监。技术总监、CTO 就是更高一级的职位了。

以上的职位分类咱们参考了招聘网站的分类,不必定准确,可能会有不少岗位没覆盖到,很多公司也会有本身独特的岗位设置。

职位的选择

若是能选择的话,不建议一开始就选运维或者测试。缘由有两个:第一,由于它们虽然很重要,但不是软件开发的核心岗位。第二,从开发岗往这两个职位转很是容易,反之却很是难。

以前在给掘金写《程序员职业小白书》的时候,我作过一个邮件访谈,以问题的形式采访了多位在不一样阶段、不一样岗位、不一样城市的程序员的平常。你们能够读一读,了解下。程序员们的平常是怎样的 (虽然这个小册是收费的,但访谈这一章倒是能够免费读的,不须要购买哈)

语言和技术栈的选择

语言概况

虽然出于某种政治正确,咱们通常都会说,语言不重要。但语言真的不重要么?并非这样的,每种语言都有本身的优缺点和适用范围。

像日语和英语同样,一个是看动画玩游戏用的,一个是看资料写代码用的。(误) 下边简单介绍下我眼中的各个语言。

C/C++ :

系统语言,用来写底层操做系统、高性能中间件和嵌入式开发。

Python:人工智能的好选择

举例来讲,若是你想作人工智能方向的话,Python语言就是很是不错的选择。由于它在各个大学和研究机构用的很是多,有成熟好用的数学库,适合于科学计算。在深度学习等热门方向上,有大量用 Python 开发的框架,新出的 Paper 也能很快在 GitHub 上找到 Python 的代码实现,能够说是不二选择了。

JavaScript:前端和全端

若是你想作前端,那么目前来看,除了 JavaScript 还真没有别的选择,由于如今能在浏览器里边跑起来,也就是它了。过两年等 wasm 成熟可能会有其余选择,但如今,是真没有。

而相应的,若是你学会了 JavaScript ,想在这个基础上再把后端给作了,那么 Node.JS 就是很是好的选择。由于它使用的就是 JavaScript 的解释器,按 JavaScript 写就行了。从学习成本上来说,它是很是低的,能够经过很低的投入,就进入了服务器端的领域。

PHP:依然是网站首选

若是你要作网站,那么 PHP 就是首选了。一方面是有大量的可用代码,世界上超过80%的网站都用的 PHP,基本上你能想到的网站功能,都有能找到的实现,悬念只是有没有免费的;另外一方面,PHP7 的性能提高了不少,用来写 API 也很是好。

另一点,就是目前使用 PHP 的团队很是多,即便在二三线城市也比较容易找到工做,固然,组建团队也一样相对容易。

Java:大数据分析

若是你要作大数据分析,那么可能就离不开 Java 了。 从 Hadoop 开始一系列的 Google Big Table 的开源实现都是 Java 的,用于海量数据搜索的 Elastic Stack 也是 Java 的。

Go:云计算和容器管理

若是你如今要想去作云计算,那 Go 就是一个很是好的选择。

由于它就是为了大规模计算设计的,并发管理和性能都很是不错。并且有不少云计算的软件,它就是 Go 写的,若是你要去修改它,调整里边的实现逻辑的话,不会 Go 可能很麻烦。固然,理论上讲,你也能够经过容器和微服务的方式来搞定,但确定比直接改代码麻烦。

另外区块链的大热平台以太坊的官方(最具潜力)实现,也是Go作的。钱途大大的。

语言的选择

兴趣优先

在语言的选择上,尤为是第一门语言的选择上,我一直推荐兴趣优先的原则。由于对初学者而言,当你遇到困难坚持不下去时,兴趣会帮你一把。中学时为了改仙剑,我连汇编都试着学了个入门 🤣

市场其次

但其实对绝大部分应届生而言,对各类语言并无特别的偏好。并且「找到工做」这件事是很是重要的。因此与其盲目的选择语言学习不如来看看各个语言在招聘市场的表现。

我以前写过一个脚本,能够抓取几个互联网招聘大站的招聘启事,并按职位对薪资进行统计。下边是最近一周的统计结果。

先来讲说这些数据怎么看。

职位热度相似于招聘职位数,和其余语言对比就能看出差距。平均薪资之全部有两个值,是由于咱们通常招聘时会给出薪资的上限和下限。严格的讲,这并非当前某个语言的程序员们的薪资,而是他们下一次跳槽时的可能薪资。另外,部分企业喜欢在上限值上边虚高,因此把上限乘80%可能更合理。而下限通常比较真实,更具有对比价值。

而后咱们来看看能发现什么。

Java 的数据很是牛

首先咱们会发现,Java 的职位热度很是高,几乎在全部城市里边都是排名第一的。这里有一个特殊缘由,就是 Android 职位基本也是使用 Java 语言进行开发的,因此这两个职位有一些重叠。也就是说,学好 Java 其实能够同时应聘 Java工程师 和 Android 工程师(可能须要额外在学一点点应用开发的知识),这很是划算。而从薪资方面看,Java 也是首屈一指的。

前端紧跟其后

紧随其后的是前端职位。前端是个很是有意思的特色,那就是——几乎全部的公司都会招前端。对比 Java 而言,可能有不少大厂的后端用的不是 Java ,那他们就不须要招聘 Java 工程师。若是你很是想去这家公司,但你会的语言是 Java ,那么就可能和机会擦肩而过。而前端岗位的话,机会就可能大得多。这有点像血型里边的O型血,怎么地方都能用。就算是自觉得站在食物链顶端鄙视「古典互联网」的区块链公司也不得不招前端呢,也是一个很是好的选择。

除了看热度,咱们也要考虑到竞争,好比 Java 是一个「传统」岗,不少软件行业的工程师也是会 Java 的。而「前端」是一个新兴的互联网岗,专业前端还不算太多(和 Java 比啦),因此入职难度说不定反而低一些。

其余语言

其余语言在各个城市的数据各不相同,你们能够挑本身感兴趣的看。好比 Go 语言在北京比其余城市热几倍;区块链虽然看起来很火,但其实职位数也就比 PHP 的一半多点;Ruby 虽然薪资不错,但岗位很是少…

总之语言的选择因人而异因时而异,请综合各类视角去选择一个适合本身的。

学习路线图

在选择好职位和语言后,就要寻找对应的学习路线图进行学习了。这里推荐这个 Star 数量超过4万的路线图(的中文版):GitHub - goodjack/developer-roadmap-chinese: 2018 年成為 Web 開發人員的路線圖

虽然不是很全,但细节不错。

技术栈的优化

以前咱们在分析 Java 数据的时候,发现一个有意思的问题,那就是 Java 的技术栈能够同时覆盖两个热门职位 —— Java 和 Android,这让咱们的求职竞争力一下翻了一倍。那么在其余的语言和岗位上还存不存在相似的状况呢?

实际上是有的,好比前端岗位就是一个很是有潜力的例子,它的后端解决方案 NodeJS 正在日益流行 。在我写这篇文章的时候,互联网招聘大站 拉勾网 上北京的 NodeJS 职位数是 181,上海是 114,深圳是 65 。因此学完前端知识再补一下 NodeJS 的收益是不错的。

但这个技术栈其实还能够进一步优化,由于一个偶然的缘由,我统计了一下 PHP 岗位和前端岗位招聘启事里边出现的技术关键词,发现其重合度居然高于60%。具体的技术关键词和热度见这里 《PHP&前端岗(1~3年)核心技术点分析报告》

回头一想其实也很好理解,毕竟招 PHP 是来作网站的,HTML CSS JS 总得会一些才行。这意味着PHP的同窗只须要补上部分前端知识,好比主流框架 React / Vue / Angular 和 SPA 开发就能够同时应聘 PHP 和 前端 职位。

这会有多大的竞争力呢?前端招聘启事里边,有超过十分之一的企业说起了PHP。这还没完,React 有一个混合应用解决方案,叫作 React Native,能够直接用 React 栈来开发手机APP。这个技术的需求如何呢?如今拉勾网上北京的 React Native 相关职位数有 84 。

因而呢,咱们能够选择 PHP + React + React Native 的技术栈,仅仅多学习一点知识,能够投递的岗位就从原来的 364 变成了 364 + 373 + 84 。

这就是技术栈优化的策略。关于这个技术栈的优化结构,能够看这里 《方糖全栈学习路线图》,这个栈还顺便把区块链应用开发也覆盖了。你们能够触类旁通,去优化本身选中的技术栈。

简历的写做

不要最后找工做的时候再来写简历。如今就开始写,即便你什么都不会。这样你才会真切的感觉到,本身的缺点和劣势。而后经过不断的学习,往简历上追加新的内容,直到你本身看起来以为有竞争力了,简历才算阶段性完成了。

关于简历的写做技巧和工具,我以前写过一篇文章详细说明,能够点这里阅读 《如何写出一份专业的技术简历》 (这篇文章自己依然是免费的,不用购买小册就能读)

写在最后

不知不觉已经写了这么多了,其实还有一些内容想说,但暂时就不写到这里了。等之后有空我再整理一个小册子吧。我把文章也同时发布到了 GitHub,之后的更新会经过 GitHub 进行,欢迎 watch 和 star 。https://github.com/easychen/career-guide-for-cs-graduate

PS:若是你还不知道怎么用 GitHub,那么赶忙学学吧,这但是程序员的必备(交友)工具哦。

相关文章
相关标签/搜索