一位35岁Java工程师给我的启示

大家好,我是帅气小伙。今天我要为大家隆重介绍我实习经历中的导师,一手一脚地把我拉扯大,带我入门给我方向。眼看离回校的时间不多了,谨此写下本文记录一下这段难忘的经历。同时也分享给大家我得到的启示。

尴尬的会面

       那是我第一天来到公司,公司专门为我们实习生分配了导师,而且专门为我们调整了位置,我把东西都准备好之后,开始估摸着怎么去融入公司,怎么去了解公司的技术。因为我属于Android转Java后台,很紧张,我怕我不能够胜任即将到来的开发任务。我对这份工作充满着热情,对我的同事也同样地充满了期待。眼看上班时间到了,一名背着双肩包的男子进来问了问我们老大位置在哪。而且像是个新来的同事,然后他不慌不忙地坐到了我的旁边位置。我非常热情地跟他打招呼:”你也是实习生吗?“,他从书包里掏出了ThinkPad,然后扭头回了我一句:”不是!“,过了一会我们登上了公司的禅道管理,一看他的职务"高级Java工程师"。求我内心的尴尬面积。我甚至尴尬到2个星期都不好意思跟他说一句话。我就这么从旁边默默地观察了他2个星期。看着他如何专注于工作。心中的敬佩油然而生。

破冰之旅

       2个星期以后,我们完成了公司为我设定的所有培训课程,接下来每个人都陆陆续续得收到了导师的任务,而给我安排的导师却一直在出差。我也没闲着,主动去找别的同事给我分配任务,很快地我就开始提交了我的代码,并未我的代码赋予了自认为完美的注释。正当我暗喜之时,突然在我身旁的高级Java问了一下经理:”为什么我从SVN的库拉下来的代码有错的,这是谁提交的,不能运行的代码怎么能提交呢?“,然后经理给我发来了QQ消息:”你是不是有代码没提交到,我这里显示有个类没找到“,看来经理还是很给面子的,用QQ消息不是当众拆穿。可是我坐在他旁边,他过来问了问我:”你少了个类没提交,快点提交一下。“,当时我用SVN还是不熟练,"如何添加一个文件后提交",我找了很久。他又过来催我了:”同学,快点提交一下吧,我这边还有其他的事情,我来帮你搞吧“,于是他”“走了我的鼠标,手把手地教我了我如何提交代码:

1.检查是否有新添加文件(add)

2.检查远端是否有更新(查看提交记录)(showlog,update)

3.解决冲突和合并源代码(edit conflict,save,merge)

4.源代码对比(和之前的版本自己加了什么样的代码)(different)

5.提交并说明(commit)

从此以后,我提交代码之前都按照着这5部走,这虽然是一件很小的事情,但是我发现很多人在用使用SVN或者GIT的时候,都会犯错误,遇到冲突就慌。我相信你以后按照这5部走,定然从容地提交源代码。

有强迫症的他

有一对情侣,他们是都是程序员,后来因为男的是用空格格式化代码的,后来他们分手了。

这是一个很多年前的梗了,讽刺的就是程序员的强迫症,很不幸,他就是一个重度的强迫症患者。由于之前的破冰之旅,我们两个开始合作项目了,我成为了他的助手,为他写接口。由于我还是有编程的潜质的,虽然零基础,这些接口的活还是难不倒我的。很快我就写好了。不过我却被他批评了:

1.代码没有分块,一堆代码放在一起,不知道干嘛的

2.虽然用注释标准了各代码块的作用,但是没有空行

3.命名非常不规范,连基本的驼峰命名都忘记了,而且不够简洁

4.代码缺乏严谨性

是的,这是原话,先说说我自己的编程经验吧,C#,C++,Java都弄过,可是我听到了这样的批评,心里确实非常不舒服的,也不乐意去接受。可是他从用了一种比较和谐的方式去说服我,他说把手地教我去写代码,并且教会了我如何去考虑代码的严谨性,命名的规范性,说明了如何去给代码做分块。

1.代码严谨性考虑

参数判空,过程分块,错误日志,异常处理

2.命名规范

方法命名全部用功能的英文动词命名

变量命名全部用名词,对于集合全部+s

当然你一可以参考阿里出的代码规范标准

再啰嗦一句,作为一名程序员,代码就是我的脸啊,业界有一句话是这么说的:”代码反应了一个人的编程水平。“,作为一名高级新手,我非常感谢他传授给我的经验

他教我用断点去审视代码的执行

作为一名程序员,我们经常会陷入一个怪圈,就是被一个隐秘的Bug折腾得死去活来,甚至怀疑人生,后来发现是传参的时候,多了一个空格,这种茅塞顿开的感觉,让人哭笑不得。这种Bug大多数是由于代码不规范造成的,如果你能向上面说的那样去编码,相信这些低级错误就不会找你了,虽然在写好代码的时候需要去思考,会花时间,但是这却在节省时间,提高效率。可是有的时候,我们缺很难避免在代码处理过程中导致的Bug,那么我们如何去处理并且快速地定位到问题呢?以前我Debug的时候是很有想象力的,考虑到了各种可能,也去试了各种情况,最终也调试出来了,但是效率极低。显然靠猜是不行的。

编程是非常严谨的,编程需要实事求是。

Debug没有技巧,错在哪里,断点就打到哪里(cause by

他的记忆力很差

作为一名程序员,每天都要面对新的知识,是不是意味着我们要记忆的东西就越来越多呢?在10几年前,还在搞汇编的年代,也行你只能靠记忆去记住那些枯燥的指令了。但是在今天网络发达,搜索引擎智能得不行的年代,你的记忆力显然比不了这浩瀚无边的互联网,这是一个知识爆照的时代。反正我的小脑袋是记不住这么多东西的了。那程序员脑袋里到底装的是什么?

1.语法规则,每一门语言都有他特殊的表示形式和特色,这是我们必须要记住的

2.基本的API

3.常用的框架技巧

4.基本的计算机常识(操作系统,计算机组成原理,数据库等等)

5.搜索知识的技巧(google)

反正我的脑袋只记得这么多。1,2,3,4是经验,5是潜力。为什么说找知识是一种潜力呢?因为找知识的同时,反应的是一个人独立思考的能力和思维方式,编程不就是这样吗?所以我觉得这是潜力。所以说,拒绝伸手党,从你我做起,从今天开始学会独立思考。

他面试了很多人,没有一个通过

由于公司的业务剧增,人手短缺,需要找人,他理所当然成为了面试官,可是他总跟我说,每天面试的人和事,有一位候选人,他工作了5-6年,来应聘高级Java,当问及他常用框架的时候,对答如流,可是当问到他这些框架的区别时,他却哑口无言。这是一件多么发人心醒的一件事。要想成为一个领域的专家(精通者),光有广度不行,必须要有深度,有自己的思考和理解。年轻的时候,我们追求新的领域,拓宽知识的广度,是很用必要的,可是在拓宽知识广度的同时,你必须适当地提高知识的深度,否则你知识一个表浅的人,也只停留在表面,衡量一个人的价值,在于他的不可替代性,试想一想,一个刚毕业的学生用这些框架很难?你凭什么拿比他们更高的工资?

我非常感谢他为我分享这是宝贵的面试经历,在我如此年轻的时候,就给我敲响了警钟。

总结

作为一名刚走出大学校门的学生,我非常感谢他对我的尊尊教诲,同时我也想对那些没走出校门的师弟师妹们说,在公司不是搞培训的,是要看效益的,如果你等着别人来教你,你是什么都学不到的。

你可能感兴趣的:(一位35岁Java工程师给我的启示)