最近通勤的路上一直在读《走出软件作坊》。书中以业务为中心的思想让我感受颇深。虽说作者一直专注在企业管理软件行业,书中的很多具体事例方法也是就这个行业而展开,但是就软件开发而言,乃至放大到做事情而言,道理都是一样的。让我印象最深的一个段落是讲作者手下一个新手,在开发中极度追求OO与设计模式,搞得代码很麻烦,自己看自己的代码赏心悦目,别人看他的代码云里雾里;而作者的代码简洁清晰,从中很容易就可以看出业务流程。新手问作者是怎么做到的,作者说:
“我的心中只有业务,业务和代码,我认为只是英语和汉语的区别,表达的是同一个思路。而在你心中,业务是DOC上的文字,代码是你的技术表现,你老需要把业务和代码映射拧在一起,我则不需要。业务流程如何,我的代码流程就是如何。”
我以前读研时还有跟师兄合作时的设计风格真是像极了这位新手。现在我则越来越倾向于扁平化的设计,甚至“没设计”,这都是在实际的生产开发环境中,在业务中被逼出来的。不过虽说如此,自己那完美主义的本性还是比较根深蒂固,编码时还是会有不少纠结的时候,尤其是在写一个新东西的时候。去年的年终总结里也提到了这点。
一个重要原因是我一直比较钻技术钻底层,写过的业务还是比较少,尤其还没有自己从零开始写过一个完整的业务流程和业务系统——对游戏开发而言,也就是像公会、商店、背包这种游戏逻辑系统。虽说我也经手过一些业务,而且在老东家时还经手过像物品的掉落和拾取这种关键的业务系统,但那都是维护或二次开发。最近几次跟主程的聊天中,主程也说我缺乏这方面的锻炼,需要找个机会自己写写大系统。
其实我虽然一直很喜欢钻研技术原理和学术方面的东西,但对业务也是不排斥的,而且我现在越来越觉得很多时候业务才是更重要的——当你站在策划、老板和用户的角度来看待这个问题时,就会更加理解这点。所谓以业务为中心,其实也就是以目标为驱动的做事态度。另外,我觉得即便是要往技术层面发展的引擎和工具程序员,花些时间来写业务也是有必要的,因为只有这样,你提供的工具和接口才能贴近项目,真正好用,而不会成为空中楼阁,孤芳自赏。历史上的很多技术前进都是来源于实际的业务需求。
我对写业务还是挺期待的。