关注软件开发项目中的人.doc
关注软件开发项目中的人 从 1995 年我开始带领 3 个人的软件团队起,到现在也 10 多年了。一直以来我都在思考,如何才能确保一个软件项目能够顺利,成功的开发完成。而我能够得到的最为重要经验是:“决定一个项目成败的最关键的因素,是人!” 软件是人开发出来的,而且到目前为止,也只可能是人开发出来的。但是,在通常的,对于软件项目、软件工程的讨论中,关于人的讨论,往往被淹没在对于技术、方法、框架、过程等等话题的讨论之中。 这次正好有这样一个机会,可以把我长久以来的思考,整理出来,和大家一起探讨一下,软件开发项目中的人。这篇文章的 预定读者,是项目经理,或者再高一级的技术部门经理。一个项目组里的人是什么样子,或者最后这些人会变成什么样子,大部分是由这个项目的头是个什么样的人来决定的。 一、选人 每个软件公司都在招人,或者曾经、或者将要招人。但是,有多少软件公司,能够招到自己满意的人才呢?大家都在说现在人才难找。问题在于,有多少软件公司,懂得如何招人呢?当一个人才来你们公司应聘,你们能够发现他,而不是错过他、赶走他吗? 有些公司,根本不知道自己需要什么样的人才,于是就到网上去搜索一把,找来一堆自己都没有看过的题目。然后交给来 面试的人做。绝大多数这种问题,要么特别变态,要么特别刁钻,要么毫无意义,要么只会让人觉得可笑。现在都什么时代了,还要求我们的程序员,拿着一支笔,对着一张纸来做题目?写错了一个字符,就会被扣分。拜托,现在的 Google 已经能够查到绝大多数问题的答案了!现在的 IDE 已经能够发现绝大多数的语法错误了!你们还在出这种遍历二叉树的题目? 如果你们一定要笔试,请不要出这种毫无意义的编程题行吗? 如果是我来出笔试题,我会通过笔试,考察一个程序员的描述能力,也就是把一个问题、一件事情,通过一段文字,干净利落的描述出 来的能力。比如:请通过纯文字(不含任何 UML 图),描述一个 ATM 取款机的人机交互过程,以及可能出现的异常现象。通过这样的笔试,我可以考察一个应聘者的顺序思维的能力,因为纯文字的描述是线性的,通过线性的文字,描述复杂的事物,需要有一个整体性的思维,然后才能写出由上而下,层层分解的清晰描述。还可以考察的一点是:有没有错别字,这一点也许有点奇怪,但是,真的有很多程序员,不注意自己的书写,有没有错别字。这也是严谨性的一部分。 再来说说面试,据说,