個人檔案人行道逆行部落格清單 工具 說明

部落格


2006/5/22

代码的味道

  每个像我这样的伪开发人员(有点像新时代的地主,只管“压迫”别人写代码)对于代码质量都有自己的见解,而且仍不停地在复杂度和凌乱度成正比的代码中找寻更加欠扁的代码,目前较为落后的也较为辛苦的评判代码质量的方法既是我目前使用的直觉判定法,眼睛就是输入器,大脑就是CPU以及parser,每天都抽出时间来“锻炼”大脑……
  久了人就会疯的,所以我也不能例外,几近崩溃的边缘,不得已寻找更为先进且能提高效率的评估方法。我一直认为10年内软件开发会和生产企业一样批量地程序化生产,而不是由高级动物来重复劳动,这就需要一套合理规范且能量化的工具,目前发现正在使用的工具基于Cyclomatic Complexity概念开发的代码检测工具,用ant启动,示例如下(太多了,就贴一部分):
  Nr. NCSS CCN JVDC Function
……
 9624   58  11    1 ctais.business.sb.cwbb2005.syb.SybSbManager.createConcreteSbb(UserInfo)
 9625   20   2    0 ctais.business.sb.cwbb2005.syb.SybSbManager.saveCwbb(String,String,String)
 9626   20   5    0 ctais.business.sb.cwbb2005.syb.SybSbManager.buildSbb(UserInfo)
 9627    1   1    0 ctais.business.sb.cwbb2005.syb.SybSbManager.checkYj()
 9628    4   3    0 ctais.business.sb.cwbb2005.syb.SybSbManager.isSbbNull()
 9629    1   1    0 ctais.business.sb.cwbb2005.syb.SybSbManager.calSbxx()
……
其中CCN即表示复杂度,比如ctais.business.sb.cwbb2005.syb.SybSbManager.createConcreteSbb方法,其复杂度为11,表明其需要11个测试用例来涵盖其全部的可能情况,换句话说,这个值越高,其出错概率也越大。
  写的比较晦涩,文笔不行,大家凑合着看吧:)
2006/4/18

A+B=AB or BA?

  有这样一种说法,男的A型血找一个B型血的老婆比较好,这是一种互补,因为A型血的大都比较冲动,搞不好两个人天天就火拼。两个同类型的人在一块容易导致共振效应,这也是管理学上的理论。
  用人首先在于选才,这个道理和讨老婆一样,讨老婆自然而然是要选择一个能和你形成互补的伴侣,才能达到最佳的效果,难怪一个公司的总裁室都是一帮一帮的,讨老婆自然就不能和设总裁一样设二房、三房,我可以很负责人地告诉你,这是违法地。
  用人第二条在于信任,不信任导致交易成本的增加,给执行带来了很大的障碍,给予适当的人适当的信任可以激励其发挥更大的效率。
  用人第三条在于深度挖掘潜在价值,学历!=能力,用人与投资一个道理,公司招聘时应先观察应聘者现有的价值,然后观察其一段时间后是增值还是贬值,最理想的状态就是低价买入,高价回报。
  这几点写得比较简略,点到为止,不做深入表述。
2006/3/4

软件开发不能一味追求理想化管理

  由于部门中项目组繁多,有幸接触了一些项目组开发的开发过程以及开发方法。发现一个比较有意思的特点,一堆人特别热衷于比较流行的软件改进过程,比如RUP以及XP,但是真正实际对于我们各个项目组是否需要好像没有人关心,大家的注意点都在先进的过程改进上。就好比MBO中很多人都容易犯的一个错误,一开始确定了一个目标之后,然后大家的目光都齐刷刷的盯着最终的目标,认为只要是先进的方法就拿过来,不管拿过来之后会产生什么水土不服。

  RUP以及XP的过程管理方法的确有其优势。比如统一规范、设计、开发以及测试驱动开发、迭代速度快、分阶段交付等等优点(目前我们也的确是这样实施,不过根据项目组的实际情况,我们实施起来显得更加松散以利于项目组人员的调配)。当然,实施这些的基础就是统一开发人员的开发方式以及开发思想,这又回到了人员管理的问题上,因而项目组在招聘新人时,我常常建议出一些主观题来分析考察应聘者的思维方式以及思维能力,而不是应试能力。对于目前我们项目组的特殊情况,人员流动大,核心骨干少且围绕我们项目组的其他项目组与我们项目组之间衔接中又出现了断层,很难做到统一一致,加入这个时候就赶鸭子上驾似乎为时过早。

  所以,我的计划的先抓人员的能力的培训,以SOP来规范开发人员中的每一个开发细节,开发方法,开发习惯。先以本组为目标实施的爆破点,如果我们组做好了,再扩展到其他组,如果其他组都做好了,整个项目组也就都做好了,这样项目组也就成熟了,再实施任何过程改进都能很顺畅的实施。就好比城市中布水管一样,在管道没有布好,基础实施没有建好的情况下,再优质、再智能的自来水也不会自己跑到每一户人家中去,只有各根水管都进入到了每一个小区、每一栋楼、每一户时,干净的自来水才能遍布全市每一个角落。