在团队中工作自然会促进意见分歧——这是一件好事。 多样化的意见有助于确保所有想法都得到讨论,问题领域得到识别,并且手头任务的重点放在正确的位置。
然而,在开源世界中,情况略有不同。 开源贡献者充满热情——他们经常全力以赴,因此他们的个性通常根深蒂固地融入到他们所做的事情中。 这在外部世界也会发生,但贡献者往往对他们在来之不易的空闲时间里所做的事情更加热情。
为开源公司工作为这种组合增添了其自身的曲折:试图平衡完成管理层要求的事情的动力与项目的前进方向。 这可能是一个具有挑战性的环境,特别是当公司作为项目的贡献者而不是所有者时。
在本文中,我将研究贡献者的不同特质、他们的目标,以及在阅读您完美无瑕且显然完美的合并请求上的所有评论时如何平衡它们。 人们可能具有这些特质的几种组合,但它们通常围绕一种特质。 诀窍是找出这个人想要达到的目标,并查看这是否与项目的目标一致。
通才 / 专才
这种特质关乎项目在各种情况下的可用性。
通才确保项目在每种情况下都可用。 这通常伴随着对范围的非常广泛的看法。 对代码的任何更改通常都会用变量替换字符串,添加抽象层,或将事物变成插件——所有这些都是为了使项目更可定制和通用。 虽然这种方法没有错(相信我,我是一个通才),但它通常会导致更复杂的代码,编写时间更长,并且更难正确。
另一方面,专才完全关注特定的用例。 他们通常会声明代码不需要处理这些用例,并且通常会硬编码变量并将内容附加到现有代码上,而不会使其在其他情况下可用。 专才将专注于出色地完成特定任务,这样做通常会带来更优化的解决方案。
在考虑评论和合并请求时平衡这种特质并不容易。 我的经验表明,人们通常会写得更具体,而评论更通用。 人们不常评论说“这段代码太通用了”,但他们可能会说它太具体了。 底线:考虑项目的未来。 通才希望该工具成为一把瑞士军刀。 专才希望它成为一把手术刀。
完美主义者 / 概念主义者
这种特质是关于项目如何遵守标准和实践。 承担任何任务并将其交给一群人,您会发现有些人会以完美标准完成它,另一些人会适中完成它,还有另一群人会以您从未想象过的方式完成它。
完美主义者会挑剔语法。 他们会告诉你这是完成某事的唯一正确方法。 他们会告诉你,如果你想做得对™,那么你就会按照他们的方式去做。 老实说,他们通常是对的。 他们也将是那些查看您的代码并发现性能问题的人。 您仅运行三次的循环(天哪)仍会评论如何使它们快六个周期。 完美主义者希望您的代码成为一件美丽的事物。 他们喜欢优雅、高度优化、符合标准的代码。
另一方面,概念主义者更热衷于将可以工作的东西放入代码库中。 在“先让它工作,再让它变好,最后让它变快”的生命周期中,他们完全处于“先让它工作”阶段,并且对遵守完美主义者的内置代码检查工具提供的每一项抱怨不感兴趣。 当然,专注于让某些东西工作而不是让某些东西简洁美观,通常会导致概念主义者抢在完美主义者之前完成任务。
平衡这种特质也可能很棘手——这取决于概念主义者提出的建议。 有时时间可能是一个重要因素,允许不符合完美主义者标准的代码不一定是坏事。 有时需要快速修复。 有时概念验证代码也是必须的,并且没有时间和资源使解决方案完美。 完美主义者也可能让概念主义者发疯,因为他们坚持完美的编码规范似乎只是碍事。 然而,当涉及到可读性时,99% 的情况下,完美主义者的代码将更容易阅读和维护。 底线:考虑时间限制以及您是否有资源在以后使其变得更好。 完美主义者想要尽可能锋利、笔直的刀刃。 概念主义者并不害怕使用看起来像刀的东西来完成工作。
冒险主义者 / 保守主义者
在解决问题时,有些人喜欢将此视为尝试新事物的机会。 冒险主义者就是这样的人。 无所畏惧、具有前瞻性、充满活力的冒险主义者总是着眼于使用最新技术、最新语法和您见过的最精美的文档策略。 他们希望项目向前发展并“与时俱进”,但他们也有一种与生俱来的渴望,想要超越界限并尝试新事物。 为什么不呢? 这很时髦! 这些冒险家经常会建议使用您从未听说过的库,例如 mustardandcheese 或 protactinum,所有这些都是为了科学。 当然,当一切出错并且库不成熟时,手指会指向哪里? 没错。 我在看着你呢,冒险家。
另一方面,保守主义者希望坚持经过实践检验的可靠技术。 并不是说他们很无聊,他们只是喜欢使用他们所知道的东西的可预测性。 他们想确保它会起作用,并且通过使用他们去年(或前年)使用的相同技术,他们可以确保这一点。
平衡这种特质,是的,您猜对了:很棘手。 这完全取决于您可以花费多少时间让某些东西工作,以及在新的库/工具/代码库中发现新问题时可能清理问题。 冒险主义者通常会告诉你这是一个双赢的局面,不会出错。 那时,保守主义者会开始吓得发抖。 底线:您是否有时间学习新技术? 团队的其他成员呢? 它带来的好处是否超过了最初的学习曲线? 冒险主义者会想要使用以前从未用于刀片的钼钢合金。 保守主义者将坚持使用他们多年来一直使用的相同材料。
总结
本文不是关于给人贴标签。 这不是关于确保人们被归类到他们的小框框中并且永远不会走出来。 这当然不是关于如何对待人。 所展示的是代码环境中工作的人们常见的一些思维模式。 哎呀,这在非代码环境中也很常见。 它被呈现为一种工具,以便您有望看到争论的另一面,并了解一个人在编写他们所做的评论和代码时是从哪里来的。
一个人永远不会仅仅是这些特质之一。 他们总是会混合在一起。 这种混合也会随着他们正在从事的项目、他们拥有的时间以及他们的理解程度而变化。 就我个人而言,我会称自己是一个相当重的通才/完美主义者,具有中等的冒险/保守态度。 了解自己的特质可以帮助您了解其他人如何对您的代码和评论做出反应,并识别他人的这些特质。
在开源世界中,这些特质通常会被放大得多。 当人们将自己的时间和精力投入到项目中时,他们会感到投入,并且真的希望让自己的声音被听到。 因此,下次您在审查或撰写评论时,请尝试站在每种性格类型的角度思考,以了解为什么事情会以他们的方式被书写。 用完美主义者的观点来打击概念主义者,或者总是建议冒险的方式来让保守主义者发疯,这太容易了。 保持敏感并平衡所有观点。
5 条评论