在新公司工作了将近四个月,我想分享几个能够提高小公司或小团队开发效率、早点下班的建议:

  1. 尽早建立CI/CD流程。不管是使用 GitHub Action,还是自建 GitLab 或 Jenkins,早期将流水线纳入开发过程中可以减少部署和配置环境的工作量。这样配合像 Kubernetes 这样的容器集群,可以实现代码合并后的自动部署和上线。
  2. 尽早引入代码审查和开发规范。无论合作同事的水平如何,至少大家能够遵循统一的规范,如代码规范和分支提交合并规范,减少混乱和分支错误的问题。另外,代码审查至少能够在合并代码之前检查是否存在问题,避免重新工作和回滚代码的情况。
  3. 尽早引入代码质量工具链。这里的工具链包括格式化器、代码检查器等。虽然在项目还未启动时花费大量时间引入工具链可能会受到批评,但对于协作来说是有益的。例如,对于 Python 这样的动态语言,如果每个人都不写类型注解,那么一旦出错,排查问题就会很困难。因此,应该引入像 Pyright 或 Mypy 这样的静态类型检查工具,以避免在上线代码时出现问题。我的做法是将工具链引入到 git commit 钩子中(当然也可以放到 CI 中,但我更喜欢在每次推送代码前就发现问题然后修改,而不是推送代码后为了修复 CI 而再提交一次)。
  4. 尽早接入日志和告警通知。这通常适用于后端接口。在微服务和容器化流行的时代,提前配置好日志工具,尤其是使用结构化日志记录,可以避免由于日志来源过多而无法定位的问题。同时,即使小团队没有专门的监控资源,也应该至少配置一个企业微信或飞书机器人进行告警通知,以便第一时间发现问题。不论是日志记录还是通知,都应该携带请求上下文,以便快速定位问题。
  5. 尽可能选择相对新的技术栈。可能有人对 Java 8 和 MySQL 5.7 这样的旧技术有情感依恋,但在小公司,领导通常不会太在意你使用的技术栈,只要你能根据业务需求交付结果即可。因此,尽量选择相对新的技术栈,享受新特性的同时也能面向未来,而不是自己背负历史包袱。例如,我直接选择 Python 3.10 或 Python 3.11(考虑到社区可能尚未完全适配 Python 3.12)、Node 20+、Vue 3、PostgreSQL 16 等技术栈。