软件开发最佳实践

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

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

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

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

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

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

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

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

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

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

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

做一个好的开发者意味着要好奇,好奇和务实。 从来没有宗教信仰。 从不教条。 好奇意味着我们应该渴望学习上面提到的所有内容以及更多内容。 探究性意味着我们应该调查和质疑我们学到的所有东西。 务实意味着我们应该为工作选择合适的工具,包括技术,方法论或技术。

上下文很重要。

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

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

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

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

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

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

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

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

软件开发最佳实践

软件开发最佳实践_最佳软件开发方法相关推荐

  1. react 最佳实践_最佳React教程

    react 最佳实践 React is a JavaScript library for building user interfaces. It was voted the most loved i ...

  2. 日常办公会用到的python模块-宝安2020年_商务办公软件应用与实践_高校邦_期末答案...

    宝安2020年_商务办公软件应用与实践_高校邦_期末答案9p9c 宝安2020年_商务办公软件应用与实践_高校邦_期末答案 关注公众号{帅搜}即可查询答案 支持:大学网课,智慧树,知到,超星,尔雅,学 ...

  3. 微信小程序开发推进表_推进软件测试程序的最佳实践

    微信小程序开发推进表 Software testing process is used to assess evaluate a product to see if it really meets t ...

  4. web前端开发最佳实践_学习前端Web开发的最佳方法

    web前端开发最佳实践 为什么要进行网站开发? (Why web development?) Web development is a field that is not going anywhere ...

  5. tomcat 参数最佳实践_一线架构师开发总结:剖析并发编程+JVM性能,深入Tomcat与MySQL...

    每一个程序员都有自己清晰的职业规划和终极目标,无论之后是继续钻研技术,还是转管理岗.产品岗,都是需要自己具备有一定的实力,换句话说技术要牛逼.架构师,是很多程序员的终极目标,而成为一名Java架构师, ...

  6. 精益软件开发的思想_精益软件开发原理快速指南

    精益软件开发的思想 我记得在早期的中学商业课上就曾在丰田公司学习精益生产,并且对通过有意设计来最大限度地减少浪费和提高生产率的想法深深着迷. 随着时间的流逝,精益方法被制造业以外的多个行业所采用,包括 ...

  7. SpringCloud 应用在 Kubernetes 上的最佳实践 — 部署篇(开发部署)

    作者 | 孤弋  阿里云高级技术专家,负责 EDAS 的开发和用户体验优化工作. 导读:在上一篇文章<SpringCloud 应用在 Kubernetes 上的云上实践 - 开发篇>中讲到 ...

  8. 并发运行的最佳实践_并发最佳实践

    并发运行的最佳实践 本文是我们名为" 高级Java "的学院课程的一部分. 本课程旨在帮助您最有效地使用Java. 它讨论了高级主题,包括对象创建,并发,序列化,反射等. 它将指导 ...

  9. 数据模型最佳实践_数据科学家应了解软件工程最佳实践

    数据模型最佳实践 意见 (Opinion) 介绍 (Introduction) I have been eagerly researching, speaking to friends and tes ...

  10. angular 最佳实践_干净高效的Angular应用程序的最佳实践

    angular 最佳实践 by Vamsi Vempati 由Vamsi Vempati 干净高效的Angular应用程序的最佳实践 (Best practices for a clean and p ...

最新文章

  1. java中数组的一些笔记
  2. 谷歌希望通过 Adiantum 为更多人提供加密功能
  3. 笔记-项目整体管理-指导与管理项目工作的输出
  4. 法语语言考试C1,法语考试大比拼:专八与Dalf C1,哪个更难?
  5. qt调用html里面的函数吗,QT和JS的互相调用例子
  6. 字体单独设置样式_Glyphs 官方教程 | 字体命名
  7. 较简单的字节输入流输出流拷贝文件
  8. 这才是真正的用户增长
  9. 数据:以太坊2.0合约质押新增4.15万ETH
  10. selenium webdriver学习(一)------------快速开始(转载JARVI)
  11. EMQ优特云-贵阳娃哈哈生产基地物联网能耗监控项目回顾与展望
  12. 红警代码开源了 来瞅瞅源码 文内送Win10可联机的红警2标准版游戏
  13. Google点击没有反应怎么办?Google卸载不了怎么办?Google安装不了怎么办?
  14. 中级程序员晋升高级程序员,只差这几个技能
  15. 哪吒之魔童降世视听语言影评_动画电影《哪吒之魔童降世》艺术语言分析
  16. Windows10家庭版转为专业版
  17. linux僵尸程序,什么是僵尸进程(zombie)?
  18. tc ebpf sample - tethering offload on linux pc
  19. 售电公司盈利模式,浅谈电力(运维)云平台运用
  20. [渝粤教育] 西南科技大学 建筑CAD 在线考试复习资料

热门文章

  1. 大谈模式的时代,技术还重要吗?
  2. 搭建php开发环境apache,「apache php mysql」搭建PHP开发环境(Apache+PHP+MySQL) - 金橙教程网...
  3. python异常和超时处理_Python:超时异常处理信号。警报
  4. 基于java和MySQL的企业固定资产管理系统
  5. Agilent E3620A直流电源
  6. pde与波长 sipm 关系_Broadcom近红外SiPM技术提升激光雷达性能
  7. Autoleaders-数据分析pandas
  8. OpenCV从入门到入土
  9. 沉下心来,回顾一下,欣赏自己拥有的和所完成的
  10. 惨!被恶意侵权投诉,Listing遭下架怎么办?