在计算机技术里的黑话里,有一颗银色子弹(并不是滚筒洗衣机)可以解决一切问题,而我们一代代人,都在苦苦追求它。每当有新技术出现的时候,就会有人问,XXX 是不是银弹啊?比如说啊,云计算是不是银弹,DDD 是不是银弹,维度建模是不是银弹,阿里的onedata是不是银弹。
Fred Brooks(No Silver Bullet—Essence and Accidents of Software Engineering) 将软件开发中的工作分为本质性工作(Essential Task)和附属性工作(Accidential Task)。
所谓本质工作,就是解决本质性困难的工作。而软件的本质性困难就是:如何从抽象性问题发展出具体概念上的解决方案。也就是如何理解我们要解决的问题,并选择恰当的解决方案。
与之相对的则是附属性工作,也就是将寻找到的解决方案,转化为电脑可执行程序的工作。而在这个过程中遇到的困难,就是附属性困难。
在我们平常工作中,往往都本质性工作与附属性工作的混合。
在日常工作中,我们应该避免附属性工作占比过高,那如何做才能避免呢?
总之,正本清源还本归宗,解决问题前先理解问题,定义问题,不追求模型的完美,而是通过建模迭代试错,知识消化,技术方与业务方达成一致,找出最本质的业务诉求,再找到对应解决方案,这些都是本质工作;再通过各种适当的模式做好附属性工作。
每个技术人成长阶段不同,关注重点不同,低段位时重心还是追求实现的术,高段位时得回归业务价值的道,只是在术上走远了,不能忘了出发时的目标。