专业性的缺失
在之前的文章,就写到了现实复杂性的问题,一方面是自然界的未知,另一方面是人类的私欲。随之出现的法律和制度,更像是人类在道德和欲望上的一块遮羞布。
复杂的现实我们无法把握,所以需要制度,来界定边界,需求也好,生活也好,只要没有了监狱和枷锁,就没有自由和理性。放任无度的实现过程中催生的是远离目标的腐烂,一旦这种过程形成了树状的层级关系,腐烂的程度就如同雪球一般愈滚愈大。只有在每一层的过程上,增加锁链,增加监视机构,才能遏制一些灾难的生发。
但麻烦的是,出于层层剥削和贪婪懒惰的一些“小问题”,各行各业的这种防腐机制依然十分缺失,该赞扬市场的勃勃生机还是该呵斥建立制度的人的不作为,我们究竟花钱卖的是什么?是时间、资源、服务以及他人的专业性。监视制度的缺失导致了专业性的匮乏。我们为了节省能量,存储脂肪,增加专业性的这种耗费资源,耗费心神,耗费能量的事情自然是不愿意干的。紧接着作为消费者的广大群众开始谩骂,开始投诉,开始指责。
我就是其中一员,但后来想想,广大的消费者(包括我)在其他的属于自己的工作中,也是服务的提供者之一,不禁想起来,自己手上糟糕的技艺和近乎不存在的专业性,不免有些惭愧。我并不是想像象牙塔里的那些宣讲者一样,理想的呐喊着:工匠精神,精益求精,不断进取。因为这些是不现实的,理想主义的文字可以写在诗歌中,出现在电影里,铭刻在石碑之上,用来歌颂人类千百年来所凝结的各种纯粹的,抽象出来的信念。这些信念是理想的,是丰满的,是优美的。但是不适用于实际的工程开发,社会实践,沟通交际等等现实场合。
现实是怎样的?就如同测试中有句话:你千万不能,永远也别想,用户会按照我们预先设定的模式输入内容到表单上。比如,我们希望这个输入框里用户输入的是一个 11 位的手机号,作为后台开发的我们难道可以不做校验么?如果不做的话,你大概要么就是一个理想主义者,要么就是一个懒惰的,不专业的程序员。用户会输入一个空字符串,输入中文,英文,亦或者是 SQL 语句。现实就是这么糟糕,人们总是不按你预想的套路出牌,你能做些什么呢?
对于个人而言,防御式XX 是很重要的,理清过程和责任链,关键的地方留好证据(打日志),比如:防御式编程,防御式驾驶,防御式购买。尽可能地做好自己的事情,不留死角,但我们要清楚,糟糕的现实是,就算如此,莫须有的罪名还是会发生,而这是我们个人无法控制的。
人们总是喜欢攀比,无论是金钱,还是权力,美貌,还是身材,争端和矛盾往往在一次次攀比中累计,就连工作也不例外。学生时代大家攀比的除了家庭条件之外,就是学习天赋,学校默认设置了一个比较器(Comparator),然后每次排序都是调用一下这个以成绩为核心的比较器,学习成绩的优劣一般取决于学习天赋和后天的努力。学生之间的攀比当然不会是比后天的努力这种看起来不那么体面的东西,先天的聪颖性才是比较的主角,当然在成年人的世界中,至少是现在,很少人会学习,自然也不会比较学习的天赋,在工作中,就会比较谁更能偷懒的完成同样的任务。
那么代价就是专业的缺失和糟糕的服务,其实大部分人的普通工作都是能用平庸的天分做好的,只要多花些心思在正确的方向上,就能收获不错的成果,但大家显然对于专业和服务就如同学生时代的后天努力一般不屑一顾,更像追求个人的精致和贪婪,也就是网上提到的中产阶级——那一部分精致的利己主义者。他们活得很明白,知道没有上帝和来世,无需和别人(除了自己认可的家人朋友)分享面包和水,就能在自己的世界中过的相当的惬意。
是啊,抛开社会责任与工作专业性的生活,是如此的惬意,如果你还恰好出生在一个不需要你努力的家庭中,那么世界将围绕着你缓慢运行。这种困境的糟糕之处在于,一小部分人以牺牲他人游戏体验的情况下,以一种看似道德的,体面的方式攫取了利益,并将这种利益归功于自己的天赋和汗水(如果有的话)。
一个理想的市场是每个人尽自己所能,提供令他人满意的服务,但是滥竽充数的个别人发现偷懒的诀窍之后,整个体系就会开始逐渐腐烂,这种腐烂的程度在整体的角度来说是不太明显的,大家都有容忍值,一个王朝想要延续,就是靠着这种可持续性的竭泽而渔,将腐未腐的状态,才能满足一小部分的人的利益,同时大部分人都还能活在一个不那么糟糕的世界中,被那上层的一小部分人嘲笑和互相欺骗。
说回个人,之前提到了工匠追求专业性这种美德只能在诗歌和石碑上,但并非我们不能获得,更具体地来说,只是不能相信个人能够主动地获取这种耗费心神的东西。再换句话说,作为服务提供者,不能相信雇佣的人能够提供良好的服务,而是应该相信通过理性和法则指定的制度能够提供给消费者满意的服务。
至少我觉得在软件行业中,我们不能太相信个人能力(天赋?努力?),虽说编程需要耗费一些脑细胞,但并非像做研究基础科学一般复杂和需要那么高的天赋,大部分人都可以编程,只要他们理解洗衣服的流程:衣服需要先分类放到不同的盆里,内衣和内裤放一块,然后判断有些衣服能不能一起洗,洗完了需要晾晒,收下来的衣服太多,需要压缩存放,如果可以的话,上述的部分过程可以自动化完成(买个洗衣机),那么,他们就能够编程!
在工作中的编程,并非象牙塔的研究,更多的是类似搬砖和砌墙的工作,这些砖块只不过是以数字的形式存放在硬盘里罢了。那么需要的专业性是什么呢?目前,我的理解是:基础和细节。
我奶奶可能都知道,登陆一个账户,需要用户名和密码,所有做软件的人,写的最多的就是登录注册模块,但是很少有人能够完整的编写一套专业的,好用的登录注册功能。原因就在于,一个看起来简单的功能背后,是无数具体而细微的小步骤的组合,这些小细节,是对抗现实的复杂性而产生,我们需要预料到所有未知的和已知的可能性,在设定好的边界条件下,提供一致且稳定的服务。
除了细节之外,就是基础,基础就是地基,一种保障,谁都不希望一个没学过医学理论的人,在自己身上开刀,但神奇的是,软件行业和其他大部分行业都是处于如此尴尬的境地,大量的非专业的人(就算是本专业的学生也不一定就是专业的)涌入市场,他们自己不追求专业性(人之本性,无从责怪)但是就连行业也没有相应的制度保证,我相信这是很多因素共同造成的,但作为个人,追求专业性依然是一种目标。
在很多时候,我们不能期待他人,抱怨制度更是没有意义,人类社会优化到最后可能才会发现,如果仅仅以资本希望的角度出发,最该优化的可能就是人类本身。但人是目的而非工具,我们不能随意地丢弃和更换(尽管现实近乎如此)。