最佳软件开发方法

今天,谈论进行大型设计(BDUF)听起来有点荒谬,对吗? 谁会这样做? 那不是Craft.io,是吗?

但是,过去将其视为规范。 编写需求文档,绘制架构图和非常低级的细节图是正确的选择。 好吧,这就是非常聪明的人在1968年北约软件工程会议上提出的建议,它为NASA和美国国防部工作。 我确信他们知道自己在做什么,并且如果它对他们有用,那么它将肯定适用于我们的小型CRUD应用程序或一页网站。 然后它发生了。 它成为一种宗教,在随后的几十年中,大多数项目都是以这种方式开发的。

不,但是现在不行。 我们已经吸取了教训,对吗? 我们不会再犯此错误。
观看了会议和InfoQ的一些演讲后,我们了解到这不是一件好事。 我们还读过一些书,我们应该做TDD 。 设计应来自测试。 当然,我们也应该采用敏捷方法。 让我们开始采用Scrum 。 有很多关于它的书籍,认证,甚至是专门针对它的整个会议。 当然,我们应该采用TDD Scrum,因为这是管理和开发软件的最佳方法。 哦,那这些精益的东西呢? 消除浪费,限制进行中的工作, 系统思考约束理论看板 。 我听说它对丰田确实非常有效,所以我们也应该这样做。 为什么? 耶稣,你就是不明白。 当然,这是管理和开发软件的最佳方法。 天哪,我怎么会忘记? 有人还告诉我,我确实应该与客户交谈。

我们应该真正讨论需求,以便我们可以更好地理解应该构建的内容。 您在使用BDD吗? 没有!!! 哇! 没有这些,如何开发软件? 为什么要使用它? 答案很简单。 这是管理和开发软件的最佳方法。 不要告诉我您认为BDD是一种测试工具。 你昨天是如此。 那是第一版。 BDD版本三全是关于沟通的。 关于正确完成软件开发。 是的,我知道这听起来有些陌生,但显然我们应该与人们交谈。 天哪,我们在地球上怎么没想到过? 这些年来,我们是如何开发软件的? 如果您不使用BDD,则说明您做错了。 为什么? 因为那是管理和开发软件的最佳方法。 !

外进TDD,内外TDD,ATDD,经典TDD, 伦敦学校TDD ? 真? 您还在讨论吗? 不要告诉我我们您仍在编写测试。 什么? 您为什么要浪费时间编写单元测试? 它不再有意义。 您应该峰值并稳定下来 。 如果您不知道自己在做什么或要去哪里,该怎么办? 如果您只想探索您的选择怎么办? 为什么要编写测试? 知道了 有人告诉您这是管理和开发软件的最佳方法。 不,算了 单元测试是针对失败者的。 我们编写小型服务,并对其进行监控。 如果它们是错误的,我们将其丢弃并重新编写。 那是管理和开发软件的最佳方法。

建筑和设计模式? 什么??? 你是谁? 我爷爷? 报废。 那是针对80年代和90年代的程序员的。 在现实世界中,我们的设计源自测试。 不,笨 不使用普通的TDD。 天哪,你住哪个星球? 我们使用TDD就像您是故意的那样 。 我们使用这项技术和PRESTO,无论项目有多少开发人员,团队和设计技能,设计在整个项目生命周期中都能很好地出现和发展。 每个人都可以看到代码的气味,对吗?

DDD呢? 域驱动是什么? 不,从未听说过。 嗯..等等 我想我早在几年前就已经听说过有关它的信息,但是它可能还不够重要,否则今天我们会有更多的人说DDD是管理和开发软件的最佳方法。
不 不不不不。 不,我没有听到。 离开这里。 您只是说您仍在使用面向对象的语言吗? 静态类型 ???? 不,对不起 这次谈话浪费了我的时间。 正是由于像您这样的人,我们的行业才变得如此糟糕。 这种对话变得更糟的唯一方法是,如果您告诉我仍在使用关系数据库。 您是否没有听说过函数式编程是必须做的事情,只是阻碍了80年代和90年代的程序员使用关系数据库。 功能语言NoSQL数据库 …与我重复。 功能语言,NoSQL数据库。 真是个傻瓜包。

啊,想成为一个聪明的驴子? 是的,函数式编程很早就出现在50年代,而60年代和70年代的开发人员更喜欢使用OO。 但是你不知道为什么,是吗? 你做? 他们之所以使用OO是因为他们是一群嬉皮士,没有认真对待任何事情。 他们就是去伍德斯托克 ,在LSD上享誉盛名的人,之后又受到了大脑的伤害。 不,不要认真对待整个面向对象的东西。 我们现在终于回到现实。 函数式编程和NoSQL数据库无疑是软件开发的最佳方法。

教条主义,宗教,情境,好奇心,询问思想和实用主义

在总结之前,我只想澄清一点,我绝不是在批评上述某些方法论,技术或技巧背后的任何人或一群人。 这些人在思考,实践和分享他们自己的想法方面做得非常出色,他们如何更好地完成软件开发,为此,我们所有人都应该感谢。 他们的贡献无疑使我们的行业变得更好。

我主要的批评是关于绝大多数开发人员对所有这些事情的反应。 这不仅是因为某人在某处写了一本书,录制了一段视频或在会议上发表了关于在任何情况下都能使事情正确的事情。 很多时候,我们只是因为宣传它的人们相对知名而对问题不屑一顾。 我们无法理解应该最适合使用方法论,技术或技术的环境。 由于害怕被同事嘲笑,我们常常无法运用自己的判断。 我们应该停止对事物持教条和宗教信仰。 这只会导致愚蠢的决定。 为了做某件事而做某事,或者因为别人这样说而做,这简直是错误和愚蠢的。

做一个好的开发者意味着要好奇,好奇和务实。 从不虔诚。 从不教条。 好奇意味着我们应该渴望学习上面提到的所有内容以及更多内容。 探究性意味着我们应该调查和质疑我们学到的所有东西。 务实意味着我们应该为工作选择正确的工具,无论是技术,方法论还是技巧。

上下文很重要。

每当您看到有人说我们应该或不应做某事时,请问他们为什么。 向他们询问他们试图做什么(或不做什么)的背景。

软件开发不同于生产汽车。 一旦汽车准备好了,您就不会回到制造商那里,要求他们添加另一个车轮或将发动机放在其他地方。 为昂贵的硬件开发软件与开发具有两个页面的简单Web应用程序不一样。 硬件具有您需要进行编码的规范。 通常,您甚至无法访问硬件,因为它尚未构建。

对于所有应用程序而言,生产中的错误所付出的代价并不相同。 社交网络或烹饪网站中的一些错误的成本可能与每天处理数百万笔交易的交易或财务系统中的一些错误的成本非常不同。 与一个小团队一起工作,每个人都在同一地点并易于访问客户,这与在10个团队中分布于5个国家和不同时区的项目有很大的不同。

尽可能多地阅读和学习。 但是,不要以为您阅读或观看的所有内容都适用于每种情况。 做出明智的决定并相信自己的直觉。

坏消息是,没有最佳的软件开发方法。 我们最多可以说的是,有些技术,方法论和技术更适合于特定环境。

万一您真的想找到最佳的软件开发方法,我希望您不要为此感到沮丧和好运。 如果您找到它,请告诉我们。 了解不同的方法总是很有趣。 也许独角兽确实存在。 谁知道?

参考:来自Crafts Software博客的JCG合作伙伴 Sandro Mancuso 的最佳软件开发方法


翻译自: https://www.javacodegeeks.com/2012/08/best-approach-to-software-development.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值