(三十四)企业级应用架构的核心:业务逻辑复杂度管理

更多
2018年10月22日 20点11分 作者:叶飞 修改

这个bug我都忘了是怎么处理的了,因为处理不了啊!改这里错那里,改那里错这里,咋整?应该是交给我们老大去头疼了,他可以联系国外的一个家伙——都不能说是同事,因为我们是外包公司,国外这家伙是发包公司的。据说他是现存的、唯一的一个从项目开始跟到现在的开发人员,像大熊猫一样保护起来的,像老祖宗一样贡着的人物。

我们项目组几个同事有时候就会聊:其实要做到在公司里“不可替代”也很简单,熬上十年就可以了。

这个“熬”字用得很传神,因为一般人真熬下来。很枯燥,没有成就感。每天都是debug,就像我上面这个bug,一个月,实际上啥都没做。本来还写了几行代码,但因为影响了其他地方,最后还得revert回来!

又学不到什么新技术,都是些历史遗留代码、老古董的技术。计算机技术日新月异,在这里面待上十年,真的会和外界脱节的。也就是说在公司里面,你会被当菩萨一样的贡着;但一旦离开公司,那就比较凄惨了,大概就是监狱里蹲了几年出来睁眼看世界的感觉。

代码质量也让人沉醉。if...else...啥的前面已经说了,我印象深刻的还有一次,改完了bug,老大让我跑一跑单元测试。

“哇塞!我们的代码居然有单元测试?高档货啊!这么牛逼……”当时我刚看书知道了TDD(Test Drive Design),一直没见过活的,心情非常之鸡冻啊。结果测试用例一跑,傻眼了,这么多叉,跑不过啊,完全懵了。

挺忐忑地找到老大,老大没当回事:“哦,本来就跑不过!”晕死,我。

“那跑这一遍又什么用呢?”我问,“我怎么知道我的改动有没有影响之前的测试结果呢?”以为理论上来说,在任何时候,单元测试都必须全部跑过。你改动前,全部能跑过;然后你改动后,还是全部能跑过:这样才能证明你的改动没有影响之前的代码测试结果。

“你先记录一下改动之前那些跑不过,然后对比一下改动之后那些跑不过,没有变化就OK啦。”老大笑着对我说,“只能这样啦,那些测试用例我们以前搞过,搞不定……”

所以绝大多数的程序员,其实是不愿意干这活的,他们更愿意使用新技术开发新项目,满满的成就感。我知道很多公司都这样:技术“高手”开发新项目,技术渣留下来做后续维护支持。

但我特别感谢这段经历,让我学到了太多的东西,很多书上以前看不懂的东西都慢慢地清晰起来。这些东西,比什么算法底层新技术有用得多——至少对于我来说是这样的。

比如,“一个项目,开发和维护的成本是2:8,开发是2,维护是8”。以前觉得怎么可能呢?因为以前搞装修,房子装完了就完了,几乎就没有维护成本。质保金,3%而已,不过是给业主一个放心。但软件开发,那就真是这样,维护的成本太高了。我估算了一下:

  • 在博朗干了一年多,做维护,写的代码应该——不——绝对不超过500行;
  • 我在树雍待了不到一年,做新项目新功能,5000行代码,妥妥的;
  • 如果是在其他一些小作坊公司,800元建站的那种,一个月可能都要写5000行代码!

为什么小作坊的效率最高?因为他压根都不考虑后面维护的事,呵呵。而树雍多花出来的时间,做设计写文档,其实就是为了能够减少后期维护的成本。

当你不考虑维护的时候,你就没办法理解软件工程中很多“脱了裤子放屁——多此一举”的做法,比如文档,比如面向对象,比如分层、模块化,比如敏捷和测试驱动,等等。而更重要的是,只有当你亲身体会到了维护的艰难和痛苦之后,你才有可能相对客观中正的拿捏开发效率和代码质量的平衡。我的观察,十个程序员,九个都会有意无意地忽略代码的可读性、可维护性:这是人性。忙的时候,可以推说是“工期太紧赶着上线”,但闲的时候呢?我也没看见多少程序员会主动地把以前的代码弄出来重构一下。

也是通过这段经历,我发现除了数据结构和算法的复杂度,还有另外一种复杂度的管理,随处可见,而且相当具有挑战性:业务逻辑的复杂度。而企业级应用架构的核心命题,就是管理这种复杂度。



+++++++++++++++++


每天一篇博客



欢迎评论评价、传播分享,你的任何操作,都是我坚持的助力。

转载请注明:作者叶飞,出处:一起帮



软件开发 维护 企业级架构 复杂度管理
赞: 309 踩: 8

打赏
已收到打赏的 帮帮币

你的 打赏 非常重要!
为了保证文章的质量,每一篇文章的发布,都已经消耗了作者 1 枚 帮帮币
没有“帮帮币”,作者无法发布新的文章。

全系列阅读
评论 / 6
2018年10月25日 09点49分 --- 第 6 楼 --- 乔布斯的同学

精选
建议飞哥开个抖音引流~
2018年10月23日 18点27分 --- 第 5 楼 --- dajatpyu

精选
赞一下
2018年10月23日 08点29分 --- 第 4 楼 --- 28zhu

精选
目前正在维护系统,if else + switch case + 循环,嵌套的层数超过5层。好难。求博主给点建议。我们这也没有单元测试,还要加功能。
2018年10月25日 11点34分 --- 第 3 楼 --- 推荐 叶飞

--- 回复: ---

怎么弄,要不你来策划一下?
2018年10月23日 21点17分 --- 第 2 楼 --- 推荐 28zhu

--- 回复: ---

不用远程,能回答我的问题就好,嘿嘿
2018年10月23日 20点34分 --- 第 1 楼 --- 推荐 叶飞

--- 回复: ---

空洞的说,说不清楚啊,这不我才整出“一起帮”,一对一远程协助么?


叶飞的系列文章

源栈培训:ASP.NET全栈开发

飞哥的源栈培训:线上全程直播,免费收看;线下拎包入住,按周计费。本系列收录所有讲义(含视频录播地址)

编程那些事:菜鸟入门

大飞哥倾力之作,面向有意入行IT/开发/编程的初学者,欢迎任何形式的留言建议……

从包工头到程序猿

真实故事,讲述我在家装公司关门之后,如何转行成为一个程序猿的故事。(《折腾》第三卷)

《折腾》(卷一)青涩

时间段:从大学毕业到开始创业。离开青葱校园,涉世之初的那些往事……

《折腾》(卷二)风雨 之(1)工地

我一个完全的门外汉(无论装修还是管理),开始给黎叔装修房子。从踌躅满志,到四处碰壁;从一往直前,到左右为难……

《折腾》(卷二)风雨 之(2)胸怀

作为一个律师,接工程没签合同,被狠狠的坑了一把!年轻人暴烈的想要复仇,黎叔教他一个企业家的胸怀……

《折腾》(卷二)风雨 之(3)渠道

成立了公司,招聘了员工,开始大力的拓展业务,一个接一个的坑,摔倒了又爬起来……

《折腾》(卷二)风雨 之(4)视野

经历残酷现实的磨砺,终于明白:干啥事,都不能闭门造车,人要走出去,开阔视野……

未分类

系统自动生成的未分类系列

一锅大杂烩

从律师到包工头,从码农到写手,读书交友生活创业,各种零零碎碎,乱七八糟……

人人都是程序猿

计算机编程普及课程,视频:https://space.bilibili.com/55410301/#/channel/detail?cid=49491

全部
关键字



帮助

反馈