从1995年我开始带领3个人的软件团队起,到现在也10多年了。一直以来我都在思考,如何才能确保一个软件项目能够顺利,成功的开发完成。而我能够得到的最为重要经验是:“决定一个项目成败的最关键的因素,是人!”
软件是人开发出来的,而且到目前为止,也只可能是人开发出来的。但是,在通常的,对于软件项目、软件工程的讨论中,关于人的讨论,往往被淹没在对于技术、方法、框架、过程等等话题的讨论之中。
这次正好有这样一个机会,可以把我长久以来的思考,整理出来,和大家一起探讨一下,软件开发项目中的人。这篇文章的预定读者,是项目经理,或者再高一级的 技术部门经理。一个项目组里的人是什么样子,或者最后这些人会变成什么样子,大部分是由这个项目的头是个什么样的人来决定的。
一、选人
每个软件公司都在招人,或者曾经、或者将要招人。但是,有多少软件公司,能够招到自己满意的人才呢?大家都在说现在人才难找。问题在于,有多少软件公司,懂得如何招人呢?当一个人才来你们公司应聘,你们能够发现他,而不是错过他、赶走他吗?
有些公司,根本不知道自己需要什么样的人才,于是就到网上去搜索一把,找来一堆自己都没有看过的题目。然后交给来面试的人做。绝大多数这种问题,要么特别变态,要么特别刁钻,要么毫无意义,要么只会让人觉得可笑。现在都什么时代了,还要求我们的程序员,拿着一支笔,对着一张纸来做题目?写错了一个字符,就会被扣分。拜托,现在的Google已经能够查到绝大多数问题的答案了!现在的IDE已经能够发现绝大多数的语法错误了!你们还在出这种遍历二叉树的题目?
如果你们一定要笔试,请不要出这种毫无意义的编程题行吗?
如果是我来出笔试题,我会通过笔试,考察一个程序员的描述能力,也就是把一个问题、一件事情,通过一段文字,干净利落的描述出来的能力。比如:请通过纯文字(不含任何UML图),描述一个ATM取款机的人机交互过程,以及可能出现的异常现象。通过这样的笔试,我可以考察一个应聘者的顺序思维的能力,因为纯文字的描述是线性的,通过线性的文字,描述复杂的事物,需要有一个整体性的思维,然后才能写出由上而下,层层分解的清晰描述。还可以考察的一点是:有没有错别字,这一点也许有点奇怪,但是,真的有很多程序员,不注意自己的书写,有没有错别字。这也是严谨性的一部分。
再来说说面试,据说,越是大公司,面试的次数越多。据说,面试一般在笔试之后。据说,面试能够考察很多方面的能力。事实上,大多数面试者并不知道如何面试,他们看起来煞有介事,其实也忐忑得很。
在我看来,面试主要考察的,是两个方面,沟通与表达能力,还有就是一个人的个性。通常我面试别人,都会提同样的一个问题:“说说你最近做过的一个项目,技术方面的,管理方面的。”我最希望听到的,是一个人带着非常投入的语气,像描述一场战役一样,描述他们所面临的技术挑战和管理挑战。有些人比较专注于技术,他们对于解决问题很有兴趣,因此描述起自己的那些光荣成绩来,总是很有热情。有些人比较专注于业务,他们会相当细致的分析那些具体的业务逻辑,讲解其中的复杂之处。有些人比较专注于管理沟通,如何保证项目顺利的完成,他们有很多心得。这些都很好。但是呢,往往也会听到抱怨,比如团队的沟通不好呀,人家的技术差要他帮忙呀,客户的需求没有逻辑呀,领导的管理比较混乱呀等等等等。还有些人比较注重反省,最近的这个项目,所得所失,他都会认真的、甚至是反复的去想,去总结。听这些叙述,就可以初步了解一个人:兴趣何在,是否愿意并善于沟通,是不是勇于承担自己的责任,还是动辄怨天尤人?通常,愿意反省
项目经理胜任力免费测评PMQ上线啦!快来测测你排多少名吧~
http://www.leadge.com/pmqhd/index.html