放弃一些我们不想放弃的

      几经折磨,我慎重决定逐步的放弃BDB在我的项目中的应用,还是改用Sqlite来实现。不抛弃不放弃似乎是近来听得比较多的话语,可是在程序员的世界里,你经常会遇到n叉路口,你需要选择,你需要舍弃。

      最近在做写程序的过程中,我感受到,写程序的人,背后需要有方法论的支持,如果能懂点哲学,那更好了。整天低头写程序,使你局限在一个小领域思考问题。特别是当你遇到一个难题时,你紧紧的围绕着它想把它fixed out,不如退一步,看一看整个貌,再审慎的看一下,这个问题真的是系统中不可缺少的一部分吗?我非就要这样实现吗?在资源有限,时间有限,精力有限,什么都有限的情况下,叫我们来做一件事情(特别是做项目,基本上都是这种情况),我们是需要取舍的。或者可以说风险的识别与管理吧

      在撰写分布式信息采集程序的过程中,我有很多的取舍的地方,比如:

1.本来想使用NxBRE做为规则引擎来实现,可我发现它的实现是基于解析xml,太烦索了,而且有些我需要的功能没有,如果我要利用它,我要通读源码,这个对于做项目而言是大忌讳。但是在发现没有更好的解决方案前我也只能这么做。正当我准备这么做的时候,机缘巧合,在使用windsor的过程中,发现brail模板引擎用的是boo,它和C#是集成的,而且可以做为动态语言来内嵌,而且提供了编译器的扩展,支持DSL,于是我转投boo门下。其实你会发现在你为了实现某样功能,转投到某项新技术下寻找是否有你需要的答案的时候,你会不断的问自己,它能实现我的要求吗?又会问自己是不是还是用原来的方案好,使用它至多多费点时间,但是肯定可以实现,不过在针对我这个具体的情况,在我深入下去不久,我发现确实它能更好的实现我想要的功能。

小结:与其说这次是我主动的选择,不如说是好奇心+机遇所造就了,因为boo是类python的语法,之前正好学过python的语法,倘若之前没有尝过python可能,一看到boo说是类python我就逃了,程序员总是喜欢拥抱自己熟悉的东西,就像你不爱和陌生人说话一样,搭讪犯除外哈。

2.第二次抉择是发生在我在深入学习boo之后,ruby下dsl盛行,.net下dsl也蠢蠢欲动,mini dsl,iron python,等等 ,为了在boo下构造dsl我可是煞费苦心啊,把英文资料都看遍了,上maillist求解,但是无奈,不甘心的放弃了,为什么,找不到一个符合我要求的例子。我的道行还够深,我不明白其中的内部机理,只会clone,不会innovation。英文水平有限,和国外程序员交流还有障碍。

小结:这次是我无奈的放弃,不放弃也得放弃,并不是我死抱着boo不放一个月三个月就能解决的,我的功能还不到那份上,或许,几年之后,当我有了其它的相关工作经验,再回来看这个问题就迎刃而解了,但对于现在的我而言,是一个无解的问题。

3.第三次抉择是我在使用sqlite之后,应该说这是一次失败的抉择。此前我曾经在一个半成品的项目DBSchema2Doc(是一个类codesmith mygeneration之类的项目)中应用sqlite,对sqlite还算有些熟悉,sqlite在sql中支持regex正则对此我的印象很深。因此自然而然的应用它了。但随后发现它不能很好的支持多线程的并发读写,只能多个读一个写。这个困扰了我。我自认为是个见多识广的人,且也很会转弯,于是转到了bdb的门下,这次真的是一个失败的经历。因为它的文档稀少,而且在做demo原型是老报些错,一直找不到解决的方法,后来在qq上经网友的指点,勉强解决了,BDB是能很好的支持多线程的并发读写,但是关于它如何应用的文档实在太少,使得你遇到问题真的不能该如何解决。但是最好我还是决定在项目中应用它,边走边解决吧。在项目后期快完成的时候,经常在读写数据库的操作上出现些问题,一些是你不想要的数据,有时出现异常。但是又找不到好的解决方案,我本来想写个单元测试好好的把BDB操作的函数再测一遍,结果刚写第一个测试多线程的用例就失败了,把各种可能的参数都试了一遍,而且死活找不到原因,最后只能是放弃了。放弃也得有过程,我决定先利用BDB还是将怎么程序做完,再最后将数据储存这块替换,虽然没有使用接口的形式来替换操作数据库,但是难度和工作量还不是太大。

总结:在以往的写程序的过程中,我没有遇到那么多难点,都是做些asp.net的应用,可能是些div+js的特效,或是想用下xml+ajax,亦或是某个控件怎么使,正则写起来有点难度,上网问问google一下,基本上的问题都可以解决。似乎还没有遇到过想做而没有做成的,不过这次的项目中真的遇到了,我也学会了很多。也算是在失败中汲取教训吧。

我希望把这个经验教训,应用到我以后的生活、学习、工作中将是受益无穷的事情。整个暑假我都在不断的选择、抉择、抛弃、放弃,从失望到绝望再到希望,经历着这种轮回。相信这种轮回,会使我更加的成熟和自信。

PS:我觉得我有做项目经理的潜质,不过这活太耗心力。

原文地址:https://www.cnblogs.com/lexus/p/1281564.html