mirror of
https://github.com/LCTT/TranslateProject.git
synced 2024-12-26 21:30:55 +08:00
Delete 20180817 Mixing software development roles produces great results.md
This commit is contained in:
parent
0b2a97ad48
commit
c78735b562
@ -1,73 +0,0 @@
|
|||||||
Translating by lixinyuxx
|
|
||||||
|
|
||||||
融合软件开发角色效果更佳
|
|
||||||
======
|
|
||||||
|
|
||||||
![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/checklist_hands_team_collaboration.png?itok=u82QepPk)
|
|
||||||
|
|
||||||
大多数开源社区没有很多正式的角色。当然, 也有一些固定人员帮助处理系统管理员任务、测试、编写文档以及翻译或开发代码。但开源社区的人员通常在不同的角色之间流动, 往往同时履行几个角色的职责。
|
|
||||||
|
|
||||||
相反, 大多数传统公司的团队成员都定义了角色,例如, 负责文档、技术支持、质量检验和其他领域。
|
|
||||||
|
|
||||||
为什么开源社区采取共享角色的方法, 更重要的是, 这种协作方式如何影响产品和客户?
|
|
||||||
|
|
||||||
[Nextcloud][1] 采用了这种社区式的混合角色的做法, 我们看到了我们的客户和用户受益颇多。
|
|
||||||
|
|
||||||
### 1\.更好的产品测试
|
|
||||||
|
|
||||||
任何测试人员都会说测试是一项困难的工作。你需要了解工程师开发的产品, 并且需要设计测试案例、执行测试案例并将结果返回给开发人员。完成该过程后, 开发人员将进行更改, 然后重复该过程, 根据需要来回进行多次,直到任务完成。
|
|
||||||
|
|
||||||
在社区中, 贡献者通常会对他们开发的项目负责, 因此他们会对这些项目进行广泛的测试和记录, 然后再将其交给用户。贴近项目的用户通常会与开发人员协作, 帮助测试、翻译和编写文档。这将创建一个更紧密、更快的反馈循环, 从而加快开发速度并提高质量。
|
|
||||||
|
|
||||||
当开发人员不断面对他们的工作结果时, 它鼓励他们以最大限度地减少测试和调试的方式去书写。自动化测试是开发中的一个重要元素, 反馈循环可以确保正确地完成操作: 开发人员主观能动的来实现自动化--而不过于简化也不过于复杂。当然, 他们可能希望别人做更多的测试或自动化的测试 但当测试是正确的选择时, 他们就会这样做。此外, 他们还审查对方的代码, 因为他们知道问题往往会在以后让他们付出代价。
|
|
||||||
|
|
||||||
因此, 虽然我不认为放弃专用测试人员更好, 但在没有社区志愿者进行测试的项目中, 测试人员应该是开发人员, 并密切嵌入到开发团队中。结果如何?客户得到的产品是由100% 有动机的人测试和开发的, 以确保它是稳定和可靠的。
|
|
||||||
|
|
||||||
### 2\. 开发和客户需求之间的密切协作
|
|
||||||
|
|
||||||
要使产品开发与客户需求保持一致是非常困难的。每个客户都有自己独特的需求, 有长期和短期的因素需要考虑--当然, 作为一家公司, 你对你的方向有想法。你如何整合所有这些想法和愿景?
|
|
||||||
|
|
||||||
公司通常创建与工程和产品开发分开的角色, 如产品管理、支持、质量检测等。这背后的想法是, 人们在专攻的时候做得最好, 工程师不应该为测试或支持等 "简单" 的任务而烦恼。
|
|
||||||
|
|
||||||
实际上, 这种角色分离是一项削减成本的措施。它使管理层能够进行微观管理, 并更能掌握全局, 因为他们可以简单地进行产品管理, 例如, 确定路线图项目的优先次序。(它还创建了更多的会议!)
|
|
||||||
|
|
||||||
另一方面, 在社区, "决定权在工作者手上"。开发人员通常也是用户 (或由用户支付报酬), 因此他们自然地与用户的需求保持一致。当用户帮助进行测试时 (如上所述), 开发人员会不断地与他们合作, 因此双方都完全了解什么是可行的, 什么是需要的。
|
|
||||||
|
|
||||||
这种开放的合作方式使用户和项目紧密协作。在没有管理层干涉和指手画脚的情况下, 用户最迫切的需求可以迅速得到满足, 因为工程师已经非常了解这些需求。
|
|
||||||
|
|
||||||
在 nextcloud 中, 客户永远不需要解释两次, 也不需要依靠初级支持团队成员将问题准确地传达给工程师。我们的工程师根据客户的实际需求不断调整他们的优先级。同时, 基于对客户的深入了解, 合作制定长期目标。
|
|
||||||
|
|
||||||
### 3\. 最佳支持
|
|
||||||
|
|
||||||
与专有的或 [open core][2](开放源核心)的开发商不同, 开源供应商有强大的动力提供尽可能最好的支持: 它是与其他公司在其生态系统中的关键区别。
|
|
||||||
|
|
||||||
为什么项目背后有动力?—比如 [Collabora][3] 在 [LibreOffice][4] 背后, [The Qt Company][5] 在 [Qt][6] 背后, 或者 [Red Hat][7] 在 [RHEL][8] 背后—最佳来源于客户的支持?
|
|
||||||
|
|
||||||
当然, 直接接触工程师。许多公司并阻断工程的支持, 而是为客户提供了获得工程师专业知识的机会。这有助于确保客户始终尽快获得最佳答案。虽然一些工程师可能比其他人在支持上花费更多的时间, 但整个工程团队在客户成功方面发挥着作用。自营供应商可能会为客户提供一个专门的现场工程师, 费用相当高, 例如,但一个开源公司, 如 [OpenNMS][9] 在您的支持合同中提供相同级别的服务, 即使您不是财富500强客户也是如此。
|
|
||||||
|
|
||||||
还有一个好处, 那就是与测试和客户协作有关: 共享角色可确保工程师每天处理客户问题和愿望, 从而促使他们快速解决最常见的问题。他们还倾向于构建额外的工具和功能, 以满足客户预期。
|
|
||||||
|
|
||||||
简单地说, 将 质量检测、支持、产品管理和其他工程角色合并为一个团队, 可确保优秀开发人员的三大优点--[laziness, impatience, and hubris][10](从简,精益求精,高度自我要求)—与客户紧密保持一致。
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
via: https://opensource.com/article/18/8/mixing-roles-engineering
|
|
||||||
|
|
||||||
作者:[Jos Poortvliet][a]
|
|
||||||
选题:[lujun9972](https://github.com/lujun9972)
|
|
||||||
译者:[译者ID](https://github.com/译者ID)
|
|
||||||
校对:[校对者ID](https://github.com/校对者ID)
|
|
||||||
|
|
||||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
|
||||||
|
|
||||||
[a]:https://opensource.com/users/jospoortvliet
|
|
||||||
[1]:https://nextcloud.com/
|
|
||||||
[2]:https://en.wikipedia.org/wiki/Open_core
|
|
||||||
[3]:https://www.collaboraoffice.com/
|
|
||||||
[4]:https://www.libreoffice.org/
|
|
||||||
[5]:https://www.qt.io/
|
|
||||||
[6]:https://www.qt.io/developers/
|
|
||||||
[7]:https://www.redhat.com/en
|
|
||||||
[8]:https://www.redhat.com/en/technologies/linux-platforms/enterprise-linux
|
|
||||||
[9]:https://www.opennms.org/en
|
|
||||||
[10]:http://threevirtues.com/
|
|
Loading…
Reference in New Issue
Block a user