新校区建设网站,重庆电视台新闻频道,php网站端口,内蒙古网络自学网站建设这里是Z哥的个人公众号每周五11#xff1a;45 按时送达当然了#xff0c;也会时不时加个餐#xff5e;我的第「165」篇原创敬上大家好#xff0c;我是Z哥。相信每一位真正的程序员心里都有这样一个念想#xff1a;只要我的技术够牛#xff0c;就能驱动业务的发展。但是往… 这里是Z哥的个人公众号每周五1145 按时送达当然了也会时不时加个餐我的第「165」篇原创敬上大家好我是Z哥。相信每一位真正的程序员心里都有这样一个念想只要我的技术够牛就能驱动业务的发展。但是往往我们在不自觉间做的是背道而驰的事情。业务我希望在这个报表里多展示某个字段行不行现在每次我都得手动把数据合并一下有点麻烦。技术这个字段不在我们的系统里要加上的话我们需要从别的业务系统拿数据比较麻烦而且可能准确性和及时性都会差一些。如果非要加的话开发工期会比较久你需要走需求流程。业务啊不是吧。多个字段显示有这么难吗业务用户反馈这个活动链接分享给他的好友后他们点开是空白的。技术这个活动本身是站内活动我们没考虑会分享到站外的情况所以这里信息校验没通过导致页面数据没有返回给客户端造成了打开空白的情况。业务其实我只想知道……现在要怎么解决上面的这些景象是不是很熟悉呢那么技术驱动业务到底是不是存在呢答案是肯定的。Z哥我认为主要体现在以下两个目标解决过去无法解决的问题让解决问题的效率大大提升但是我们仔细来思考一下这两个目标。首先「解决过去无法解决问题」。“过去无法解决”这六个字就已经劝退99%的人了这里面一部分人的想法是过去无法解决现在肯定也没法解决算了。另一部分人甚至完全看不到这里存在问题因为潜意识已经默认这个问题本就是现实的一部分。其次「让解决问题的效率大大提升」。这几乎肯定不是小打小闹能实现的必然要从一个新的思路来解决问题才有可能。然而人的思维惯性会阻碍新思路的产生很少有人可以跳脱出现有解决方案的框架来重新考虑问题。所以真正能做到技术驱动业务的关键并不在于你的技术有多牛而是思维能否跳脱出过去的束缚并且要拥有业务感觉要懂业务。因为从概念上来说业务是“钉子”技术是“锤子”前者是问题后者是问题的解决方案。其实先不要说能「驱动业务」能做好「支撑业务」的人我觉得就是一位优秀的程序员了因为要达到这点也不容易。具体可以从以下三个方面入手。/01 理解业务/如果你无法吃透业务真正理解业务那么别说驱动业务了你能把业务实现到预期的80%都不错了就像上面提到的第二段对话。当然技术人员对业务的理解方式和业务方、产品经理并不完全相同。最大的区别在于技术人员需要对业务的“不可见”部分了解更多。比如多个环节背后的流转过程这会影响你的技术实现和程序设计。对于这个方面Z哥只给你一个建议不管你用什么方式方法来理解业务你一定要带着这个业务的提出是为了解决什么问题或者实现什么目的要做到这点有难度因为大家的本位意识会让你习惯于盯着开发工期、deadline这种方面。但是只要你能带着这个角度去思考至少可以将业务实现地无限接近预期的100%。不过理解业务最多算是一个目标校准的工作而且还没涉及到技术。我们要做好「支持业务」甚至是「驱动业务」的动力源还是在技术方面。/02 稳健、可扩展的基础架构/能够支撑或者驱动业务的首要前提必须是你的“地基”不但稳固而且要领先于业务去规划。所以底层的基础架构设计非常重要如果视野仅仅关注“这个需求该怎么实现”自然达不到这样的效果。这一点需要提升你的软件设计意识。简单的像设计模式之类的复杂一些的则需要你吃透一些经典的设计原则和设计思想背后的优缺点和适用场景。常见的设计原则SRP 单一职责OCP 开闭原则LSP 里氏替换原则DIP 依赖倒置原则ISP 接口隔离原则这些设计原则都有标准的定义我就不一一列出来了不清楚的可以自行网上搜索。常见的设计思想分层架构六边形架构洋葱架构领域驱动设计这里的每一个设计思想都够写好几篇文章我这里就不展开了。/03 构建完备的领域模型/上面的四个设计思想要我说哪个最有用肯定是DDD。最近几年DDD也被炒的非常火。这里的领域模型就是DDD中的概念。我算是国内比较早一批接触DDD并运用的人大概在2014年的时候机缘巧合了解到了DDD然后啃了两本最经典的书当时给我一种看到世外桃源的感觉真实感受不夸张。它让代码里的model变得有血有肉好像你在设计一个虚拟城市一样。这里需要摆一个物件那么它需要长成什么样子你要尽可能详细的描绘出来那里需要摆一个人物那么他长什么样子当时正在做什么事也得描绘出来。DDD让你摒弃了传统三层架构以数据表为核心的代码设计方式可以让业务含义更多地体现在代码中。如此的好处很明显就是你的代码可扩展性必然很强因为你的一个model体现了现实世界中所代表的对象现实中的对象多了一种行为那么给这个model增加一个对应的function就好。如果你是一位DDD领域驱动设计新手并对DDD感兴趣可以翻阅我2016年写DDD系列文章《如何一步一步用DDD设计一个电商网站》来入门。当时还没开通公众号所以你得到我的博客去看zacharyfan.com不过里面有些内容在后来我有新的理解但并没有更新。不过这不影响你体会DDD的优雅所以你还是可以看看。当你做好了前面的3步 你就具备了驱动业务的前提条件。懂业务。基础架构够稳、弹性够强。现实的问题在技术维度上体现的够清楚。在这之上你就可以尝试基于对领域模型的观察找到前面提到的技术能够驱动业务的两个目标当前无法解决的问题当前解决效率不高地方好了总结一下。这篇呢Z哥和你分享了我对技术驱动业务这件事的看法。我认为技术驱动业务的关键并不在于技术多好而在打破惯性思维和对业务的理解深度上。所以如果你想真正做到驱动业务不妨先将以下3点基础工作做好否则只是空想而已。理解业务稳健、可扩展的基础架构构建完备的领域模型希望对你有所启发。推荐阅读好的自我介绍面试成功一大半软件如何优雅地向前兼容原创不易如果你觉得这篇文章还不错就「在看」或者「分享」一下吧。鼓励我的创作 如果你有关于软件架构、分布式系统、产品、运营的困惑可以试试点击「阅读原文」