从项目管理到程序语言

  写写自己对系统开发的一些认识。

  个人认为,目前一个成熟的面向企业应用的软件开发组织,如果想很好的完成一个系统,必须包含以下几项要素:1、项目管理;2、软件工程;3、框架;4、合理的编程语言。而一个IT人才要想在此行业有所发展,则需要反向发展,由编程语言学起,直到可以对一个大型项目进行项目管理

  一、项目管理

       本人所在公司的IT部门已经成立11年了,可项目管理方面做的依然十分薄弱。但毫无疑问,项目管理的好坏在很大程度上左右的项目的成功与否。没有很好的项目管理,会导致项目出现很多状况,下面举几个例子:

       1、沟通不足

          我曾见过很多新进员工头一次给用户打电话时颤抖的双手,这从一定程度上说明了程序员天生的内向性格,但也说明了很多软件组织面临的问题,即程序员的沟通能力普遍偏低。在自己老板和客户的双重压力下,很多必要的沟通都不能及时进行,以至于在项目进行中总是出现各种不愉快的事情。

       2、责任不明确

           当项目出现延期或其他状况时,应该由谁负责呢?这是个十分重要的问题。但项目管理没有做好的话,责任就变得模糊不清。例如测试问题,用户只期盼结果,但殊不知这个结果必须由他们仔细验收才行。在沟通不足的情况下,如果不能很好的要求用户配合测试,结果可想而知。程序员催着用户赶快测试,而用户却推脱没有时间的情况比比皆是

       3、进度难以控制

           面对需求的不断变更,程序员的懒惰,技术难题甚至各种人员的离职,你是否已经做好了各种应对准备?如果没有很好的进度管理,这些都会使你手忙脚乱,痛苦不堪。最重要的是,最终无法达成交期,造成项目失败。

       当然还有很多状况,在这里不做一一说明。总之,项目管理对于整个软件项目来说至关重要。

二、软件工程

     在这里谈谈以面向对象为指导思想的软件工程。我曾经在Oracle ERP开发团队呆过一段时间,那是全套的面向过程的方法。而现在面向对象的思想如此火热,于是我坚定的站在了面向对象的阵营中。即采用用例来捕获需求,采用OOA来进行系统分析,采用OOD来进行系统设计,采用面向对象的语言进行开发。OOA的过程中,要懂得使用分析模式,而OOD的过程中要懂的设计模式。在不断的项目经验积累中灵活的运用这些知识,最终达到运用自如的境界。

     曾看过一位高人解释对面向对象的理解,感觉说的很好:UML是形,OO是神。如果要把面向对象的开发过程分几层来划分的话,则最高层就是UML,第二层是OO,第三层是CMM

三、框架

     在这里,我鼓吹使用WCF+ORM+(Asp.Net/WinForm/WPF/Office Add-in)的框架模式。当然框架也是分层的,我现在采用的是5层模式:

     1、表示层

      运用Asp.Net、Winform、WPF等技术编写客户程序。但这里强调的是框架级的,即写好了各种自定义组件。

     2、业务层

      根据各个系统的业务逻辑,设计业务层。这里也是框架级的,有一定的模式可遵循。

     3、服务层

      一个企业组织可共用一个服务层,这个服务层通过WCF机制业务层通信

     4、持久层

      用ORM工具搭建一个持久层(强烈支持ORM~~)。

     5、数据层

     各种对象映射出的表、以及表自身的各种存储过程。注意,这里不提倡写与业务有关的存储过程。

 

     如果一个有这样的一个成熟的框架,则对系统开发来说是事半功倍的。我所在公司近10年尚没有形成这样的一个框架,不知道其他软件开发组织的状况如何。

四、编程语言

     我目前选用的的C#,当然如果开发WEB程序,还必须会CSS、HTML、JavaScript,在一个软件项目开发团队中,没有熟练的开发人员是不行的。至少要有一名是技术能手,可快速的开发并指导团队其他人员。而对于一个程序员来说,编程语言也是必须掌握的机能。我个人认为,一个程序员至少应精通一门语言、掌握另外一种语言。

 

反过来讲,一名程序员只有从掌握编程语言做起,一步一个脚印才能做到项目经理这个位置。我的理解,经理以行政手段管理项目经理,项目经理以项目管理的手段管理项目(包括项目团队成员),分析师与架构师用软件工程的方法进行分析与设计,程序师用健壮优秀的语言并按照设计文档编写代码。这构成一个项目开发的完成层次关系。

 

 

 

posted @ 2010-09-28 15:40  智会超  阅读(2166)  评论(4编辑  收藏  举报