编程哲理小故事:Tina的运动会方阵

自从接到任务后,Tina一直 烦恼着如何让这群繁忙又缺少才艺的程序员在运动会开幕式上作出一个有趣的方阵表演。程序员

 

接到了运动会的方阵表演的任务

时间回到1个月前。架构

Tina正在工位上繁忙地进行着下一期准备上线系统的测试,这时候老大跑了过来微服务

“Tina,咱们公司要举行运动会,开幕式时有方阵的表演,你帮忙组织下?”学习

Tina内心咯噔一下,来了一个苦差。测试

“方阵?就是像奥运会开幕的时候,运动员在体育场跑道上走,展现风采的那种?”优化

"对,到时要一个6*6共36人的方阵,到时会在市里最好的体育馆进行,公司的大领导会在主席台看咱们表演,为了咱们部门,你要加油呀"编码

“嗯,我会加油的,但36我的很多呀,你们最近都挺忙的,感受我拉不动他们参加呀”,Tina苦笑道。设计

“怎么会呢,我看你在男生中还挺有人气的,不过你很差意思拉人的话,人的问题我解决,你策划组织好表演就行”视频

 

 

 

进展缓慢的方阵表演

方阵的排练一周一次,一周一周的过去了,但总体的效果并无获得质的提高,排练时老是凑不齐人,舞蹈也相对复杂,交互不少,你们也没能很好的磨合,方阵表演这件事几乎成了Tina的心病blog

“万一到时咱们成了最差的方阵怎么办?我会让老大很失望的”

今天还没到排练的时间,但她提早到了场地,担忧着,纠结着。

“方阵排练成怎样啦?”今天老大竟然亲自过来了。

“咱们今晚继续排练,但效果还不太理想”

“有遇到什么困难么?”

“唉,一言难尽,待会你看下把,也提一下意见,这个是咱们排练模仿的视频,你也能够看下”

老大把脉

老大在旁边看着大伙排练,没有作任何评价与指导,只是在久不久时用言语激励一下你们。

今天的排练结束了,大伙都散去,Tina和老大留了下来。

“今天的排练我看了,咱们的整齐度还略有欠缺,咱们的队伍就像你描述的同样,常常会有人临时有事,没办法很好的达到一个总体的效果,磨合度有待提高”

“嗯,对呀,但我已经尽力选择你们都有空的时间了,但要每一个人都有空是在是太难了”

“对,这是一个问题,人越多越难协调与同步,咱们经过初中数学就能够知道,协调的难度是随着人数的增长指数级上涨的”

“嗯嗯,但也没办法呀,表演方阵要求就是要这么多人”,Tina应答着,内心倒翻了个白眼,好好的干吗忽然扯上数学

“对,总人数是没办法减小,但若是分红多个小组,小组人数比较小,是否是集齐一个小组的人更为简单点?咱们可让各个小组各自排练,而后每周一次像如今这样合起来排练。对于相似规模致使的问题,咱们大多均可以用分而治之的策略解决,就像公司里把咱们的软件分红了不少子系统同样”

“啊?那这样子要怎么分组,这是一只完整的舞蹈呀”

“一个完整的舞蹈必然是每一个人的交互的有机结合,但舞蹈里必然会有一群人之间的交互更为密切,咱们能够把这群人合成一组,那只涉及他们内部的舞蹈叫能够他们内部自行排练了。”

“但这个界限不是很清晰把?”

“对,更为密切这个概念确实不是很清晰,因此这也是组织设计的艺术之一,甚至于这是一个须要试错的过程。咱们的软件编码同样,强调高内聚低耦合,让通信交互成本降到最低的理念是一致的。但咱们不能由于没法达到最优的设计而不去分组,分组可能不是最优,但进行了分组就已经在进步了,咱们能够在继续排练的过程当中继续优化”

“嗯嗯,想不到编码与方阵排练还有这样相似的东西,哈哈”

“嗯,世界有不少东西是类似的,像公司的组织架构、各类天体系统、人类的各类器官组成等等都有相似高内聚低耦合的特性存在,因此在我看来一个优秀的有悟性的码农能将其知识迁移到不少领域”

“好,那我认真研究下视频,而后对团队进行分组,一个分组的大小多少合适呢?”

“太阳系有8个行星,地球只有1个月球卫星,这都是因为它们质量决定的。一个分组最大能有多少人这实质是由组长的我的能力决定的,组长能协调的人数就是这个组人数的上限,但固然啦,具体人数要和舞蹈自身的须要相结合。组的大小能够取‘舞蹈分组所需人数’和‘组长最大可管理人数’的较小值。”

“这是让一个组尽量大的意思么?”

“对的,一个组应该在可控范围内尽量的大,由于分组小意味着分组多,而分组多,协调多个分组就会产生更大的成本。当分组不少,甚至于把一我的当作一个组的时候,就跟你当前面临的状况同样。对应于咱们软件领域也是同样的,对于微服务/组件应该拆成多大这个问题,我的理解组件的大小应该在一个普通程序员能理解、控制的复杂度范围内,程序员就是这个微服务的类、模块的组长”

“嗯,明白了。我尽可能将其分组大小控制在合适范围内”

“还有一件事就是,每一个小组指定了组长以后,以后组内的排练能够适当程度的放权,这样的话,你才有更多的精力去考虑咱们组与组之间的交互应该怎么进行。但固然啦,若是你得精力足够的话,去了解和支持某些个特别舞蹈特别复杂的小组的进展也是挺好的。对于人的能力来讲,能作高层设计同时也能作底层执行固然是最理想的,但在程序代码里,一个模块既处理高层逻辑又处理底层逻辑的话,是一个很差的表现,这会让咱们的代码更难以理解”

“哈哈,我原本只想看下怎么排练好方阵,想不到还顺便学习了这么多编码知识,感谢老大呀!”

“嗯,刚刚的说的都是些简单的理论,至于落地到实践还会复杂的多,细节的处理仍是得靠你呀,加油~”

最后的展现

有了一些基础理论的指导,Tina的方阵队伍的组织架构在排练中演进,各个小组有了组长能自发的组织组内的训练,各组的表演水平获得了很大的提高。到集体汇总排练的时候,实际上就是以组的维度进行交互,而非以前的以人维度的磨合,所以集体汇总排练的效率也获得了提高。

“起步走!”,方阵前进的音乐和口令在体育馆正式响起,方阵迈着整齐的步伐往主席台走去。Tina看着队伍,再回头看来下老大,嘴角泛起了自信的微笑。

 

(最近看了本如何写小说的书,实践一下小说风格,哈哈,若本文有错误缺陷,请批评负责帮助我进步。若本文对你有所启发和帮助请不吝点赞转发。这对我真的很重要,拜托了~)

 

做者简介

多年金融行业经验,现为某Top2互联网银行高级搬砖工,曾在两家TOP3股份制商业银行及一家互金创业公司工做(架构、核心业务主程),EasyTransaction做者,欢迎关注我的公众号,在这里我会分享平常工做、生活中对于架构、编码和业务的思考

相关文章
相关标签/搜索