在告别了上一个项目之后,公司迎来了组织架构变动,之前项目的同事找到我,问我愿不愿意以后分到华东,我当然无所谓啊,于是就答应了。然后持续了很久“下周上项目”(预定人),最后还是上了I项目,这个项目还挺像小公司的项目的,算半个从无到有,不停的推导重建。

入场的时候,再次提到了这是一个BFF,我心目中的BFF,是简单的/薄薄的一层,路由分发,接口聚合,数据mapping。显然,我认为和TW认为还是有差距的,公司的BFF就是在其他系统的API上堆砌出一个项目。

技术选择

  • Kotlin
  • Spring Boot + Webflux + Reactor
  • Mongodb + Redis

我觉得整体的选择还是挺不错的,这个项目最大的收获可能就是对Reactor的一系列了解了。

代码整体风格

这个项目做的事情其实特别简单,但是实现上真的是“非常Java”,这儿我又得黑一下Java了,我喜欢Kotlin,也喜欢Java,但是这个圈子真的是太老了。开口闭口就是分层,模块,内聚,耦合…… 一个6000行代码能搞定的事情,非得拖到16000行。

DDD

然后整体的结构是按照所谓的DDD来进行划分的,其实我不懂DDD,我也没有什么动力去深入了解DDD,可能有人会说,你对一个东西都不了解,怎么能下结论呢?道理其实很朴素。

当一个所谓的设计思路,设计理念,不能清晰,浅显地向他人解释解决了什么问题,带来了什么好处。那么我们可以认为这个玩意儿基本不会有任何好处,只是一个商业卖点而已。原因也很简单,这个思路,理念,都是需要人来落地的。

测试

由于这是我进TW第一次写代码,所以也体验到了写测试的“快感”,整体感觉也是偏负面的,怎么说呢,有点用,但又没啥屁用。这儿就不展开了,一句话:把底层全部mock掉之后的测试,只有面子上好看。

Ops

这次算是做了一次Devops,我还是对自己挺满意的。Ansible,Jenkins pipeline、Jenkins plugin develop、Gradle kts。基本上都碰了一遍,总体而言,都挺简单的。 比较可惜的是没有上Docker,K8s之类的,要不然我会更开心。😃

Other

其他方面,先来吐槽吧。

  • 开发水平参差不齐,水平烂而不自知。这个是纯主观体验。还有就是理论大师,实现菜🐔。
  • BFF端地位低下,这是我长达3年的职业生涯里没有遇到过的。完全被前端牵着走。
  • 项目管理不够实诚,从上项目之前的“永远下周上”,初期的的长时间shadow,到后期下项目之后让人待定。都有一种揩公司油的感觉。当然,这个跟我没什么利益冲突,我只是单纯觉得不太符合公司的调性。

最终我的解决方案都是

  • 随便吧
  • 我觉得都可以
  • 那就这样吧

不得不说,在外包公司真的是很容易让人接受一切,毕竟都不是自己的项目。可能是没有产品的荣誉感? 我走后,哪管它洪水滔天 再说优点吧,同事关系比较融洽,轻松😉。体验了一些新玩意。 不过话说回来,我是一个负能量爆表的人,只要是我不吐槽的点,基本都是很不错的点。

后记

很难想象,这是我在TW工作最开心的一段经历了,甚至测试/敏捷实践,我也是从这个项目中从“完全没用”到“还有一点用”的想法转变。