我们构建出来的软件,已经是在某种程度上,满足了人们对于自动化的期许——以不再是手工的方式去完成以往冗长繁复的任务。但作为构建软件的主体,我们对于自动化的认知却处于缓慢的进化中。
从瀑布到敏捷,从流程面向到工程实践面向,这个行业对于自动化的追求,开始有极致倾向的普及。虽然这仍然跟开发者自身的经验有关,但能够认识到可以自动化的不只是测试,对于惠及整个群体以及开发效率都显得难能可贵。这方面即便矫枉过正,也情有可原。
不止有自动化的端到端测试,单元测试有天然的自动化属性。持续集成和交付必然以自动化来完成,它是最大化敏捷特质的产物。云和微服务的发展,把基础设施的自动化,也带入到开发者的日常。还有很多,自动化的监控预警,自动化的跟踪。
这必然和敏捷的本质有脱不开的干些。敏捷的增量、迭代和自适应特性,隐含了对于大量回归、验证、修正的循环的需求,以及对于人们在沟通方面的不确信。必然需要强有力的自动化手段,去简化反复确认所带来的繁复的努力。这方面显然人力显然不能胜任,我们会厌倦,愤怒以及偷懒。
可以自动化的不只是测试的那些门类,我们说自动化的思维需要融入开发的日常。现在从技术雷达中,搜索出as code相关的条目,就已经达到18个。这是极好的佐证,自动化的思维需要渗透进构建软件的流程,以及开发人员的思维中。如果一个简单的任务手工做了重复的三遍,我们是否有隐约的下意识,并采取一些努力去自动化这个操作,以应对很可能还回到来的第四遍到第四十遍。
但仍然,不可遗忘我们寻求自动化的初衷——从重复繁琐的机械努力中,解救我们的思考和创造能力。是因为我们在内心深处,仍然相信我们有一定比例是无法被机器运算取代的,以及自有科学和自然的规律约束。即便如此,我们仍然会借由造福更大范围的执念,对自己的能力有种不自知的妄想。比如用自动化的技巧极度削减人与人之间该有的真诚沟通和信任协作,比如用极简的IDE操作隐藏对于重构思维的培养和解释,比如对于低代码(low code)平台的野心。