革命性的演变

这是我一直在几乎每一次我听到这个问题, 在一个关于面向对象的编程和我的会议非传统对它的理解:“我怎样才能让整个团队开始这样做不同的一切吗?” (最近才在这里问)。 确实,如果您一个人,很容易改变您的编码习惯和软件设计。 如果您是一个更大的团队的成员,每个人都对Spring框架和过程编程感到非常满意,那么您会怎么做? 您如何改变他们的编码习惯? 一个更好的问题是:如何在执行过程中不被解雇?

革命性的演变
战争公司(2008年),约书亚·塞夫特尔(Joshua Seftel)

TL; DR:你不能一个人获胜,需要一个帮派。 组装它。

我记得几年前我加入Java团队担任架构师,而我的老板告诉我,该团队拥有非常有才华的程序员,但他们需要一些帮助。 他还告诉我,该体系结构很棒,但是需要进行改进才能变得更好。 他还告诉我,我在那里进行更改,这是他们期待的。

在短短的几周内,我意识到现实是完全不同的。 那30个程序员中的大多数实际上是初级的,几乎无法分辨对象方法和静态方法之间的区别。 我还发现根本没有体系结构,只是不同时间在不同人创建的.java文件的集合。 而且,当然,很明显,无论我多么努力,我的想法都不会被接受,仅仅是因为它们对于那些“才华横溢”的人来说听起来太吓人了。

认真地说,如果我曾经是其中一名程序员,坐在那里几年,编写一些Java代码并每月收取两次薪水,我会很高兴见到一个告诉我我在过去几年中很不对劲的人现在该重写所有内容了吗? 不管这个家伙有多有意义,我都会破坏他以保护自己。 不管我们如何宣称个人主义和独立思考的价值,大多数人都是非常社交的,并且依赖于周围的社区。 换句话说,他们做其他所有人都做的事情。 更安全

那30个人并没有好转。 他们顺其自然 ,使用SpringMyBatisSingletonsgetterssetters ,而我们真正的OOP程序员所讨厌的一切都是如此。 但是我必须为此做些事情,这就是我得到的报酬。 但是,仅告诉他们从今天开始我们应该摆脱Spring,因为它是反OOP对我而言仅意味着一件事:早晚终止合同。

这样的革命对程序员和产品都将是严重的威胁。 首先,它将使大多数程序员回到初级职位,迫使他们从头开始学习新的范例,同时他们希望继续享受“高级开发人员”的职位和薪水。 其次,重大的体系结构更改始终会损害现有软件的稳定性。

这是我所做的:

  • 首先,我同时选出了最年轻和最有才华的人。 我与所有这些人进行了交谈,发现谁的潜力最大。 注意,我选的不是最好的,但我认为最感兴趣的是学习和职业发展。 毫不奇怪,他们是最小的(就职业而言,不是按年龄划分)。 很明显,他们没有足够的专业指导,也没有增长策略。 是春天,我们能谈谈什么增长,对吗?
  • 其次,我非正式地成为了他们的导师。 初级和野心勃勃的工程师就是最需要的:老师。 可以向他们展示学习道路和新知识方向的人。 我的指导仅仅是查看他们编写的代码并告诉他们什么地方不对,并以自己的博客文章和我可以找到的许多其他有关“良好”软件设计的文章/书来支持我的批评。
  • 第三,我为整个团队定期组织每周一次的讲座。 我每个星期一都花一个小时在他们面前讲话,并解释为什么NULL 不好 ,单元测试很好 ,等等。 每个人都有参加的自由。 毫不奇怪,我的“学生”一直在参加。
  • 第四,我在一些关键位置重构了代码库,并请我的“学生”审查我的拉取请求。 这些艰巨而艰巨的任务为我们提供了很好的辩论材料,并使我们的小组更加团结。 我的最终目标是组建一个同意我的帮派。 互相检查代码是一种完美的方法。

在短短几个月内,对于每个人来说,整个团队变得不再那么扎实了。 我们占了多数,而真正的OOP少数聚集在我周围。 现状开始动摇。 少数人对该架构不满意,也不再害怕这么说。 该体系结构仍然很糟糕,但不再是“我们的”体系结构。 这是我们从过去继承的东西,我们致力于改变它……最终。

我的首要目标不是修复体系结构,而是建立支持者联盟 ,并实现了这一目标。 我没有设法获得多数。 我的帮派中只有7个人。 但是这个规模足以改变整个由30名程序员组成的团队的方向。 其他人后来被动地加入了我们。

我不到一年就离开了那个项目(我没有被解雇)。 但是,当我离开时,它正朝着正确的方向前进:测试范围不断扩大,对象变得不可变,没有创建新的DTO,等等。 不过,Spring Framework仍然存在。

即使您的职位仍然是“初级”开发人员,您也可以在团队中做完全相同的事情。 不要等到老板更改您的头衔,开始指导周围的人并建立支持者团队。 当它变得足够大时,即使没有您的意愿,更改也将开始发生。

翻译自: https://www.javacodegeeks.com/2019/11/revolutionary-evolution.html