写点什么

Vaughn Vernon 谈当今软件开发所面临的挑战

  • 2016 年 5 月 30 日
  • 本文字数:1346 字

    阅读完需:约 4 分钟

在今年早些时间举办的领域驱动设计欧洲大会上, Vaughn Vernon 举办了一场演讲,阐述了他所遇到的各种软件开发方面的严重问题,但也为这些问题提出了应对的方案。在他看来,大量的项目与开发团队都深陷设计糟糕的系统中难以摆脱,无数开发者在不停地为系统打补丁,只为系统能够继续运行下去。这使软件开发文化在很大程度上遭受了严重的破坏。

以Vernon 的经验来看,有一种问题是最突出的,即IT 部门被视为一个成本中心,业务部门将软件开发视为一种负面的因素,它在逐渐地榨干组织的资源,是一种金钱上的浪费。这样的业务部门不可能将软件视为一种改变游戏规则的因素,而是视为一种他们不得不忍受的东西。

在Vernon 看来,让业务人员花费大量时间在协作工具中编写规格说明是一种毫无意义的浪费。大多数开发者都不会在意这些规格说明,因为其中缺少他们所需要的信息,反而只会造成低效的协作。正确的做法是让业务人员与开发者进行对话交流,从而在更短的时间之内推出一份能够满足业务需求的扎实的设计。

Vernon 提到了一种被他称为任务板洗牌的做法:将某个便签从待办事项栏目里挪动至开发中栏目中就被视为软件设计的完成。这会导致每次挪动便签就带来一种随机的设计方案,造成系统缺乏所必需的、经过沉思熟虑的设计。有太多的人认为无设计是一种对代码或开发者时间上的节约,但 Vernon 认为这种节约是一种错误的做法,只会造成糟糕的设计。

Vernon 坚定地相信,为了克服他所描述的这些问题,我们必须提高团队中的开发者成熟度。业务部门对于软件开发部门的看法只是某些对于业务有兴趣的人员,为了改变这种看法,我们需要通过创建解决方案,进一步促进业务发展的方式帮助业务部门实现卓越。而实现这一点的一种方案就是开始与业务部门进行合作。围绕着工作内容的上下文与模型建立团队,并设立统一语言。

事件风暴是一种领域建模的辅助工具,Vernon 将其描述为发现边界上下文的一种极度实用与重要的工具。经过几个小时的讨论,或许就能够建立一种统一语言,并且理解领域中的边界上下文。在事件风暴会议中所产生的结果也可用于某种基于指标的估算过程的估算单元,其结果将接近于真实的数字。

微服务是时下的热门话题,Vernon 认为它与领域驱动设计中的边界上下文有着相似之处。但在Vernon 看来,以单一组件的粒度部署微服务似乎太细了,他认为以边界上下文的规模创建微服务是一种更为有效的途径。

Vernon 随后提到了 Actor 模型,他确信这是一种非常重要的工具,开发人员 —— 甚至是多数开发人员都应当开始使用这种工具。随着服务器的内核与内存的不断升级,Actor 模型也表现为一种能够有效地利用这些新资源的方式。Vernon 提出了一项建议,开发者可使用 Actor 模型,围绕着单一的边界上下文构建微服务。他认为 Actor 模型往往能够极大地简化系统的设计,这种设计表现出优秀的简洁性。与之形成鲜明对比的是,当今的企业软件往往会使用复杂的技术栈,其中包含大量不同的机制,哪怕是高级开发者也需要几个月的时间才能完全掌握。

Vernon 在结语中表示,大量的团队都深陷设计糟糕的系统中难以摆脱,但随着开发者成熟度的提高以及 DDD 的普及,将对这一现状产生很大的改变。

明年的领域驱动设计欧洲大会预计将于2017 年1 月底举办。

查看英文原文: Vaughn Vernon: Challenges in Software Development of Today

2016 年 5 月 30 日 19:001100
用户头像

发布了 428 篇内容, 共 161.2 次阅读, 收获喜欢 31 次。

关注

评论

发布
暂无评论
发现更多内容

Python基础之:Python中的类

程序那些事

Python Python3 程序那些事

2021年Android面经分享,赶紧收藏!

欢喜学安卓

android 程序员 面试 移动开发

自己搭建一个语音聊天室

anyRTC开发者

ios android 音视频 WebRTC RTC

Spark查询优化之谓词下推

小舰

4月日更

【leetcode题目】2. 两数相加

程序员架构进阶

LeetCode 28天写作 算法解析 4月日更

飞桨与龙芯完成兼容性认证

百度大脑

飞桨

【LeetCode】直方图的水量Java题解

Albert

算法 LeetCode 4月日更

根据码龄来爬取CSDN博客粉丝

空城机

Python 爬虫 python 爬虫 4月日更 粉丝数据

StarRocks致工程师们的一封信

StarRocks

大数据 程序员 数据分析 工程师 StarRocks

酷家乐 x StarRocks:家居SaaS独角兽如何实现数据分析全面升级,大幅降低平台成本

StarRocks

大数据 数据分析 presto 营销数字化 StarRocks

Laravel 服务容器实例教程--深入理解控制反转(IoC)和依赖注入(DI)

一个大红包

4月日更

程序员面试指北:如何更高效的准备面试

邴越

Java 面试 求职 招聘

NAC公链主打应用而生的NA(Nirvana)公链有什么过人之处?

区块链第一资讯

CMS前世今生

叫练

CMS JVM 垃圾收集

今天是个开心的日子

return

如何实现微信8.0爆炸和烟花表情特效

梅芳姑

后端开发必须要懂的Redis,Redis的数据结构

Linux服务器开发

redis 分布式 后端 web服务器 Linux服务器开发

Hi Array!~~~你所经常遇见的TA!

Chalk

JavaScript 大前端 数组 array 4月日更

树莓派与边缘计算

IT蜗壳-Tango

树莓派 IT蜗壳 4月日更 OpenVINO

ElasticSearch读写模型&数据复制模型

yhh

elasticsearch 数据复制模型

五种不同类型的领导模式

石云升

领导力 28天写作 职场经验 管理经验 4月日更

Python OpenCV 之图像乘除与像素的逻辑运算,图像处理取经之旅第 17 天

梦想橡皮擦

Python OpenCV 4月日更

Flink中的无界数据流与有界数据流

大数据技术指南

flink 4月日更

实时数据仓库的发展、架构和趋势

网易数帆

数据仓库 实时计算 实时数仓 iceberg 批流一体

Python OpenCV 之图像的叠加,图像处理取经之旅第 16 天

梦想橡皮擦

Python OpenCV 4月日更

uni-app对接金山文档在线预览服务

薛定喵君

百度智能云发布云智一体的AI开发全栈模式

百度大脑

百度智能云

2021年Android工作或更难找,原理+实战+视频+源码

欢喜学安卓

android 程序员 面试 移动开发

模块1作业

Geek_2e7dd7

架构实战营

一文学完所有的Hive Sql(两万字最全详解)

五分钟学大数据

大数据 hive 4月日更

搭建Gogs服务器

尧二水丶

git flow 4月日更

Vaughn Vernon谈当今软件开发所面临的挑战_架构_Jan Stenberg_InfoQ精选文章