有一种相当流行的软件方法学要求对一个项目分配35种不同的角色,包括架构师、设计人员、编码人员、文档管理者等。敏捷方法却背道而驰,只需一个角色:软件开发者,也就是你。项目需要什么你就做什么,你的任务就是与客户紧密协作,一起开发软件。敏捷依赖人,而不是依赖于项目的甘特图和里程表。
这大概是全栈工程师吧,哈哈哈~
恶魔:“出了问题,第一重要的是确定元凶。找到那个白痴!一旦证实了是他的错误,就可以保证这样的问题永远不会再发生了。”
在敏捷的团队中,大家的重点是做事。你应该把重点放到解决问题上,而不是指责犯错者上面纠缠。
你可以从自己先做起。如果一个开发者带着抱怨或问题来找你,你要了解具体的问题,询问他你能提供什么样的帮助。这样简单的一个行为就清晰地表明你的目的是解决问题,而不是追究责任,这样就会消除他的顾虑。你是给他们帮忙的。这样,他们会知道每次走近你的时候,你会真心帮助他们解决。他们可以来找你把问题解决了,当然还可以继续去别处求助。
如果你找人帮忙,却没有人积极响应,那么你应该主动引导对话。解释清楚你想要什么,并清晰地表明你的目的是解决问题,而不是指责他人或者进行争辩。
天使:把矛头对准解决问题的办法,而不是人。这是真正由用处的正面效应。
恶魔:“你不需要真正地理解那块代码,它只要能够工作就可以了。哦,它需要一个小小的调整。只要再结果中再加上几行代码,它就可以工作了。开工吧!就把那几行代码加进去,它应该可以工作。”
我们经常会遇到这种情况,出现一个Bug并且时间紧迫。快速修复确实可以解决它——只要新加一行代码或者忽略那个列表上的最后一个条目,它就可以工作了。拙劣的代码工人会不假思索地改完代码,然后快速转向下一个问题。优秀的程序员会挖掘更深一层,尽力去理解为什么这里必须要加一,更重要的是,他会想明白会产生什么其他影响。
Beware of land mines
在工作压力之下,不去深入了解真正的问题以及可能的后果,就快速修改代码,这样只是解决表面问题,最终会引发大问题。短期看,它似乎是有效的。但从长远来看,通过几年的积累,代码里有着成千上万的补丁修复,在这样脏乱的代码中添加新的功能或修复Bug,会让开发者难逃脱发的噩运。
Don‘t Code in isolation
孤立非常危险,不要让开发人员完全孤立地编写代码。如果团队成员花些时间阅读其他同事写的代码,他们就能确保代码是可读和可理解的,并且不会随意打补丁的代码。实行代码评审,不仅有助于代码更好理解,而且是发现bug最有效的方法之一。
Use unit tests
另一种防止代码难懂的重要技术就是单元测试。单元测试帮助你很自然地把代码分层,分成很多可管理的小块,这样就会得到设计更好、更清晰的代码。更深入项目的时候,你可以直接阅读单元测试——它们是一种可执行的文档。有了单元测试,你会看到更小、更易于理解的代码模块,运行和使用代码,能够帮助你彻底理解这些代码。
天使:“不要坠入快速的简单修复之中。要投入时间和精力保持代码的整洁、敞亮。”
恶魔:“你在这个设计上投入了很多精力,为它付出很多心血。你坚信它比其他任何人的设计都棒。别听他们的,他们只会把问题变得更糟糕。”
你很可能见过,对方案设计的讨论失控变成了情绪化的指责——做决定是基于谁提出了这个观点,而不是权衡观点本身的利弊。我们来看看对一个明显的错误有哪些常见的反应。
第一种方法是不可能成功的。你那样指出问题根本不会对他的水平有任何提高,反而会导致他以后再也不会提出自己的任何想法了。第二种方法至少观点明确,但也不会给多少帮助,甚至遭来反驳导致被打脸。而第三种方法,没有谴责,没有评判,只是简单地表达自己的观点。
在一个需要紧密合作的开发团队中,如果能稍加注意礼貌对待他人,将会有益于整个团队关注真正有价值的问题,而不是勾心斗角,误入歧途。我们每个人都能有一些极好的创新想法,同样也会萌生一些很愚蠢的想法。
Negativity kills innovation
负面的评论和态度扼杀了创新。我们每个人都会有好的想法,也会有不对的想法,团队中的每个人都需要自由地表达观点。即使你的建议不被全盘接受,也能对最终解决问题有所帮助。不要害怕受到批评。记住,任何一个专家都是从这里开始的。
你不需要很出色才能起步,但是你必须起步才能变得很出色。
集体决策确实非常有效,但也有一些最好的创新源于很有见地的个人的独立思考。如果你是一个有远见的人,就一定要特别尊重别人的意见。我们并不是建议你限制会议决策,只是你不应该成为一意孤行的首席架构师的傀儡。
能欣赏自己并不接受的想法,表明你的头脑足够有学识。
下面是一些有效的特殊技术:
天使:“对事不对人。让我们骄傲的应该是解决了问题,而不是比较谁的主意更好。”
恶魔:“如果你发现其他人的代码有问题,只要你自己心里知道就可以了。毕竟,你不想伤害它们,或者惹来麻烦。如果他说你的老板,更要格外谨慎,只要按照他的命令执行就可以了。”
假如要你修复其他人编写的代码,而代码很难理解也不好使用。你说应该继续修复工作,保留这些脏乱的代码呢,还是应该告诉你的老板,这些代码太烂了,应该统统扔掉呢?
也许你会跳起来告诉周围的人,那些代码说多么糟糕,但那只是抱怨和发泄,并不能解决问题。相反,你应该重写这些代码,并比较重写前后的优缺点。动手证明(不要只是嚷嚷)最有效的方式,是把糟糕的代码放到一边,立刻重写。列出重写的理解,会有助于你的老板(以及同事)认清当前形势,帮助他们得到正确的解决方案。
当发现问题时,不要试图掩盖这些问题。而要有勇气站起来,说:“我现在知道了,我过去使用的方法不对。我想到了一些方法,可以解决这个问题——如果你有更好的想法,我也很乐意听一听——但可能会花多些时间。”你已经把所有对问题的负面情绪哦爱猪脑后,你的意图很清楚,就是寻找解决方案。既然你提出大家努力来解决问题,那就不会有任何争辩的余地。这样会促进大家去解决问题。也许,他们就会主动走近,提供帮助。更重要的是,这显示出了你的真诚和勇气,同事你也赢得了他们的信任。
天使:“做正确的事。要诚实,要有勇气去说出实情。有时,这样做很困难,所以我们要求足够的勇气。”
鼓起勇气,能让你从恐惧中解脱出来
如果你在压力下要对代码质量作出妥协,你可以指出,作为一名开发者,你没有职权毁坏公司的资产(所有代码)。
原文:https://www.cnblogs.com/fr-ruiyang/p/11380360.html