刚刚看了Martin Fowler的中文blog,里面提到了“客户亲和力”(Customer Affinity)的概念。指的是软件开发人员与客户方协调的能力和对解决业务问题的兴趣。用他的话说,“就是看开发者又没有兴趣密切的关注软件所要面向的业务问题以及那个业务领域里的人”。
想起自己在学校的时候,最不看好的就是诸如某某信息管理系统之类的软件开发,感觉这一类的开发都比较枯燥,难以让人产生成就感,也就是Martin所说的“无非是把数据传来传去”。那时最喜欢的就是人工智能与图形图像类的开发,喜欢追求底层与效率,还与同学合作过一个“五子棋AI”。但自己却未敢轻易涉足这一领域,因为这一类的开发对技术要求很高,进入门槛高,而我又缺乏足够的积累,最后还是进入了一家大大的国企,从事公司内部航空货运系统的开发。
在刚刚接手项目任务的时候,我还遗留着学校中那种对“信息管理类软件”的厌恶。由于航空业务非常复杂,仅一个小功能模块就要面对几十页写得不清不楚的乏味的文档,每看几页还要起身转一圈以免睡着。根本谈不上对业务问题有解决它的兴趣。所用的技术也无非是sql语句和对包裹得好好的COM组件的调用,让人觉得更像是体力劳动。幸好随后赶上了版本更替的阶段,还能接触到不少新鲜的技术;但说到业务领域,直到现在,我依然没有任何兴趣。
“软件开发的兴趣”在于“取悦你的客户”,然而在我的印象中,我们的客户几乎没有真正“悦”过,他们总有提不完的需求,而且普遍对新鲜的软件系统有一种抵制情绪。正如一些“老前辈”用笔写了大半辈子,他们宁愿买一块经常识别错误的手写板,也不愿意敲键盘。
不管是“客户亲和力”也好,“技术亲和力”也好,或许都是开发人员的一种境界,需要相当的积累和感悟。而我这样的泛泛之辈,才刚刚开始。