程序员那些事儿:我的大学,我的人生路

(一)迷惘的大一

我想,每个人都处在一种迷惘的状态,即便你已经有了短期的想法,这也只能让你在短期内有一个比较明确的方向,未来依然是未知的。我们经常会处于两种状态,一种是没有选择,一种是面临多种选择。

大一的时候,我是不知道如何去选择,刚来到校园,对很多东西都是一无所知的。我们很希望一些事情别人做过,而且当我们做同样事情的时候,这些人能够带着我们一起去做。但事实常常不是这样,迷惘的时候,我们需要自己做出抉择。

曾经迷惘的时候,我会停住脚步,思考下,我刚才做了什么,我正在做什么,稍后我能做什么。我的专业是电子信息工程,大一的时候还算学习态度十分端正,不翘课,按时完成预习复习等任务。随着时间慢慢往后推移,我发现这样的生活方式比较乏味,也是十分的平淡。那个时候身边的人也是这么活着的,稍微有些不同的是宿舍的一位室友,他有了女朋友,出门走动的颇为频繁,但回到宿舍之后,依然是惯性的轮回。

其实,当自己意识到生活在循环的怪圈中的时候,我们会从一种茫然转换到另一种茫然。为了突破生活的那个怪圈,我们会寻求着改变,改变自己,改变未来。在我们改变的过程中,很多选择会不经意跑到我们面前,面对着无数的选择,我们又开始了手足无措,这是另一种迷茫。

也不知道是什么时候,我学会了面对多种选择。我一直默默地对自己说:“既然选择太多,那我就不选择。提高自己,总有一天,选择会过来找我。”所以,每当迷惘的时候,我开始学会撇开缤纷杂乱的选择,而去提高自己。当然,“提高自己”也是一种选择。

在大学的第一年里,我没有加入任何学生组织,也没有更太多的人打交道。可能是因为性格的原因,我喜欢一个人安静地呆着。领到图书证之后,就经常隐匿于图书馆的各个楼层之间。那个时候,心理学、社会学和哲学方面的书籍看的比较多,也比较喜欢去钻研数理统计学。所以一年下来,我的认知水平有了很大的提高,思想上也渐渐地成熟起来。那段时间,我多次感到自己在成长。

大一快要结束的时候,我又开始陷入了迷惘。我们学院学习的课程貌似跟不上这个时代,我也不知道,学到的这些东西以后在社会上有什么用途,我是这样,身边的同学也是一样,不清楚,不明白。我去请教了一些老师,也去询问了学长学姐,貌似他们都不能给我满意的答案。那是,心里还是有些忐忑的,因为我想早点让这个社会接受我。

(二)疯狂的大二

每天都有忙不完的事情,每天都保持亢奋。这种疯狂的状态,应该是从大二开始的。

很少去回忆,所以很多记忆都是模糊的。大二之后,我开始走出生活的怪圈,去结交很多的朋友。一次饭后的闲走,看到学校韵苑路口在搞“百团招新”,各种协会,各种社团,N多妹子...然后就不知不觉的加入了英语协会、市场营销协会。一些辗转之后,我进入了英语协会的管理层,和一些同学去管理拥有几百会员的英协,这里的成长就不多说了。

改变我大学生活的是不久后加入的一个技术团队,在那里开始了我的技术生涯。

我想说说,我在这个团队是如何去学习的。首先要说明的是,我对电脑的开机和关机已经是相当熟练了,而且大二之后,学校也允许学生带电脑,所以我也有了自己的电脑。那个时候团队是这样安排的,先学习前端的内容,制作网页,然后根据自己的兴趣选择是否转为后台。我花了几乎所有的休息时间甚至逃课去完成第一次的新人任务,结果十分令人满意,完成的相当好,所以选择继续了解前端。刚开始我没听说过JavaScript,觉得会JavaScript的同学肯定十分牛掰,内心也跟着有这样的冲动,想把自己前端水平提高一个档次。

那段时间,我每天都宅在团队里搞学习,晚上一般不回宿舍。团队也有几个拼命的学长,经常通宵写代码,我被他们影响了,生活习惯很快被打乱,几乎每天都是白天睡大觉,晚上搞技术,陷入了一种生活的循环。不过那个时候,我喜欢这种循环,而且这种循环的日子貌似过的很快。

跟着学长们一起折腾Linux,学习Java,了解后台PHP+MySQL的基础知识,学的还挺开心。刚开始,每每遇到问题就会询问学长,有时候能给我比较满意的解答,但有的时候,似乎也到了他们知识的尽头。后来,我更多的是去网络上寻找答案,渐渐地养成了独立学习的习惯。

一个人是很难“疯狂”起来的。有段时间,我从团队搬回了宿舍,自己琢磨着学点东西,但才学了两天,感觉动力就不足了。主要是缺乏交流,缺乏思想的碰撞,疯狂的状态很难维持下来。

(三)交流

交流是学习中比较关键的一环。在我们身边,可以交流的人其实是相当少的。团队人员的更新是十分频繁的,几乎是一年一到两次招新,虽说学校搞IT的团队比较多,但几乎都是新人,技术有深度的人并不多。作为一个初学者,你可以找到很多可以交流的前辈,但技术学习就像一个金字塔一样,越到上层,人就越少,所以身边能跟你一起去探究的人就少了很多了。

没有一个人一直是默默的学习的,交流是学习必不可少的环节。我们在和网络打交道的同时,也在间接地和其他人在交流。只是交流的方式发生了变化。

在我学习的第一个阶段是和身边的人交流。这些人主要是团队的成员,还有学校里我认识的一些学长学姐。他们带着我入门,教会我自主学习。

第二个阶段是和电脑打交道,经常去看一些技术牛人的博客,海量的去涉猎新的知识,也看过不少的视频教程,这个过程十分漫长。期间,也经常在论坛和百度知道闲逛,回答一些适合自己的问题,所以那段时间自己描述问题和解决问题的能力有了很大的提升。特别是学会了归纳关键词,并比较精准的去搜索答案。

第三个阶段继续回归跟人的交流。这次的交流对象是陌生网友,我从各个网站上看了很多QQ交流群,记得当时加了有十几个QQ群,整天坐在电脑前给别人解决问题。自己懂的东西就十分详细的总结答案,给人解释,直到提问者可以明白我的意思。遇到不懂的东西,就立即去查找答案,搞明白之后就去回答。很多问题并不是一下子就能够搞明白的,我也经常给出错误的解答,不过这个真的没有关系,群里总会有一些技术强过你的人,他们会给出更加合理的解释,跟他们交流经常会有很多意想不到的收获。

第四个阶段就是沉淀了,开始去写博客,主动吸引人过来跟你一起交流。经过上一阶段的学习,整体能力有了很大的提升,后面群里总是问一些自己感觉比较“弱智”的问题,所以慢慢的开始退出那些群,去寻找技术相当的人交流。我换了三四个博客。

目前还在第四个阶段。上面划分的阶段也没有什么明确的分界,但是总体围绕着一个中心点——交流。

(四)方向与特长

我的专业电子与信息工程,所学课程与Web前端几乎没有交集,所以大三的我面临一个学习方向选择的问题,两种不同的选择将是两种不同的前景。

高考之后选大学和专业,很多人都是比较盲目的,直到来到学校才发现,自己并不喜欢当初的选择。我还谈不上不喜欢,只是在大学找到了自己更喜欢的东西,所以对本专业就不是那么钟爱了。

大三之后,我基本放开了课内的学习,把时间都匀到Web前端,也就是自己感兴趣的技术上。如果要想保持专业学习和兴趣学习齐头并进,这样的代价太大了,到最后就是两个都不能有比较好的成绩。

大学倡导的是自主学习,如果你想成为研究型的学生,除了把课内的学科学习好之外,还需要把每门课延伸的知识学透,融会贯通,才能深入理解一门学科的内容。除了对课程的学习之外,发展一些兴趣也是十分重要的,我相信每个人都有很多兴趣,运动类,游戏类,阅读类等等,我是对程序设计比较感兴趣。

刚开始是觉得她很神奇,几句话就可以与机器对话了,但是时间久了之后,才发现,自己一直停留在兴趣的表面,这种肤浅的喜欢很难维持下去。因为我对程序设计的历史、发展以及未来没有任何了解,他到底能做多少事情我也不知道。

将兴趣发展成特长是是否有必要的,对一个事物的喜爱会让自己更加多的学习和钻研那一块,而钻研的越多,越会发现里面充满了未知和趣味性。就想很多人喜欢下象棋一样,刚开始是找人挑战,当时间长了,才会发现象棋中也有很多多变的元素,从而延伸出一些棋理,经验更多之后,会发现自己也能下出一些残局,甚至总结出一些处理某些残局的公式。

所以如果喜欢某个东西,就不要一直停留在表面,花时间去了解他,然后深入了解他。

我花了很多很多时间去发展这个兴趣,大三的时候我面临了一个选择。对一个打算找工作的人来说,大三也必须做出选择了,只有做好了选择,才能够踏踏实实地做下一步学习,否则到时候捉襟见肘,顾及的几块都没学好。这个选择是:继续花时间学习Web相关知识,还是放弃学习回到本专业?

我也是纠结了很多的,毕竟我们所学的课程和Web尤其是前端几乎没有交集,而如果选择Web前端,大学学了这么几年的专业知识以后就没机会用上了,心里还是有些不甘心的。我好好地思考了一下,也跟一些学长进行了交流,后来让我继续选择Web方向的决心是因为他是我的兴趣,我喜欢做!

(五)深入学习

这次的学习就更加有针对性了。我看了下几家公司的招聘要求。做了一些规划:罗列这些公司的招聘要求,选出自己以后学习的几个大方向;摸清每个方向涉及的知识要点,列出清单;对清单内容逐一学习。

基本技能包括,HTML+CSS+JavaScript。

基本技能:HTML + CSS + JavaScript

↓ ↓ ↓

骨架 血肉 行动

进阶技能:HTML5 + CSS3

↓ ↓

很多实用API 炫彩&动画

数据格式:XML + JSON

流行

各种类库:JQuery + Prototype + Dojo + ExtJs + ...

↓ ↓ ↓

封装浏览器差异 弥补语言本身缺陷 成熟大框架

模块化思想: Seajs + requireJS + AMD/CMD

国内比较成熟

服务器端JS: NodeJS

性能优化:HTML结构的语义化 + CSS的相关处理 + JS的性能优化

其他技能: Linux命令行 后台知识的了解 数据库知识 数据结构 算法等

(六)第一次面试

第一次参加面试的单位,是搜狐。我还挺紧张的。那天上午是搜狐面试,下午就是网易了。但是没想着要去搜狐,所以权当去那儿面试是攒经验吧。

因为通知的比较早,上午八九点,程序员起床都比较晚,这个大家都懂的。所以那天我起了个大早,叫了辆的士,急匆匆的跑去了一家快捷酒店。进去坐了一小会儿,一个胡子很长、约摸30岁左右的青年男子过来跟我交流。刚开始说话还是挺紧张的,不过我一向认为人和人之间的交流是平等的,渐渐地,紧张气氛有些缓解,开始进入比较正常的交流。他问了我的个人情况,以及一些简单的面试问题,当时感觉答得还不错。不过现在回忆起来,那时的我还太年轻了。

我没有拿到搜狐的offer,但是绝不是因为技术能力的问题。面试中涉及到了一些个人发展规划和一些性格测试的问题,当时我的表现显得太年少气盛,口气中凸显你们公司怎么不如其他公司,你们公司的产品做得怎么的不好,我以后要怎么怎么成为一个很牛逼的人等等。这些话闷在心里就行,说出来味道就会变的。

回来吃个午饭之后,接着就是下午的网易面试。因为上午的面试自我感觉良好,所以自己也有了一些底气。网易的面试有三轮,第一轮是一个前端工程师,从他问题的角度来看,应该是想了解我对前端的理解,以及前端知识的覆盖面。第一轮面试完之后,他让我在外头等等,一般让等的都有戏,不然就直接让走人了。我等了一会儿,他让我进去接受第二轮面试。我觉得挺赶巧的,面试官在看我简历的时候,我觉得太沉默,于是主动跟面试官说要不要自我介绍下,他刚一说话,突然觉得听到了乡音,问他是不是家乡人,呵呵,还真是的!他跟我说不要紧张,这一轮会问我一些比较细点的技术问题。面试时间比较长,大概有一个小时吧,后面说着说着感觉自己都有点蒙了。一个人长期处于紧张状态,相当消耗体力的,所以,后面几个问题的回答都比较敷衍。不知道是处于家乡人的关照还是我确实回答的不错,我通过了第二轮面试。第三轮面试是HR面,当时我并不知道他是不是HR,也有可能是技术经理什么的吧,他问的问题中不包含技术内容。我还保持着上午那种神气的姿态,不过在午饭时间也做了下自我反省,所以这次的回答稍微收敛了一些。

公司是否要你,一个方面取决你你这个人的技术能力,另一方面还会考察你的合作能力。一个嚣张跋扈的人很难跟人一起处事,一个沉默寡言的人也不是公司喜欢的对象。在面试短短的几个小时里,一定要保持良好的状态,并且要注意自己说话的尺度。你想表达一个最全面的你,但是当人家知道一个全面的是你那样的时候,他们会考虑是否要录用你。而且人也是会变的,尤其是出社会前两年,性格和处事方式会发生很大的变化,所以你所表述的“全面”的你是不全面的,可能会在面试的某一刻就发生了改变。

很多时候,我们不被认可,并不是能力不足,而是性格得不到认可。而性格的改变是一件漫长的事情。思考决定行为,行为决定习惯,习惯决定命运。我想大家都听过了这句话。经历了一些失败之后,我也开始反思。首先意识到的就是自己做事不太经过脑子,也就是没有思考。思考和命运是相关联的,面试过程中说过很多话都是没经过思考过滤脱口而出的,我开始慢慢理解自己失败的原因。

要做的不仅仅是认识说话的技巧,更重要的是做一个公司真正需要的人。

- 我并不是一个完美而且成功的人,还有很大的提升空间等着我

- 加强团队意识,自己提高的同时要思考我的提高可以给团队带来什么

- 规划一个稳健合理的进步区间,脚踏实地地做事,少叫嚣

- 提高自己的认知水平,多关注如何跟人交流,学会换位思考

上面说到的基本不包含技术,如果你有勇气并且有能力站在面试官面前,说明你不是一个没技术的人。你所缺乏的是思想上的提高,成为一个公司更加亲睐的人。

(七)内推

没有放过任何一个让自己跻身大公司的机会。除了网上投递简历,采取的更多的方式是内推。很多IT公司都会跟学校相关领导有接触,像我们的辅导员手里就握着一把公司的内推指标,她也会经常群邮给我们,介绍公司的情况以及公司的一些招聘岗位。这些招聘信息满足了学院大多数找工作同学的需求,而且他们的内推为我们省下了不少的事情,至少笔试这一关就免了。

技术氛围比较浓的学校总会有一大波成功的IT校友,多关注下社交网站上信息的共享,多结实些出道的学长学姐,这会给我们找工作带来很多的方便。我就是通过在百度工作的学长的内推获得百度面试资格的。那是一个熄灯后的夜晚,我躺在床上翻看了一下手机,逛人人网的时候无意中看到了一条好友转发的消息——学长可以内推进百度。当即我就通过手机发了一封邮件给那位学长,因为我的邮箱里有简历的备份,所以发邮件就比较方便啦。第二天学长就给我回复了,说简历不错,等面试的通知。

不知道是那个team急招人还是肿么的,第三天上午安排了一轮面试,接着下午很紧凑的又面试了两轮,都是电话面试。晚饭前就告知我已经被录用了,效率相当给力。因为当时手里还握着其他公司的实习offer,思考了几天之后才答应去北京实习。

除了这些内推方式,我也在一些关注的人的博客里头发现了他们也可以内推。内推是公司吸纳优秀人才的一种比较快捷的方式,所以在各个公司内部都是大力倡导每个员工去“发展”新员工的,而且对于内推成功的员工还会有一些丰厚的奖励。只要你确实货真价实,被内推入门是一件轻而易举的事情。

(八)实习与面试

六月底,我拎着包坐上了去北京的火车。这是我第一次与这个“真实”的社会零距离接触,既是欣喜也很紧张。

第一天是办理入职手续,发工作电脑,签协议,就是一些程序上的事情,搞完之后就是去见boss。Boss是一个很和蔼的人,他把我们这群实习生带到了会议室,开始说部门所涉及到的业务和相关技术架构。当时他说的时候,我听的还是迷迷糊糊的,坐在我身边的都是研究生,在里边应该就数我年龄最小了。

在那次交流过程中,他是不是问我们有没有什么问题,不过我们都保持了程序员特有的缄默,并赋以呵呵回应。然后boss告诉我,这里的前端分两个方向,Webapp和PC端,问我想做哪一块,从他的语气中我听出来他心里想着是让我做Webapp,不过因为自己这方面做的比较少,自信心不是很足,所以还是选择了PC。

没过多久,他给我安排了一个支持我学习的前辈,我们一般把这号人成为导师。导师有过四五年的开发经验,所以在很多问题上都表现得游刃有余。

过去的前几天,一直在看公司的相关规定和一些文档。Boss没给我安排任务,我也没有主动要求他给我,毕竟对他们所用的技术都不是特别了解,即便是给我了任务,我还是得先花时间去研究。秉着新人好学的良好心态,我开始了比较勇敢的摸索。

在内网中找到了我们团队前端资料的聚集地,当时十分兴奋,很多都是第一次看到的,而且总结的十分好。问了下导师业务中需要用到的技术,然后开始了三四天的自我学习。几天之后,觉得自己对这些知识已经有不错的了解了,就主动找了boss,说自己可以做事了。

Boss给我安排的第一次任务,是一个公司内部的数据统计分析页面。我问过比我早来三个月的童鞋,她刚来的时候是不是也是做这个,用了多长时间,她答曰:是的,两周吧。当时我笑了,于是很勇敢的提出了只要三天的排期,boss说,年轻人就是干劲足,不过后台数据跟不上啊~

当时boss没有给我安排UI,他说这东西是公司内部用,不需要那么漂亮,但是给我的要求是,要有点质量,有点创意。写代码对我来说没很大的压力,可以要自己设计页面,哎……只要硬着头皮自己动手了。为了不让boss对我的能力产生怀疑,我努力的去完成,结果两天时间就已经把页面和数据接口处理做好了。提交的时候,后台的童鞋很惊讶,可能他很少见到如此效率的青年吧!给boss看了之后,boss也比较满意,说设计还行,效率不错。

当时做完之后,导师找我谈了下,问我对这次实习有什么期望,希望他给我提供什么样的帮助云云。后来也跟我说了,做事情要循序渐进,注意进度,更要注意质量。我的初衷是这样的,我知道我表现的越能干,boss给我的事情也就会越多,但这是我所期望的,我希望在这短短的几个月里,技术水平和团队合作能力有一个质的飞跃,所以必须经过更多的磨砺才会有效果。当然,这样的显示自己的能力,也是希望在留下的时候可以跟boss谈一谈待遇的问题。但是一定要谨记,千万不要把展现自己的能力表现成炫耀,在一些不如你的人眼里,会觉着你自满,比你能力强的人眼里,你就是个自以为是的嫩小子。

第一个任务完成之后,boss对我比较满意,所以也允许我去做线上的任务。记得就是次日吧,在群邮里看到了用户反馈的bug,boss安排我去跟进。听到这个消息我很开心,毕竟才刚来几天,boss就放心让我搞线上东西了。不过当我看到那对代码的时候,我傻眼了。

首先是要申请代码读写权限,权限申请好了之后,把一堆代码down下来,看了之后傻眼了,完全没有头绪,几十个文件夹,几百个文件,要在这几百个文件里头找到一个小bug,这谈何容易啊,就连这个网页的生成我都不知道。当时真是相当的紧张,因为只是个小bug,如果连一个小bug我都处理不好,怎么让boss放心呢?

于是就硬着头皮,把这几百个文件都扫了一眼,花了将近一天的时间,扫完之后,对代码整体的结构有了把握,但是还是不知道该怎么进一步定位。只好去请教导师了。导师很迅速,首先是因为他之前到弄过这段代码,然后也是一个老手了,很快的找到了大概的位置,然后让我自己慢慢排查。在第二天我处理好了这个bug,然后就上线了。导师告诉我需要写上线通报,呵了个呵,上线通报是个啥子?又请导师帮我处理了。

第一次搞这样庞大的东西,没什么经验,不过后面多次接触了线上bug之后,对整个流程有了比较好的把握,也和导师之间建立了很好的关系。说是导师,还不如说是兄弟。他教了很多在公司做人的道理,当然,更多的是让我的技术水平得到了明显的提升。

大概一个月之后,boss说代码需要迁移到新框架上去,将前端所有人员进行分组,处理各个模块,我和导师负责其中的一个模块。导师知道我的想法,我把大部分的任务都交给我,让我有更多的机会去提升自己,也让更多的人看到我做的事情。这次代码的迁移花了将近一个月的时候,导师给我预估排期,给我的时间是两周半,但是我在第一周就基本完成了任务。boss知道之后,又给了我一个其他团队托付给他的任务,相当于把我给外派了吧,不过依然在自己的工位上做事。

就这样,我几乎是一直有两个任务在身,一个是即将完成的,一个是新安排的。那段时间身体很累,但是心里经常暗喜,我又学了不少!

有人觉得,实习就是打杂。我可不这么认为,那段时间我做的事情比一个普通员工做的要多,我觉得boss已经把我当成他的正式员工了。只要你在实习的时候,主动学习,争取机会,你就一定能够有机会收获很多!

实习闲暇的时候,我就经常站在一个后端大神的工位后边,看着他敲代码,每每看到他敲出我看不懂的东西,我就会让他教我为什么,是什么。他人也很好,好像也很乐于跟我交流。跟他一起学习,让我对linux平台有了更深入的了解,也学会了很多之前没见过的处理问题的方式。他是一个geek。

因为经常找一些问题去问不同的同事,所以几个月下来,跟每位同事都相处的比较好,也知道了他们擅长哪些方面,可以帮助我处理哪些问题。后面问的问题就更有针对性了,因此我的很多问题都能够比较快的找到答案。

在我实习的时候,我也想过到底要不要留在北京,其实后来一直没有决定好。于是在实习过程中,又去其他几家公司参加了面试,很幸运的拿到了offer。

posted @ 2020-07-13 20:16  不言不语技术  阅读(7)  评论(0编辑  收藏