崔庆才丨静觅 · 微软工程师
微软工程师,北京航空航天大学硕士,《Python 3网络爬虫开发实战》作者,爬虫博客的百万博主,喜欢钻研,热爱生活,乐于分享。欢迎关注个人微信公众号“进击的Coder”。
文章
正式入职微软,提交了第一个 PR 之后,我坐在椅子上思考人生。终于我也变成了一名正式的企业员工,变成了一名正式的踏入社会的职业人士,从此我的学生生涯也算是画上了一个句号,不,更确切的说应该是画上了一个引号。
和同事租了房子,生活条件算是还不错,有了属于自己的房间,有了专属自己的衣柜、书橱、办公桌,想要的硬件、软件、日常用品想配就配,算是应有尽有了。首先日常生活上最大的感受就是自己的生活条件变得更好、更自由,不再像学校一样有各种限制了,虽然日常花销变多了,但总体上来说我更喜欢现在的生活环境。
回顾先回想一下自己的学生生活吧,初高中就不说了,就天天上课为了高考,后来在大学基本上就是三点一线,宿舍——食堂——教室/实验室,然后读研,研究生模式也差不多,宿舍——食堂——实验室/公司。
编程入门
我大学的时候选的就是计算机科学与技术这个专业,当时学校开的第一门入门课就是 Java,当时可以说是对编程一窍不通,什么 print?打印机吗?控制台是什么?控制谁?什么面向对象?我对象在哪里?都是些什么玩意。就这样,随着老师的课堂洗脑和一些并不怎么感兴趣的编程作业,我慢慢理解了原来 print 是这么个玩意,对象原来不是那个对象,就慢慢对编程建立了一个概念。插句话,其实我感觉编程的一些概念和思维还是很重要的,有人说编程学不会,可能就是脑中没有形成一个比较清晰的概念,想清楚它能做到什么,怎样从用双手解决一件事的思维转换成用编程解决一件事的思维。
扯远了,但那时候仅仅 Java 是一门课而已,虽然最后考试考得还不错,但是还是不是很懂它能为我带来些什么东西。后来大学就开了一个叫做课程设计的课,意思就是说让自己动手编程实现一个可以操作的项目。我们当时学校要求的就是实现一个黑白棋在线对战系统,当时可把我为难坏了。后来了解到了这里面还挺复杂的,又得编写界面又得搞一些算法,还得搞一个在线 WebSocket 通信,当时可以说是毫无思路,然后就去网上搜一些 Java 的教程,当时是搜到了马士兵的 Java 课就顺着看了起来,可以说马士兵是我的 Java 最重要的启蒙老师了,慢慢地把一些原理和基础学会了之后就有了基本的编程思路了,开始上手编,做界面,做服务器等等。另外还有一些小插曲,有的界面还得抠图,当时为了打造一个完美的棋盘效果还学了 PS 来花了一个木质棋盘和黑白棋子,估计得花了好几个月的时间终于做出来了一个像样点的系统,虽然现在源码已经找不到了,但真的说这个课程设计真的让我理解了编程的一些思维和理念以及它能为我带来些什么,我能够用它做到什么,脑中的一些概念变得更加清晰了,收获非常大。
后来学校开了数据结构和算法的一些课,慢慢地我又对一些基础的算法和 C++ 的一些编程语言有了一定的了解。再后来就是一些基础专业课了,比如操作系统,计算机组成原理,计算机网络等等,总体来说其实我没太感觉出具体有多大作用,但你要假设我没学过,我可能有很多东西都不知其理。人就是这样,有些东西在拥有的时候觉不出有什么好的,但一旦没有才会有明显的感觉。
加实验室好吧又扯远了,然后就可以说迈入了我人生中一个比较重要的点了,那就是加入学校的一个实验室。之前许多东西我和室友自己瞎倒腾,比如当时进行版本控制的话,就是自己手动压缩一下,命名项目的时候添加一个版本号并用下划线分割,后来进了实验室才知道还有 Git 这么牛逼的东西,于是乎就跟着学习了 Git,了解了 GitHub,觉得整个代码世界都光明了。当时我加入的是后台组,一开始是从 PHP 开始学起的,从原生的 PHP,到普通的 CodeIgniter 框架,到高级的 Laravel 框架,当时写的时候主要用是 MVC 模式,所以前端的东西也难免需要用到的,所以那会儿又学习了前端的一些知识,慢慢地就变成了 Web 前后端通吃,自己也可以逐渐完成一些大型项目的开发工作。当时还自己开通了博客来记录自己学习的一些经验,然后跟着实验室一起接外包做外包,做了不下十个门户及商业网站的开发。
学习爬虫
再往后可能就是临近大学毕业的时候了,那会儿实验室的一位学长写了一些爬虫的入门文章,当时也跟着学了起来,边学边记录,学的整理的一些知识点都放在了自己的博客上。后来又探索了一些新的爬取方案,也一并整理到博客上了,形成了一个入门到进阶的一套简易版教程,后来随着写的越来越多,来看的人也越来越多了,后来访问量也逐渐上来了,现在的话日均访问量可以达到 15000+。
再往后可能就差不多大学毕业了,当时由于是保研到北航的,所以就提前来到了北京开始了研究生的预备工作,也节省了不少时间。那会儿就有充足的时间来做自己的事情,比如学习一些网络课程,继续做一些关于爬虫的研究工作。当时随着我的博客访问量越来越大,图灵便联系我看能不能写一本关于爬虫的书,当时想的一个是可以把自己学习的知识好好整理一下,还可以作为自己的一部个人作品出版出来,的确是一件非常不错的事情,所以当时就答应下来了。不得不说写书的过程是非常艰辛的,舍去了好多平时的休息时间,同时还发现了自己的很多不足的地方去查漏补缺,最终也不得不延期了好几个月才交上稿。后来又审校了非常久的时间,到去年五月份才出版出来,定名字叫《Python3网络爬虫开发实战》。不过后来的销量还算不错,现在已经重印了 10 次,50000 本了。现在还在继续撰写第二版中,把一些过期的案例和知识点更新,再把一些新的技术加进去。
研究生生活
OK,当然研究生阶段也不是都写书了。研究生阶段其实一开始是比较迷茫的,其实当时并不知道自己毕业之后要做什么方面的工作以及想去哪里。最初读的时候是选了网络安全的方向,做一些 Web 渗透方面的研究,后来觉得研究得差不多了,就又转了自然语言处理的方向,从吴恩达的机器学习开始学起,然后了解了深度学习的一些模型,又了解了自然语言处理的一些知识。与此同时,我也在微软这边当实习生,从最初的爬虫、 Platform 再到 Science NLP 研究,慢慢地也认识了一些大佬,和他们一起交流的确让我学习到了不少。
由于我在微软这边实习时间不短,所以当时也参加了实习生转正的面试。微软整个的面试流程还是很规范和严格的,包括多面技术面,另外每一面的要求也都不低的。首先最基础的要求就是算法,给你几道题目,来白纸上把这道题的代码写出来,面试官会非常注重边界处理和细节把握,如果要写不出来,基本上也离凉凉不远了。接下来还有一些基本的公式推导,比如如果要面试机器学习算法工程师的话,可能会让手写推导 SVM、LR 等算法。另外还有一些系统设计题,来看看你的思维和架构是不是能达到要求。最后我记得还有一些智力题,看看反应得快不快。再往后的面试也是谈谈自己对行业的一些理解和看法,谈得还是比较深入的。总之考察得非常综合,当时准备面试的期间真的是无比焦虑,感觉人心惶惶的,当时在疯狂地刷题,复习各种算法推导,准备了也差不多有一两个月。最后得知 Offer 的那一刻,一块石头终于落地了。最后我也如愿入职了微软小冰,今年三月刚刚入职,也希望能为小冰带来更多的贡献,也希望大家可以多多关注微软小冰。
其实我已经在微软这边实习了一年多的时间了,平时很多时间也都呆在公司里,自己也算提前一步迈入职场了,经过我个人实习的体验和感受,同时也结合自己平时的了解,总结出来了一些经验。当然这仅仅是我个人的一些看法,仁者见仁智者见智,在这里仅仅做一些经验总结和分享,总结一些从学生迈入职场之后,我会注重的一些地方。如果对你有些启发,那是再好不过了。
工作相关首先就是工作相关的一些东西了,由学生到工作,我个人觉得还是有一些需要调整的地方的,下面稍微这里说一下。
转换思维
学生到职场的转换,第一个重要的就是转变自己看待事情的思维"。
本文转载自Gitchat