美国上市公司,专注Java培训22年

成为合格的程序员需要做到三点


成为合格的程序员需要做到三点,新人通常会从新加一个相似的功能或者修bug开始逐步熟悉原有的系统,作为新人,做了别人不愿意做的事可以缓和他人的压力;做了别人没做的事,将为团队增加产出。

成为合格的程序员需要做到三点

最近组内先后招了两名开发,作为他们的mentor,一方面我在观察他们的工作方式和编码习惯,另一方面也在对比思考自己的经历。自己有些感悟,觉得一名新人程序员,成为合格的程序员需要做到三点

一、遇事追踪溯源,不要怕改已有的代码

新人通常会从新加一个相似的功能或者修bug开始逐步熟悉原有的系统,这时无论原有的代码写的怎么样,都应仔细的思考每段相关代码的作用和对应的需求,努力做到追踪溯源,掌握它们的来龙去脉,这时再做task就会游刃有余,在做相似功能时,你知道哪些地方已经实现可以复用,哪些地方因为新加的代码应该做些重构;

修bug时,你可以从根本原因出发,解决问题,而不是在出现问题的地方修修补补;更重要的是你不会打怵修改原有的代码而蹑手蹑脚。

当然一旦发现要修改大段的原有代码或者设计,还是要主动和老员工先确认下思路是否可行,是否有遗漏的地方再开始。但不出意外,你会一下子就给别人留下一个好的第一印象,因为你没有在机械的完成任务,而是先做了深入思考。

写到这里不禁想起,自己刚工作时改了一个bug,当时的做法是在创建一个文件的代码之后3行再把这个文件删了,只加了一行代码就修好了,发给老员工review时还在窃喜自己只改一行代码就解决问题了,结果老员工一句话就把我问傻了,前面的那个文件为什么要创建呀?

我当然不知道了,因为当时我想原有的代码我不熟悉就最好不动。于是,那一刻我得到了工作生涯第一个重要的建议,应该找到根本原因(root cause)后再修改代码。这时你不仅可以做好手中的任务,还能进一步思考问题是不是代码设计不合理造成的,同时不会怕改已有的代码。

二、编码在保证正确的前提下,要足够快

新人在做第一个任务时都想留下好印象的,首先要做的就是一定要保证修改是正确的,这里不仅局限于正常情况下功能正确,还应考虑边界条件,错误处理情况等等,最后再提交代码时要最终确认一下单元测试过不过,提交代码后再注意下Jenkins bulid过不过。这一切都是为了防止出现以下情况:

一提交代码就break build或unit test

测试随便一点就有各种问题

匆匆忙忙修了一个问题,一提交又有其他问题

别以为这些都些小事,它直接关乎别人对你的评价。不犯低级错误,建立起严谨的印象,是非常有助于你在新环境下脱颖而出的。

但仅仅这样是不够的,如何在保证正确的前提下,提高速度或者效率则是另外一个要点。试想一下,你持续超出别人的预期,并保质保量的完成了task,哪个领导和同事会不喜欢你呢?

千万不要狭隘的觉得自己做的快了要多做事,何苦呀。也许短期内你多做了一些原本没分配给你的任务,但你在别人心中逐步建立起严谨高效的印象,从长期来看将给你带来更多的机遇。

三、主动承接团队里他人不愿意做或者没做的事

逆向思考下,人家为什么招你进来?相信绝大多数情况是事情多做不过来,缺人了。事情多了一定有老员工不愿意做,或者因为各种原因没做的事。

作为新人,做了别人不愿意做的事可以缓和他人的压力;做了别人没做的事,将为团队增加产出,如果这件事还是一个技术难题,那不是正好可以让别人眼前一亮,证明自己的实力吗?

其实关于这一点,在做的时候要进一步深入思考。

别人为什么不愿意做或者没做某些事?是因为缺乏相关知识而没有做?还是因为没有自动化每次手动操作既耗时又容易出错?是因为优先级不高?还是因为投入产出比不高?是因为代码结构不合理导致无法快速加上?还是因为需求不明确?是不是团队里的人因为思维定式错误估计了问题?是不是可以从其他的角度解决这个问题?

要深入思考后,才能从根源入手,从而正确的解决问题。切记不要机械的完成任务,要努力让你的加入使团队变的更好。

自己在第二份工作的开始阶段,就发现团队还没有使用持续集成的工具在统一的环境下交付测试,测试还在通过访问开发机器上的网站验证功能,结果开发之间互相break情况经常发生,项目质量也无法保证。询问后才知道,大家也很希望改进现状,只是因为一些原因没法得到系统组的支持,组内也没人来搭建持续集成的环境。

于是我利用一开始相对轻松的时间,使用teamcity搭建出持续集成的环境,一时间大家都纷纷叫好,加上自己又接连解决了项目中一些棘手同时没人做的问题,一下子就树立了可靠的形象和在团队里技术主力的地位,慢慢的即使是公司中其他组没合作的过的人也对我评价很高。我自己琢磨出的原因是团队里缺能干活的人,但更缺能让团队变好的人。

其实巧的是,如何使用teamcity搭建持续集成环境是我在第一份工作离职交接时主动做的最后一个task,因为当时有个小项目是我独立负责的,我想在交接时让项目更正规些,就主动提出这个想法,虽然在离职的前天晚上还在加班调试,当天上午还在和同事讨论一些细节,但就是这主动多做学会的技能成了我在第二份工作里出色开端的重要一环。

感谢大家阅读由java职场分享的“成为合格的程序员需要做到三点”希望对大家有所帮助,想了解更多培训信息请关注java培训机构官网

免责声明:以上内容仅作为信息传播,文中部分信息来源于互联网,仅供阅读参考。


【免责声明】本文部分系转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,如涉及作品内容、版权和其它问题,请在30日内与我们联系,我们会予以重改或删除相关文章,以保证您的权益!

Java开发高端课程免费试学

大咖讲师+项目实战全面提升你的职场竞争力

  • 海量实战教程
  • 1V1答疑解惑
  • 行业动态分析
  • 大神学习路径图

相关推荐

更多
  • Java设计模式和应用场景?
    Java设计模式和应用场景?
    Java设计模式和应用场景?Java设计模式是软件工程中常用的一套问题解决方案,它们可以帮助开发者提高代码的可读性、可维护性和可扩展性。设计模式通常分为创建型、结构型和行为型三种类型。下面是一些常见的设计模式及其应用场景: 详情>>

    2024-06-24

  • Java主流框架都有哪些?
    Java主流框架都有哪些?
    Java主流框架都有哪些?Java作为一门历史悠久的编程语言,拥有众多成熟且广泛使用的框架,这些框架极大地简化了软件开发过程,提高了开发效率。以下是一些主流的Java框架: 详情>>

    2024-06-24

  • C++和Java哪个更值得学?
    C++和Java哪个更值得学?
    C++和Java哪个更值得学?C++和Java都是非常流行和强大的编程语言,它们在不同的应用领域和环境中都有广泛的使用。选择学习哪种语言更值得,取决于你的个人兴趣、职业目标和项目需求。下面是两者的比较,以帮助你做出决定: 详情>>

    2024-06-24

  • Java前端和后端的区别
    Java前端和后端的区别
    Java前端和后端的区别?Java作为一种广泛使用的编程语言,其在软件开发领域中的应用非常广泛。在Java的生态系统中,前端和后端的区分与大多数编程语言一样,主要基于开发的角色和工作内容的不同。 详情>>

    2024-06-24

  • Java开班时间

    收起