乐趣区

关于程序员:初级工程师如何在职场生存

如果你是刚走上工作岗位的毕业生,或者是工作一两年然而不得其法的新人,是不是也有以下这些困惑:为啥我写的代码 TL 始终不称心?为啥加班很多,也很辛苦,然而最终的产出还是不够?如果你有相似的疑难,那么明天这篇文章就是为你筹备的。

明天这篇文章要讲的主题是:作为初入职场或刚刚转行 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,继续招人中,如果你有趣味和我一起工作或交换,能够间接加我集体微信。

退出移动版