为了落地DDD,我是这样“PUA”大家的
故事背景
准备阶段
下定决心
- 团队对老模式不满意,按照目前的状态,交付过程极其痛苦且风险高,大家渴望改善现状;
- 有成熟的DDD战术框架,团队要做的就是进行简单的熟悉即可,学习成本很低,一周内即可上手;
- 团队对我的信任达到了比较好的状态,这个决策大概率会被直属领导支持;
- 团队的大部分人心态都是开放的;
- 如果我们保持现在的步调,你觉得自己一年以后会成长成什么样子?
- 如果我说现在有一次团队革新的机会,如果成了,之前我给大家描绘的理想团队的样子就会成为现实,你是否愿意相信我。
- 如果我说有一套DDD战术框架,你只需要不到一周,就能驾驭它,你是否原因相信我。
- 如果保持现状的步调,未来也不会有太多成长,不会有新的东西,重复CRUD而已;
- 多学一些也无妨,不管是否如“你”所说,最终是否成功,对于自己都是有所收获的;
- 感觉可能没说得那么简单,但愿意试试;
最艰难的时刻
- 时间紧迫,有限的交付工期;
- 新老服务的衔接工作超出了预估;
- 与业务团队以及上级坦诚表达,工作量的实际情况,由于实际工作量比预期的要高,团队最终争取到了额外的一些研发时间;
- 集体关进会议室,做封闭式开发,我们发现用DDD的编码范式,一旦建模完毕,我们可以按照“命令-事件”将一个复杂流程分配给多个开发者,使得团队能够快速地协作开发,完成一个复杂功能;
- 团队组织了一定程度上的加班,这段时间,也是近一年来最辛苦的时刻;
变化与收益
- 业务建模,到编写代码不需要做太多的思考,代码可以与模型保持一致,不需要做翻译工作了;
- 对功能的迭代不再有负担感,感觉代码是可以驾驭的,这得益于DDD的代码组织方式,使得系统变更的影响范围,总是容易掌控的,代码变动的影响面非常容易掌控;
- 线上问题的修复相比以前更容易,新框架在数据的一致性方面有比较明显的健壮性,确保数据正确更容易;
- 更关注模型的设计是否符合预期;
- 从带着大家建模,进化为团队成员可以独立建模,并基本符合预期;
- 一旦模型确定,代码基本就确定了;
- 模型设计完毕后,工作量的估算比过去要准确得多,漏算的情况大幅减少;
意外的收获
- 他能够在一周左右的时间入门并使用DDD战术框架完成功能模块的开发
- 他能够在3个月的训练之后,按照DDD的思路参与建模工作
- 他设计的模型,会因为缺乏经验而对业务场景的分析不够充分
- 在已经落地DDD的环境下,学习DDD会非常容易;
- DDD的战术框架极其重要,为新人学习降低了理解门槛;
- 要做好建模,需要更多的业务和设计经验;
盗梦空间
终极奥义
- 真诚是最大的PUA
- 相信“相信的力量”
为了落地DDD,我是这样“PUA”大家的的更多相关文章
- 我们团队是如何落地DDD的(1)
最近发现文章老是被窃取,有些平台举报了还没有用.请识别我的id方丈的寺院. 摘要 DDD领域驱动设计,起源于2004年著名建模专家Eric Evans发表的他最具影响力的著名书籍:Domain-Dri ...
- 跨越DDD从理论到工程落地的鸿沟
摘要:本文从DDD的核心概念讲起,重点放在如何把理论落地成代码,期望给那些正在探索DDD的同学一些指引和启发. 本文分享自华为云社区<跨越DDD从理论到工程落地的鸿沟>,作者:敏捷小智. ...
- 可落地的DDD(7)-战术设计上的一些误区
背景 几年前我总结过DDD战术设计的一些落地经验可落地的DDD(5)-战术设计,和一次关于聚合根的激烈讨论最近两年有些新的落地体验,回过头来发现,当初对这些概念的理解还是没有深入,这篇文章重新阐述下. ...
- 在单体应用的一些DDD实践经验
阅读此文需要一定的DDD基础,如果你是第一次接触DDD读者,建议先去阅读一些DDD相关的书籍或者文章之后再来阅读本文. 背景 自从我在团队中推行DDD以来,我们团队经历了一系列的磨难--先是把核心项目 ...
- DDD-CQRS的落地案例
摘要 在之前的文章DDD-CQRS能解什么问题中,阐述了什么是CQRS.但是并没有业务需求可以应用CQRS.最近需要处理一个文本增量更新的业务,经过需求分析后,尝试使用CQRS来解这个问题 问题分析 ...
- 基于ABP落地领域驱动设计-02.聚合和聚合根的最佳实践和原则
目录 前言 聚合 聚合和聚合根原则 包含业务原则 单个单元原则 事务边界原则 可序列化原则 聚合和聚合根最佳实践 只通过ID引用其他聚合 用于 EF Core 和 关系型数据库 保持聚合根足够小 聚合 ...
- DDD领域驱动设计-概述-Ⅰ
如果我看得更远,那是因为我站在巨人的肩膀上.(If I have seen further it is by standing on ye shoulder of Giants.) ...
- 怎么说服领导,能让我用DDD架构肝项目?
作者:小傅哥 博客:https://bugstack.cn 原文:https://mp.weixin.qq.com/s/ezd-6xkRiNfPH1lGwhLd8Q 沉淀.分享.成长,让自己和他人都能 ...
- 领域驱动设计(DDD)在美团点评业务系统的实践
前言 至少 30 年以前,一些软件设计人员就已经意识到领域建模和设计的重要性,并形成一种思潮,Eric Evans 将其定义为领域驱动设计(Domain-Driven Design,简称 DDD).在 ...
- Vue的生命周期
1.1.实例生命周期 每个 Vue 实例在被创建之前都要经过一系列的初始化过程.例如需要设置数据监听.编译模板.挂载实例到 DOM.在数据变化时更新 DOM 等.同时在这个过程中也会运行一些叫做生命周 ...
随机推荐
- kettle从入门到精通 第七十一课 ETL之kettle 再谈http post,轻松掌握body中传递json参数
场景: kettle中http post步骤如何发送http请求且传递body参数? 解决方案: http post步骤中直接设置Request entity field字段即可. 1.手边没有现成的 ...
- 简单理解IOC控制反转和DI依赖注入
用过.net core框架的同学都知道,框架默认支持"构造函数"注入引用对象的方式.使用.net core框架也有一段时间了,最近去了解了一下到底什么是"依赖注入&quo ...
- python selenium.remote远程连接时间达10分钟
问题: 在机器A搭建了selenium-grid的环境,hub以4444端口号启动,并在4444下注册了子node,端口4445,浏览器配置chrome 使用代码进行远程连接,并创建会话: 传入的se ...
- PPP协议简介
转载出处:https://blog.csdn.net/csucxcc/article/details/1684416 PPP(Point-to-Point Protocol)协议是在SLIP的基础上发 ...
- 生产环境部署Nginx服务器双机热备部署-keepalived(多种模式教程)
前言:今天演示下生产环境keepalived的部署方式,安装模式有很多,比如说主备模型和双主模型,主备分:抢占模式 和 非抢占模式.这里我会一一展开说具体怎么配置 一.双节点均部署Nginx: 第一步 ...
- SpringBoot项目启动执行任务的几种方式
1.直接在启动类下面调用方法 @SpringBootApplication public class TestApplication { public static void main(String[ ...
- 安卓app产品:应用分析工具
这是我独立开发的一款工具类安卓app(名称:应用分析工具),其主要功能是:(Solo 社区投稿) 1.基础信息查看 - 可查看app的包名.签名.权限.版本信息.AndroidManifest.xml ...
- QCon 回顾 | Data Fabric:逻辑统一、物理分散
Data Fabric(数据编织),自 2019 年开始就在 Gartner 年度技术趋势榜单上安家,并在 2022 年被列为数据分析领域十大技术趋势之首,它究竟有哪些价值?又如何在企业落地? 在近日 ...
- SQL Server 帐号权限管理及C#编程应用(图解)
昨晚在群里讲解这部分内容,因为好久没操作过了,差点翻车...今天把它整理一下发出来,方便没听明白的小伙伴学习和理解. 我们平时学习数据库时,要么使用sa帐号,要么用windows默认帐号登录,总之都拥 ...
- iOS开发基础135-Core Data
Objective-C (OC) 中使用 Core Data 是iOS应用开发中管理模型层对象的一种有效工具.Core Data 使用 ORM (对象关系映射) 技术来抽象化和管理数据.这不仅可以节省 ...