除了编码之外,每位开发者都应该掌握的基本技能
1. Git 和拉取请求
2.敏捷看板
3. 测试和持续集成
4. 耐心和理解
结论
由 Mux 主办的 DEV 全球展示挑战赛:展示你的项目!
无论你是正在学习编程、寻找新工作,还是仅仅想提升自己的开发技能,你都需要掌握团队协作的基本工具。这些工具与掌握编程技能同等重要。
软件项目的成败取决于团队合作。
你的代码最终肯定能运行。但如果你想让它“按时”运行并保证质量,你和你的团队就需要做好组织工作。
- 每个人都需要知道自己该做什么以及何时做。
- 人们的工作不应该重叠或冲突。
- 所有人都必须遵守共同规则。
你可以通过正确的流程和工具来实现这一点。你希望你的团队将 90% 的时间专注于编码(剩下的 10% 用于喝咖啡和 Windows 更新)。
以下是你需要掌握的四项基本技能。
1. Git 和拉取请求
配置管理是软件团队协作的基础。虽然有很多工具可以实现配置管理,但幸运的是,Git已经成为绝对的权威参考。
Git Book中对关键方面进行了详细的文档说明。
有很多现成的服务可供使用:GitHub可能是最受欢迎的,但BitBucket或GitLab也非常受欢迎。
SourceTree是一款非常棒的图形化工具。不过,我建议你在使用图形界面工具之前先掌握命令行操作。
以下是你应该知道如何回答的问题:
就是这样,非常简单明了。读完理论并稍加练习,你很快就能成为 Git 高手。
2.敏捷看板
团队在启动项目或大型任务时,首先要做的是拆分工作。过去十年间,“敏捷”方法论取代了传统的瀑布式开发模式。敏捷宣言在此。
实际上,它的意思是“不要制定过高的计划,因为我们今天对项目的投入和假设都会发生变化”。这几乎总是正确的,如今几乎没有哪个团队不是(有时自称)“敏捷”的。
以下是一些你需要了解的实用信息:
- 最流行的敏捷工作方式是Scrum。将项目划分为两周的“迭代周期”(Sprint),并将“任务”放入每个迭代周期的内容中。其余内容则留待未来处理,称为“待办事项列表”(Backlog)。这有助于跟踪项目进度、调整后续计划,并随着时间的推移提高团队效率。
- 另一种敏捷方法是看板。它的理念是限制“进行中”的任务数量。这样可以确保在进行下一个任务之前,先彻底完成一个任务。看板不像 Scrum 那样有迭代周期或时间框架。你只需按顺序完成任务,直到全部完成。在敏捷开发中,一个软件项目会被拆分成几十甚至几百个任务。你需要一个工具来管理这些任务。JIRA 就是一个不错的选择。
当然还有其他工具,但你迟早都得用到 JIRA。所以如果你是这些工具的新手,那就直接用 JIRA 吧。它提供 7 天免费试用,足够你了解它的运作方式。再说一遍,JIRA 的操作相当简单,而且文档非常完善。
3. 测试和持续集成
Git 和敏捷工具让团队能够快速迭代。但速度的提升不可避免地会带来错误和缺陷。假设一个由五名开发人员组成的团队,他们各自独立地开发代码。每个人都会向代码仓库提交一个拉取请求。这时可能会出现两个问题:
- 一旦“第一位开发者”的代码提交到 Git 仓库,其他开发者的代码就会失效或无法正常运行,因为某些方面已经发生了变化。这并非“第一位开发者”的失误,而是自然规律,这种情况不可避免。
- 所有开发人员将代码推送到 Git 仓库后,一切按预期运行的概率相当低。这并非团队合作不力,而是不可避免的。
因此,你需要测试你的软件。即使每个开发人员都提交了代码之后也要测试吗?那当然很好,但会浪费时间。
当其他开发者提交代码后,我们需要重复这项任务。是否应该等到所有人都提交代码后再进行测试?这样做当然很好,但你会在项目后期才发现 bug,这可能会延误整个项目。那么,该如何解决这个问题呢?
自动化测试和持续集成可以解决这个问题。
自动化测试是一个可以写很多书的话题。每种语言和框架都有自己的一套工具。在这里一一列举毫无意义。只需记住,测试很耗时,而且并非总是事先计划好的。
无论如何,你应该知道如何为你的代码编写单元测试,并积极主动地去编写。如果你实在没有时间去做,至少也应该意识到这样做是不对的。
持续集成是指每次向代码仓库推送代码都会触发构建并自动运行测试的过程。一旦提交了错误的代码,就会立即发出警报。合并请求之前也应该自动进行测试,以避免影响整个团队的错误。
持续交付是持续集成的延伸。如果测试通过,测试版本将自动推送到生产环境。
举个例子:在 Quora,他们会追踪代码从推送到代码仓库到部署到生产服务器之间的时间。我看到的最新基准测试结果是 15 分钟……针对大约 100 名开发人员。这已经是团队所能期望的最高效配置了。
常用的持续集成服务器包括 Jenkins、Travis、CircleCI 等等。Fire CI 提倡采用无服务器的持续集成方法,以最大限度地提高开发人员的效率。您无需了解如何设置服务器等所有细节,但您应该知道这类工具的存在;如果您的团队没有使用任何此类工具,那就应该引起您的重视了。
4. 耐心和理解
作为一名开发者,你最大的挫败感不会来自代码本身。你或许会花几个小时在谷歌和 Stack Overflow 上搜索答案,
但这只是驱动力活动。真正的痛点将来自外部:
- 不明确或被误解的要求
- 人们对你的最终工作成果不满意,因为他们一开始就不知道自己想要什么,却指望你来帮他们搞定。
- 工具因某些原因运行缓慢或停止工作
- 时不时会有人打断你,因为人们觉得坐在你的办公桌前就意味着他们可以随时打扰你。
关键在于“耐心”。试着理解你身边的人。他们并非无所不知,记住,你也一样。但一定要让他们明白,你的时间很宝贵,他们应该尊重它。
最后但同样重要的是,关于客户和需求:如果没有对整体情况有所了解,就不要接受低层次或繁琐的细节需求。你需要理解你所开发软件的业务。归根结底,你的代码是为了改进现有流程或实现新的流程。
你对业务方面了解得越透彻,你就会成为越优秀的开发者。
结论
开发人员工作的核心是编写代码。一旦你从独立开发者/业余爱好者转变为高效团队的一员,正确使用关键协作工具就与编写简洁的代码同等重要。希望本文能让你对这些工具有一个大致的了解,并指导你如何深入学习,从而在工作中做到最好!
原文发表于2019 年 4 月 5 日的Fire CI 博客。
文章来源:https://dev.to/jpdelimat/essential-skills-every-developer-should-master-besides-coding-4e3m