初级工程师如何在职场生存

若是你是刚走上工做岗位的毕业生,或者是工做一两年可是不得其法的新人,是否是也有如下这些困惑:为啥我写的代码TL一直不满意?为啥加班不少,也很辛苦,可是最终的产出仍是不够?若是你有相似的疑问,那么今天这篇文章就是为你准备的。apache

今天这篇文章要讲的主题是:做为初入职场或刚刚转行Java开发的同窗,如何进阶成为一名靠谱的工程师?不须要懂DDD、不须要懂TDD,也不须要懂分布式架构设计,只须要达到最基本的要求——能理解需求、能作简单的设计和产出系分文档、能写出BUG较少的代码,能完成单元测试和功能测试,并最终交付功能。数组

1. 动手开发以前要作什么?

新同窗拿到一个需求后,大概看了下,在心中打个腹稿,就准备动手了,例如:前几天我让跟着个人外包同窗作一个系分设计,过了一天,在我准备验收系分文档的时候,发现他代码已经写了不少了,可是,很差意思,需求没理解清楚、整个业务的流程也没有理清楚,可想而知,这种状况下写的代码大半是不能用的。安全

工做久了你会发现,动手写代码(作事)实际上是最简单的部分,难的是在动手以前,搞清楚如下事情:微信

  • 需求的背景(why)
  • 要解决什么问题(Target)
  • 要解决到什么程度(质量)
  • 有多少资源(时间和人力)
  • 解决方案的流程是什么样的(总体思路)
  • 有哪些难点和容易出错的点(key point)
  • 改动的点和老的系统是如何交互的(对老系统的理解)
  • 如何保证功能的平稳上线(不能靠回滚发布来应急)
  • 如何验证此次的改动和开发是符合预期的(测试用例,以终为始)
  • 要作哪些事情,每一个事情须要多久,这些事情之间的拓扑依赖是怎样的(工做量和工时评估)

上面这些事情,就是你须要在需求评审、系分评审、测分评审等会议前要准备充足的内容,若是在动手以前,上面的问题没法很好得回答上来,就是在埋雷,会在开发后期付出更大的时间成本和沟通成本。固然,若是在动手以前可以回答清楚上面的问题,那么开发的过程对于你和你的TL来讲,就会清晰和简单不少。架构

2. 开发过程当中要注意什么?

开发过程当中的要求,主要是对代码质量的要求,最基本的有四点:可读性、模块化、健壮性、扩展性。围绕上面这四个点,对于代码的基本要求有:分布式

  • 变量的命名不能过于随意
  • 函数的命名不能过于随意
  • 函数不能太长
  • 一个函数中要用空格将不一样的逻辑区分出来
  • 基于业务功能划分模块,优先于基于技术特性划分模块
  • NPE、数组越界、异常捕获等最基本的要搞定
  • 尽可能使用apache的工具类,不要本身写
  • 基于接口(API)而不是实现开发
  • 写完一个方法,就把单测补上
  • 写完一个模块就作下模块测试
  • 单测必须带Assert,不能给一个假的(如何写好单测我以前有文章写过
  • 单测工具备Mockito、PowerMock、JUnit、TestNG等等
  • 功能测试尽可能作成自动化的,实在作不到,也须要将测试的步骤记录成文档,下降执行的成本。

若是你能在开发过程当中遵循上面的这几个要点,相信你交付的代码质量也会有必定的保证。这里我也不许备再去讨论那些高大上的词语,例如:TDD、BDD、DDD等,对于新同窗来讲这些通通没有用,尽快能交付可用的代码、可维护的代码比什么都重要。模块化

3. 有哪些雷区必须避免?

每一个人都是重新手成长起来的,因此做为TL和师傅,其实特别理解新人的成长经历,也能接受必定程度的错误,犯错才是积累经验的最佳机会,所谓“吃一堑长一智”。不过有两个点,是我做为师傅时候的底线:函数

  • 没有测试的代码不能提交,这个是做为工程师最基本的底线,哪怕前面说的那些所有都作很差,这一点也是不能逾越的底线。你可能会说,我也没有把握有没有测试到位,不要紧,那就多测几回,若是不知道本身测试得对不对,说明前面梳理测试用例的时候没有想清楚。
  • 避免犯一样的错误,犯错是必然会出现的现象,可是若是相同的错误不断地犯,那真的是很难有所成长。这里我跟个人徒弟有个小经验,相似于上学时候的错题集同样,将本身在开发工做中犯的错误记录下来,每一个项目和需求结束以后作下review。这个方式颇有帮助,我本身也是这么成长起来的。
    • *

我的简介

我目前在蚂蚁集团作风控技术开发,跟黑灰产作斗争,保障蚂蚁生态内的内容信息安全。咱们团队还有大量hc,持续招人中,若是你有兴趣和我一块儿工做或交流,能够直接加我我的微信。工具

相关文章
相关标签/搜索