Bug,程序员心中永远的痛。
Bug,意味着错误、加班、不确定性、交付风险、改别人写的代码等等……随便找有过一两个项目经验的开发者,问问他关于debug 的回忆,气氛都不太融洽。
为了对抗 bug,占据智力金字塔顶端的人们也发明了各种各样的工具和手段,上至高大上的方法论,下至接地气的生产工具。从越来越先进的 IDE到复杂的代码审查制度,从单元测试到集成联调,再配上beta版、试用、公测等等...目标很明确,结果很惨淡。
关于为什么会产生 bug ,荷兰计算机科学家 Edsger W. Dijkstra 有过一句经典名言:
If debugging is the process of removing software bugs, then programming must be the process of putting them in.
换而言之,存在即合理。
所以,有生之年如何才能写出没有 bug 的代码呢?
答案是:不写代码。
这句正确的废话尽管听起来悲观,但也隐含了一个方法论:尽可能少写代码。在解释这个方法论的时候,我们先分析一下程序维护的特点,为什么bug的产生无法避免 ?软件工程经典巨著《人月神话》用“前进两步,后退一步”一语道破了程序维护的一个基本问题:缺陷修复总会以固定(20%-50%)的几率引入新的bug,整个过程是前进两步,后退一步。
“我们为您修复了一个bug,并带来更多的bug”
软件系统开发是减少混乱度(减少熵)的过程,它本身是处于亚稳态的,相反软件维护是提高混乱度(增加熵)的过程。而要解决bug的问题,代码开发仅是其中一环,实际还涉及了前期需求调研、软件设计和开发完之后的集成测试、交付运维等环节。
需求分析、软件设计
麻省理工学院发现软件发布生命期中有一个有趣的循环:新版本修复了上一个版本被发现的bug以后,程序会正常运行一段时间,接着,错误率又会重新攀升、bug又会集中出现。因为当用户的使用达到了新的熟练水平,他们开始运用新的功能,这种高强度的考验查出了新功能中很多不易察觉的问题。
矛盾来了,一方面对软件开发者来说,用户能真正把软件用起来是让他们非常有成就感的一件事,但是随着使用者对软件功能的深度探索,新的bug接踵而至,太难了...
软件的建设与应用本身就是一项需要深度改变用户习惯的工作,回到上面“尽可能少写代码”的方法论,无代码开发的一项重要价值就是通过“所见即所得”的可视化构建方式,在前期需求调研、软件设计阶段就把实际使用软件的业务人员拉上一起参与软件的共建共创,保证软件的使用者在一开始就熟知软件的各项功能,并全程参与调试,避免上述“熟练使用之后才发现bug”的情况。
软件实现
传统开发方式里,前端工程师根据需求文档及高保真图花大量时间写代码,开发页面样式,后端工程师根据业务流程图和后端逻辑重复造轮子,代码质量堪忧。为什么缺陷不能彻底被修复?看上去很微小的错误实际上可能是系统级别的问题,修复局部问题的工作量很清晰,但是更大范围的修复工作常常会被忽略,当软件结构很复杂、文档写得很烂的时候debug更痛苦。
找bug和找东西在这方面有异曲同工之妙,所谓“灯下黑”,你找的时候它死活不出现,你不找的时候它又不请自来。
用无代码开发的方式,配置工程师只需拖拽组件和配置流程逻辑,全程不用写一行代码,快速构建软件,最后交付的也是数据包,从源头解决在xx万行复杂代码里找bug的痛苦。
数据处理无代码
集成测试
理论上,每次修复一个新bug后,必须重新运行先前所有的测试用例,确保系统不会以更隐蔽的方式被破坏。在快速迭代开发的过程中,新版本的连续发布让回归测试进行得更加频繁,成本非常高,维护成本通常是开发成本的40%-80%。
市面上一些主流自动化测试工具的测试用例,从脚本录制到调试修改到执行验证,可能需要花费数小时甚至数天的时间,费时费力。Smartdata将软件数据化,结合use case动态自动推导软件逻辑,支持一键生成脚本,进行自动化测试,自动生成测试文档,大大降低对测试人员的依赖;我们软件工厂的集成测试师将整体功能集成测试,提高测试效率,确保软件满足交付需求。
交付运维
软件维护的周期比较长,出现人员更替、工作交接也是很常见的现象,这导致维护人员通常不是编写代码的开发人员,而是一些初级程序员或者新手,本身技术人员的水平参差不齐,程序员有多讨厌读别人写的代码也无需多说了...
而无代码开发的方式可以拖拽界面、修改配置、即时响应验收需求,做到“边验收边修改”,可视化的应用配置方式可以让工作无缝交接、非常方便。
1024到来之际,希望大家善待身边的每一位程序猿,希望码农们不要再谈bug色变,可以从繁琐的CRUD中解放出来,做一些更有价值的工作。
当然也希望大家看到无代码不是洪水猛兽,不单纯是为了脱离代码,在提高软件产能、降低缺陷率、提高可靠度和提升用户使用体验方面,我们还是有一些真功夫在身上的。
NO CODE NO BUG
NO CODE NEW WORLD