JH Rainwater“如何放牧猫”:程序员的种类及其繁殖的特征



关于整体管理人员已经有很多说法(根据很多人的说法,已经足够了)。 关于管理程序员,要考虑到他们任务的细节,工作的组织和团队内部的关系,要少得多。 任何试图总结和分析您在IT环境中工作的人,作为开发人员和作为管理人员的经验的尝试,对于那些准备采取同样的方式并困惑如何将通用管理理论应用于程序员的现实的人们来说,都是特别有价值的。

老派程序员J. Hank Rainwater是知道技术领导者角色徒劳无功的人之一,因为他们自己就漂浮在其中。 他的书“ 如何放牧猫 ”着迷于客观性:它描述了每个人都熟知的特定情况,团队的不同组成部分和工作条件,甚至描述了作者的技术解决方案(不幸的是,已经过时了)。 在简短的系列文章中,我们计划涵盖本书中最有用和最相关的所有内容-从员工类型到与其他团队沟通的建议。

首先提出一个合理的问题:为什么实际上是猫? 作为解释,作者本人引用了海伦·阿尔曼(Helen Alman)的一句话,后者在她的《接近机器》一书中对此类推:
“我与项目经理的熟识中,有一次将管理程序员的过程与放牧相提并论。 他想说,忠实地看着眼睛的狗绝对不需要。 一个好的程序员需要与他所有的怪癖一起受到赞赏。 另一方面,所有这些优秀的程序员都需要以某种方式朝着一个方向发展。”

首先,程序员与猫有关,因为两者都不存在天生就容易误入歧途。 他们喜欢独自行走,并且在IT领域发展的文化长期以来一直在鼓励这种行为(或者至少没有阻碍这种行为)。 因此,技术经理面临着一个双重困难的任务:将一个人组织成一个或多或少有凝聚力的团队,而又不违背他们的个性,最有可能的是,您必须磨练自己与人合作的技能。

Rainwater对目标受众的定义如下:管理层的新手(昨天担任领导职位的开发人员),从事中小型企业几个项目的小团队(最多10人)的领导。 在更大范围内,某些技术将不再起作用,而更有经验的技术领导者可能已经为自己学到了很多东西。 该书旨在帮助领导者在最紧急的过渡时期为未来的变化做好准备。

如果从广义上看,新手经理面临两个主要问题:新职位从根本上改变了其与人互动的机制,其次是与流程的互动。 稍后我们将详细讨论第二个问题,但是应该立即提及一个常见错误。

许多人无法接受他们将不得不放弃与编写代码有关的部分任务,而程序员越强大,这种抗议的感觉就越强烈。 对团队生成的所有代码的新责任感使情况更加恶化。 结果,经理没有将时间和精力重新分配给行政工作,而是全神贯注于对项目技术方面的担忧-他亲自进行了所有检查,认真检查了设计,甚至重写了不成功的片段。 最持久的做法是忽略了与代码没有直接关系的所有其他职责,结果以灾难告终。 头脑更清醒的人变成了狼人:白天是领导者,晚上是程序员,而结果是精疲力尽。

因此,技术负责人要做的第一件事是认识并接受工作结构变化的必然性,并在相当长的“分手”时间内进行调整。 作者估计适应期约为6个月-直到此时,大多数人才开始适应新角色并开始对此感到自在。 人们对“技术”的定义不是一个空洞的事实感到欣慰:领导开发人员的人根本负担不起完全摆脱使用技术的负担,因此无需担心管理活动会取代它。

现在,让我们继续探讨变化的第二个源头-与人共事。 在领导职位上,程序员不仅必须与团队成员相处,而且要粗略地说,将他们用作资源-确定谁有能力,并将这些技能引导到最需要的地方。 因此,任务分为两部分:您需要能够了解人们并能够与他们交流。

为了帮助读者理解第一段,Rainwater根据自己的经验和观察对IT猫的“品种”进行了分类。 他的品种清单总结了定期出现的开发人员类型,这些开发人员具有鲜明的特征,优点和缺点。 像其他任何类别一样,不应将这种分类视为绝对标准-在野外,类型经常混合和交叉,变得越来越不明显。 但是,这是分析程序员的智力和个人特征的有用起点。

作者将品种分为三类:普通(最常见),稀有(偶尔捕获)和杂种(以其原始形式携带的价值低于总质量)。

常见品种


建筑师

大多数管理人员的最爱。 它着重于代码的一般结构,从分析和抽象构造到代码中针对它们的特定解决方案的实现。 力量-它产生好的想法,有时甚至可以独自领导一个项目,从设计到最终的形式(尽管在概述总体结构后,有些人会失去兴趣,而将“手工艺”工作交给了下层开发人员)。 弱点-通常,它会生成带有令人迷惑的,晦涩难懂的代码,且代码设计奇怪,只能服从所有者,很难提供外部支持。

建构主义者

他从编程过程本身中获得真诚的愉悦,并努力取得良好的结果。 战略规划通常是无动于衷的,代码是凭直觉编写的,对通用逻辑的思考不多。 在短距离内,这不会造成太大危害,您可以依靠构造主义者的工作质量。 当项目发展时,内部逻辑的缺乏通常会开始受到影响,并且会使用“补丁”决策-我们记得,建构主义者非常注重结果。 与建筑师一起工作非常好。 文件很不情愿(“一切都清楚了”),但由于头部足够持久,所以声音很好。

艺术家

我也知道编写代码的乐趣,但是它的要素是为实现给定要求而寻找出乎意料的优雅解决方案。 通常,有了逻辑和组织,就没有问题。 主要缺点是对艺术和实验的过分热爱,这会鼓励您扩展简单的任务并破坏截止日期。 它与架构师和构造主义者都有一些相似之处,但通常以其鲜明的个性化编程风格脱颖而出。

工程师

将软件开发视为硬件组件的虚拟模拟,并随之而来。 他非常喜欢将彼此组装在一起,将完全不同的模块组装成一个复杂的结构,以便一切正常工作,并在构建的系统中找到第三方解决方案的场所。 技能当然是有用的,但是有一种方法可以让工程师发疯,复杂性本身就可以终结。 过于复杂和缺乏产品灵活性是该品种的两个漏洞。

科学家

与艺术家相反,他认为编程是一门精确的科学-他试图在所有事物中遵循基本原理并避免“堵嘴”。 非常精疲力尽,力求使代码完美无缺,并在任何条件下都能实现正确的操作,通常会损害实际考虑。 像工程师一样,他倾向于使所有不必要的事情复杂化。 但是,当涉及到需要细心和知识的真正复杂的任务时,他是没有代价的。

利哈奇

它把速度放在首位,包括代码质量。 忽略琐碎的事情,如评论,正确的设计,遵循公认的规定。 乍看之下,它提供了很好的工作结果,但是深入的测试却发现了很多问题。 可悲的是,这个品种是由领导者自己培育的:烧焦器通常是从年轻的程序员那里获得的,他们被灌输了错误的优先级,并且害怕达不到期望。

稀有品种


向导

在现代术语中,巫师通常被称为摇滚明星。 承担最艰巨的任务并进行管理,找到解决问题的革命性方法,准时,高效地完成所有工作。 即使维护了他的代码,通常也不会出现特殊的困难。 总的来说,一切看起来都很棒,但是技术负责人需要在两个方面保持开放。 首先,不应过度依赖巫师-包括领导者在内的整个团队都冒着为一名员工跳舞的风险。 其次,您需要做好准备,向导有一天会令您失望,这一事实-没有人能够始终如一地创造奇迹。 这样的机会应该保持冷静,并有一个备用计划。

极简主义

他编写的代码非常少,而且功能惊人。 一切看起来都和谐,清晰,并且明确宣布任命。 这个品种在选择任务和项目时非常喜怒无常。 极简主义者将比其他人为建立自己能力的应用领域而斗争。 弱点-护送。 他竭尽全力去更改自己的代码(更不用说别人的代码了)-当完成主要工作时,他只是不感兴趣于修改细节。

类比

它在具体思想上有所不同,并通过类推的方式弥补了抽象方面的困难。 在会议上,很难理解他的思路,但他很快掌握了这一点。 通常,他们编写好的,易于支持的代码,但是在某些情况下,对抽象的误解会使它变慢。 发生类比也很可能失败,特别是如果类比主义者从她试图利用一切的一切中挑出她心爱的人之一。 您可以通过将类推专家与建筑师联系在一起来平衡类比专家的缺陷-他们要么互相残杀,要么创造出杰出的东西。

特技演员

他热爱绝妙的花样,并且一直在追求能够实现这些目的的技术创新。 实际上,这种爱好没有真正的回报:特技演员不能务实地思考,这种技术或最终产品和用户的实际价值对他而言仍然是隐藏的。 该员工将需要不断监控并将其热情转移到优先任务上。

杂种


雨水将杂种猫分为猫类,它们有一些明显的缺陷,相对于劣势,有优势。 但是他不要求不看就摆脱它们。 许多杂种很容易接受训练,并且可以逐渐在其他品种中进行再训练。 下面我们提供了针对不同类型的预测和建议。

流口水

马虎的,马虎的代码的主要提供者。 通常会在样式之间跳过。 像一个烤架,他牺牲了设计和对团队通过的协议的遵守,但是,与烤架不同,即使是高工作速度,他也不能被证明是合理的。 有时必须从头开始重写他的代码-如此才能精疲力尽和资源密集。

lop病是急性和慢性的。 如果突然袭击员工,则可能是由于个人问题。 如果这是他的通常情况,则值得考虑是否有必要花时间进行再培训。 这里的主要标准是被骗者的努力意愿和意愿。 love懒的人通常会喜欢他的工作,而在头部或指导者的适当注意下,很可能会康复并学习更有效的工作方法。

煞车

长期以来,他无法承担任务,不知道从哪里开始,不顾一切地追逐规范,希望它们能带来某种清晰度。 不难猜测,制动器的犹豫不决来自自我怀疑。 有必要根据这种不确定性来自何处采取行动。 如果开发人员过去曾经历过惨痛的失败,而现在却对失败感到恐慌,让他有机会证明自己,即使是在琐碎而又不复杂的任务中,这样这种恐惧也就逐渐消失了。 如果事情没有经验,那么在时间和团队的知名支持下,一切都可能会正常化。 如果这样的犹豫不决仅仅是一个性格特征,最简单的办法就是给这个可怜的家伙一个模型,以帮助他选择一种风格并开始工作。

情人

情人缺乏知识,但通常有足够的动力。 这种杂种很可能会成为优秀的开发者。 但是,必须密切监视他们的进度-评估能力,记录成就,这些理由有理由使他们承担更负责任的任务。 一个人不要太过高估期望值:许多人在遇到困难或程序员工作中不可避免的例行程序时会精疲力尽。 一般而言,业余爱好者有其优势-首先,臭名昭著的新鲜,无拘束的外观,尽管等到他们踩踏所有耙齿并理解共同的真理可能会很累。

亵渎

似乎简直是沉闷。 通常,新领导者是从旧领导者那里继承下来的;他们在团队中的位置的故事仍然是个谜。 为这样的人做某事是困难的-发展需要不断的自我完善,而他们根本不会自我完善。 如果外行本人意识到自己的水平并且没有野心不足,可以尝试将他附加到测试部门-有时能力低下并不能阻止人们正确地发现错误。 那些甚至不知道自己的亲近度的人最好不用去面对。

折衷的

工程师,a废和不太有才华的艺术家的核混合物。 他编写的代码是来自不同样式和模块的难懂的油醋。 与草率的产品不同,这是一个具有才华的代码-从外观上看,甚至在您尝试运行它之前,它甚至都包含一些东西。 阅读折衷代码的人的主要问题是:“他是什么意思?” 为了纠正这种情况,您必须首先了解这种混淆是否确实是某种搜索的结果,还是在您游走于铁轨之前有尝试。 系统的代码审查极大地有益于良性折衷主义。

最后,还有另外一个在各个方面都与众不同的品种-这是牛仔还是独狼。 猫的习性对他的影响最大。 通常,牛仔在他的手艺上非常好(否则他就不能留在原地),在团队合作中-绝对是没有希望的。 他的决心在于,他只能按照自己的规则参加比赛:从事他感兴趣的项目,而没有其他事情,使用他想要的手段,完全按照自己的计划进行比赛,依此类推。 牛仔只有一种方法:一劳永逸地了解他们不会成为团队的一分子,并决定您是否重视他们以适应他们的特殊习惯。 通常,在两种情况下牛仔是必不可少的:危急的,看似绝望的情况和孤立的项目,这些项目将由外部专家陪同。

因此,我们列出了作者最常遇到的那些品种。 但是,应对此分类做一些说明:

  • 领导者不应将自己视为规则的例外:他具有编程经验,这意味着他本人属于其中一个。 这是一个重要的情况-他个人编写代码的方法将影响整个团队的文化。 例如,在极简主义领导者小组中,文档可能会遗漏,因为即使在他自己的工作中,他也从未给予他适当的关注。
  • 我们再重复一遍:类型并不总是纯净不变的;人们往往比理论结构更具多元性。 在个别特征最显眼的时候-以新的开始和临近截止日期的时候,最容易判断谁属于哪个品种。
  • 如果您必须从头开始组建团队,请记住,最成功的团队是建筑师(战略思维),建构主义者(详细阐述)和艺术家(创意连胜)。 但是最有可能的是,您已经拥有一个配备人员的团队,这是完全正常的-您可以在任何团队中一起工作。
  • 与大多数犬种搭配工作需要具备的三个主要素质是洞察力,耐心和成为导师的能力。

有了这份清单的所有乐趣,在日常工作中如何从中受益可能并不是立即显而易见的。 作者提供了一些示例,分析了某些品种经常出现的特定情况。

示例1


情况:您有大量的代码需要升级,以适应公司的当前需求,并且有一个极简的开发人员,这是他一生中第一次看到它。 开发人员声称需要从头开始重写代码-一切都太复杂了,但是您不能这样做:产品上已经花费了大量资源。 怎么办

解决方法:稍微更改任务。 极简主义者热爱清晰度,在处理建筑方面有弱点-贿赂他一些不太昂贵且明显有缺陷的对象或功能,并在将来可以自由决定是否对其进行重构。 要求研究并记录代码,包括为此目的。 结果,极简主义者将被迫做他否认的事情-找出奇迹般的代码,以便继续上一堂更有趣的课。

示例2


情况:您与架构师不同意他实施的解决方案。 在您看来,有些事情不是以最佳方式完成的,他没有看到任何问题。

解决方案:建筑师通常对结构有自己的看法-整体且一致,但对于外部观察者而言并不明显。如果您无法通过他的眼光审视此事,请勿引发投机性纠纷,而应进行更具实质性的讨论。假设要求架构师详细描述动作机制,理想情况下是工作原型或简单的演示版本。这将迅速发现所有实施缺陷(如果有的话),或者显示您的错误。同样,如果您觉得该代码过于繁琐和单一,建议将其分解为多个组件-如果不影响系统,则可以。

到此结束本周期的第一部分。进一步,我们将讨论诸如技术会议不可避免的弊端之类的话题,根据这些场景,领导者通常会走向失败或成功,问题会立即落到新领导者身上,甚至更多。

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


All Articles