做为一个应用程序开发人的浅谈 ---------Lucrefy的专栏

在网上时常可以看到一些人帖的“关于成功面试经验”等等诸如此类的文章。不尽想起自己的一些面试故事,不过我的故事实在没有别人的好听,姑且在这里放下吧。我想要分析的是作为招聘方的公司在招聘过程中是不是采取了有效手段,笼络到了能够成就高经济效益的工作人员。那么什么样的人才算是成就高经济效益的工作人员呢?作为一个应用程序开发人员,怎么才算是一个为企业和自己成就高效益的员工呢?

其实,我认为这两个问题是一个答案。作为一个应用程序开发企业(以下篇幅中所有的“企业”字眼均代表以应用软件产品为目的的程序开发企业)需要的是一群能够开发出高质量,高成功率项目的人才。作为员工就要具有这种能力,适应团队开发,明确自己位置和作用。这是我写这篇短文的初衷。以下是我对应用程序开发人员个人标准的一点想法。

我们还从企业的角度出发。企业用人的目的在于生产具有经济价值的软件产品。所以用人的标准应该是能够快速、优质、低成本的生产这些软件产品的人。

就目前软件的规模来看,一个成功的软件项目是不能依靠一二个人的开发就能够完成。也就是说,软件项目是依靠多人团队完成的。每个人在这个团队中都有其自身的位置和作用。打一个比方,一个项目开发团队就好像乐团一样。每个乐手都要使用一种乐器,而且不论该乐手使用的是柳琴、扬琴、阮还是琵琶,都不能独立成乐,必须和别的乐手配合才能演奏。一人出错,可能会导致整个演奏的失败。开发团队也一样,团队中的每一个开发人员都应该有自己的开发位置,并且和别人共同协作,完成项目。所不同的是在开发团队中从来没有彩排,每一次开发就是一次“演出”。所以好开发人员一定要具有良好的团队意识。

其次,一个优秀的开发人员必须对自已在所在开发团队中的作用和位置有明确认识。就像在乐团中每个演奏人员都知道自己应该在哪个小节演奏什么样的调子一样。不要认为学会五线谱就是乐团的好团员了,那是做一个乐手的基础而不是作为乐团成员的基础。一个好团员必须了解自己在乐团中的位置,并把握好自己的位置。在项目开发团队中也是一样,开发人员应该知道自己在开发队伍中的位置,在开发过程中在什么时间起到什么样的作用,深刻理解自己的职责。

  上面大概阐述了一个团队开发人员的个人素质条件。在这里想简单谈一下我对应用开发人员应该具有的个人能力和知识体系的个人认识。由于每个人在团队中的职责不一样,所以每个人都有不同的侧重点。但并不等于你可以对团队中其他人员所做的工作一无所知。适当的了解别人,特别是与你工作相关人员的工作背景,你可以更好的协调你与他之间的工作,使你的工作完成的更加出色。因此在下面知识体系一段中,我想大家可以抱着了解的态度去学习可以了。这里我只谈开发人员应该了解的知识方面,关于具体相关知识请大家自己查阅资料。

一、个人能力

很多时候在网上可以看到这样的信息,如某某公司需要某某员工,要求具有什么样的能力等。好像一种能力就存在“有”和“没有”这两种可能性。其实不然,我认为每个人都有各种各样的能力,只是你发挥的程度不同。我们说一个具有某种能力的人是指这个人能够在自然的条件下,无特别强加的意识就可以把这种能力自如的发挥出来。在现实生活中也没有必要培养全部能力,何况这也是人能力所不能及的。不过作为一个职业的开发人员,满足更好胜任工作的能力作为一种技能是值得我们刻意的培养的。我个人认为一个好的开发人员应该具有良好的协作能力、学习能力、创造能力和分析能力。

a)         协作能力

前面已经说到了开发人员一定要具有团队意识。那么团队意识是通过什么来体现的呢?就是我们现在讨论的协作能力。在现在的项目开发中往往不是先看成员的专业能力有多高(这并不等于不重视专业能力),而是看该成员有没有正确的工作态度和优秀的沟通能力。能不能和其他成员迅速沟通,共同解决问题。这就是我说的协作能力。他可以有效的控制项目的时间成本,从而节约资金,增加提高项目质量的机会。

b)        学习能力

在现在的软件开发世界,再也不是靠学一门语言就可以打天下的时代了。大量的项目开发工具、中间件产品、设计模式甚至技术理念层出不穷。这些新生儿随着时间的推移日趋成熟。它们为减少软件开发成本,提高软件质量,增加项目开发成功率起到了不可磨灭的作用。尽快了解这些先进技术,学习已经成熟的开发方法和工具,可以提高开发人员在工作中的效率和成功率。把业务水平推上一个新的台阶。

c)        创造能力

学习了新的技术技能就要应用它。孙悟空如果空学七十二般变法,却不会在需要时加以应用也会枉得虚名的。而且,使用要因时、因地、因利,不能瞎用。如果二朗神变成狗而孙悟空变成骨头岂不是自投落网。So,创造能力就是把现有知识合理加以利用,甚至变成新知识的能力,并且该新知识应该符合现有需求的需要。应用程序开发人员尤其要具有这种能力。应用项目由于涉及实际生活中的各种方面,需求也是繁杂多变的,甚至在项目开发过程中需求随时变化也是经常发生的。所以开发人员应该创造性的合理使用现有技能。这不仅可以为项目的进展起到了推动作用,也是技术魅力的精彩展现。

d)        分析能力

软件工程已经发展到了一门科学的境地,而其第一课往往就是需求分析。其实在开发过程中从业务萃取到测试部署每一个开发人员在着手工作之前或工作当中都免不了分析一下实际工作的内容。但是不是进行了透彻的分析就可以保证项目按步就班的进行了呢?一定不会,因为任何在预先看似万无一失的计划都不能排除其实际运作中出现差错的可能性。所以分析能力包括两个方面:一是在现有工作着手之前和之中的分析;二个是在现有工作出现差错时,进行错误分析的能力。一个有良好分析能力的团队可以使项目开发少走弯路,节省时间和成本,提高项目成功率。所以开发人员提高自身的分析能力就显得尤为重要。

             

二、知识体系

一个人没上过学,即使他的天赋再高,也不能完成有技术含量的工作。就想孙悟空的金箍棒,如果没人告诉他怎样使它放大缩小,它在孙猴子手里永远都是一个绣花针。对于应用程序的开发人员来讲,完整的知识体系就是金箍棒的使用手册。

知识体系应该从两个方面考虑:一方面,从整体上要了解开发过程中项目管理知识。它包括在本项目开发过程中用的是什么开发方法。在此基础上明确开发团队中每个人都处在什么角色的位置上,以及每个角色的作用。在这里特别强调的是要明确自已在开发团队中的位置和作用,确定工作职责,以及与自己工作有协作关系的其他角色和协作内容。另一方面,开发人员要掌握自己工作中要涉及的具体专业领域知识。更加熟悉这些专业知识就能游刃有余的开展工作。(由于每个开发人员所涉及的角色不同,所涉及专业知识也会有所不同,所以下面介绍的内容并不是每个开发人员都必须掌握的。)

一、              项目管理知识,以及在项目管理过程中工具的使用技巧。

现今的项目开发方法很多,如传统的RUP方法,最近流行的XP方法。这些项目开发方法各自有各自的特点,同样也各自适合不同类型的项目。不管使用什么样的方法项目涉众必须至少对它有所了解,只有了解开发方法的特点和长处,才能在开发过程中有意识的与之配合,使开发顺利进行。在这里我想指出,开发方法不仅仅是项目管理人员和项目经理应具备的知识,也是每一个项目涉众人员应该了解的知识。这就像去西天取经的四僧一样,去西天取经的目的不能只有唐僧知道,徒弟三人也应该知道。否则经是取不回来的。

另外,项目管理中会运用许多工具,如Rational系列工具,Borland Together 设计工具。这些工具并不是每个人都要学会使用的,但与工作相关的实用工具,开发人员必须学会使用。这些工具分部在项目开发的各个阶段和层面上。它们在保证项目高质量,高效率开发中起到了重要作用。所以学会使用这些工具也是必须掌握的知识之一。

二、                专业领域知识

回到我们乐团的例子中。乐团中的大阮演奏人员就要精通阮的演奏技巧。他不用了解别人(比如京胡)的演奏技巧,他只要钻研阮这中弹拨乐器的演奏技巧就可以了。或者说,阮的演奏人员在技巧上只要做好自己的演奏任务就可以了,不必关心其他团员乐器的领域知识。我们项目开发团队也是一个道理。团队中的每个人都有自己的位置和作用。为了使队员们能够在自己的位置上发挥更大的作用,就要不断的研究所在位置专业领域的知识。

这种知识所包括的范围十分广泛,软件方面的、硬件方面的、架构方面的或设计方面的,因人而异。我把它们称为非特性知识。另外,还有一部分知识需要掌握,就是系统特性的概念。这些概念是系统质量评估的指标标准。理解这些概念有利于明确工作中产品性能的最终目标,提高工作质量。这些特性概念称为特性知识。

非特性知识就像主妇的柴米油盐一样。俗话说“巧妇难为无米之炊”,非特性知识就是技术知识,没有这些知识就算你是神仙也不好使。它们组成了项目开发中各个环节的实质内容。包括了,硬件平台知识、软件系统知识、设计方面的知识、开发语言知识,甚至还包括架构模式、程序模式等诸多方面的知识。

特性知识更多是注重产品性能方面的知识。做米饭谁都会做,可要做出来的饭不湿不糊就需要一定技巧了。做了一锅糊饭给别人吃,谁也不会给你打满分。那么饭的干湿度就是饭的一个特性。同样的道理用到应用软件产品上也是适用的。客户需要的是应用产品在运行、维护以及再开发过程中,安全方面、系统的可维护性,可扩展性、系统弹性等诸多方面达到一个满意的成度。这就需要开发人员对工作相关的这些知识有一个基本认识,以便在开发过程中围绕这些特性展开工作。

                    

总的来说,企业的赢利方式都是提供优质的软件服务或软件产品。那么,为了开发出这样高品质的产品,企业就必须有一支善于开发的团队。作为一个应用程序开发人来说,不可避免的你要成为这样一个团队中的一员。维持在开发团队中的生命力迫使你必须培养这方面的能力。这种能力包括上文所诉的两个方面的素质。一是要有团队意识,二是要认识到自身在团队中的位置,并充分发挥其作用。为了提高这两方面的素质,我们要从个人能力和专业知识入手培养自己。提高在团队中的竞争力。

废话就写到这里了,以上是我个人的一点认识,如果有不对的地方还请指正!

                          菜猫(Queephel Lu

                                               200581



本文引用通告地址: http://blog.csdn.net/Lucrefy/services/trackbacks/462671.aspx

你可能感兴趣的:(其他)