能发挥工具的优势才是一个好的工程师
最近大把时间在用 C++ 写一个 Windows 系统服务,到上周五把主要功能、打包、安装、卸载服务等等最重要的部分写完了,完成这个版本之后我对 Windows 的固有刻板印象也有所改变了,对于抵触使用主观感受不好的工具的想法也有所改变了。
Windows 真的很不适合开发者吗?
冷静的想一下过去我对 Windows 用来做开发比较抵触两件事情
- 配置环境变量
- 入口深
- UI/UX 对于编辑较长的环境来讲简直是噩梦
- 难以搜索
- 缺失系统包管理工具
- 安装需要的开发工具时不能通过类似
apt install foo
dnf install bar
这样的操作快速且高效的完成 - 卸载依赖也需要借助有 UI 界面的程序管理完成,甚至还需要自己手动去清除环境变量
- 查看系统内工具列表、版本号也不是一件简单的事情,且给出的结果并不清晰
- 安装需要的开发工具时不能通过类似
在过去的几周时间里我感受到了这两个问题都有所改善。
首先是环境变量,PATH
环境变量值现在可以分行编辑,不再是所有配置都在一行然后使用 ;
来分割了,不过依旧没有搜索,比不上 *nix、macOS 等在编辑器里面配置,使用编辑器搜索功能即可快速定位;其次是系统包管理工具,我最近在使用 choco
,最起码它能让 Windows 不再缺失包管理工具,比如没有 git
的时候我能随手 choco install git
,而不用再 Google-git.com-download-install,全程用鼠标来完成(鼠标在这种时候是没有一条命令来的快)。
当然,我很清楚 “有所改善” 和 “做的很好” 差距还是很大的,但是我也一直都在思考,当开发者在使用一个工具的时候最重要的事情是什么呢?
显然,是需要 “扬长避短”。
那我们来回到开头的问题,Windows 真的很不适合开发者吗?我觉得不是的,甚至我觉得 “适合开发者” 本身就是一个伪命题,开发者应该做的是清楚选择的工具的优、劣,结合自己的实际业务来完成工具选择,那这时候要选择 Windows、*nix 还是 macOS 来做开发、服务就不是哪一点让自己觉得不爽、哪些事情让自己很抵触的这种很不理性的问题了。
比如我在做的这个 Windows 系统服务,它的需求来源于在项目中一定要使用一个脱离不了 Windows 的应用,这个应用可以通过 UDP 来完成一个通信,例如自定义配置项目,在这个前提我需要完成整个系统的控制服务,如果不引入其他设备的话最好就是运行在 Windows 上。