你真的很敏捷吗?

从我所看到的情况来看,如今敏捷软件开发被广泛误解了。 许多人认为敏捷,他们只需要像scrum这样的过程即可定义sprint和迭代的框架。 他们会不断冲刺,直到精疲力尽,然后改变直至停滞。 但是,当您问他们面向对象设计的原理是什么时,他们会回答:“是的,我们使用类”。 当您问他们是否进行了测试驱动的开发时,他们会回答:“啊,这是您首先编写测试的事情,对吗?” 归根结底,人们认为敏捷就是不关心良好的软件设计。 但是最后,最重要的是没有人关心。 这是他们正在生产的软件的敏捷性。 因此,如果您想变得敏捷,则仅靠过程和思维定势是不够的。 您需要保持软件的敏捷性。 我的意思是,您需要保持软件的设计尽可能干净和灵活,以便能够以最小的成本应用将来的任何更改。 软件设计当然包括您的源代码。 最后,您只能像软件一样敏捷。

为什么要敏捷?

首先,客户不知道自己想要什么。 他可能有一个大概的主意,仅此而已。 我们甚至不能怪他,因为我们应该解决的实际问题受众多因素和观点的影响,因此几乎不可能立即定义最佳解决方案。 除此之外,沟通不畅很可能会使情况变得更糟。 为了解决这些问题,我们从小处着手,并Swift交付。 看到第一个结果,客户可以验证我们是否步入正轨。 他可以检查我们是否了解,或者他自己打错了电话。 他可能会认识到他以前从未想过的事情。 如此反复迭代地交付,最终我们的软件将很有用并为客户所接受。 它更有可能导致我们的项目成功。 当然,我们将不得不更频繁地处理更改,这就是为什么我们必须使软件本身敏捷。 最后,需要改变的是软件,而不是我们。

需要什么

敏捷的开发过程不仅会使我们的软件处于经常更改的状态,而且还要求以快速,稳定的速度进行开发。 如果不注意,这些事实会很快导致我们的软件烂掉。 当发生这种情况时,我们会更加放慢脚步,突然之间就不可能改变。 因此,我们最好不要忘记敏捷软件开发中最重要的部分:从高层架构到代码本身,使我们的软件设计尽可能地敏捷。 可悲的是,这种方法常常被忽略,许多敏捷项目因此而失败。 他们之所以失败,是因为他们选择忽略质量来提高速度,并Swift陷入代码腐烂的死角,从而导致停滞。 因此,请记住:您正在构建的软件必须敏捷才能适应客户定义的更改。 它是需要敏捷才能以最小的努力对变化做出反应的软件。 冲动不会使您的软件敏捷。 冲动不会让你敏捷。 敏捷与质量并驾齐驱。 高品质甚至没有慢,地狱不。 做好正确的质量会使您走得更快。

那么什么是敏捷软件设计?

敏捷软件设计可以使您的软件变得既干净又灵活。 它要求有意识地采用已发现且已建立的面向对象编程的设计模式和原理。 这不容易。 事实上,这很难,很难。 即使您真的很擅长并有丰富的经验,您也可能会在某个时候失败,不得不重新考虑许多以前的设计决策。 敏捷软件设计不是您可以急着做的。 它需要时间和刻意。 但是从长远来看,它将使您以更恒定的速度前进,这实际上会比没有敏捷设计的情况快得多。 下图应阐明无知的快速冲动会极大地减慢您的速度。 图形不是基于统计信息,而是基于经验。

agile_vs_rush

敏捷软件设计不止于高层架构。 它与编码一起进行。 错误的代码可以使您的项目比糟糕的高级设计更快地变得笨拙。 因此,魔鬼在细节中。

您如何做才能使您的软件设计更加敏捷?

从经理的角度来看? 相信您的开发人员,不要强迫他们。 投资经验和专业知识。

从开发人员的角度来看? 首先,不仅要从理论上学习面向对象编程的原理和模式。 擅长于这些需要大量练习。 有很多关于此的书籍:

还有很多。

保持代码干净–不要小看! 进行编程时,与编写代码相比,您花费更多的时间阅读代码。 因此,您希望通过使代码更具可读性来减少阅读代码的时间。 干净的代码看起来不是什么秘密。 看看Clean Code

除此之外,请使用正确的做法,例如

测试驱动开发

就做吧。 如果您不知道如何操作,请继续学习。 我听过许多关于TDD的意见,

  • “单元测试太昂贵了。 客户不会为此付费。”
  • “单元测试使我们慢下来,那时候我们需要编写更多代码。”
  • “我不知道。 我非常擅长编程,Test-First会让您感到不必要的困难和尴尬。”

但这只是那些没有TDD经验的人的主观意见。

如果您做对了,TDD实际上应该提高您的长期开发速度。 我一生中都没有看到一个项目如此之小和简单,因为它不会从TDD方法中获得可观的利润。 而且我实际上已经看到了非常简单的内容。 问题是,您仍然必须进行测试。 除了使测试自动化之外,还有什么能比它更快地提高测试速度? 而且,TDD大大减少了您不得不花费大量时间进行调试的调试时间-至少比您想象的要多。 除了那些测试

  • 成为您代码的可靠文档,
  • 让您毫不费力地清理代码,
  • 迫使您在考虑实际解决方案之前先考虑问题,这将改善您的初稿,
  • 强制组件去耦,这将使您的设计更加敏捷。

配对编程

不仅是四只眼睛比两只眼睛看到的缺陷更多,而且知识的转移正在发生。 您希望所有开发人员互相学习,以使其同等有价值。 而且,您总是希望有多个人知道一个特定的模块来改善卡车系数 。 哎呀,有些人甚至在做mobprogramming –认真地做。

集体代码所有权

不允许一个人拥有该模块代码。 项目上的所有代码必须属于所有人。 允许并邀请每个人查看,提问和改进每个人的代码。 对于某些人来说这可能很难,并且可能引发冲突,但是绝对有必要使代码更好。

代码评论

不断检查代码更改。 这是保持最新状态的唯一方法,它将揭示代码的味道。 您需要揭示代码的气味,因为如果您不这样做,则会陷入困境。

重构

经常重构。 每次您看到可以重构的内容时,都需要当场进行。 您做得越早,节省的时间就越多。 因此,如果您正确执行此操作,则可以节省最多的时间。

tl; dr:您的敏捷度仅与软件设计一样灵活,当然其中包括代码。 高速不要求低质量。 它不是那样工作的。 实际上,需要高质量来实现高速。 敏捷设计演变为高质量。

参考: 您真的很敏捷吗? 来自我们的JCG合作伙伴 Gregor Riegler的“ 成为更好的开发者”博客。

翻译自: https://www.javacodegeeks.com/2013/09/are-you-really-agile.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值