软件工程师生产力:编码
本文发布在我的博客https://coder.today/software-engineer-productivity-coding-75fa21d3804上。这是它的修订版。
生产力技巧是一系列面向编程人员的通用文章。这些技巧适用于任何环境、框架、语言或平台。
这个故事属于多流系列:
- 生产力:编码——本文
- 生产力:工作流程——行为和环境提示
我很懒,但我珍惜我们最宝贵的财富:时间⏰。话虽如此,我想分享一些提高效率的小技巧。
TL;TR🕮
- 自动化一切
- 学习并定制您的工具
- 存储你的片段和其他提示
自动化命令🤖
观察自己,找出你每天多次输入的命令,并根据需要进行简化和分组。如果你只使用 Git 可视化客户端,你应该学习底层命令。
几乎所有命令。我通常会手动执行重要命令链中的最后一个命令(例如test&&build&©&&upload
,手动部署)。
使用别名可以减少人为错误,提高交付效率。省去日常繁琐的步骤。
自定义别名的缺点是:缺乏灵活性和认知负荷。这意味着别名只能在一个环境中使用(例如你的工作笔记本电脑),你必须记住它们。
我还推荐使用git 自动补全功能或bash-it之类的框架,它们通常(在命令命名方面)有一定的逻辑性,更容易记住。搜索针对你的语言、框架或平台构建的 bash 助手。
无需输入当前 git 分支名称,我节省了超过 100 万个字符的输入量,并且使用别名我避免了许多可能的错误。
即使您不使用别名,使用HEAD
而不是 的做法master
也会使您减少人为错误,例如习惯于输入git pull origin HEAD
而不是git pull origin master
。
即使您使用的是 Windows,您也可以使用 Bash,我使用Git for Windows 中的 Git bash。
Bash 提示:学习使用bash 历史记录,尤其是 CTRL+R。
自定义你的工具🌂
你花费大量时间使用 IDE、Bash 和其他工具。请根据你的需求和感受定制你的工具。你应该💙 使用这些工具,否则你的工作会很糟糕。如果你讨厌某些东西,现在就修改它(比如缺少键盘快捷键、显示颜色),那就继续吧,修复它然后回来,我会等你的。
我喜欢我的聚会是欢快的、色彩丰富的,我所有的编辑器都有黑色主题。
自定义您的环境
让你的环境为你服务,而不是与你作对。最基本的例子就是在全局 git.gitignore
文件中添加你的 IDE 文件。这样,你每台机器只需添加一次,而不是每个项目都添加,这样可以节省时间。
#~/.gitignore
.idea/
.vs/
观察一下自己,过去还有哪些系统设置有问题,比如防火墙规则?Python 版本?Unity3D 本地缓存?一次性解决所有问题。
了解你的工具🏧
当您学习新的开发技术、新的框架、范例和设计模式时,您应该学习为您设计的工具。
文本编辑器是为编写文本的编辑者准备的,而 IDE 是为专业开发者准备的。为什么?因为我们珍惜时间,我们是专业人士,我们的时间是有报酬的,我们希望在有限的时间内尽可能多地交付成果。IDE 更重,因为它们内置了更多专为我们设计的功能。附言:一个带有数十个插件(例如编译器/git/linter 集成)的文本编辑器才是 IDE。
走出舒适区来提高你的技能。
升级你的 IDE 并学习新功能,很可能它能满足你的需求。偶尔搜索一下新的 IDE,你可能会有惊喜。
使用更多键盘快捷键可以大幅提升工作效率。例如,“扩展选择”功能多年来为我节省了大量时间。其他示例包括实时模板和多光标。
我经常使用的实时模板是调试消息,例如 ifIsDebugBuild {print("msg", var)}
或 try/catch 表达式。
您可能不时使用一些正则表达式替换,但有时多光标更简单、更高效。
对于多光标来说足够好的场景:硬编码数据、枚举、模板以及大多数无聊的东西。
我看到的最新 IDE 功能是机器学习助手 (Codota)。它了解所有开源代码、设计模式以及其他开发人员所犯的错误。
自动化你的开发环境🎰
上次我找到新工作时,花了好几天时间才为一个大项目搭建好完整的开发环境。其实不必这样,现在有一些专门为这类自动化设计的工具。Boxstarter (我还没用过)可以在几分钟内,通过一段代码,构建你的Windows开发环境。
我开始用Docker来做这类事情。使用简单的 CLI 命令,你就可以安装所需的大部分工具/服务/软件。无需编译、搜索软件包或二进制文件。
示例:具有特定版本和可视化管理工具的持久 mongo-db 实例。
不要成为🔨
“对于一个拿着锤子的人来说,所有东西看起来都像钉子。”
如果你需要系统脚本,不要用 JavaScript,学点 Bash,问问同事或 Stack Overflow 怎么做。如果你需要一个小型浏览器动画,那就学习 CSS3。你懂的。虽然这会多花几分钟,但它会为你的未来打开一扇巨大的大门🚪。
大多数工程师都有这个问题。我以前用 PHP 做所有事情,计算机科学毕业生却被 Java 或 CPP 卡住了。这是人之常情,设计师用 Photoshop 时也会犯同样的错误,QA 通常会用 Jira 之类的 bug 跟踪软件。
我们的想法是,逐步扩展你的工具集,一次写一个小脚本。
* 保存时 💾
在“保存文件”操作中尽可能地自动化一切,我最常激活的是“保存时自动格式化”。
自动格式化使我能够编写快速而粗糙的代码,我不会浪费时间在缩进、逗号、分号或其他美化元素上,那是 IDE 的工作。
自动格式化还能避免更多人为错误,例如忘记格式化,导致之后产生 git 冲突或愚蠢的提交。您和您的同事将更加高效。
IDE 可以帮您完成 IT 工作
您可以根据需要在保存时创建自己的迷你管道:编译、错误检查、单元测试、热推送代码(用于 Web 开发、JS 和 CSS),等等。对于更耗时的脚本,我使用手动触发的任务。
例如,在Go中,我启用了“保存时运行测试和覆盖率”功能,始终打开控制台可以提高我的效率。我可以更快地工作,而不必担心重构,而且我每分钟都能知道代码是否正确。
待办事项🔖
在代码中使用更多功能//TODO's
。不要打断当前流程,不要因为解决相邻问题而脱离“工作状态”。如果遇到小问题,请删除 TODO,稍后再以更好、更广阔的视角返回。
片段📚
不要像我的一些朋友那样,把代码片段存储在聊天室里,你可以使用Gists或其他类似的服务。你自己的代码库,谷歌云端硬盘里的文档,随便你怎么称呼。这样做的目的是存储那些有用且难以找到/获取的代码片段。这将节省你的时间,以及你未来的时间。
分享 1-n
我们可以将之前的解决方案推广到其他问题。如果一位同事遇到了问题,而你打算帮助他,那么将来很可能也会有其他同事需要这个答案。作为一条经验法则,使用1-n 个持久的沟通渠道,分享即关爱。
保持项目文档简洁,撰写文章/故事,即使只是内部交流。记录你的内部会议,这样
做的目的是为了避免通过电子邮件/私聊解决问题,而是将知识分享给其他人,以便他们能够获取。
这将节省您的时间,因为您不必两次解释/解决相同的问题。
自动化您的 API 调用📝
如果您使用任何类型的 API,我建议您使用Postman之类的工具。如果您将调用集中到一起,甚至可以自动化它们(在持续交付管道中),与同事共享它们(作为配置文件),并验证响应(使用 JSON 模式库)。我过去常常将测试与服务器 API 源代码放在同一个仓库中。
谢谢!🤝
请向我发送您的反馈,以便我改进以下帖子。