《告别失控:软件开发团队管理必读》一一2.5 工作地点与关系

2.5 工作地点与关系

近年来,软件开发管理的复杂度比以前大了很多。也许你很幸运,仍然保持在简单的环境中,但这样的日子很快就不会再有了。即使现在不受影响,早晚都会受到影响的;否则,你的企业将不再具备竞争力。

以前,听到的问题都是:“去哪里找一个程序员来做项目?”后来逐渐开始思考是招聘现场全职雇员还是招聘合同工的问题。现在,在哪里完成工作、怎样完成工作往往涉及大量的决策,需要仔细考虑。

通常,这些决策不由你来做出,它们可能是由你的领导或者项目情况而定的。无论如何,要想取得成功,必须解决好工作地点和工作关系的多样性问题。

管理中可能涉及的程序员工作地点与工作关系的情况有以下5种:

内部雇员(in-house employees);
远程雇员(geographically distant employees);
合同工(contractors);
合同管理团队(contracted managed teams);
外包公司(outsourcing companies)。
可以将这些类型的关系视为一组“约束关系”,排序的依据就是相应的约束程度。约束力度越大(对内部雇员的约束力度最大),你对程序员工作的控制力和能见度就越强;约束力度越小(对外包公司的约束力度最小),所需做的间接管理工作就越多,通常只能通过规格说明和交付成果进行的,而无法直接管理人员。

2.5.1 内部雇员

本章已讨论过的大多数工具都是为内部雇员设计的。招聘内部雇员意味着你和你的公司为了使雇员好好干活,除了支付报酬之外,还要明确承诺提供一系列经过商定的额外待遇以及专属的工作环境。这是一种常见的合同。

但合同中还包含许多隐含的假定,至少根据我们的经验是这样。内部雇员希望能干一番事业,而不仅仅是打一份工。因此,你还必须考虑为他们提供:

专业技能的提升和职业的成长,以及能够对此产生促进作用的机会;
定期的反馈;
就公司新闻和大事的交流;
有待发现的、几乎无穷无尽的其他需求。
不过,如果你能和内部雇员建立起密切的关系,就可以大大减少有效管理所需的沟通。

2.5.2 远程雇员

从根本上讲,远程雇员的管理方法与内部雇员的管理方法是一样的。你仍然要满足他们的众多需求,他们也仍然要好好干活。但管理这种不常见面或定期碰头的雇员时,传达指示和沟通交流都会更麻烦。

Evans & Sutherland(E&S)的创始人,曾告诉Mickey一种如何有效判断沟通难度的方法:

沟通的效果,在国内,是距离平方的倒数,跨越了国界,就是距离的立方的倒数。

——David C. Evans
根据我们的经验,这条经验法则很正确。我们见过太多因为对方不在身边而沟通失败的例子了。距离越远(楼下、相邻的楼中、相邻的时区、世界的另一端),沟通越困难。如果这种距离是跨国的,由于时差、语言和口音的挑战以及文化的障碍等影响极大,沟通受到的妨碍往往更大。

因此,当你准备招聘一名远程雇员(或者有雇员即将迁居其他州或国家,而你打算留用他)时,一定要了解为了保证足够的沟通,所需要做出的努力。即使你已经预料到远程管理很难,但实际的难度可能会超出你的想象。

远程雇员的另一个问题是,他们所能从事的项目类型几乎肯定是受限制的。也许你的公司或组织能提供很多项目供远程程序员独立工作,但大多数公司都不是这样的情况。只有很特别的程序员才能超越时空的束缚,与远程的团队紧密协作并获得高效的产出。在招聘远程雇员之前,请确保他是这种特别的程序员,或者你有足够多的、很大程度上可由他独立完成的项目。

2.5.3 合同工

决定雇用合同工而不是全职雇员,不能随随便拍板,通常需要视具体情况而定。如果某项任务工作量很有限,或者全职雇员全都没有时间来完成,那么雇一名合同工是不错的决定。

根据定义,合同工是以获取报酬为目的而帮你干活的“枪手”。合同工不应有隐含的需求。开工前,所有的需求都必须在合同中阐明。

在我们讨论的各种关系中,公司与合同工的这种关系一般是最简单的,简单的原因在于,它可以随时终止,而不需要任何理由或提醒[4]。但这并不是说这种关系不可能变得复杂。如果变得复杂了,毫无疑问是你的过失。你应当制定规则并适时做出决策。

那这种简单的关系怎么会变得复杂呢?通常是由于你并没有按照合同工的经典定义,找合同工做某项具体的工作。很多时候,你想要找的是全职雇员,但暂时找不到合适的或者不确定已找到的人是否合适,于是,你就先招了一个合同工,但却将其视为全职雇员来对待,这就会导致合同工也有了类似于全职雇员的隐含需求,而这些需求有时经过诉讼会得到法庭的支持。因此,在我们担任过经理的公司中,人力资源部门和法律部门都明确要求程序设计经理不得为合同工提供额外的福利(衬衫或者外部的团队活动)。

所以,请特别留心你为合同工设定的需求和待遇。要将他们视为拿报酬的枪手来对待,不要因为他们的待遇不同于全职雇员而不安。他们不是雇员。

2.5.4 合同管理团队和外包公司

我们认为一线的程序设计经理不应当接受管理外包关系的任务,因此外包团队和公司的管理问题本书不拟讨论。外包管理需要专门的技巧和格外的小心。当项目的某一部分可能需要外包时,只有在你能得到具有这方面管理经验的人士的帮助与支持的情况下,才可以选择接受外包。否则,接受外包会连累身为程序设计经理的你。

管理外包资源本身就是一份需要全身心投入的工作,第5章将讨论从海外合同工那里获得价值的挑战。

时间: 2024-10-20 18:13:38

《告别失控:软件开发团队管理必读》一一2.5 工作地点与关系的相关文章

《告别失控:软件开发团队管理必读》一一第2章 理解程序员

第2章 理解程序员 告别失控:软件开发团队管理必读从许多方面看,程序员之间的差异都非常大,只有很了解程序设计的人才能完全理解这一点.大多数公司的高层管理者对所有的程序员一视同仁,这是一个可怕的错误.微软公司的Bill Gates和Adobe Systems公司的John Warnock都没有犯这样的错误,因为他们俩本质上也都是程序员. 这种差异为什么很重要?也许不应该很重要,但事实上,这种差异真的很重要.历经多年的程序员管理工作之后,我们仍然惊叹于程序员之间的巨大差异,需要有区别地进行问题处理和

《告别失控:软件开发团队管理必读》导读

前言 告别失控:软件开发团队管理必读 软件开发常常被认为是难以管理的.进度安排和费用预算完全不靠谱的软件项目比比皆是.规范化的软件开发实践对这一状况有所改善,但也未能真正解决问题.我们软件开发行业已经积累了超过60年的技术经验,并已经投入了大量的时间,以及美元/日元/卢比/欧元来尝试把管理规范化,但为什么软件开发至今仍然如此难以管理呢? 本书用一个简单的观察结果来回答这个长期存在的问题:管理者首先必须学会管理程序员和软件团队的技巧.也就是说,必须学会了解员工-如何聘用他们,激励他们,进而领导他们

《告别失控:软件开发团队管理必读》一一1.1 程序员都做什么

1.1 程序员都做什么 首先,程序员的工作很有趣!Fred Brooks在软件工程的经典名著之一<人月神话>[6]中很好地总结了程序设计充满乐趣的原因. "第一,是纯粹的创造的愉悦--""第二,是做出对其他人有用的东西而带来的快乐--""第三,是设计组装谜题一样环环相扣的复杂部件,并观看着它们巧妙地运转而产生的吸引力--""第四,是持续学习的乐趣,这来源于任务的无重复特性--""第五,工作的对象是可以自由

《告别失控:软件开发团队管理必读》一一1.2 成功的程序设计经理为什么难当

1.2 成功的程序设计经理为什么难当 大多数杰出的程序员并不热衷于当其他程序员的经理.他们知道团队需要软件经理,但乐得让别人来做实际的管理工作.他们通常不喜欢管理人员或项目. 管理程序员是很难的!"管理程序员很像是在放牧一群猫"--这句话常被引述,它揭示了高效.成功的程序设计经理难当的本质原因.猫的自由主义.个人主义色彩浓厚,而且狡猾.贪玩.好奇.独立.程序员也一样. 根据我们的经验,非常能干的软件经理是很稀少的.而只有这类很少见的软件经理才能成功地管理无拘无束的程序员并且乐在其中.

《告别失控:软件开发团队管理必读》一一2.7 个性特点

2.7 个性特点 程序员除了具有不同的类型之外,还普遍存在着个性特点.特质和习惯,这些因素各自都面临着一些挑战. 学术界有着许多关于个性.如何对个人进行分类以及如何管理个性的理论.在这些理论中,迈尔斯和布里格斯的工作值得花一些时间来理解,他们俩在1942-1962年间建立了个性测试的理论基础,并提出了对个性进行分类的体系.迈尔斯-布里格斯类型指标(Myers-Briggs Type Indicator,MBTI)个性清单的作用是,使C. G. Jung描述的心理类型理论易于理解,在生活中更实用.

《告别失控:软件开发团队管理必读》一一2.2 程序员的类型

2.2 程序员的类型 为了选择合适的职员,我们还需要理解另一种看待程序员的方法.在上一节讨论的几种类型中,我们侧重考虑了程序员所从事的工作的类型(即客户端.服务器.数据库.Web).实际上,从技术知识.实践经验和程序员的专长角度去考虑也是很重要的,按这样的思路可以把程序员分类为: 系统工程师/架构师:系统程序员:应用程序员:非真正意义上的程序员. 2.2.1 系统工程师/架构师 在所有开发类职员中,系统工程师/架构师是最有技术和经验的.要想理解所有相关的系统组件(操作系统.通信系统.数据库.在线

《告别失控:软件开发团队管理必读》一一2.9 工具

2.9 工具 我们为团队管理提供了许多辅助工具.电子表格和Word文档提供了完整的示例,稍作修改即可用于你自己的组织.全书最后的"工具"部分给出了工具网站的链接,在那里可以下载下列工具: 程序员级别样例:各程序员级别的职位描述样例:独立合同工协议样例:角色和排名系统.

《告别失控:软件开发团队管理必读》一一2.4 程序员的工作要求与能力

2.4 程序员的工作要求与能力 要想成功地招聘和管理程序员,首先要认识到每个程序员都有其独特的能力.就像雪花一样,任何两个程序员都不会是完全一样的.我们常常会说,程序员之间写代码的能力可能相差一个数量级.这种差异是怎么出现的呢?教育.经验.天赋以及直觉,还有其他无形的因素,都有可能导致这样的差异. 多数程序员不需要借助显式的排名或者头衔,从直觉上就能理解同行之间的差异.但是如果能把程序员的类型与等级正式记录下来,并简要描述每种类型与等级的职位要求与能力(见表2-1),那么管理工作将会轻松很多,项

《告别失控:软件开发团队管理必读》一一2.1 程序设计工种

2.1 程序设计工种 了解程序员的第一种方法是分析他们的程序设计工作可以归为哪些类型.程序设计工作通常有下面4种类型: 客户端程序员: 服务器程序员: 数据库程序员: Web开发人员及其他脚本编写者. 当然,可能有许多特殊的程序设计工作难以确切地归结为上述某种类型.但总的来说,这4种类型已经覆盖了世界上的绝大多数程序员,其中每一种程序员擅长的问题解决方法.使用的工具以及侧重的产品方向都各不相同.一些极有天分的程序员能够胜任所有工作,但大多数程序员认为自己虽然能完成所有的程序设计任务,但其实最多只