# 程序员:让自己变得可替代

原文地址:https://medium.com... (opens new window)

原文作者:MalcoIm Laing

我在大学学习计算机科学后的第一次实习简直是一场灾难。他们没有使用任何形式的版本控制。我们没有本地的开发环境——都在同一个预发布服务器上运行代码。假设某人导致应用程序崩溃,其他人的程序也会跟着遭殃。该程序是未记录的面条式代码灾难。

只有一个人维护这个应用程序。他们是不可替代的——没有他们,什么也做不了。他们花数小时完成的任务,其余人要花费数天。

以下是一些使他们不可替代的因素:

  • 没有文档记录的框架让新成员难以适应。
  • 缺乏本地开发环境令人开发效率低下。
  • 没有使用版本控制越来越容易引入bug,进行代码审查简直不可能。
  • 知识储备导致巨大的知识烟囱。

不过为什么这是一件坏事?难道我们不应该努力成为不可代替的人?Seth Godin写了本最畅销的书《关键:你是不可代替的吗?》。在这本书里,他表明关键人物(或者说不可代替的人)是劳动力的骨干。他激励你去筑起知识和人际关系的围墙令自己变得无法代替。

这是我们一生中经常听到的言论。人们经常开玩笑,如何让代码变得晦涩以致只有自己才能看懂,以此来确保工作稳定。为什么你想成为可代替的人?

# 为什么你不想成为不可代替的人

# 技术变得落后

如果多年都在使用晦涩的代码库,那么你的技能变得落后。你没有使用流行开源框架。甚至在使用越来越不受欢迎的程序语言。

公司想要聘用有相关工作经验的人。开发自研框架功能的经验显得并不重要了。可以聘用有着两年React工作经验的人,为什么我要聘用只会使用jQuery的人呢?

使用与潜在雇主相同的工具来提高你的市场竞争力。

# 工作关系将恶化

当固守信息时,你很难与同事保持良好的关系。一个不可代替的程序员会经常篡改或者破坏他人遵循的规则。他们经常觉得自己高人一等。他们常常难以合作,只想按他们的方式来办事。他们不会听取反馈。

说回前实习的例子,问题在于程序员通常认为高我们一等。他会迟到、早退。当你向他请教问题是,他会替你完成而不是说明他的解决方案。他在团队招新方面表现非常糟糕。

管理者对此熟视无睹,因为他对组织非常重要。我们其余人就像二等员工一样,非常沮丧。

与其固守信息,不如分享它。与其亲自替同事写代码,不如结对编程。与其制定自己的规则,不如跟随主流。这将会让你更受欢迎,愉快地与同事相互切磋、学习。

# 难以脱身

如果自己成为不可代替的人,那将难以请病假和休假。如果你没有分享关于你负责的应用程序的知识,那么没有人可以帮助你。若是出现难题也将难以修复。万一突发故障,而你没空,那么你就得背锅。

# 阻碍职业发展

如果你在目前的岗位上是不可代替的员工,老板为什么会让你晋升(到别的岗位)呢?

来看一个实际的例子。John是一个PHP工程师,在一家公司耕耘了十年。在John刚入职时,公司有一个产品。它是一个文档记录缺失、非常难用的大项目。John努力工作,并让自己成为这个项目的专家。

十年过去了,公司逐渐发展起来,并出了非常棒的新产品。他们开始使用先进的技术和框架。

John的同事们都得到了研发新产品的机会,但除了John。John的主管知道,如果将John从旧项目中撤出,那将很难找到代替他的人。

# 给人一种虚假的安全感

我们在工作时都会竭尽全力。一旦知道自己是不可代替的那个,我们会渐渐飘飘然。我们开始就餐时间变长。迟到,甚至早退。

即使你(在项目中)是不可代替的人,仍然有很多外因会让你丢掉工作。万一公司破产了呢?或者假设你跟的产品失去市场了呢?或者万一公司决定把研发线外包给廉价地区呢?

醒醒吧,没有任何工作是绝对稳定的。你更应该投资自己而不是投资你的工作。利用与同事合作提高人际交往能力。学习新技能,使用市场前沿技术。

做好准备,当你失业时,分分钟找到下一家。

# 如何变得可代替

# 实践内部资源

请在闭源软件中使用开源的最佳实践。尝试以下:

  • 写一个附有示例和说明的README文件。
  • 添加包含规范和代码风格指南的CONTRIBUTING文件。
  • 创建一个PR模板,方便同事贡献代码。
  • 设置一个健壮的CI流水线。确保测试和检查工具都能在每个PR上跑起来。
  • 使用一种代码风格例如prettier (opens new window),避免代码风格不一致。

# 分享知识并一起学习

完成一个功能之后,分享你学到了什么。举办"lunch & learn",大致讲述遇到的一些问题、解决方案。鼓励同事一起搞。在Slack上创建一个可以发布和评论的博客的channel。新项目开始时,请投入使用不同的新技术。

在提交中说明这次改动的原因。这使得审阅者更容易理解(变更代码的)出处和改动的原因。如果出现重复提交,叫他们过来一起看。

# 开放环境

请不要只让个别成员访问生产环境。鼓励每个成员去承担责任。开发人员轮流值班。教会新成员如何使用应用程序监控和错误跟踪工具。让团队中的每个人都是利益相关者。

仅仅个人成员被给予访问生产环境权限时非常令人沮丧的。这会让人觉得,如果不相信他们会去修复生产问题,那为什么要关心它们。授权团队去修复生产问题会让他们觉得更有责任感。

# 持续学习

请在工作流引入新工具和新实践。学习新型技术和框架。找出痛点,并提出解决方案。

目前我注意到我们会经常采用视觉回归。每次提交时,很难检查每个组件是否已更改。手工测试浪费时间,也非常容易出错。这些视觉回归投入生产时,设计师通常会感到沮丧。

因此,我对不同类型的视觉测试做了一些研究。我采用了视觉回归测试工具。现在这个测试配置使我们的组件库变得超级稳定。

这也使我更容易替换-这些测试工具使其他开发人员更轻松地合作。

# 结语

让自己可代替,更轻松地休假。它可以帮你与同事建立良好的人际关系。它让你在人才市场中更具魅力,甚至可以晋升。

最近更新时间: 2021/12/22 20:56:02