当前位置:首页访谈录 正文
打造精英团队 开发优秀软件
2014/4/23 11:25:53 点击: 14726

文/杨磊

又一届软件大赛胜利结束了,欣赏着同学们完成的软件作品,既感到高兴,又有一点点的遗憾。高兴的是同学们在这么短的时间内,完成这么大的工作量,而且有的团队又不乏创新,引入了一些新的技术,着实不容易;遗憾的是有许多同学参赛了,却连作品也没有交上,交上作品的,也难得有能够达到商业应用的完美作品。这意味着什么呢?这意味着同学们离走入职场正式参与软件开发还有着较大的距离。经过这几年的锻炼,特别经过正式带团队,组织开发过几个软件系统的锻炼,我有了一些小的体会,在此想与同学们分享,但愿能对大家今后进入软件开发行业有所启迪和帮助。

首先就是队伍建设,这是走向成功的基础。现代软件行业,早已经不再是个人软件英雄的时代,没有团队,在现在的软件开发行业中,几乎不可能存活。现在需要掌握的技术越来越多,一个人不可能什么都会,软件项目也越来越大,甲方要求的时间也往往要求会比较紧,这就要求我们必须依靠团队。团队不是简单的人数的相加而是不同类型人员的互补:既要有技术人员,也要有管理人员,既要有开发人员,也要有美工等。

建设团队,就要“招兵买马”,而招人就应该招靠谱的人。为什么这么说呢?因为我看到许多参赛团队最后队长成了“光杆司令”,还有的队长先当了逃兵。企业招聘,往往是先看简历,再面试、笔试,甚至上机测试等,下一步还要有试用期,一开始往往也只签一年的用人合同,选人是非常审慎的。同学们参赛也应该一样,不是一个宿舍或一个班关系不错,就凑到一起参赛了。而是应该根据任务需求,确定究竟需要什么样的人,无论是完成一个比赛,还是开发一个项目,都需要考虑谁适合做队长也就是项目经理),谁适合做系统设计,谁负责界面设计,谁负责程序开发,谁适合文档写作等等。有时候像美工这样特殊的人材可能还要到其它院系外聘。人员的面试,对于同学们来说就相对简单一些,大家都是同学,朝夕相处,彼此知根知底,对于做事马虎,没责任心,不能吃苦不能坚持到最后的,懒散贪玩、不守纪律这样的人是绝对不能要的,否则就有可能影响到整个团队。

有了团队,下面就要考虑团队管理问题,这也是许多队长们头疼的问题。队长们认为大家都是同学,有什么问题不好意思说,也不可能像企业那样有扣工资扣奖金之类的惩罚措施,更不好意思将谁开掉,那样太伤感情。我们不妨看一下唐僧那个团队,唐僧和孙悟空之间感情不能说不深,唐僧把压在五行山下长达五百多年的孙悟空解救出来,孙悟空又多次从妖魔鬼怪那里救出唐僧,相互之间都有救命之恩,而作为管理者,作为取经的队长,当队员孙悟空违反了纪律,队长唐僧毫不留情,甚至不顾自我安危,坚决开除孙悟空。这其中当然一方面是孙悟空无组织无纪律,另一方面也有管理者的问题,“没有调查就没有发言权”,但是至少反应出唐僧的管理原则性,没有这个原则性,取经的壮举就不可能成功。那后来唐僧又是怎样管理好这个不太守纪律的队员孙悟空的呢?首先严加管理,上紧箍咒,作为团队,制度就是紧箍咒,在西方现代管理中是特别注重制度管理的,在咱们中国的现代企业中,同样早已开始制度管理,要让制度管人,而不是人管人。其次呢,唐僧在认识到自己对悟空的悟解后,又潸然泪下,真诚地向悟空沉痛表达歉意,从而感动了悟空,这是要靠感情来管理团队。我曾指导过一个参赛团队,队员们晚上要加班到很晚,早上不愿意起床,队长怎么办呢?队长就早早起床,把早饭给他们买好或做好,然后再叫他们起来吃早饭,你想,谁还好意思再睡懒觉呢?

说完队伍建设,再说项目管理。一群精英未必就能完成一个好的项目。刘备、关羽、张飞可谓三个精英,可在招到诸葛亮之前,却一直没什么像样的成就。所以,在有了好的团队之后,除了对团队成员进行有效的管理之外就是针对项目的管理了。这是件神奇的事情!大家想想,再怎么宏伟的高楼大厦不都是出自那些文化水平并不高的建筑工人之手吗?他们的确是非常了不起的!但更了不起的还有隐藏在其身后的一整套管理体系。我们做软件开发也是如此。首先应该进行全面的需求分析,这其中还应该包括需求调研、用户调研、市场调研、技术调研等。我看到许多同学的参赛作品在这方面就存在很大问题,一看就显然是自己拍脑袋瓜拍出来的设计,根本不符合实际的需求,这样开发出来的软件作品就没有什么意义。

需求分析的制定就是明确目标,而有了目标下一步就是要制定切实可行的工作计划。作为工作计划,首先要有可行性而不是吹牛,也不能没有余地的拖沓。我看过一些同学做的工作计划,整个计划写得很简略,一个大的任务目标要进一步的细分并创建WBS:项目可交付成果和项目工作分解成较小的,更易于管理的组成部分的过程。如果计划写得很简略,就说明整个事情并没

杨磊老师(右三)和决赛团队同学合影

完全弄清楚、考虑得不够深入,在后续的实际管理中就会出现问题从而导致失败。计划细化后,还要有明确的时间节点,还要责任明确到人,如果再完美点的话,还应该有保障措施、备用方案,以确保整个项目万无一失。

然后就是技术可行性分析。我曾经参加过一次拓展训练,那个项目叫生死墙,让二十多人翻跃一堵四米高的墙。这个项目一开始不难,大家搭建好两层人梯,其他人爬上去,可最后剩下的两三个人怎么办呢?这就像我们在开发软件时的技术难点,可能百分之九十九的软件开发工作都完成了,而最后那百分之一的技术难点导致整个项目的失败。事实上,如果先解决掉这百分之一的问题会是怎么样呢?至少是确保了项目的技术成功率。而且可能不仅如此。就像我们参加的那个生死墙项目,逼到最后,我们终于想出了更好的更高效的方法,在最后活动总结的时候,我们总结了三点:一是不要一开始就武断地认为什么事不可能,要打破常规的思考;二是如果一开始就针对最难的问题想出了解决之道,那么这个解决之道也许会用来解决整个项目存在的问题,从而使整个项目大大提高效率;三是要首先解决一个项目中最关键的难点,从而确保整个项目能够顺利完成,绝不能抱着“车到山前必有路”的想法走一步看一步,也许那就是“压垮骆驼背的最后一根稻草”。

其实,要带好一个团队,要胜利完成一个项目,前面我所说的也不过只是几个小的方面,除此这外还有许多,比如守时守信、主动反馈、提高效率、做好服务、注意细节等。希望同学们经过一个大赛的洗礼能够真正理解软件开发究竟是怎么一回事,在今后的职场生涯中,能够打造出一支精英团队,能够开发出更多更优秀的软件。

Copyright 2007-2014 济南计算机学会.All Rights Reserved 鲁ICP备09070135号
济南计算机学会维护管理
联系电话:0531-88391234