现代软件开发是快速、迭代和复杂的。现代团队至少需要这五个工具来管理所有的活动部分。
在过去的30年里,软件开发有了长足的进步。我记得当你可以在自己的电脑上管理软件开发生命周期(SDLC)的时候。你可以写代码,调试它,建立它,并从你的桌面上发送它。源文件将被存储在文件服务器上,并在每天结束时保存一个压缩文件来管理。如果你使用源码控制工具,那就是CVS或SVN,它有一个中央服务器,使分支和合并成为真正的挑战。发布软件意味着向制造商发送一张 "黄金 "软盘,而制造商则将软件实际运往商店和目录供应商。
今天,它既简单又复杂。大多数新软件都是通过浏览器交付的。远程开发者团队使用复杂的中央代码库管理大型代码库。他们用问题跟踪和通信工具协调工作,用专门设计的工具进行持续集成和持续部署。SaaS交付模式允许团队在他们想要的时候即时发布新功能。
这个过程需要大量的软件工具。有些人可能会争辩说,好的椅子和宽屏显示器会对改善开发管道有更大的作用,但我们在这里坚持讨论软件工具。
那么,做现代软件开发需要哪些软件工具呢?现代团队至少需要这五个。
集成开发环境
编写代码的难度与日俱增,开发人员需要一个能够跟上的工具。一个好的集成开发环境将允许进行代码编辑、语法高亮、代码完成、源控制管理、编译和调试。一个好的集成开发环境还将提供某种形式的扩展API,使任何人都能增强编辑器的功能。
除非你有非常特殊的需要,否则我建议使用Visual Studio Code,因为它是目前最流行、最强大、最开放、最能干的IDE。VS Code是由微软建立和维护的,并且是开源的。它非常流行,几乎可以处理任何你扔给它的编程语言,并且有成千上万的有用的扩展。有超过2000万的开发者使用它,VS Code是迄今为止的首选工具。添加GitHub Copilot的能力,即GitHub基于AI的编码助手,提供了更多的动力。
沟通工具
COVID改变了 开发团队的工作方式。突然间,开发团队都在家里工作,他们需要一种方式来沟通,当他们不能实际见面时。Slack 和Zoom 的结合成为了一种方式。现在也是如此。
Slack得益于它的广泛使用,因此它有一个庞大的插件和集成库,允许你做许多在你开始打探之前可能都不会想到的事情。Zoom已经成为团队和各种会议的事实上的视频会议工具。将Slack和Zoom整合在一起,既简单又强大。我推荐这种组合,因为这两个工具都有广泛的用途,使你更容易与整个组织的员工、客户和供应商沟通,而不仅仅是开发团队。
紧随其后的是Microsoft Teams,它的优势是将聊天和视频会议结合在一个应用程序中。
源代码版本控制
Mercurial曾有一段时间是这里的竞争者,但Git 显然赢得了源控制工具的竞赛。如果你不使用Git,那么你就会被甩在后面。
Git是一个分布式的版本控制系统,但正确的使用需要一个集中的仓库,而GitHub显然是这个领域的领导者。GitHub是我的选择,因为它无处不在,而且它的功能不仅仅是一个代码仓库。迄今为止,GitHub是开放源码项目的领先主机。每个公司都应该在GitHub上有某种形式的存在。
GitHub的一些额外功能包括问题跟踪、代码审查、以及与构建和部署过程的挂钩。GitHub甚至通过其基于Visual Studio Code的Codespaces产品,在IDE-in-a-browser方面处于领先地位。
紧随其后的是GitLab,它有一个开源版本,几乎在各个方面都紧随GitHub之后。
功能标志
我必须承认,直到大约一年前,我甚至不知道功能标志是一种东西。现在它们的使用正在增长,因为SaaS解决方案实际上允许你通过点击鼠标来打开和关闭功能。功能标志让你几乎可以以任何你喜欢的理由控制功能--按公司、按客户级别或按用户。这使你可以做一些事情,如部署一个测试版或在一小部分客户群中测试一个 "金丝雀 "部署,看看一个新功能在现实世界中是如何生存的。
这里明显的领导者是LaunchDarkly,一个用于功能管理的SaaS平台,为你提供了对应用程序及其功能如何部署的强大控制。对于这样一个明显领先的公司,而且还在继续扩展其功能集,很难不选择它。
CI/CD工具
我已经做了多年的持续集成。但持续部署是更新的、更具挑战性的,而且坦率地说,有点吓人。CI/CD需要构建软件,运行测试,将工件放在正确的地方,配置云资源,将应用程序部署到多个地点,以及任何数量的不同活动,这些都是将代码从签入到尽快在生产中运行的过程。
许多团队正试图把从代码签入到部署的时间从几天缩短到15分钟(你没看错)。 这就是可怕的部分--把东西这么快投入生产意味着你需要准备好快速反应。从好的方面来说,短的部署时间可以在出现问题时提供即时的反馈,使开发人员能够在头脑中保持最近变化的背景,并在发生错误时更快、更容易地修复。
做好CI/CD肯定需要一个强大的工具箱。幸运的是,有了CircleCI。CircleCI可以做到这一切,与大量的框架和系统连接,以快速构建和部署您的应用程序。我喜欢CircleCI,因为它有完整的功能集,速度快,而且合规。
值得一提的是,开源CI/CD工具Jenkins。
这五类工具--IDE、通信、源码控制、特征标志和CI/CD--是你进行现代软件开发所需的最低限度的工具。所有这些工具一起工作,以最大限度地减少花在编码和将该代码投入生产的时间。它们都可以是基于云的,使你不必担心除了工作以外的任何事情。无论是在基于云的IDE中编码,还是用强大的CI/CD工具在几分钟内完成部署,这些工具都能为任何软件开发过程提供平滑的滑行路径。