程序员的口头禅:技术上无法实现

「技术上无法实现」这句口头禅,我在过去多年的程序员职业生涯中经常听见,甚至我自己就曾说过很多次。最近当我再次听到有人说出这句话时,就不禁思考起来,为什么程序员爱说这句话呢?为什么曾经我也时不时说这句话呢?
不知
当我刚开始工作的第一年,我在一家银行客户现场工作。当时要给银行的出纳管理部做一个系统,这个系统有个功能就是上传各个国家的高清真假币鉴别对比图片,然后银行的出纳和柜员就可以在系统上学习各国家纸币的鉴别方式了。
针对这些高清纸币图片,客户为了怕别人盗取乱用,就要求必须对对图片做加背景水印的功能。当我们在召开需求讨论会时,我听到这个需求就懵了,因为完全不知道要怎么做。毕竟当时我才刚刚开始学习如何做 Web 化的管理系统,从来没有用程序处理过图片。
彼时,当我想起程序化的图片处理时,我就只能想起像 PhotoShop 这样的高度专业化的图片处理工具软件,觉得这肯定是一个很复杂的事情。所以,当我们讨论起加背景水印的功能时,我自然脱口而出:“这在技术上无法实现。”
然后我们进一步说起,当前他们是怎么做的,确实是找了专门的外包设计公司用 PhotoShop 来给图片一张张手工加的水印。这听起来是一个比较繁琐的过程,所以,当我回答在技术上无法实现时,客户都是业务人员,也不太懂程序技术上的事,听到我的回答就略显失望。
好吧,如今回想起来,当时我说技术上无法实现时,仅仅是我当时并不知道如何去实现。而且想当然的感觉要进行图片处理,必须要具备像 PhotoShop 一样的专业背景知识,而这在当时的我而言是完全不能想象的。
因此,当时我说出的那句:技术上无法实现,仅仅是因为不知和不解而心怀畏惧。
不愿
有一年,我出差在客户现场赶项目,连续加班了四个周末,也就是大概一个月在连续上班。终于我们的项目快要如期上线了,每个通宵的早晨,看着东方慢慢变得红润透亮的天空,感觉已经快要看到了胜利的曙光。
就在这样一个曙光照耀的早晨,项目经理跑来对我们说:“原有的一块业务逻辑今天在和客户聊起时,他们说也只是试试这个流程,可能要改变。但我们的实现方式太僵硬,都是硬编码赶出来的。要不我们改成更灵活的可以通过配置的方式,一旦上线后再改起来就更麻烦了,我可以先去和客户再沟通下,再给我们争取点时间。”
一下子,我们都被打击的不行,改成配置怎么改?逻辑那么复杂,又不是那种简单的开关式配置。当然,项目经理早已脱离技术一线时间颇久,也一时半会儿没啥方案。在沉默的思考了一阵后,我又说出了那句话:“逻辑太复杂,变动太大,这在技术上无法实现。”
老实说,当时我只是想赶快离开这沉默的讨论会,去美美的睡上一觉。其实,那时我心里是有一个方案的,如今看来不是什么优秀的方案,只是当时我唯一知道且可行的方案。就是通过动态类加载机制,把业务逻辑外移,流程内置的方式去可以动态热加载新的业务逻辑类。但这意味着可能面临一次重大的重构,又是两周的持续加班,而我当时只想睡上一觉。
后来,这个故事在我睡醒后依然以我妥协结束。我建议了这个方案,最后当

