转眼间又快要到六月了,每到这个时刻,总有特别的感觉。
下星期,我就要离职了。再过两个星期,我就要毕业了。
因为我很健忘,所以总觉得应该写点东西来总结自己这一年来所经历的事情,作为记录和总结,好让自己在以后不要忘记自己现在所做过的事情。刚好趁着项目上线测试前的一点空挡,把还记得东西写下来,哈欠。
作为一个非985和211大学且非科班的程序员,我勉强算从大二下学期开始学习编程,在这之前,接触的有关编程的课程只有一门c语言,那时也确实没有花太多的心思认真地去学习,大三才确定放弃本专业转而走码农路线(哈哈,不过本专业还是要确保不挂科顺利毕业),忙活自学了一年之后,大四一开学便开始寻找实习和工作。
关于简历的设计,我一开始其实也不知道简历到底应该怎么样,在网上也没有找到很好的模板,只是简单的将自己的信息成列出来,所以一开始简历确实存在着很大的问题。这里我介绍一个制作简历的网站--乔布简历,里面有很多很好的简历模板供我们参考。我认为一份好的简历首先必须是简单的,所以我制作简历的过程很简单,找一份简单大气的模板,然后根据自己的个人情况设计要列出的信息,最后将自己的信息填充上去。不过我的简历也一直处于被修改的状态,往往面试完后又会针对性对其进行修改。其实简历只要简简单单的真实描述自己,样式简洁干净整齐就够了,最重要的还是简历的内容。在简历中过分的描述细节,其实往往让人感觉你无法抓住重点,面试官也很难去了解到真实的你。对于简历的内容,以我自己的经历而言,我认为面试官最注重的是岗位相关技能的介绍和项目经验的描述。除了需要适当的针对岗位对自己所掌握的技能进行较好的准备外,我认为项目经验必须作为最大重点进行介绍。此外,简历上还可以加上必要的在校获奖情况的描述,个人介绍一两句话带过。最后很重要的是个人的联系方式必须认真校验准确,否则无论你前面做得多么完美,多无法获得自己喜爱的工作机会。
一般的企业会在3.4月进行春招,9.10月进行校招。对于BAT来说,春招招的的是暑期实习生(下一届的毕业生),秋招招的是应届毕业生。对于如何抓住各大公司校招的机会,不错过投递简历的时间,我是采取了以下的几个方式来获取校招信息的。
<1.关注招聘网站(招聘网站一般会有各公司的招聘信息)
<2.企业微博、微信(企业一般会通过这些渠道发布招聘信息)
<3.内推QQ群(大公司一般都有内推,内推比正式校招早,加入可以较早的获得相关信息)
<4.同学交流(相关专业的同学都是寻找相关的工作,可以获得很多情报)
<5.学校的就业网站(大学城的同学可以关注各个学校的网站,宣讲会比较有先机)
如何准备笔试,面试。我首先会事先去了解自己想要从事的岗位要求的相关技能,进行针对性的准备。当然,计算机软件的东西很难临时泡佛脚,对于一般的应届毕业生也很难在短时间内就掌握一门以前从没接触过的知识。笔试面试考察的内容其实无非是平时学校上课的课程(当然这里说的是相关专业的同学),此外,我认为很多学科其实很应该自己去寻找一些课外的优秀书籍进行反复的阅读。例如编译原理的三大圣经(龙书、虎书、鲸书)等。
关于项目经验方面,我们有很多的途径去提升自己的相关项目的经验,比如你可以参加学校的组织的工作室,在这些工作室中有很多志同道合的同学可以一起学习、做项目,一般工作室都有会指导老师,老师也会帮工作室的学生寻找一些社会上的商业项目,这些都是锻炼自己技能的好途径,而且还能从中获得一定的回报。如果你所在的学校的没有类似的学生工作室,或者无法加入(我大三的时候就由于太晚参加,所以被拒绝加入),还有很多其他的途径提升自己的项目经验,比如现在很多的学生社团都会开发一些自己的应用,你也可以自己组织开发团队做一些项目,再不行的话,你完全可以自己一个人进行项目的开发,我当时就在网上寻找了很多项目开发有关的视频独自进行,跟着教程一步一步的学习。所以说项目经验完全取决于自己。
面试过程中我觉得首先要放松自己的心情,摆正自己的心态,不要患得患失,每次前往面试前都要跟自己说,面试成不成功都无所谓,如果你可以面试的结果看得比较轻,你真的可以更加放松自如的发挥自己的真实水平。面试的时候运气其实也占到很大的成分,面对不同的面试官我们要表现出不同的姿态,要给予面试官一种自信诚恳的感觉。遇到真的很困难无法解答的问题的时候,也不必紧张,可以跟面试官阐述自己的想法,和类似的情况,很多时候面试官考察的是你解决问题的过程和方法,而不仅仅是问题的答案和结果。回答技术相关的问题的时候,画图和举例是最好最讨喜的阐述方法,面试过程保持自然轻松的微笑。其次,做到着装整洁(不一定就要正装),提早一点时间达到面试地点,了解面试公司的基本情况,做到有备而来,这样,你的面试成功率就会提升很多的。
机会只留给有准备的人,我们必须为自己未来的路做好规划,提早准备,才能在机会到达的时候,比别人更有把握的抓住它。我认为对于一个有志于在技术路线上一直往下走的程序员来说,在职业生涯的起步,公司和岗位的选择其实是最重要的,这样行业其实和其他行业一样,并不是一个什么高薪高收入的行业,它同样十分艰辛,你只要选择适合自己的路线才会走的比别人远比别人快。作为毕业生我们其实有着比职业人有着更多的选择机会,我们应该将眼光稍稍的放远一点,当然一眼看到自己十年、二十年之后的情况是不现实的。但是我认为我们可以根据企业、岗位和自己的情况预测出自己未来几年的发展情况,可能刚出来的时候自己拿到的薪水比同学朋友少个千百块(其实一般大家的薪资水平多不会差太多),但是由于自己的方向正确,在一两年后就反超同龄人。
刚刚开始参加项目开发的工作的时候,我对游戏服务器并没有深刻的认识,一切都是从0开始,第一天我获得的只是一份以前项目游戏服的代码和一个客户端包,简单的部署上开发环境之后,就运行了起来。起初我完全不知道怎么去阅读维护这份代码,因为其中包含了很多我之前没有学习接触过的只是领域。而且没有开发文档,你只能完全依靠自己去迅速上手,理解这份代码。我的心得体会是,首先你应该对项目的架构有一个比较初步的认识,如果你完成不理解或者不去理解项目的逻辑架构,你是很难迅速掌握这个项目。在初步理解的项目的逻辑架构之后,你就可以选取一个比较简单的模块来跟踪,这里我认为学会使用IDE的debug功能来打断点是十分重要的技能,你可以一步一步的跟着程序的执行,这样对于理解该模块的执行路径以及逻辑很有帮助。当然对于后期的调试优化也很有帮助。在你熟悉了基本模块的架构,逻辑等之后你就可以开始根据文档开发新的模块了。对于开发一个新的模块,我认为首先不应该急着开始写代码,你应该先阅读策划文档,这里我认为有游戏经验的开发者对于阅读策划文档和理解模块逻辑超级有帮助(一个游戏开发者必须也是一个忠实的游戏玩家)。只有理解了你要做什么,你才可以在开发过程不走弯路,较快较好高质量的完成你的开发工作。对于新手,我们理解完模块的开发需求之后,可以在项目已有的模块系统中寻找一个与之较为相似的模块作为参考,一切从模仿开始。初步完成一个项目的开发之后,我们还需要及时的进行测试,因为没有经过测试的程序,很难保证其的正确运行,开发人员无法保证程序中不存在bug,完善的程序都是经过不断的开发、测试、维护的反复过程出来的。此外我认为一开始面对一个成熟的项目,没有经验的新手很难一步上手,这时可以对项目的主次进行划分,先将底层的东西放一放,等理解熟悉了上层的东西之后再继续探究底层的东西,这样可以化正为零,对于新人刚接手项目也是比较有帮助的。
在CMGE实习的几个月,算是比较完整的跟进了一个手游的开发流程。就整个手游后端框架而言,搭过游戏服、登陆服、GM服务器、单点、第三方支付服务器。管理过数据库,维护过后端服务器。就java而言,我认为服务端对多线程、并发、数据库、缓存、网络的基础知识要求比较高。
对于自学一门知识,我个人认为最难的地方是开头,我们很难去确定自己的方向,对于一个新人门外汉,往往只能看到一门专业表面的东西,我们很难从一开始就选择到自己会适合的领域和方向,我们往往是从网上或者其他途径了解到某个领域很有前景,所以产生兴趣想去接触这个领域,但是可能我们去稍微接触这个领域的时候,又会发现自己其实并不喜欢或者不适合自己,所以我们一开始要认真考虑和了解自己将要走的方向。只要我们确定了自己的方向,接下来其实就很简单了,就是认真努力的去学习它。
从C语言开始,到java,到web开发,到游戏服务器,到安卓客户端开发。慢慢地接触到知识越来越多,想去学习的东西更加的多,我深深的觉得学习不是一味的死记硬背,因为这一套运用在这个领域里会十分的辛苦,我们必须从底层的学习只是的原理,技术都是相通的,只要把握原理,各种五花八门的技术就像一个个工具,我们只需要稍加理解,就可以很容易的上手运用。对于计算机来说,网上的学习资源是非常丰富的,我们有很多的渠道去获取新的知识,技术更新十分的快,我们不能只守着一两本经典的教材,或者只单单的留意自己的领域,我们应该拓宽自己的视野,去留心身边各种技术的变化。