我是本科学历,非计算机专业,也不是985、211院校,本文记录了我自学编程并最终在35岁的时候进入微软的经历。
我出生在山东泰安,当我说泰安很多人一脸懵的时候,我就跟他们说泰山就在泰安,所有人都“哦,那我知道”。父母都是农民,我小时候就在跟村里的孩子们嬉笑打闹中度过,学习成绩还可以,除此以外没有其他值得炫耀的特长,那时候的孩子跟现在的鸡娃式教育是天壤之别,童年过得还是很欢乐的。

大概初三的时候有一次从哪看到了微软创始人比尔·盖茨成为世界首富的消息(想不到多年以后我进入了盖茨的公司),当时觉得搞电脑的好厉害,能挣好多钱,那时候学校也没有微机课,感觉电脑很神秘,对学习电脑充满了期待。高一的时候有微机课,学了一点Windows 95基本操作,基本处于瞎点,完全没啥概念的状态。

高考完之后填志愿,我爸以离家近为第一考虑因素(没办法,他们认知有限),第一志愿让我填了山东大学(985院校)。山东的高考录取分数高是全国出名的,最后我以4分之差与山东大学失之交臂,被第二志愿的山东师范大学录取了,录取的专业是我从来没听过的地理信息系统(GIS)。刚知道录取结果的时候,有大约半天的时间心里很失落,后来想了想也不算太差,毕竟也是一本院校,就不复读了,直接去上了,就这样2005年我步入了大学的校园。
大一上学期是努力学习专业课的一学期,同时也没放弃我的电脑梦,当时不知道学啥,乱学一气,我记得有一回从图书馆里借了一本如何修电脑的书,以为会修电脑就是高手。
经过半学期的学习,对专业课实在是没啥兴趣,就开始想着重学习电脑方面,当时知道有个计算机等级考试,就跟几个小伙伴一起自学了C语言考了二级,随后又考了三级。接触了编程之后就大体知道了学习的方向,开始学编程的东西,打算等到时候考个计算机专业的研究生也不错。后来经常在CSDN上看一些老程序员的经历分享,慢慢感觉学历对程序员好像没有那么重要,逐渐打消了考研的念头,但我是非科班出身怎么向别人证明我的能力,后来知道了软考证书,心说考一个吧,有没有用的也算是个证明,就考取了软考证书,记得当时笔试成绩是全省第一名,机试满分。在大学自学的编程的东西很杂,C++、MFC、汇编、Windows编程、ASP.NET……,也没有太明确的方向,自己自娱自乐写点小程序,跟现在名校的学生没法比。毕业的时候有公司去我们学校校招通过了面试,就进入了编程行业。

毕业后的前两年,是技术能力突飞猛进的两年,当时主要做Windows客户端和服务端开发,主要用C++。我除了完成公司的任务,下班和周末的时间都用来学习技术,操作系统、汇编、TCP/IP、Windows、Linux、C++各个领域都学,那两年打下了坚实的基础。
2012年前后用Qt做嵌入式Linux开发,那时候感觉在国内一线城市的生活压力太大了,一度想去国外工作,过上“好山好水好无聊”的生活,终究还是没找到合适的机会。
后来和朋友一起在创业公司干了一段时间,也没能借此走上人生巅峰,创业成功率毕竟太低了。不过在此期间熟悉了Ruby on Rails全栈开发,当时在边学边用的情况下从对Web开发一窍不通到用Rails搭建出整个系统。
2018年5月我进了国内某大厂做Windows客户端开发,一干就是三年多,期间工作绩效也不错,但是一直没能得到晋升(原因是多方面的吧,做的是公司的边缘业务,况且客户端也不如服务端受重视),再加上也有点厌倦每天无意义的加班,就想着换个环境。
想着即便再换个国内大厂,虽然也加班,起码工资、职级都能涨一些,在现有职位的上升空间不大。以前也想过去外企,不过对自己的技术、英语水平都没有信心。这次换的时候在网上搜到了微软同事写的面经,就加了微信,咨询了一些问题,让他内推。我老婆觉得我能找到微软的人挺神奇的,我觉得第一是有心做这件事,第二是得益于现在发达的互联网。
之后就开始准备算法、系统设计啥的,算法也是我的弱项,以前也刷过题,几年过去早忘光了,就开始每天刷题、看系统设计。在内推微软之前猎头也给推了腾讯的职位,有读者说想看腾讯的面经,后面我也会专门写一篇。这两家公司给出offer的时间差不多(腾讯流程很长,微软很快,先面的腾讯),我在《微软面试FAQ大全》也提到了,以前也听说外企工资比国内大厂低(大概因为不加班),所以同时面过腾讯和微软之后,我在填期望薪资的时候,微软填的低了一些,结果微软最后给的offer薪资比我期望的高,腾讯给的offer薪资比我期望的稍低,所以我果断选择了微软,虽然后来腾讯又给加了一些,但是我还是选择work life balance。

写了几篇文章之后,得到了很多朋友的关注。有在校生或刚毕业的朋友想听一些对职场新人的建议,我觉得最重要的一点就是工作前几年一定要打好基础,把该补的知识都补上来,这些东西在无形中都会影响到你平时的软件设计、代码编写,外企虽然不直接考这些,但是系统设计本身就是以这些为基础,国内的大厂更是喜欢考这些八股文。
也有工作多年的朋友问如果在工作中一直当螺丝钉,如何提升自己?如何应对40之后的就业危机?我工作的前两年是只要有时间就学习技术,那时候加班也不少,不过还是能挤出时间,如果等成家之后再想提高技术就没那么多时间了,建议先提升跟工作相关的技术,这样相对容易,从深度和广度两个方向入手(很多时候广度是深度的自然延伸)。至于40之后的就业危机,我目前的答案是外企没有年龄歧视,欢迎加入我软。
通过我的经历大家也看到了我也不算什么大牛,我感觉我最重要的一项能力是学习能力强,这也是我觉得一个优秀程序员应具备的最重要的能力,不要指望永远从事自己熟悉的领域,能够不断学习新知识、技能才是最重要的。我的读者里很多学生起点都很高,都是名校生、国外留学生,如果能不断提高自己的能力,以后必定前途无量。
写文章让我结识了很多朋友,有互联网大厂同行、名校在校生、公众号号主,我觉得这是最大的收获。
为方便大家交流,建了一个交流群,目前交流群里汇集了来自微软、阿里、腾讯、蚂蚁、字节、京东、美团、快手、华为、网易等各大厂的同行,如果你也想进群交流,加我微信,我拉你入群。
