** 鹏澍 | 2016.02.13 **
吾事程序员之职业,而今只六年有余罢。本当无可姿势,要来谏业内这恶俗之一二。然事起有因,更勾念起自己往昔之豪壮情怀,难自禁,难抑怒,难掩惜。故,要发声,要做此文哉。
但,在讲究那些具体事件以前,我想要先和各位读者申明一些我个人哲学态度上的事情,如此,才可辨是非善恶,我也才有所可谏矣,于旁观者,也才得客观公正之研判矣。
正如天地虽分阴阳,却并非对立,反而是“阴在阳之内,不在阳之对。太阴,太阳。”这世间的善恶之变,亦同此道也。没有阳光,就没有阴暗;没有高的道德标准,也就不可见恶之所恶。比如,在日本,垃圾必要有所分类,否则邻里就要群起而攻之,这在中国则非要如此,就是乱扔些纸屑,居民也不觉有甚不妥的罢。不过,这些我们也还尚可理解宽容罢,毕竟,情如此类的,大约可列属文明发展进程之尚未发达之缘故,来自客观事物发展之规律的制约,纵人力奈无何。但有另一类的情状,则情理不通,是谓自甘堕落矣。好比漠视未成年的小孩观赏黄片之所为,又或教育孩子抽烟,酗酒,打牌赌博还以为戏虞之打算。
接下来我所要谈之恶,更多的便是恶这自甘堕落的形状。更可恶者,盖其堕落日久,竟已然遮天蔽日,使众人不察其中之可恶矣。想当年,韩愈“文起八代之衰,而道济天下之溺,忠犯人主之怒,而勇夺三军之帅。”那现在我们晚辈,传承此中精神骨气,虽是剑拔弩张,自己难免要丑态百出,亦有所值道哉。
其第一件,是由于给毫无编程经验的同事做编程方面的基础培训引发的。在我看来,领导的这项决定注定是个“灾难”:一大群刚入行一两年的初级程序员们,要求去“培训”另一群毫无编程基础的同事,以帮助他们顺利实施自动化测试。过程中,领导给每个人“定额”分配了培训的主题,也不管这位“讲师”是否真的能够胜任这个技术主题的培训工作,更没有提前审核讲师的培训课件,或给予讲师一些培训指导,或提前进行一些培训演练的预备活动,然后培训就这般“稀里糊涂”,“红红火火”的开始了。
于此不妨说个题外话,我认为,关于“程序猿”、“攻城狮”这类戏虞轻蔑的行业称呼,有很大的原因,就出在我们自己这些极度不专业的态度和行为上。2012年的时候,Robert C.Martin 写了一本《程序员的职业素养》的书,如果读者诸君觉得我们总是那么不靠谱的话,那么不妨入手买上一本,或许,你碰到的“程序猿”们,他们真的不是“程序员”! :)
说回我所争执的事件,是发生在第三场培训上。本来预定的主题是C#的基础语法培训。结果这位好大喜功的“讲师”,自己否决了这次培训的“简单语法主题”(似乎领导是知道这个变动的,但所有的听众却都是不知情的),他想要向那些没有任何经验知识的编程新手们展现一番“牛人”技术:通过 RESTful API 调用有道词典的 Web Service,开发一款类似 Windows 有道词典的桌面应用程序。好吧,他的确开发出来了一个可顺利运行的基于 WPF 技术的 Demo 程序。虽然,他对于 RESTful、OAuth、Web Service 之类的知识都是一知半解,也不是很清楚 C# 调用 Web API 的核心原理,但,God Bless,他的确是开发出来了这么一款词典应用程序。我们可以暂且不论这些“高深”的技术对于培训目标的阻碍,我关键所不能容忍的,是这位“讲师”所宣讲的学习方法和态度:“现在绝大部分的功能都有现成的类库或者 API 可以调用,你们并不需要知道所有的技术细节,你只需要在你要用到某个功能的时候,Copy-Paste(复制-粘贴)或者去网络上搜一搜就可以完成工作了。”当时,我争论的焦点是“如果讲师对于一个东西是一知半解的,不透彻的,那就不要拿出来讲,否则,误人子弟,害人害己!”他自然有他的“正义”:让没有编程经验的人们快速的能够胜任工作,而且“Copy-Paste”的工作方式已然是业内共识,更是一个事实。正是这份“正义”之辞,为他的行为赢得了诸多的认同与同情,包括领导的认同。但,不妨做个比方罢,我们可能因为了“正义”的理由,而发动一场战争(且不细究这是不是合理的),但这并不意味着,我们就可以对被占领地的烧杀抢掠,就像十字军的作为一样,那是令人耻恨的作为。“失道而后德”,既谓之,于“正义”德行之上,还有原则道法,确立着这个世间的道理。对于那些原则性的事务,我们需要坚守;那些职业的道德,我们需要严肃认真的去对待,如此,才是对他人的尊重,才是对这个世界的尊重,才是对自己的尊重,才是顺应了天道而生。
如今这位“讲师”,只怕还纠结在那份“正义”之下,而看不透自己的虚荣,狂妄和轻浮罢;他看不到自己这些“无关紧要”的行为究竟会对程序员这个职业,对于那些听他培训讲解的人们带来多么深远的影响;他也更看不到自己与一名优秀程序员之间的距离。或许待他十年职业生涯之后,方有一悟罢。
其第二件,与这第一件有异曲同工之妙。与我共事的一同事,开会讨论技术选型的时候,他若无其事的对我讲:“现在技术发展得这么快,没有人能真的掌握所有的东西,没有人能真的知道所有的细节,所以,我们技术能用就够了,不要把那么多精力放在雕琢软件的设计上,而应该要关注业务本身的开发与实现,能用,快,就 OK 了。”好吧,当时我有些激动了,没有忍住,于是当场狠狠的反驳了一番:“这是何道理?我就可以明确的告诉你,我对于自己所选用的每一种技术,我自己所定义的每一行代码都知其所以然,至少它们的复杂度都在我的掌控之中,如果你有任何不懂的地方,尽管问我……”这一驳斥,竟讲了十几分钟,也不知道当事人是个怎样的形状(是在线的语音会议),应该也是很不自在的罢。不过他的那番讲法,在计算机领域,却真是一个莫大的讽刺:计算机这个东西是完完全全的人造物,它并不是无中生有,在大自然中也绝没有这般现成的东西被发现,如何设计电路,如何设计计算机结构,如何构建软件系统,如何编译软件……这所有所有的技术,都是我们人类自己编造的,没有哪一个东西在计算机里面不是我们自己创造出来的,没有任何一个玩意在计算机里是我们人类无法知道的,因为是我们,人类自己,建造了计算机!
查尔斯.达尔文在《人类的由来》中写道:
有人常常信心十足地宣称人类的起源永不可知。但通常无知者无畏:只有无知者而非博学者,才会如此断言科学永不能解决某个问题。
把自己不够专业的技术能力归咎于系统的不可知论,我想达尔文的这段话足够给予他们致命的一击了!
最后,这讲恶本身,并不是这文章的意思,给予谏言才是实务:只有传承精益求精的专业主义精神和自我反省的审慎态度,我们才有进步的阶梯,我们才知恶之可恶!