项目带头人决定项目成员的思维

08-10-11 freeren
         

为什么我们总说,中国的程序员的OO思维不强,或者说拿着OO语言做面向过程的代码吗?

我觉得应届毕业生刚参加工作跟的负责人起太多的作用,就拿我们公司来说吧:

1、应届毕业生居多,新公司。

2、上层领导,或者叫项目经理、teamleader有从事过.net开发的,有从事过更多的是数据库开发的,还有根本就不是很懂技术的

3、这样的上层领导都会提倡面向对象,但头是挂在口头,在他们看来,语言是OO的,但是写着写着又成面向过程,很注重于实现。然后有什么问题都是首先想到数据库,动不动就是拿数据来说明对象,来说怎么样优化数据库。就没有提到怎么样才是真的面向对象,什么有的问题就想到数据库,导致设计时就是拿数据库说事,那么所有的数据库有都是实体了,就面向数据库开发了!而那些新手自然而然地会结合在学校所学的知识与现在应用的,就很自然认为是正确的方向。有时候他们会为一些貌似很灵活的却扩展性很差的创作而欢呼,总之只要能实现就先这样吧就是他们的思想!

所以我们谈OO,但是现实却是残酷的!

         

banq
2008-10-12 10:57

非常正确啊,这是一个一代人的问题,因为一代不如一代,新一代虽然受到数据库误导教育,但是自学能力强,能够改变自己,但是老一代人如果不与时俱进,没有悟性,不掌握技术演变的主要核心线索,以经验排斥新思想和方法,这些都是问题根结所在。

这里还有更深层次问题:哪些人可以做项目经理?可以提拔,哪些人在众多应聘者能够胜出?衡量程序员水平的标准到底是什么?

我在“孔子智慧和学习方法”(http://www.jdon.com/jivejdon/thread/34743.html)中已经谈到这个问题:

子贡为何比不过颜回,因为颜回可以举一反十,这个能力就是人类特有的悟性和创造力,子贡总是喜欢和人比,程序员比的不是谁知识多,谁经历过多少,而是比谁的悟性,也就是对方法论的掌握程度。

谁可以做项目经理,谁可以录用,虽然他的履历经验很重要,更重要的是他能不能将这些经验和经历上升为方法论,能否举一反三,否则,就是再多经验,也是一地鸡毛,毫无用处,反而会倚老卖老,阻碍技术进步。相反,对于经验不多的,也要看他是否有悟性,他如果能象颜回那样举一反十,就绝对是人才。

那么我们多少领导有孔子这样的智慧呢?

既然孔子的榜样模式在现实中行不通,那么西方平等竞争环境是否在现实中存在呢?其实,当前软件企业不是处于一个完整的平等竞争环境,靠关系和低价格拿项目仍然是很多软件公司生存的法宝,这样畸形的市场环境如何能促进技术发展呢?

所以,现实社会中榜样模式和平等竞争都难以普及,才造成目前楼主所说的局面。

confuse
2008-10-15 11:14

头头的升迁因素很多,也不是咱底下人能够控制的。

所以如果有了分歧还是应该适时适度的沟通,

领导主要看的还是结果,性能多快多快,功能实现没实现,因为这些是最直接的,也是最具体的,

要是谈扩展性,容错性,这些相对抽象了点。但是这些又是极其重要的,特别是对一个几年的大项目。

所以咱还是应该尽量把抽象的问题给领导汇报的具体点,例如,你就说如果程序这样做了,眼前的问题是可以解决了,但是过了1,2年,程序的可维护性级差,就面临无法控制的地步了。

这样让他认识到严重性,一般要是个好一点的领导应该是会听得进去的。如果遇上你讲破喉咙,分析利弊都无动于衷的,那你就换一片空间把。

freeren
2008-10-15 23:09

其实说到底我们目前的抽象还做得不够,说到一个功能,好的是设计一个类直接实现,如果有变动再改,又或者重写方法等。不好的,直接在原来的类里加了这个功能,这很可能就破坏了类的职责,一旦有变动,改起来特累!基本没有什么扩展性可言了。也就是说我们直接关注到了细节而没有关注抽象或者更上面的概念模型。