很多年来始终有一种声音:编码自身会逐渐消亡,软件开发会越来越像一种组装工作。
也就是说,程序员会越来越像IT工程师,他们很少自己从头做什么,而是靠搭配来达成各种目标。
我身边就有持这种观点的人。
而在《代码整洁之道》一书中,Robert C Martin在开篇处加了这样一段文字:
有人也许会以为,关于代码的书将有点落后于时代---代码不再是问题;我们应当关注的是模型和需求。
确实有人说过我们正在临近代码的终结点。很快,代码就会自动产生出来,不需要再要人工编码。
.... ...
这段文字告诉我们编码会逐渐消亡这种观点即使在国外也有一定的市场。
假使说这是真的,那程序员就必然是一个会逐渐消亡的职业。
现在的关键问题是,这究竟是不是真的?
为回答这一问题,需要对软件开发内在的根本特质做一点考察。
只要静下心来想一想,我们就会发现,持有上述观点的人并非无的放矢,也还是有一定根据的。
在今天开发任何一款软件的时候,很少会从头开始开发。
大多时候会选定特定的框架:开发PC客户端程序,可能是.net或MFC,开发网站可能要选LAMP,大数据处理则可能要用Hadoop等。
与此同时商用的各种组件或库也是越来越丰富:图形处理的,出图的,并行运算的等等。
最差的也还可以选着重用很多现有的代码:从codeproject或开源上借鉴合适的代码片段。
上述这些现实确实使软件开发具备越来越多的“组装”性质。
这意味着程序员并不能只关注自己可以干什么,还要关注别人干了什么,自己能不能拿过来用。
从这个角度看,如果上述趋势不断强化,编码似乎真的是要逐渐消亡了。
但其实这是错的。
这种观点低估了世界变化的频度,以及软件在应对变化过程中所扮演的角色。
这事情其实并不复杂。
对各种已有问题,我们总是可以抽象出特定的模块来处理他们。
如果只是重复的处理已有的问题,那么组装就是本质特征,编码确实会消亡。
但反过来想如果处理新问题是主流和核心,那么编码就是本质,组装就是一种辅助。
在商务世界里,往往是只有领先一步,才能抢占先机,所以在有软件产品的软件公司中编码必然永远是主流。
好比说A公司可以用Hadoop,B公司也可以用Hadoop,但如果没有自己附加上去的东西,那么两个公司就会同质化,通常不会有谁能生存的很好。
即使谁好了,也马上就会有C,D,E,F来凑热闹。而能造成差异,造成独有附加值的则只能是创新加编码。
但在目标是开发“能用就行”软件的组织中,“组装”占上风的情形估计也是时有发生。
没有具体考察过,但我个人很怀疑电商类网站,开发内部使用软件的团队,很可能会是这类情形。
------------------------------------------------------------------------------------------------------------------------------------
理想流 + 软件 = 《完美软件开发:方法与逻辑》
理想流 + 人生 = ??
理想流 + 管理 = ??
理想流 = 以概念和逻辑推演本质,追求真理。