过去一个多月的交付成果总结

正式进入新团队至今已有一个多月的时间,习惯性回顾这段时间的工作交付,收获颇丰:

1. 一个从对scrum陌生,到具备scrum基础的团队:

  • 用户故事是 开发团队写
  • 验收标准是 开发团队写
  • 计划也是开发团队出
  • 自动化单元测试是 开发团队做
  • CI/CD pipeline 是 开发团队做
  • TDD 持续重构 也在坚持践行

开发团队里面没有人跳出来说,这样不行,那样不做,反而是,"我"如何能做到更好,如何提升能力

但是,声明一点,这个团队还不能称之正式进入 Scrum 的世界,还在门口。

P.O. 是个虚拟出来的人,所以不用challenge产品规划如何如何,能否赚钱如何如何,这是这个阶段团队解决不了的事情。

2. 养成团队正向的认知和三观

1). 遵循工程师文化

  • A. 永远尝试通过技术的手段解决管理的问题;
  • B. 谁牛(技术,思想,方法等)听谁的;
  • C. 自己的狗粮自己吃;(EAT OWN SHIT).

2). 保持对技术的追求和好奇心

不要去否认任何自己不清楚的东西,对于新的、不明白的,反应应当是 “cool,这是怎么做到的?我该如何才能也可以做到?需要学习什么?

而不是 卧槽, 这不可能,做不到

我们现在做不到的事情,不代表全世界没人能做到。往往是因为我们的认知、知识、能力没有cover到,

3. 一个还不够完善的可持续扩展、可持续重构演进的高性价比框架

进入团队时,项目已经进行了几个月了,依然是熟悉的配方,Spring Boot + 一堆拼凑的模块与服务,为了微服务而微服务,形成一个强耦合、僵化易脆、且效率低下的框架,几乎接近于代码堆砌。

这种情况并不少见,这个是大多数java系给我的不好体验。欢迎来打脸,show出你好的架构和代码给我学习。

一开始,我没想改变框架,因为换语言换框架,团队未必接受。尊重团队的选择,很重要。
(我曾经在Z公司,告诉大家说我们想用 Ruby 代替 PHP 开发核心架构,结果就有几个PHP明确告诉我,换语言他们就不干了,差点收不了场。但是最终,我们只需两个ruby开发人员,一个我一个初学者,就完成了 CoreAPI 与 OpenAPI的工作,上线后跑出来的数据说明一切)

我只是在一开始,尝试他们正在做的东西,用 Elixir + TDD的方式实现给大家看,并且把每一个分解的尽可能细,先写自动化测试用例,再写实现代码,再根据需要重构代码。每一步都把痕迹(commit)留下,清晰的展示给团队。

团队也一直在看,一个星期后,他们提出,能否用Elixir来重写整个应用?
在跟所有人分析这样做的代价与成本和未来收益后,一致同意转Elixir。
而我,则7x16的用了将近一个月的时间,通过TDD的方式把整个架构搭建起来,并且把系统容器化,全自动的持续集成与持续部署。

在这个基础上,我可以放心的让这个非常junior团队,学习TDD方式实现功能。
因为,只要通得过自动化测试的,质量烂不下去;
只要通得过自动化代码检查的,代码烂不下去。

为何选用Elixir,而不是JAVA PHP

许多人会challenge: 为何不用 JAVA PHP 这类大路货,而选择 Elixir 如此小众的语言 (Ruby已经够小众了,Elixir比之更小众)?

我的回答是,成本与性价比最大化。
成本 当前,一个能用TDD方式进行开发的JAVA程序员月薪是多少?
太多copy-paste党,又贵水平又弱。

在相同成本情况下,我能让Elixir的程序员产生两到三倍以上与JAVA程序员的有效交付(同等质量)。想了解更多的,欢迎交流。

性价比最大化
性价比 = (产出 / 成本)
性价比最大化,通常可以用以下三种方式获得:

  1. 成本最小化,通过不断的压缩成本,把分母变小。
  2. 产出最大化之加班,通过延长工作时间(不断加班再加班)来获得更多的产出。
  3. 产出最大化之提升单位时间产出,通过提升团队的能力,令到团队在同等单位时间有更多的产出。

前面两者,简单直接粗暴见效快,最最重要的是有这很高的可操作性,因此也成了众多公司的银弹、不二法宝。

最后者,操作难度非常大,时间周期长,还需要有合适的指导教练(老司机),这也是为何敢选择这条路的公司比较少。

我一直认同一句话,如果一个团队的产出垃圾,
成本最小化,产出就更垃圾;
通过加班最大化产出,就是在用更快的速度产生更多的垃圾。
最后玩死项目坑死公司。

任何交付的改进,其根源都来自于团队能力的提升。
管理、过程、质量保证这些都只是辅助左右。

下面的图,很贴切那些裸奔型团队:


带病流血前行的项目

展望

每一个事物犹如硬币的两面,有优点也有弊端。
我们在享受一项新技术(Elixir)和Scrum敏捷带来的巨大好处、收益最大化的同时,
也需要面临风险最大化的问题,国内市场上Elixir程序员极其稀缺,同样市场岗位供给少,愿意转用Elixir的程序员也就少。

因此,享受红利的同时,也就需要肩负起相应的责任:
布道Scrum。
布道Elixir,提供更多的岗位,力所能及的回馈社区,共创生态。


事情一多,才发现这篇总结写了一个多月放在那里都没发出来,拖延症严重。
标题也不想改了,后续还有打脸的事情发生,有空再分享吧。


推荐阅读更多精彩内容