程序员团队的管理:如何以及如何正确激励他们? 第一部分

题词:
丈夫看着肮脏的孩子,对他的妻子说:恩,我们洗这些或新的孩子?

在我们团队负责人以及RAS产品开发总监Igor Marnat的讨论中,减少了程序员动机的特征。

图片
成功创建出色的软件产品的秘诀是众所周知的-聘请出色的程序员团队,给团队一个好的想法,并且不要干扰团队的工作。 优秀的开发人员很少见,并且受到追捧。 一些招聘人员甚至说,他们给人的印象是,要生出一个很酷的程序员要比从市场上雇用他容易。 这样,除了雇用方面的困难之外,每个特定开发人员的经验,他对现有产品的了解以及其开发历史通常都是无法替代的,或者需要长期而艰苦的补充。 因此,如果您很幸运,并且已经有一个很酷的程序员团队,则一定要发挥他们的积极性。 雇用,培训新开发人员,从中组建一支团队几乎与分娩和抚养孩子一样困难和漫长。

考虑使用激励因素(主要是程序员团队),使用Maslow金字塔简化演示文稿的结构。 如果突然之间您还没有听说过马斯洛金字塔,这不是美国心理学家亚伯拉罕·哈罗德·马斯洛(Abraham Harold Maslow)的无可争议的但非常流行且直观的理论,他提出了基于人类需求等级的人格动机理论(见下图)。

马斯洛从生理需求到释放潜力和自我实现的需求,按等级顺序排列了个人的需求。 马斯洛理论的一个关键假设是:“一个人只有满足了下层的需求,才能体验上层的需求。” 例如,如果一个人三天没有睡觉或进食,那么他就不会受到对知识或美学需求的驱动。

图片

在深入研究细节之前,让我们先讨论一个显而易见的事实-团队由人组成,所有人都是不同的,每个人都有自己的动机结构。 除了每个人都有不同的利益驱使这一事实外,每个人的生活条件也不同。 某人正处于事业初期,正在考虑如何建立职业,某人即将结婚,某人想学习新的学科领域。 对一个人来说重要的是对另一个人完全不重要的,明天一切都会再次改变。 为了正确理解此上下文,有一种简单的方法-您需要考虑它,并且需要使用它。 最重要的是沟通。
确保与您的团队讨论工作以外的其他事情,建立非正式关系。

因此,现在让我们看一下Maslow金字塔,并考虑将其级别应用于管理一组程序员。

一:生理,生物学需求:

说到动力,很多人首先会想到薪水。 在这种情况下,我指的是薪酬方案中不变部分,而这与结果无关。 这不适用于公司的奖金,奖金和晋升。 在我们的案例中,我将工资归因于“生理需求”的水平。 奖金,根据工作成果奖金,期权和公司股份-所有这些我都会提到其他级别。

我认为,听起来很奇怪,薪水可能更是一个激励因素而不是激励因素。 与程序员一起工作的特殊性在于,他们都是所有人,首先是非常聪明的人(该行业的一项功能),其次是受过深入和/或广泛教育的人。 通常,除了他们的专业外,程序员还深they他们创建产品的一个或多个主题领域。 此外,优秀的程序员对程序的历史,算法,标准等也很感兴趣并且非常了解。 他们的学科领域也是如此。 对于这个级别的人,薪水通常不是主要的激励因素。

同时,对于程序员而言,缺乏合理的薪水会激发他们的动力,并且会极大地降低他们的动力。 有合理的薪水是常态。 薪水远高于正常水平(市场)-同样,奇怪的是,这一因素令人沮丧。 一位同事曾经告诉我,在一家大型动画美国公司中,有一个程序员团队,由于一些原因,他们的薪水是市场的两到三倍。 如他所说,他一生中从未见过更多受够了,懒惰和沮丧的程序员。 加薪可以激励短期的事实,但是几个月后,新的薪水已成为常态并且不再激励。 总的来说,对于程序员,在职业生涯初期,薪水因素更为重要,因为随着他们的专业发展和发展,薪水因素的重要性下降,其他因素开始盛行。

第二个重要点是团队工资水平上存在公平的平衡。 如果团队认为其中一位参与者的贡献明显较低,但薪酬水平没有不同,这将使整个团队失去动力。 有时,经理人很想用金钱来淹没大火-保持一个精疲力尽或动力不足的人,使他的薪水超过正常水平。 从长远来看,这通常只会带来问题-这个人自己的动力不会特别增长,或者只会增长几个月,但是团队其他成员的动力会下降。 在这种情况下,值得寻找其他方法,除非,当然,这是一位唯一的专家,即使在很短的时间内也需要不惜一切代价。

二。 对安全,舒适和生活条件的需求:

70年前,在汽车中使用炉灶可能是选择汽车时的动力因素,但当时它已超出标准,这是奢侈品的标志。 现在,即使没有空调也无济于事,并且在选择汽车时,空调的存在也不会成为激励因素。 因此,在10到15年前,办公室便利,铁质好,咖啡美味,健身,时间表灵活等。 可能是很好的激励因素,但是现在,对于优秀的程序员来说,这已经成为一种规范。 同时,他们的缺席将再次使人沮丧。

一个重要的激励因素是缺乏集中精神,嘈杂的工作环境。 程序员的工作需要沉默和专注。 如果办公空间不能为开发人员提供一个僻静的工作场所,则必须至少确保彼此不干扰的同事之间进行舒适的协作。 最好团结精力旺盛的同志,使需要它的人集中精力。

现在,程序员的时间成本明显高于他工作时使用的熨斗的成本。 两三台显示器,功能强大的计算机,为每个开发人员提供便利的工作场所-在任何公司中都应作为标准。 Joel Spolsky的一篇文章“ Joel测试:改进代码的12个步骤 ”中很好地揭示了这一主题

舒适性的物理组成部分是最基本,最简单的,现在让我们来谈谈其余部分。

在许多公司中,程序员工作的准则是灵活的工作时间表和缺乏着装要求。 如果团队的功能允许(例如,没有与客户,政客或银行家举行会议),这是好的,也是正确的。

重要的一点是当整个团队在本地一起工作时,存在特定的时间窗口,以便人们可以亲自沟通和解决问题。 实际上,程序员即使下班后也不会离开工作。 通常,不管他在办公室里有多大,工作时刻都会在他的脑海中浮现,而好的决定常常不在他的范围内。 鉴于需要良好(我们将在下文中详细介绍),控制琐事是有害的。 它不仅会降低动力,还会降低性能。 实践证明,在缺乏控制的情况下,一个有干劲的团队可能会工作超过必要的时间。 通过控制,开发人员可以将键盘从九个坐到六个,但我认为结果会更糟。 正如他们所说,一个人可以将一匹马带到浇水的地方,但是如果他不想的话,即使是一百人也不会喝水。

在对这种需求水平的描述中,还提到了摆脱焦虑和恐惧,没有混乱,对结构和秩序的需求。 这些也是非常重要的要点,会极大地影响团队的气氛。

首先,缺乏混乱,结构和秩序-团队必须了解谁负责什么,如何分配角色,做什么,谁,何时,什么是产品的核心,老板和客户的期望是什么...大多数正式描述之后,应定期讨论所有内容。 如果没有讨论和定期使用,说明将不起作用。 在发布后进行事后分析后,最好定期检查和更新它们。

其次,要有一个宁静友好的气氛。 我们所有人都将大部分时间都花在工作上,我们希望在工作中没有压力,冲突或恐惧。 开发团队通常已经在进度表和客户的压力下工作。 没有人需要同事和上司的额外压力。 通常,团队中的气氛是可以将开发团队称为“团队”,这是经理的直接和重要责任,这是最重要的中期和长期任务之一。 因此,对于经理而言,尤其是与团队中的冲突一起工作,而不是让他们的发展缓慢,很重要。 冲突管理是一个单独的主题,值得单独研究。

影响团队情绪状态的主要方法有两种,即同事的行为(如果有人添加评论,那会很好)。 首先是自己的行为。 个人榜样对于经理和团队来说非常重要。 正如他们所说,教区就是流行。 表现出您期望的同事表现。 第二是提倡正确的行为,也可以说是提倡错误。 与人沟通,给他们反馈,有很多方法可以做到这一点。 通常,反馈是另一个讨论的主题,它是激励工作的重要组成部分。

关于大气的另一种说法,这看似不寻常,但实际上很重要。 通常,开发团队中的女孩少于男人。 通常球队是完全男性的。 在这种情况下,即使在负荷很大的情况下,有时也会在团队中使用淫秽词汇。 实践表明,这会对大气造成负面影响,沟通逐渐变得不礼貌。 您应该避免自己使用它,而不鼓励在团队中使用它。

开发团队通常称为R&D(研究与开发),而研究是工作的重要组成部分。 这是通常很难编程和计划的部分,否则就不会进行研究。 重要的是,团队有权犯错,采取主动,尝试可能会成功或可能不会失败的各种选择。 错误是工作的正常部分,无法避免,但是您可以学习,分析并从中学习,以备将来之需。 起源于丰田的原则5为什么要帮助找出问题的根本原因。 惩罚错误是营造恐惧和不安全气氛的好方法。 唯一的例外是,根据分析结果,发现错误是由不专业的工作态度引起的,在这种情况下,可能有必要做出人为决定。

团队的气氛非常受您的期望,谈话开始之前的情绪状态的影响。 在开始艰难的讨论之前,进行某种形式的汇报或只是进行情感交流,您的态度,对与您交谈对象的态度很重要。 我总是默认情况下思考,并根据一个人真诚地努力做到最好的方式行事。 如果您发现情况并非如此,则需要冷静,透彻地了解情况并了解他的所作所为,他为什么认为这是对的以及我们的期望有何不同。 通常情况下,事实证明他们并没有真正的分歧,只是他对上下文的看法更加完整或新鲜,而您却一无所知。 或者,相反,他不知道什么。 当人们不太可能亲自交流,使用邮件和即时通讯程序时,这在分布式团队中尤其重要。 对于由不同国家的程序员组成并且分布在不同时区的团队来说,这一点尤为重要。 在这里,文化差异开始发挥重要作用。

在困难的情况下,飞行非常简单,非常简单,但是很难撤回,沉积物会保留很长时间。 我将从最近的经验中举一个简单的例子。 一位团队经理急需来自另一个国家/地区的相邻团队的经理对客户问题发表评论。 他在信使中对一个同事执行ping操作,等待15分钟,再次执行ping操作,然后在15分钟后进行了一次大聊天,其中有其他经理,然后轻轻地遇到了一个同事,其措辞如下:“因为您不愿意回答我,也许,问题不是那么紧急吗?”。 结果,事实证明我们的公司使者有点呆板,而同事根本看不到这个问题。 我不得不道歉 总的来说,从好的开始是更好的。 总是可以犯一个错误,然后再运行一次,这样做没有问题(尽管您不应该这样做)。 通常,在我们行业从事20多年的工作中,我只遇到一次非常恶意的同事(!)。 幸运的是,我们很快分手了。 在大多数情况下,同事都希望在其上下文的视线范围内达到最佳。

作为经理,您的任务是确保上下文同步,对标准团队采用的期望,要求和截止日期的共同理解。 看起来有些琐事,但团队中的气氛正是由这些琐事造成的。 从分布式团队的角度来看,重要的任务之一是确保团队成员的定期个人沟通。 我经常从程序员那里听到消息,例如,在支持团队的工程师来找他们并亲自合作之后,他们很乐意继续工作,以便为最近遇到他们的帕夏(Pasha)亲自提供帮助。 Pasha只是信使中的一个偶像,没有人会为了这个偶像而流连忘返。

顺便说一句,我谈到了支持团队,并想起了一个典型的例子。 不知何故,美国的一位客户对产品有问题,为他工作的支持团队工程师之一(从俄罗斯派出)在下班后仍在提供帮助,但问题没有得到解决,也没有得到解决。 总的来说,他徘徊并坐在那里,直到早晨。 这时,客户经理将问题升级,确定对他们的重要性,并在晚上下班。 升级过程已经在另一个时区获得了动力,俄罗斯的支持经理开始尝试提供帮助,原因是与客户办公室的沟通存在一定困难(VPN,沟通问题,国家之间的通话困难...),他们不知道那个家伙已经在坐了在办公室解决问题,并试图找到他。 仅在早上(美国人)发现该问题,当时他已实际解决了问题,并获得了收益。 他们开始碰上采石场,这是怎么回事,客户有这么大的升级,什么都没做,他在哪里抱着你,我们找不到你,等等。 不用说,由于这种行为,这家伙非常沮丧。 组建一个分散的团队是一个单独的大话题,但是要牢记两点。 首先,沟通,气氛非常重要,工作的成功取决于它。 其次,这不是单独起作用的,必须单独和深入地处理。

与这一需求水平相关的另一个重要点是工资。 并不是说薪水的大小,而是某种变化顺序的存在。 公司应该有一种方法来确定不同级别的职位要求。 每个开发人员都应该能够与公司讨论对他的工作的期望,以了解他的工作方式以及何时能影响他的薪水。 与经理定期举行会议,每半年或每年进行一次认证可达到此目的。 再次,这是那些时刻没有明确地激励他们,但缺席的那些时刻之一。

从秩序的需要和规则的可用性出发,随之而来的是必须遵守这些规则,并遵循团队通过的正式和非正式规则。 通常,我会称呼她“变得很好”。 这种需求的存在证实了不需要微管理,而是有害的。 足以为一个人提供工作所需的一切,让他了解背景,优先事项,并在他的水平上提供行动和决策的自由。在这种情况下,他会感到有信心,有能力做出自己的决定,对自己承担责任并能够发挥自己的潜力。

应归因于对秩序的需要和混乱的另一个重要点是专注于任务的能力,没有频繁的上下文切换。程序员的工作需要时间和精力。程序员真的不喜欢紧急放弃一项任务而切换到另一项任务。程序员工作的必要部分通常不仅是代码本身的开发,还包括错误修复和帮助处理客户的请求。值得事先计划这些事情,以使程序员能够冷静地完成一个任务之前的工作,然后再切换到另一个任务。最好的选择是让您有机会自己计划工作,提前确定优先级和即将发生的任务,分配较长时间来处理一种类型的任务。该主题在“Google-网站可靠性工程 ”,它很好地描述了计划团队工作的方法,以确保大型,高负荷容错系统的运行和开发,以及根据其性质将软件开发及其支持相结合的工程师。

待续...

Source: https://habr.com/ru/post/zh-CN452598/


All Articles