不是天才,不是架构师,只是一个每天被重复劳动折磨的普通程序员。这是我花了2个月摸索出来的真实记录。


我为什么开始折腾效率

先说下我的背景:

  • 3年经验的普通后端开发
  • 公司用 Java + Spring Boot + MySQL
  • 每天工作量:写业务代码 40%、debug 20%、开会 15%、重复劳动 25%

那个"重复劳动 25%"就是我要消灭的目标。

什么叫重复劳动?我列了几个典型的:

  1. 每次新项目都要复制一遍基础配置(30分钟)
  2. 每周写日报、周报(45分钟×5 = 3.75小时)
  3. 查日志、看监控(每天30分钟)
  4. 写接口文档(每次迭代 1-2小时)
  5. 部署/重启服务(每次15分钟,一周3次 = 45分钟)

每周加起来接近 9 小时。

这9小时不是我主动要做的,是我懒得做才去自动化的。如果你也有同感,继续往下看。


工具一:Shell 脚本生成项目脚手架(每周省 2小时)

问题

每次开新项目,我需要:

src/
├── main/java/com/example/
│   ├── controller/
│   ├── service/
│   ├── dao/
│   ├── config/
│   └── utils/
├── resources/
│   ├── application.yml
│   ├── application-dev.yml
│   └── application-prod.yml
├── pom.xml
└── ... 还有10几个文件

每次手动创建 + 复制模板,30分钟打底。

我的解法

写了个 bash 脚本,用变量控制一切:

#!/bin/bash
# scaffold.sh - 快速生成 Spring Boot 项目结构

PROJECT_NAME=$1
PACKAGE_NAME=$2

if [ -z "$PROJECT_NAME" ] || [ -z "$PACKAGE_NAME" ]; then
    echo "用法: ./scaffold.sh 项目名称 包名"
    echo "示例: ./scaffold.sh user-service com.myproject.user"
    exit 1
fi

# 创建基础目录
mkdir -p $PROJECT_NAME/src/main/java/$PACKAGE_NAME/{controller,service,dao,config,utils,model}
mkdir -p $PROJECT_NAME/src/main/resources
mkdir -p $PROJECT_NAME/src/test/java

# 生成配置文件
cat > $PROJECT_NAME/pom.xml << 'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<project>
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.2.0</version>
    </parent>
    <!-- 依赖和插件配置 -->
</project>
EOF

# 生成 application.yml
cat > $PROJECT_NAME/src/main/resources/application.yml << EOF
server:
  port: 8080
spring:
  application:
    name: $PROJECT_NAME
  datasource:
    url: jdbc:mysql://localhost:3306/${PROJECT_NAME}_db?useSSL=false
    username: root
    password: root
EOF

echo "✅ 项目 $PROJECT_NAME 创建完成!"
echo "📁 路径: $(pwd)/$PROJECT_NAME"

用法:

./scaffold.sh order-service com.myproject.order

效果:30秒完成,误差率降到0。

为什么这个有用

你看,不是什么高科技。就是把你每次重复做的事,写成脚本

关键思路:把"手"交给"脚本",你只管"脑子"。


工具二:Markdown 自动生成日报(每周省 3.75小时)

问题

很多公司要写日报。写什么?

  • 今天做了啥
  • 遇到了什么问题
  • 明天计划啥

我用了个极简方案:终端里快速记录,自动格式化成 Markdown。

#!/bin/bash
# daily.sh - 快速记录并生成日报

TODAY=$(date +%Y-%m-%d)
LOG_FILE="$HOME/daily-log.txt"
OUTPUT_DIR="$HOME/daily-reports"
mkdir -p $OUTPUT_DIR

echo "=== 记录今日工作内容 ==="
echo "请输入今天做的事(每行一个,完成后输入 END):"

> "$LOG_FILE"
while true; do
    read -r line
    if [ "$line" = "END" ]; then
        break
    fi
    echo "$line" >> "$LOG_FILE"
done

echo "=== 记录今日问题 ==="
echo "(没有就输入 NONE):"
read -r issues
if [ "$issues" = "NONE" ]; then
    issues="无"
fi

# 自动生成 Markdown
cat > "$OUTPUT_DIR/daily-${TODAY}.md" << EOF
# 日报 - $TODAY

## 今天完成
EOF

while IFS= read -r line; do
    echo "- $line" >> "$OUTPUT_DIR/daily-${TODAY}.md"
done < "$LOG_FILE"

cat >> "$OUTPUT_DIR/daily-${TODAY}.md" << EOF

## 今日问题
$issues

## 明日计划
(待补充)
EOF

echo "✅ 日报已生成: $OUTPUT_DIR/daily-${TODAY}.md"

每次记录只要 2 分钟,格式化零时间。

进阶玩法

如果你用 Linux/macOS,可以结合 tmuxscreen,把日志记录做成常驻任务。甚至可以用 cron 每天下班前自动弹出提醒。


工具三:用 ripgrep 替代 grep(每天省 15分钟)

问题

查代码里的某个方法、某个字段,用 Ctrl+F 一个文件一个文件翻?

我的解法

ripgrep(简称 rg),然后:

# 找所有包含 "UserController" 的文件
rg "UserController"

# 只找 .java 文件
rg "UserController" --type java

# 找方法调用,显示行号
rg "UserService\.createOrder" -n

# 忽略 node_modules 和 .git
rg "TODO" --no-ignore

速度快到飞起。 百万行代码库,搜索结果通常在 0.1 秒内。

安装

# macOS
brew install ripgrep

# Ubuntu/Debian
sudo apt install ripgrep

# Windows (使用 winget)
winget install BurntSushi.ripgrep

# 或者直接下载二进制文件
# https://github.com/BurntSushi/ripgrep

工具四:用 Watchfiles 自动监控日志(每天省 30分钟)

问题

开发时看日志:

tail -f logs/app.log

然后一直盯着终端看?

我的解法

Python 写的日志监控小脚本,关键词高亮 + 自动告警:

#!/usr/bin/env python3
"""logwatch.py - 简易日志监控工具"""

import time
import sys
from pathlib import Path

LOG_FILE = Path("logs/app.log")
KEYWORDS = ["ERROR", "WARN", "Exception", "timeout", "OOM"]

def watch_log():
    if not LOG_FILE.exists():
        print(f"⚠️  日志文件不存在: {LOG_FILE}")
        return
    
    # 定位到文件末尾
    with open(LOG_FILE, 'r', encoding='utf-8') as f:
        f.seek(0, 2)
        
        print(f"👀 开始监控: {LOG_FILE}")
        print(f"🔍 监控关键词: {', '.join(KEYWORDS)}")
        print("-" * 50)
        
        while True:
            line = f.readline()
            if not line:
                time.sleep(0.5)
                continue
            
            # 去除换行符
            line = line.strip()
            
            # 检查关键词
            for kw in KEYWORDS:
                if kw.lower() in line.lower():
                    print(f"\n⚡ [{kw}] {line}")
                    break
            else:
                print(line)
            
            sys.stdout.flush()

if __name__ == "__main__":
    watch_log()

效果:

  • 普通日志正常输出
  • 碰到 ERROR/WARN 自动高亮显示
  • 不会再漏掉关键信息

进阶

可以接上 Telegram Bot 或企业微信 webhook,线上出问题时直接推送通知。


工具五:用 Docker Compose 一键部署(每次省 15分钟)

问题

每次部署服务:

  1. 启动数据库
  2. 启动 Redis
  3. 编译项目
  4. 运行 jar 包
  5. 验证服务是否正常

手动操作 5 分钟,出错再来一遍。

我的解法

一个 docker-compose.yml 搞定:

version: '3.8'

services:
  app:
    build: .
    ports:
      - "8080:8080"
    environment:
      - SPRING_PROFILES_ACTIVE=dev
      - SPRING_DATASOURCE_URL=jdbc:mysql://db:3306/myapp?useSSL=false
      - SPRING_DATASOURCE_USERNAME=root
      - SPRING_DATASOURCE_PASSWORD=root
    depends_on:
      - db
      - redis
    volumes:
      - ./logs:/app/logs

  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: myapp
    ports:
      - "3306:3306"
    volumes:
      - mysql_data:/var/lib/mysql

  redis:
    image: redis:7-alpine
    ports:
      - "6379:6379"

volumes:
  mysql_data:

一条命令完成所有事情:

docker compose up -d --build

回滚:

docker compose down && docker compose up -d

总结:我的效率公式

效率 = 识别重复劳动 × 自动化工具 × 坚持优化

说人话就是:

  1. 记录你每天做的所有事(写下来)
  2. 标出重复的部分(这些是目标)
  3. 为每个重复项找一个自动化方案(脚本、工具、流程)
  4. 坚持用,坚持改

不需要一开始就搞得很复杂。从每周省2小时开始,比从"我要改变世界"开始要实际得多。


我的数据

搞了2个月,统计了一下:

项目 优化前 优化后 节省
项目初始化 30分钟 30秒 29.5分钟
日报 45分钟 2分钟 43分钟
查代码 手动翻 rg 搜索 每次省20分钟
看日志 手动 tail 自动监控 每天省15分钟
部署 手动5步 一条命令 每次省4分钟

合计:每周节省约 9-15 小时(取决于项目频率)。

这些时间我拿来:

  • 学了点 Go
  • 看了几本技术书
  • 甚至多了点时间摸鱼(bushi

写在最后

我不是什么技术大牛,用的工具也都是免费的、开源的。

愿意花时间去优化细节这件事本身,就是拉开差距的地方。

技术这条路,拼的不是一瞬间的爆发,而是每天进步一点点

从今天开始,挑一个你每天重复做的事,试试自动化它。

2个月后,你会感谢现在的自己。


如果你觉得这篇文章有用,欢迎点赞收藏。
如果你有更好的效率工具,评论区告诉我,一起交流。


关于我:
普通后端开发,Java 为主,偶尔折腾 Python 和 Go。分享技术实战经验和效率优化心得。关注我,一起成长。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐