本文为《程序员》10月份稿件,先贴出部分,以吊胃口
全文将在《程序员》发稿后贴出,请勿转载。
从1995年我开始带领3个人的软件团队起,到现在也10多年了。一直以来我都在思考,如何才能确保一个软件项目能够顺利,成功的开发完成。而我能够得到的最为重要经验是:“决定一个项目成败的最关键的因素,是人!”
软件是人开发出来的,而且到目前为止,也只可能是人开发出来的。但是,在通常的,对于软件项目、软件工程的讨论中,关于人的讨论,往往被淹没在对于技术、方法、框架、过程等等话题的讨论之中。
这次正好有这样一个机会,可以把我长久以来的思考,整理出来,和大家一起探讨一下,软件开发项目中的人。这篇文章的预定读者,是项目经理,或者再高一级的 技术部门经理。一个项目组里的人是什么样子,或者最后这些人会变成什么样子,大部分是由这个项目的头是个什么样的人来决定的。
一、选人
每个软件公司都在招人,或者曾经、或者将要招人。但是,有多少软件公司,能够招到自己满意的人才呢?大家都在说现在人才难找。问题在于,有多少软件公司,懂得如何招人呢?当一个人才来你们公司应聘,你们能够发现他,而不是错过他、赶走他吗?
有些公司,根本不知道自己需要什么样的人才,于是就到网上去搜索一把,找来一堆自己都没有看过的题目。然后交给来面试的人做。绝大多数这种问题,要么特别变态,要么特别刁钻,要么毫无意义,要么只会让人觉得可笑。现在都什么时代了,还要求我们的程序员,拿着一支笔,对着一张纸来做题目?写错了一个字符,就会被扣分。拜托,现在的Google已经能够查到绝大多数问题的答案了!现在的IDE已经能够发现绝大多数的语法错误了!你们还在出这种遍历二叉树的题目?
如果你们一定要笔试,请不要出这种毫无意义的编程题行吗?
如果是我来出笔试题,我会通过笔试,考察一个程序员的描述能力,也就是把一个问题、一件事情,通过一段文字,干净利落的描述出来的能力。比如:请通过纯文字(不含任何UML图),描述一个ATM取款机的人机交互过程,以及可能出现的异常现象。通过这样的笔试,我可以考察一个应聘者的顺序思维的能力,因为纯文字的描述是线性的,通过线性的文字,描述复杂的事物,需要有一个整体性的思维,然后才能写出由上而下,层层分解的清晰描述。还可以考察的一点是:有没有错别字,这一点也许有点奇怪,但是,真的有很多程序员,不注意自己的书写,有没有错别字。这也是严谨性的一部分。
再来说说面试,据说,越是大公司,面试的次数越多。据说,面试一般在笔试之后。据说,面试能够考察很多方面的能力。事实上,大多数面试者并不知道如何面试,他们看起来煞有介事,其实也忐忑得很。
在我看来,面试主要考察的,是两个方面,沟通与表达能力,还有就是一个人的个性。通常我面试别人,都会提同样的一个问题:“说说你最近做过的一个项目,技术方面的,管理方面的。”我最希望听到的,是一个人带着非常投入的语气,像描述一场战役一样,描述他们所面临的技术挑战和管理挑战。有些人比较专注于技术,他们对于解决问题很有兴趣,因此描述起自己的那些光荣成绩来,总是很有热情。有些人比较专注于业务,他们会相当细致的分析那些具体的业务逻辑,讲解其中的复杂之处。有些人比较专注于管理沟通,如何保证项目顺利的完成,他们有很多心得。这些都很好。但是呢,往往也会听到抱怨,比如团队的沟通不好呀,人家的技术差要他帮忙呀,客户的需求没有逻辑呀,领导的管理比较混乱呀等等等等。还有些人比较注重反省,最近的这个项目,所得所失,他都会认真的、甚至是反复的去想,去总结。听这些叙述,就可以初步了解一个人:兴趣何在,是否愿意并善于沟通,是不是勇于承担自己的责任,还是动辄怨天尤人?通常,愿意反省自己的人,都会更快的进步,这是非常难得的优秀品质。
笔试、面试。其实都不足以全面的了解一个人,前者容易受困于标准答案,后者容易被当时的谈话氛围所左右。而我最推崇的判断一个程序的水平的方式,是看代码。给他几天的时间,让他去了解一个以前从来没有涉足过的技术领域,然后写一个简单的demo交上来。这样我可以考察他的:
快速学习的能力:一个全新的领域,能够在多少时间里初步掌握。
在开发速度与功能设计方面的权衡的能力:完全由他自己决定开发什么功能,什么时侯开发完成可以交给我。
代码的编写能力:代码是否好懂,这是一个重要的考察点。
以及编程的严谨性:是不是没有bug,或者足够少。
说得不客气一些,大多数公司,根本没有这样的能力,来以这样的方式招聘程序员。因为他们负责招聘的人,已经好多年都不写,不看代码了。更不要说分辨代码质量的高低了。
二、看人与用人
没有一个办法,能够保证招到合格的员工。哪怕是像我这样,通过代码来考察程序员,也难免走眼。所以,才会有通行的试用期制度。在试用期间,公司需要仔细的观察已经招聘进来的员工,是否达到要求,有没有看走眼?我遇到过许许多多的程序员,人与人之间的差别真是太大了。在这里就简单聊聊我所见识到的不同类型的程序员吧。
1、独当一面型
在我的开发生涯中,曾经有幸与这样的同事一起共事过,他们能够搞定一切,不但快,而且好。他们能够完成任务,而且往往比要求的做得更多,考虑得也更多。合理的要求,他们都会坚决的执行,而不合理的要求,他们也不会一味的盲从。就像三国里说的:“卧龙、凤雏,得一而可以安天下。”基本上这样的人才是可遇而不可求的。这样的人才该怎么用?分配的任务,越是有挑战性,他们就越是喜欢。然后尽一切可能,保证他们心情舒畅,不受无聊的干扰,专心做事就行了。
2、胜任愉快型
这一类程序员,更加懂得生活,他们能够完成给定的任务,不多,也不少,不快,也不慢。因为生活可不仅仅是编程那么枯燥的事情,还有许多值得花时间去玩玩弄弄的东西。那些没有眼光的老板,光看到他们准点下班,甚至晚来早走,却没有发现他们已经搞定了工作,早就不想蜷缩在电脑面前了。要用这样的人,其实挺难的,尤其是当你想榨取人家更多的剩余价值的时候,会遭到顽强的抵抗。合理的,可持续的“使用”,才是双赢的方案。
3、信心不足型
这类程序员其实相当的罕见,大多数我所遇到的程序员,都非常的自信,甚至过分自信的都不少。难得遇到过几个信心不足的,水平其实都挺不错的,反倒总觉得自己无法胜任手头的工作。遇到这样的朋友,通常还是以鼓励为主,实在不行,也就只能放弃了。
4、任劳任怨型
每一个团队,都需要有一个或者一些这样的“老黄牛”。一个项目组里个个都是天才,不见得就是什么好事。软件项目开发,总会有很多琐碎的,点点滴滴的小事,得有人愿意干。有些时候,项目组会受气受委屈,得有人情绪平和,不冲动、抱怨。总之,要想培养出一种成熟、稳健的团队文化,这样的员工,就会必不可少。问题在于,老黄牛可能会能力不足,还可能会倚老卖老,这个时候,就需要权衡利弊了。
5、夸夸其谈型
他们很关心趋势、潮流、技术走向、最新名词,该听说过的,他们肯定都听说过。说起来也是头头是道。模式啊、框架啊、架构啊,也是张嘴就来。但是大多数他嘴里的技术,却根本没有深入的了解和思考,经不起深入的追问。不过这种人,也是人才,不过不适合开发程序,而是去做售前工程师之类的工作。要能够唬住用户,正是他们所擅长的。
6、快枪手型
我最初就是个快枪手,能够快速的完成主线功能,但是却从来不考虑例外情况。完成了给定的功能需求,但是代码却只有我自己才能看懂(1天之内)。新的技术, 我也是很快就能上手,“Hello World”转眼就能跑出来。但是要再进一步深入专研,我的兴致就不高了。一个团队有一个这样快枪手,真是要非常的小心,才能用好。你可以分派给他各种类型的任务,但最好不要给他太关键的功能点。因为究竟会不会出bug,他是无法保证的。要花更多的时间,并且更加频繁的检查他的工作,以确保他不仅仅是完成了表面工作。更为重要的是,要不断的敲打他,督促他,逼他更加用心,努力提高。一个快枪手,也是有可能成长为独当一面的将才的。
(待续...)
分享到:
相关推荐
这一理念对现代软件项目管理产生了深远的影响。 #### 关键知识点详解 ##### 一、项目管理与团队协作的重要性 - **项目规模与复杂度**:随着项目的增大,其复杂度也随之增加。大型系统往往目标明确但实现起来非常...
这对于大规模的软件项目尤其重要,因为它们往往需要在多种硬件配置和操作系统环境下进行测试。 此外,教程还会涵盖负载测试和性能测试。通过Visual Studio 2005 Team System,用户可以创建复杂的负载测试场景,模拟...
《Visual Studio 2005 Team System专家软件测试教程节选》是一份深入探讨软件测试技术的教程,特别关注微软的Visual Studio 2005 Team System(VSTS)工具集在测试领域的应用。该教程旨在帮助软件开发团队提升测试...
这份"863计划项目节选汇编"涵盖了多个关键领域的研究与开发,包括通信技术、微电子技术、生物医学、农业科学、能源、环境治理、海洋资源以及信息技术等。以下是这些项目的详细解析: 1. 高性能宽带信息网:Tbps级...
人教初中语文《送东阳马生序(节选)》PPT课件 (2).ppt
在实际开发中,对于Tab控件,你可能需要自定义每个选项卡的内容,这通常涉及创建额外的对话框资源并将其嵌入到Tab页中。通过对话框模板ID,可以在运行时动态加载这些对话框。对于树形控件,你可能需要提供数据结构来...
本节选内容中的开发环境搭建步骤是进行STM32MP1开发的基础。Xshell6的安装为后续通过串口与目标硬件进行通信提供了便利;STM32CubeProgrammer的安装使得用户能够对目标硬件中的Flash存储进行有效的编程;而GCC编译...
这份文档汇集了“863计划”中2021年至2022年间的一些重大项目,涉及多个科技领域,包括信息通信、微电子、生物医学、农业、新材料、能源、环保以及海洋科技等。以下是对这些项目的详细解读: 1. **高性能宽带信息网...
信息化-项目管理-《项目管理知识体系指南》(节选)翻译实践报告.pdf
在软件项目管理中,“进”通常指的是不断地增加新功能、采用新技术来满足市场需求或提升用户体验;而“退”则意味着在某些情况下需要减少不必要的功能,简化系统架构,甚至放弃某些技术栈以提高系统的稳定性和可维护...
【项目管理过程简明指导】是一本由芭芭拉·卡顿编著的书籍...通过这样的实践,译者不仅可以提升自身的语言能力,还能深入理解项目管理的实际操作,这对于在信息化时代从事项目管理工作的人来说,无疑是一项宝贵的技能。
《鲁滨逊漂流记(节选)》是人教版六年级语文下册中的一个教学内容,属于外国名著单元。在教学过程中,教师应当注重多种教学方法的融合,如启发式教学、小组讨论、活动设计和拓展迁移,旨在激发学生的主动参与,营造...
《老式缝纫机维修节选》文档主要涵盖了关于老式缝纫机维修的基本知识,包括缝纫机部件的识别、线迹形成过程的解析、线的安装与调整以及故障分析与维修。以下是对这些内容的详细阐述: 1. 缝纫机部件的识别:在文档...
这篇文章是鲁迅先生的一篇散文,名为《社戏(节选)》,主要讲述了作者在一次观看京剧表演时的经历。从文章的描述中,我们可以提取出以下几个关键知识点: 1. **文化活动与社会背景**:文中提到的“募集湖北水灾捐...
【优化方案】2014-2015学年高中语文《白发的期盼(节选)》的演练主要关注的是老年人的精神赡养问题。该篇内容通过一系列的访谈和故事,揭示了老年人在物质生活得到保障的同时,精神层面的需求往往被忽视,特别是...
这份报告的第一部分节选着重关注了教育、经济参与、健康与生存以及政治赋权这四个关键领域的性别差距。翻译项目的目的是将这份具有深远影响力的报告转化为中文,以便更多的中国读者能够理解和参与到性别平等的讨论中...
人教初中语文《变脸(节选)》PPT课件.ppt
德意志意识形态(节选)讲解.pdf
2019_2020学年高中语文第二单元一滴眼泪中的人性世界问题探讨第5课雷雨节选练习含解析苏教版必修4
人教初中语文《威尼斯商人(节选)》PPT课件.ppt