跳到主要内容

一份来自 Web 开发者的 Mac 软件推荐清单

准则

在从事程序开发的这些年里,我也有幸见识到了各种各样风格的工程师,每次一起组队搞需求时的场景就好比:“八仙过海,各显神通”,需求内容虽然很相似,但好在场景不同,人不同,环境不同,其得到的结果当然也不一样,正可谓其乐无穷。为了得到正向的结果,团队的每人都在强调效率,于是,最近看到了好些现象:

  • 敏捷研发流程已具备普适性,大多数公司的迭代内容越来越小,发布频率越来越快。
  • 研发流程越来越自动化,依赖“人”能完成的事情越来越少。
  • 开发者们使用 ChatGPT、Copilot 进行辅助开发。
  • 领导们开始关注代码量、千行 BUG 率。
  • ...

高效率并不意味着正向的结果,如果方向错了,只会更加快速地走向毁灭。虽然现在是个内卷的时代,但我还是希望大家怀抱着类似这样的初心去卷:”提高自己的工作效率,有更多的时间去享受生活“,因为如果仅仅为了收入去卷业务、卷技术,我们永远可能是一只笼中鸟。

回到正题,我认为优秀的程序员身上都有一个共性:”发现问题,解决问题“。发现问题是指能从一个问题上看到更多的潜在的问题,并且能从结果出发去挖掘自身可能存在的问题;而解决问题,不仅仅是经验与态度那么简单,而是

好像只有敲击键盘越快代码写的足够快,就越牛逼 最近到了内卷年,大家都忙着但工程师们是内卷的,有的卷如果就编码效率而言个体间的差别是非常大的,其中我认为能够体现出水平高低的点是:“解决问题的能力”,当问题越复杂,体现出来的能力差距就越大。若不论工程师的能力水平,共同完成一项简单的工作内容:“绘制某购物网站的 UI”,我想最终所耗费的时间也是几倍的差值。在此简单进行归纳一下,从解决问题的维度出发,其所耗费的时间大致取决于以下几点:

  1. 学习成本。若所解决的问题有迹可循,即可按照标准方案进行工序的设计,最终完成时间取决于执行效率;若问题无迹可循,则需要先进行一些信息整理、技能学习,此时学习能力与归纳能力就会形成一定的学习成本。
  2. 编码效率。
  3. 流程集成。

因此,根据不同的领域与个人的习惯,大多数工程师会定制化属于自己的 WorkFlow,以此来逐渐向“10 倍工程师”靠齐,我们每人都应该相信,“10 倍工程师”是真实存在的,因为那也代表了我们对最佳实践的追求。

作为一名 Web 工程师,我也在此推荐一些平时我在工作中高频使用到的一些工具,便于大家去集成与定制属于自己的 WorkFlow。

如果按照编码效率去归纳人群,那么往往一名优秀的程序员的效率往往是几倍于低效能工程师

灵活地配置自己的 WorkFlow,一名工程师的基本素养,根据每人不同的使用习惯,往往差别会非常大。 作为一名 Web 开发者,长期下来以后每人都有自己独特的 Workflow,以保持较高的效率,灵活的配置自己的开发工作,效率往往会高出一大截,意味着也许你能拥有更多的学习(摸鱼)时间。对于我而言,我选择自己的工具集会遵循几个主观原则:

  1. 不喜欢使用大而全的 IDE 功能来完成基础的开发工作。比如对于 IntelliJ 家的工具,除了可以高效地进行应用开发,我们还可以使用内置的命令行、Git 版本管理、数据库查看与各依赖版本管理等功能。俗话说术业有专精,可奇怪的是 IntelliJ 家总是把所有开发需要使用到的功能都做得十分完美,但在我看来,这依然是一种绑架行为,一旦习惯就很难去脱离其生态去工作。在工作中我时常会切换开发语言,难免会使用不同的编辑器,比如使用 VSCode 开发 TypeScript 会得到更流畅的开发体验,在这种场景下 IDE 的许多功能说好听点就是功能齐全,难听点就是一个词:臃肿。
  2. 崇尚开源。从学生时代开始,我就喜欢使用各种各样的免费开源的软件,我几乎使用免费的各类软件完成了所有日常需求,而促使我这么去做的原因无外乎两点:穷、支持正版,穷很好理解,而正因为支持正版,所以我使用免费软件。
  3. 做一件事,做好它。既然在软件开发工作中是没有任何银弹的,那么在面对不同使用场景时,选用相对最合适的工具就成为了一件很重要的事。举一个例子在软件工程师的工作中,写代码只是其中一个环境,在这种时候不同的编辑器都相较于不同的语言有一定的优势,而提交代码的环节又是独立于软件开发阶段的,在这种情况我比较喜欢用 Git 命令行,因为这代表无论任何工作环境,或是服务器上,我都拥有一套独立的工作流程,无需其他的工具学习成本,但是对于 Review 代码而言,又是另一个环节了,在这里我比较推荐使用社区版本 Idea 自带的 Code Review 相关的工具,它能对 Git History 进行完整的检索、组合与可视化展示。
  4. 善用命令行。由于 macOS 是属于 Unix 系统的一个分支,那么对于命令行操作而言,它其实是十分契合于服务器工作环境的,因此无论你做什么开发工作,假如能够熟练地在开发过程中使用命令行进行项目的依赖安装与启动等相关工作,那么你也能拥有一份比较基础的运维能力,而不是脱离了固定的使用环境就变的无法适从。
  5. Web 当道。我需要使用到各种各样的开发工具,比如 Encrypt/Decrypt、Data Visualize、Formatting 等工作,如果有 Web App,请使用它。这个也许之后我再和大家分享我在 Web 使用到的各种工具,如果你能找到 Web 软件来替代原生 App 并具有不错的使用体验,请一定要考虑多使用它。

以下为一些我在 macOS 环境下比较常用的软件推荐。

常用软件推荐

必备软件:

笔记软件:

  • Typora,Markdown 编辑器,我愿意称其为本地编写 Markdown 最顺畅的工具。
  • Notion,我现在已经使用它来管理绝大多数知识文档。
  • XMind, 思维导图绘制工具,可以无限期试用,虽然次类型工具特别多,但我还是更推荐使用原版。
  • 语雀桌面客户端,我愿将它作为知识库管理的首选。

数据库客户端:

  • Robo 3T,最常用的 Mongo 终端。
  • Sequel Ace,Sequel Pro 的长期维护版本,一款十分好用的开源 SQL 工具,支持常见 SQL 数据库。
  • AnotherRedisDesktopManager,开源的 Redis 客户端,快速、稳定。
  • DB Browser for SQLite,用于浏览本地 SQLite 数据文件的客户端,能够较为方便地进行数据浏览。
  • DBSchema,DbSchema 是一种通用的数据库设计工具,对 NoSQL 支持较好,本地能够方便地进行数据库字段设计。

编辑器/IDE

  • VSCode,如果你喜欢用编辑器,那目前这是宇宙最好的 Editor。
  • IntelliJ IDEA,开源免费最强大的 IDE,即使不写 Java,但用它来进行 Code Review 也很不错。

影音:

  • IINA,支持格式多、简洁流畅的开源视频播放器
  • uTorrent,种子下载器

工具:

  • Android File Transfer,Android 系统文件传输工具
  • Bob,开源免费的翻译工具,支持截图翻译、。
  • Postman,本地接口请求管理,虽然类似的工具很多,但 Postman 还是功能最全,也十分易用的工具。
  • AppCleaner,清理软件残余文件, 更干净地卸载应用。

增强:

  • Mos,开源的鼠标平滑滚动工具。
  • Magnet,快捷的桌面应用窗口分割工具。(收费)
  • Clipy,开源免费,剪贴板扩展工具,用于同时复制多段信息,或查看剪贴历史。
  • RDM,轻松更改屏幕分辨率。

代理:

  • V2rayU,支持 vmess,shadowsocks,socks5 等服务协议,支持订阅, 支持二维码,剪贴板导入,手动配置,二维码分享等。
  • Proxifier,可以使用 sock5 进行全局代理。(收费)
  • Charles,应用开发的抓包与调试工具。(收费)

终端

  • iTerm2,终端窗口软件,在 Linux 系统中最常用的是 TMUX,但对于 iOS 系统来讲,iTerm2 足以。
  • mosh,增强 SSH 连接的稳定性,十分好用的一款终端连接客户端
  • Oh My ZSH,最好用的 Shell 工具
  • zsh-syntax-highlighting,zsh 插件 - 终端主题颜色
  • zsh-autosuggestions,zsh 插···件 - 自动提示补全
  • hstr,增强搜索命令行历史
  • z,快速跳转到常用目录

移动开发

  • COCOAPODS,iOS 依赖管理器,如果你有开发或调试 Swift 应用的需求,可以首要考虑安装。
  • XCode,作为一名 macOS 平台的 Web 开发者,XCode 是你迟早会接触到的开发者工具。
  • 微信开发者工具,开发小程序、调试微信 H5 必备工具

Node.js

  • nvm,node 版本管理
  • yarn,推荐使用 brew 安装,切 node 版本时不会变

webapp

绘图

  • 幕布,好用的思维导图绘制工具,免费版足够用,方便地进行导出。