一个普通开发者的效率革命:我用5个免费工具每周省下15小时
不是天才,不是架构师,只是一个每天被重复劳动折磨的普通程序员。这是我花了2个月摸索出来的真实记录。
我为什么开始折腾效率
先说下我的背景:
- 3年经验的普通后端开发
- 公司用 Java + Spring Boot + MySQL
- 每天工作量:写业务代码 40%、debug 20%、开会 15%、重复劳动 25%
那个"重复劳动 25%"就是我要消灭的目标。
什么叫重复劳动?我列了几个典型的:
- 每次新项目都要复制一遍基础配置(30分钟)
- 每周写日报、周报(45分钟×5 = 3.75小时)
- 查日志、看监控(每天30分钟)
- 写接口文档(每次迭代 1-2小时)
- 部署/重启服务(每次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,可以结合 tmux 或 screen,把日志记录做成常驻任务。甚至可以用 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分钟)
问题
每次部署服务:
- 启动数据库
- 启动 Redis
- 编译项目
- 运行 jar 包
- 验证服务是否正常
手动操作 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
总结:我的效率公式
效率 = 识别重复劳动 × 自动化工具 × 坚持优化
说人话就是:
- 记录你每天做的所有事(写下来)
- 标出重复的部分(这些是目标)
- 为每个重复项找一个自动化方案(脚本、工具、流程)
- 坚持用,坚持改
不需要一开始就搞得很复杂。从每周省2小时开始,比从"我要改变世界"开始要实际得多。
我的数据
搞了2个月,统计了一下:
| 项目 | 优化前 | 优化后 | 节省 |
|---|---|---|---|
| 项目初始化 | 30分钟 | 30秒 | 29.5分钟 |
| 日报 | 45分钟 | 2分钟 | 43分钟 |
| 查代码 | 手动翻 | rg 搜索 | 每次省20分钟 |
| 看日志 | 手动 tail | 自动监控 | 每天省15分钟 |
| 部署 | 手动5步 | 一条命令 | 每次省4分钟 |
合计:每周节省约 9-15 小时(取决于项目频率)。
这些时间我拿来:
- 学了点 Go
- 看了几本技术书
- 甚至多了点时间摸鱼(bushi
写在最后
我不是什么技术大牛,用的工具也都是免费的、开源的。
但愿意花时间去优化细节这件事本身,就是拉开差距的地方。
技术这条路,拼的不是一瞬间的爆发,而是每天进步一点点。
从今天开始,挑一个你每天重复做的事,试试自动化它。
2个月后,你会感谢现在的自己。
如果你觉得这篇文章有用,欢迎点赞收藏。
如果你有更好的效率工具,评论区告诉我,一起交流。
关于我:
普通后端开发,Java 为主,偶尔折腾 Python 和 Go。分享技术实战经验和效率优化心得。关注我,一起成长。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)