技术决策
我的技术决策方式
- 和 AI 讨论
- 用验证过的方案
- 不折腾
不是"最优方案",是"最快能跑通的方案"。
我的固定方案
一套架构打天下
后端: Python + FastAPI
前端: Vue 3 + Element Plus
数据库: PostgreSQL + Redis
为什么固定这套?
- 已经验证过,能跑通
- 熟悉,开发快
- 性能够用
几乎所有项目都用这套:
- wechat-rss: Python + Vue 3 + PostgreSQL
- ainewsrss: Python + Vue 3 + PostgreSQL
- VoiceType: Python + Vue 3 + PostgreSQL
即使二开的项目是 Node.js + TypeScript,我也会改成 Python + Vue。
真实案例: wechat-rss 项目
技术决策过程
后端: 为什么选 Python + FastAPI?
个人喜好
- 我喜欢 Python
- 写起来舒服
之前的项目经验
- 用过,知道能跑通
- 不需要踩新坑
和 AI 讨论过
- 问 AI: "做 RSS 服务用什么技术?"
- AI 推荐 Python,正好我也熟悉
没有考虑其他方案:
- Node.js? 不熟悉,不考虑
- Go? 学习成本高,不值得
前端: 为什么选 Vue 3?
偶然的选择
- 需要框架,AI 生成快
- Vue 3 比较新,就用了
React 的问题
- 之前 React 出过安全漏洞
- 就换成 Vue 了
够用
- Vue 3 能做的,React 也能做
- 选哪个都行,就选了 Vue
注: Vue 3 可能也有漏洞,但我不知道,用着没问题就行
数据库: 为什么选 PostgreSQL?
目前比较火
- 社区活跃
- 文档多
性能好
- 支持高并发
- 功能强大
之前用过 MySQL
- 后来改成 PostgreSQL
- 现在就一直用这个
Redis:
- 做缓存
- 提升性能
- 成熟方案
真实案例: ainewsrss 项目
为什么直接复用技术栈?
理由很简单:
开发效率更高
- wechat-rss 已经跑通了
- 直接复用代码
- 改一下核心逻辑就行
核心逻辑类似
- 都是抓取信息
- 都是生成 feed
- 只是信息源不同
不需要重新决策
- 技术栈已验证
- 不需要踩新坑
- 专注在业务逻辑
结果:
- 开发速度很快
- 2 周做出来
- 如果换技术栈可能要 1 个月
真实案例: VoiceType 项目
同样的技术栈
后端: Python + FastAPI
前端: Vue 3
数据库: PostgreSQL
为什么还是这套?
- 习惯了
- 能快速开发
- 不想折腾
即使是完全不同的项目类型(语音输入),也用这套架构。
我的决策原则
原则 1: 用验证过的方案
不尝试新技术:
- ❌ "听说 Rust 很火,试试 Rust"
- ✅ "Python 验证过,继续用 Python"
为什么?
- 新技术有坑
- 学习成本高
- 浪费时间
什么时候换?
- 现有方案真的不行了
- 比如性能瓶颈(但大多数项目到不了)
原则 2: 优先开发速度
性能不是首要考虑:
我的逻辑:
用户量 < 1 万 → Python 够用
用户量 1 万 - 10 万 → Python 还能扛
用户量 > 10 万 → 考虑优化(但大多数项目到不了)2
3
现实情况:
- 我的项目用户量最多几千
- Python 完全够用
- 不需要 Go 的极致性能
优先级:
开发速度 > 性能
能快速做出来 > 跑得快2
原则 3: 和 AI 讨论
我的决策流程:
- 有想法 → 和 AI 讨论
- AI 建议 → 评估是否符合我的习惯
- 选方案 → 优先选我熟悉的
示例对话:
我: "做 RSS 服务,用什么技术栈?"
AI: "推荐 Python + FastAPI,或者 Node.js + Express"
我: "我熟悉 Python,就用 Python"
没有复杂的对比和分析,直接选熟悉的。
原则 4: 不折腾
什么叫不折腾?
❌ 折腾的做法:
- "这个项目用 Python,下个项目试试 Go"
- "Vue 用腻了,换 React 试试"
- "听说 Svelte 很好,学一下"
✅ 不折腾的做法:
- "Python 能跑,就一直用"
- "Vue 够用,不换"
- "一套架构打天下"
为什么不折腾?
- 学习新技术浪费时间
- 每个技术都有坑
- 做产品不是学技术
二开项目的技术决策
原项目是其他技术栈怎么办?
我的做法: 改成我熟悉的
示例:
- 原项目: Node.js + TypeScript
- 我改成: Python + Vue 3
为什么?
我不熟悉 Node.js
- 看代码很慢
- 改代码容易出错
改成 Python 更快
- 理解逻辑后重写
- 用熟悉的技术实现
- 开发速度更快
后期维护容易
- 我能看懂
- 出问题能修
什么时候保留原技术栈?
只有一种情况:
- 原项目代码质量很高
- 我能看懂
- 改动很小
但大多数情况,我会改成 Python + Vue。
二开项目的技术决策
新手怎么做技术决策?
我的建议:
第一个项目: 跟着教程走
- 教程用什么,你就用什么
- 先跑通,建立信心
第二个项目: 复用第一个
- 技术栈不变
- 只改业务逻辑
第三个项目: 还是复用
- 继续用同一套
- 形成自己的"固定方案"
后续项目: 一套打天下
- 不换技术栈
- 专注做产品
什么时候换技术栈?
只有这些情况:
- 性能真的不行了(高并发场景)
- 用户量超过 10 万
- 响应很慢,影响体验
- 优化后还是不行
我的实际例子:
如果有纯 API 项目,对性能和高并发有要求,我会考虑从 Python 升级到 Go。
为什么换 Go?
- Go 的并发性能比 Python 强太多
- 适合高并发 API 服务
- 但只在真正需要的时候才换
- 做完全不同类型的项目
跨平台客户端:
如果需要做客户端(桌面应用),且要跨平台(Windows/Mac/Linux),我会考虑用 Tauri 实现。
Tauri 的特点:
- 基于 Rust(性能好)
- 前端用 Web 技术(Vue/React)
- 打包体积小
- 可以跨平台
其他场景:
- 移动端 App → Flutter/React Native
- 游戏 → Unity/Godot
- Web 项目 → 还是 Python + Vue
- 团队要求
- 公司规定技术栈
- 没办法,只能学
但大多数个人 Web 项目,不需要换。
常见问题
Q: 一直用同一套技术,会不会落后?
A: 不会,因为:
- Python 不会过时
- Vue 3 是新的
- PostgreSQL 很成熟
而且:
- 做产品不是学技术
- 用熟悉的才能快速开发
- 新技术可以等成熟了再学
Q: 不尝试新技术,怎么提升?
A: 提升的重点不在技术
更重要的提升:
- 产品思维(发现需求)
- 架构设计(项目结构)
- 问题解决(调试能力)
- 商业化(赚钱能力)
技术栈只是工具,会用就行。
Q: 原项目技术栈很好,为什么要改?
A: 因为我不熟悉
真实情况:
- 用不熟悉的技术,开发慢 3 倍
- 出问题不会修
- 改成熟悉的,虽然花点时间,但后面快
结论: 用熟悉的技术,总体效率更高。
核心原则
技术决策 = 选熟悉的,能快速开发的
熟悉 > 先进
- 你会用 > 别人说好
快速 > 完美
- 能快速做出来 > 性能极致
验证过 > 新技术
- 跑通过的方案 > 新出的技术
一套打天下
- 不折腾
- 专注做产品
记住: 大多数个人项目,用户量到不了需要换技术栈的程度。用熟悉的,快速做出来,比什么都重要。