下面的内容是我在作为一名程序员入职之前阅读的由Gergely Orosz写的The Software Engineer’s Guidebook。我将将阅读时得到的重要的信息总结成中文以供大家分享。
作为开发人员,要提高生产力,就需要对使用的工具有很好的理解和控制。
在某些行业,会对“行业工具”进行正规培训。我的父亲从事化学工作,他分享说,在化学实验室工作,第一步是学习仪器的名称和功能。刚开始会作为助理使用简单的仪器,并在监督下工作。一旦表现出熟练度,就可以接触更复杂的工具和任务。几年后,实验室工作人员可以完全独立操作复杂的仪器并培训新的助理。
但是在软件行业,这样的培训很少见。一些公司在教育专业人员如何使用他们的工具、构建、部署和其他系统方面做得比其他公司更好。但通常情况下,你必须自己摸索这些事情。
精通你的编码环境:交互式开发环境(IDE)或编码文本编辑器。熟悉并学习其功能!
了解一下你的开发环境是否支持在特定文件内搜索,替换当前文件中的内容,提取方法以及更改变量名字等功能?你能否通过一键构建项目并运行它?一旦掌握了使用方法,IDE就变得非常强大。以下是你应该在现代IDE中找到的一些功能:
重新编写。你是否可以更容易地重构代码,比如重命名变量/函数/类或提取方法?查看一下你的环境内置的重构功能。
编译。设置一键构建/编译项目。你可以使用哪个键盘快捷键来执行此步骤?是否可以设置每次保存文件时自动编译或构建项目?
运行项目。如何启动已编译项目,只需单击一次或使用键盘快捷键?对于前端应用程序(如Web应用或移动应用),这是特别重要的。
热重载。在代码运行时进行更改,保存文件后这些更改是否立即生效?
调试测试。如何设置断点并调试测试?是否可以单独调试特定的测试?如果可以的话,怎么做?
创建拉取请求。是否可以进行源代码控制管理,如在IDE内创建拉取请求?
理清事情需要时间。通过与经验更丰富的工程师联手,你将更快取得进展。询问他们如何执行上述操作,并向他们学习!了解如何有效地使用你的IDE将缩短编码迭代周期并加快工作进度。
如果编辑并查看效果需要几秒钟以上,那么你很可能会浪费时间进行上下文切换。借助现代工具和良好的硬件,查看更改不应该花费超过一到两秒的时间,无论是在Web浏览器中刷新代码、在后端运行单元测试,还是在移动模拟器中显示更改。
不要接受从编辑到环境中更改实时生效的缓慢循环。询问队友他们是如何工作的,并模仿那些不需要在自己的机器上等待的方法。如果每个人的编码迭代周期都很慢,那么可以在网上搜索并在论坛上询问如何加快这个过程。
“快速迭代将提高你的生产率,并且让你在工作中时刻保持专注。
一旦掌握了目前环境和工作场所中的开发技巧,请考虑让你的工作流更加便捷。以下是具体方法:
设置频繁操作的快捷键 ,比如运行项目、运行测试、搜索代码库等。
如果你在IDE菜单中反复执行操作,请找出快捷方式或设置键盘快捷键。这些小小的效率提升会帮助你在进行操作时始终保持专注,就像它们已经成为你的“肌肉记忆”一样。
配置你的配色方案。 对一些人来说,这可能是一个细节,但对另一些人来说却有很大的影响。选择一个使你的IDE更易于操作的配色方案;可以选择简单的暗色或亮色模式,也可以选择与你的终端相匹配的颜色。编辑器提供了诸如“Dracula Color Theme”(作者:Zeno Rocha)或“Colour Schemes”(作者:Dayle Rees)之类的配色方案包。
设置代码格式化和代码检查(linting) ,如果需要的话。在编写代码时,if语句中括号是应该在同一行还是换行?缩进时应该使用多少个空格?还是应该只是用制表符进行缩进?
如果你的团队已经有了代码格式化和检查规则,请确保这些设置适用于你的本地开发环境。
如果没有强制规则,请考虑为你的代码选择一个格式化工具和检查样式。启用代码格式化意味着你编写的所有代码风格一致。许多工具可以在保存文件时自动进行格式化,或使用键盘快捷键。在团队协作时,让每个人都使用相同的代码风格是有帮助的。考虑与团队成员讨论并确定一个一致的风格。
如果你的IDE具有playground,记得使用它。在一些开发环境中,IDE附带了一个playground组件,用于快速尝试事物;例如,在iOS开发中的XCode的Swift Playgrounds。熟悉这个环境并摸索一下,因为在快速原型设计时可能会很有用。
研究替代开发环境和playgrounds。有许多开发环境。如果你的团队已经选择了一个,优先学习那个。但也要考虑其他替代方案,以便在某些情况下找到更适合的工具。例如,像JSFiddle这样的编码playgrounds在进行Web开发中快速搭建概念时可能是一个不错的选择。
了解Git,因为版本控制很可能会使用它。学习关于Git的工具和思想,比如:
最重要的是找到一个你习惯使用的Git客户端。
许多开发者发誓要学会使用Git命令行,而不是依赖图形用户界面(GUI)。如果你这样做,你就不会依赖任何一个源代码控制应用程序。我鼓励尝试并不用担心命令行比使用图形界面更难。Git只是一个工具;最重要的是你能创建拉取请求并处理冲突,这些是最常见的操作。
命令行是一个文本界面和强大的工具。在不同的操作系统上有不同的名称:
你也会在集成开发环境中找到命令行。例如,在Visual Studio Code中,它显示在“终端”选项卡下。当你可能需要通过SSH连接远程机器时,命令行特别有用。
熟悉常见的命令行命令,比如导航目录、列出目录内容、运行脚本(比如Python或Node脚本)、在文件内容中搜索,或设置环境变量的值。
熟悉命令行最好的方法是开始使用它进行任务。通过搜索“如何使用命令行执行X”来找出方法——其中“X”是你想完成的任务。你对命令行越熟悉,你的工作流程就会越高效。
学习足够的正则表达式,因为它们可能会有所帮助,特别是在搜索特定文件或进行批量编辑/重命名时。学习它们的基本语法如何工作,并在搜索文件和替换内容时使用它们。
找一个帮助你测试和验证正则表达式的工具,在需要时随手可得。这个工具可以是一个网站,甚至是一个人工智能助手。
SQL是查询关系数据库的语言。当构建存储数据的应用程序或服务时,数据存储将是关系数据库或NoSQL数据库。然而,在查询任何类型的数据时,你可能会使用一些SQL语法。
所以学习SQL的基础知识:如何创建表,如何使用SELECT命令与FROM、WHERE、ORDER BY、GROUP BY、HAVING子句,还有像连接表或使用视图这样的更高级方面。作为额外知识,理解这些语句的性能以及在执行更复杂的查询时表索引的重要性是有帮助的,比如连接。
一旦你对SQL有了相当好的了解,你就可以在处理数据操作时依赖这些知识。
从2023年初开始,AI编程助手在流行度和效率方面迅速增长。这些助手大致分为两类:
询问同事他们使用的助手是哪个,尝试一下,选择和你“合拍”的那个。弄清楚哪些提示是有帮助的,并将有用的提示保存在一个文件中,以备以后参考。
AI编程助手只是另一个提高生产力的工具,一旦你弄清楚如何使用它们并了解它们的局限性。所有工具都有缺点,AI工具的一个重大缺点是它们有时会生成不是你想要的代码。或者代码可能有错误,模型可能会产生幻觉和虚构不存在的API。了解这些局限性可以让你更有效地使用这些工具。
在你的工作场所,工程师们定期使用的内部——可能是定制的——开发工具是什么?当你加入团队并开始进行你的前几次代码更改时,你可能会遇到几个。
例如,在大型技术公司,有定制的CI/CD系统、自定义代码审查工具、自定义监控和警报工具,以及自定义功能标志和实验系统是很常见的。即使工具不是定制的,不同的公司往往使用不同的供应商,因此熟悉它们是必要的。
询问同事们经常使用哪些工具。列出清单,并弄清楚如何访问它们以及它们的工作方式。创建自己的关于如何高效使用它们的“抄袭表”。
当我在Uber时——那里有大量定制的内部工具——我保留了一个有用链接到内部工具和仪表板、命令、提示和查询列表的文档。这个文档在很多年里都很有用!
考虑创建一个个人的“生产力抄袭表”。从一个空白文档开始,添加工具名称、简要描述其作用、链接、命令和其他备注。这个小文档可以帮上大忙,特别是在新团队的最初几个月。