刚毕业那会找工作简单,但是找一份自己喜欢的工呵呵,难上加难,毕竟我们找工作都是看工作环境和薪资待遇的要求太多自然也就(此处省去一万字)。我那会儿可是历经了无尽的磨难,后来去兄弟连学习了一段时间之后,终于是守得云开见月明了,很顺利的就找到了一份薪水让我很满意的工作。如果你知识不扎实也也可以去继续学习或者通过一些培训类的网站看视频学习。成功入职之后问题又来了,我们作为新人应该如何上位呢?毕竟程序员是没有时间去勾心斗角的,难道只能一步一步的去熬资历吗?今天,我就通过自己的一些经历来给大家说一下,程序员如何才能上位。
1. 遇事追踪溯源,不要怕改已有的代码
2. 编码在保证正确的前提下,要足够快
3. 主动承接团队里他人不愿意做的或者没做的事
下面我将逐一分析说明这三点。
一.遇事追踪溯源,不要怕改已有的代码
新人通常会从新加一个相似的功能或者修bug开始逐步熟悉原有的系统,这时无论原有的代码写的怎么样,都应仔细的思考每段相关代码的作用和对应的需求,努力做到追踪溯源,掌握它们的来龙去脉,这时再做task就会游刃有余,在做相似功能时,你知道哪些地方已经实现可以复用,哪些地方因为新加的代码应该做些重构;修bug时,你可以从根本原因出发,解决问题,而不是在出现问题的地方修修补补;更重要的是你不会打怵修改原有的代码而蹑手蹑脚。当然一旦发现要修改大段的原有代码或者设计,还是要主动和老员工先确认下思路是否可行,是否有遗漏的地方再开始。但不出意外,你会一下子就给别人留下一个好的第一印象,因为你没有在机械的完成任务,而是先做了深入思考。
写到这里不禁想起,自己刚工作时改了一个bug,当时的做法是在创建一个文件的代码之后3行再把这个文件删了,只加了一行代码就修好了,发给老员工review时还在窃喜自己只改一行代码就解决问题了,结果老员工一句话就把我问傻了,前面的那个文件为什么要创建呀?我当然不知道了,因为当时我想原有的代码我不熟悉就最好不动。于是,那一刻我得到了工作生涯第一个重要的建议,应该找到根本原因(root cause)后再修改代码。这时你不仅可以做好手中的任务,还能进一步思考问题是不是代码设计不合理造成的,同时不会怕改已有的代码。
二.编码在保证正确的前提下,要足够快
新人在做第一个任务时都想留下好印象的,首先要做的就是一定要保证修改是正确的,这里不仅局限于正常情况下功能正确,还应考虑边界条件,错误处理情况等等,最后再提交代码时要最终确认一下单元测试过不过,提交代码后再注意下Jenkins bulid过不过。这一切都是为了防止出现以下情况:
* 一提交代码就break build或unit test
* 测试随便一点就有各种问题
* 匆匆忙忙修了一个问题,一提交又有其他问题
别以为这些都些小事,它直接关乎别人对你的评价。不犯低级错误,建立起严谨的印象,是非常有助于你在新环境下脱颖而出的。
但仅仅这样是不够的,如何在保证正确的前提下,提高速度或者效率则是另外一个要点。试想一下,你持续超出别人的预期,并保质保量的完成了task,哪个领导和同事会不喜欢你呢?千万不要狭隘的觉得自己做的快了要多做事,何苦呀。也许短期内你多做了一些原本没分配给你的任务,但你在别人心中逐步建立起严谨高效的印象,从长期来看将给你带来更多的机遇(本人就是因此受益)。
三.主动承接团队里他人不愿意做或者没做的事
逆向思考下,人家为什么招你进来?相信绝大多数情况是事情多做不过来,缺人了。事情多了一定有老员工不愿意做,或者因为各种原因没做的事。作为新人,做了别人不愿意做的事可以缓和他人的压力;做了别人没做的事,将为团队增加产出,如果这件事还是一个技术难题,那不是正好可以让别人眼前一亮,证明自己的实力吗?
其实关于这一点,在做的时候要进一步深入思考。别人为什么不愿意做或者没做某些事?是因为缺乏相关知识而没有做?还是因为没有自动化每次手动操作既耗时又容易出错?是因为优先级不高?还是因为投入产出比不高?是因为代码结构不合理导致无法快速加上?还是因为需求不明确?是不是团队里的人因为思维定式错误估计了问题?是不是可以从其他的角度解决这个问题?要深入思考后,才能从根源入手,从而正确的解决问题。切记不要机械的完成任务,要努力让你的加入使团队变的更好。
自己在第二份工作的开始阶段,就发现团队还没有使用持续集成的工具在统一的环境下交付测试,测试还在通过访问开发机器上的网站验证功能,结果开发之间互相break情况经常发生,项目质量也无法保证。询问后才知道,大家也很希望改进现状,只是因为一些原因没法得到系统组的支持,组内也没人来搭建持续集成的环境。于是我利用一开始相对轻松的时间,使用teamcity搭建出持续集成的环境,一时间大家都纷纷叫好,加上自己又接连解决了项目中一些棘手同时没人做的问题,一下子就树立了可靠的形象和在团队里技术主力的地位,慢慢的即使是公司中其他组没合作的过的人也对我评价很高。我自己琢磨出的原因是团队里缺能干活的人,但更缺能让团队变好的人。
其实巧的是,如何使用teamcity搭建持续集成环境是我在第一份工作离职交接时主动做的最后一个task,因为当时有个小项目是我独立负责的,我想在交接时让项目更正规些,就主动提出这个想法,虽然在离职的前天晚上还在加班调试,当天上午还在和同事讨论一些细节,但就是这主动多做学会的技能成了我在第二份工作里出色开端的重要一环。
写文章时,自己也在进一步思考,我认为上面的提到3点在很多工作场景中都是适用的,更通用的总结是:1. 做事要知其然并知其所以然2. 努力建立起严谨高效的形象3. 成为让团队变的更好的人。你有没有受到什么启发呢?当然了无论你是新人还是老人,只要是做了程序员,那就要不断的学习,否则不用新人往上挤,你自己就掉下来了,我通常都是到兄弟连学习下,或者是跟几个业内的朋友多交流一下自己的经验。如果你是新人的话,我还是建议你先到兄弟连这样的培训机构做一下系统的培训为好。
文章的字数有点多感谢大家能在百忙之中抽空看笔者的文章,希望大家能继续关注兄弟连,如果是行外的朋友想要入行程序员,我个人是建议你去好的学校学习,因为有我的亲身体会,自学还是很难学的。。
兄弟连官网:http://java.itxdl.cn/
铛铛铛!另外兄弟连Linux培训汇集各行业名师共同打造全新的Linux培训课程。欢迎大家来进行学习哦!想继续深造的你们可以参加兄弟连教育同腾讯课堂合作首度联合推出PHP强化就业班助力发展,全网独家全程直播授课在线课程。成绩优秀的学员可获得腾讯课堂颁发的PHP工程师专业认证,并有机会腾讯系公司的面试推荐,在校学生成绩优秀者更有机会获得腾讯工程师内推机会,以及获得腾讯专家就业及面试指导。一键直达课堂
https://ke.qq.com/huodong/xdl/index.html