擦敲的产品
很多人学产品,第一反应是看方法论。哇靠什么用户画像、竞品分析、需求池、优先级、MVP、增长飞轮、北极星指标,一套词下来,听着很专业,生人勿近。
很多人学编程,第一反应是看技术栈。一三五前端 React,二四六后端 Spring Boot,周日数据库 MySQL,缓存 Redis,部署 Docker,再加一点 AI 辅助开发,感觉万物俱备,只差一个需求东风。
然后产品文档写了一万字,打开编辑器不知道第一行代码写什么。代码仓库建好了,页面也能跑起来,一问这个东西解决谁的问题,用户为什么要用,怎么持续迭代,又开始沉默。
然而更常见的情况是,产品归产品,程序归程序,中间隔着一条看不见的河。
河这边的人说,技术实现一下就行。
河那边的人说,需求怎么天天变。
最后项目变成了一个很熟悉的形态,看起来什么都有,实际上哪里都差一口气。页面能点,流程能走,截图也能发,可一旦真的拿来用,问题就开始排队上号。
这个按钮为什么在这里,这个字段为什么必须填,这个列表为什么查不到,导入为什么失败,异常为什么没有提示,用户为什么看不懂,开发为什么想跑路。
所以我想写一个系列,名字就叫《擦敲的产品》。
这个名字只能说我们河南银懂得都懂 ^-^
为什么要从零开始记录
从零开始做项目,它往往意味着你手里只有一个模糊想法,没有用户,没有数据,没有现成流程,没有漂亮的融资故事,也没有一个会自动冒出来的产品经理告诉你下一步该干什么。
你需要自己判断,这个想法到底有没有必要做。
你需要自己拆需求,画页面,定字段,设计流程,写接口,建数据库,调样式,处理报错,部署上线,再回头骂一句,早特么知道这里不这么写了。
这件事最折磨人的地方在于它要求你同时具备两种脑子。
一种脑子看问题。即用户/客户为什么需要,场景在哪里,操作路径怎么走,功能边界怎么收,先做什么,后做什么,哪些东西可以砍掉,哪些东西不能砍掉。
另一种脑子要看实现。数据要怎么存,接口怎么拆,权限怎么控,异常怎么处理,状态怎么流转,日志怎么记录,部署怎么稳定,后续怎么扩展,代码怎么别写成祖传毛线团。
单学产品,很容易漂在天上,出现理论可行,实际做不了。
单写代码,很容易钻进地里,做出来一堆无用的东西。
一个真正能落地的项目,需要在天上看方向,也需要在地里挖管线。如果方向错了,写得再漂亮也是自嗨。如果管线烂了,想法再正确也跑不起来。
这就是我想记录的核心:能复用的经验尽量留下来,不能复用的坑也留下来。
产品到底是什么
很多人对产品的理解,会经常被大厂的话术带偏。
一说产品,就想到排期、会议、评审、原型图、竞品分析、用户增长。好像产品天然就是一个离代码很远的岗位,专门负责提出需求,然后让开发实现。
但对于一个独立项目,或者一个小团队项目来说,产品首先是一种“把混乱变成可执行方案”的能力。
一个念头,不能直接变成项目。
“我想做一个学习工具”,这不是项目。
“我想做一个 AI 助手”,这也不是项目。
“我想做一个管理系统”,这更不是项目,这句话的含金量大概等于“我想干OPC”。
真正的产品工作,是把这些模糊想法继续往下压。谁用,什么时候用,为什么现在的方法不行,最短路径怎么解决,第一版交付什么,哪些功能先别碰,哪些体验必须有,数据从哪里来,用户操作完之后获得什么结果。
越往下问,越容易出现问题。
很多想法看起来很大,一拆就是空泛的。很多需求看起来很简单,一做就崩溃了。
比如一个“导入文件并展示结果”的功能,听着只有八个字。真做起来就会出现文件格式、字段映射、错误行提示、重复数据处理、导入进度、失败回滚、权限校验、历史记录、异步任务、日志追踪、结果导出等一串问题。
产品不是写几个漂亮名词,也不是做几张好看的原型。产品要负责把一个想法变成可理解、可开发、可使用、可迭代的东西。它要把“我觉得可以”变成“用户这样做,系统这样响应,数据这样流动,异常这样处理”。
说得更简单一点,产品就是给项目立规矩。
没有规矩,代码只会越写越乱。没有实现意识,规矩也会变成空中楼阁。
程序到底是什么
程序也经常被误解。
很多人以为写程序就是把需求翻译成代码。产品说要登录,那就写登录。产品说要列表,那就写列表。产品说要导出,那就写导出。最后项目像一个功能拼盘,每个菜都能吃一口,合起来像食堂随机打饭。
真正的程序开发,绝不只是能跑(能跑路也算)。
能跑只是底线,甚至有时候连底线都算不上。因为很多东西在本地能跑,在测试环境就开始死给你看。
哇靠今天端口冲突,明天依赖版本冲突,后天数据库字符集冲突,大后天上线之后用户一顿乱点,系统直接进入流哈喇子的状态。
程序要解决的是确定性问题。
输入是什么,输出是什么,状态怎么变,错误怎么收敛,数据怎么一致,性能怎么兜底,边界怎么限制,权限怎么隔离,未来怎么维护。
写代码的过程,其实是在不断逼问产品方案。这个字段能不能为空,这个状态能不能回退,这个用户有没有权限看到这条数据,这个任务失败后要不要重试,这个按钮连点十次会怎么样,这个文件一百兆还能不能处理。
很多属于产品的问题,只有写代码时才会暴露。
很多属于技术的问题,也只有回到产品场景里才知道值不值得解决。
比如缓存。不是所有项目都需要上来就是 Redis 起手。比如微服务。一个还没用户的小项目,拆成七八个服务,最后大概率是在本地给自己建了一座迷你迷宫。比如 AI。能接大模型不代表项目有智能,大概率只代表你多了一个接口调用账单。
程序的价值,在于让产品从纸面进入现实。
为什么要把产品和程序放在一起写
单独写产品记录,容易变成想法合集。
单独写开发记录,容易变成技术流水账。
我更想做的是,把产品判断和程序实现放在同一条线上看。因为真实项目从来不会按课程表分得那么清楚。今天你在写 PRD,明天你可能就在改接口。上午你觉得某个功能很重要,下午写代码发现成本太高,晚上就要重新设计流程。
这才是正常状态。
项目不是从需求文档一路流向代码仓库的单行道,它更像一张不断回流的网。产品想法会影响技术架构,技术限制会反过来修正产品边界。页面设计会影响数据库结构,数据库结构又会限制后续功能扩展。一个按钮的位置,背后可能藏着用户路径。一个字段的类型,背后可能藏着业务判断。
把产品和程序分开看,很多细节都会被抹掉。
把它们放在一起,才能看到一个项目真正生长出来的过程。
比如做一个简单的待办工具。如果只从产品看,重点可能是任务创建、分类、提醒、完成状态。如果只从程序看,重点可能是表结构、接口、前端状态管理、定时任务。可真正决定这个项目质量的,往往是二者交叉的位置。
任务能不能快速录入。提醒失败后有没有补救。多人协作时谁能改谁的任务。任务完成后是否保留历史。搜索和筛选怎么设计。移动端有没有必要。数据量上来后列表还能不能顺滑。用户误删之后怎么恢复。
这些问题既是产品问题,也是程序的问题。
如果割裂地看待,就容易做出“功能齐全但不好用”的东西。
这系列会写什么东西
一个想法是怎么来的,又是怎么被拆分的。
需求为什么这样取舍,有哪些功能看着诱人但先砍掉。
页面为什么这样设计,用户路径为什么这样安排。
数据库表为什么这样建,哪些字段一开始就应该想清楚。
接口怎么定义,状态怎么流转,异常怎么处理。
AI 工具能帮到哪里,又会在哪些地方开始胡说八道。
前端怎么搭,后端怎么拆,部署怎么跑,日志怎么看。
第一版做完以后,哪些地方明显拉胯,第二版应该怎么改。
这些东西听起来都是非常琐碎,但项目能力本来就是由碎片拼起来的。一个人能不能独立做项目,不看他会不会背术语,也不看他能不能搭一个空架子。真正要看的是,他能不能把一个模糊需求拆到足够清楚,再把清楚的需求写成足够稳定的代码,最后把代码交给真实场景检验。
这件事没有捷径。
有 AI 之后,写代码变快了,生成页面变快了,查资料变快了,可判断力不会自动变强。AI 可以帮你补全函数,却不会替你承担产品方向错误的后果。AI 可以帮你生成 PRD,却不会知道你的流程到底卡在哪里。AI 可以帮你写接口,却不会主动告诉你这个功能第一版根本不该做。
所以越是 AI 辅助开发时代,越需要产品和工程的基本功。
不然很容易进入一种新型幻觉。以前是自己不会写,现在是 AI 写得太快,快到你还没想明白,它已经把坑挖好了。
从零开始并不等于从弱开始
很多人对“从零开始”有一种误解,觉得从零就代表初级,代表小白,代表先做玩具项目。
其实不是这样。
从零开始,真正强调的是完整过程。一个项目从无到有,一定会经过问题定义、需求拆解、方案设计、工程实现、测试验证、上线反馈、迭代复盘。哪怕项目很小,只要过程完整,它的训练价值就很高。
反过来,一个项目看起来很大,如果你只负责其中一个小按钮,或者只照着教程敲了一遍,也很难形成真正的项目能力。
项目能力不是功能数量堆出来的,它来自连续决策中对项目的把控能力。
为什么做这个,不做那个。为什么先做这里,后做那里。为什么用这个技术,不用那个技术。为什么这个地方追求简单,那个地方必须严谨。为什么这里可以手动处理,那里一定要自动化。为什么第一版能凑合,第二版功能必须重构。
这些选择背后,才是项目经验。
所以多写过程,把能说清楚的地方就说清楚,说不清楚的地方也不硬装。项目做砸了,就写哪里砸了。方案改了,就写为什么改。代码烂了,就写怎么烂的。踩坑之后补救了,就写补救路径。
这比单纯晒一个“项目已完成”更有意义。
因为现实项目从来不是完成之后才开始学习,现实项目是在一边做一边学,一边错一边改。
写这个系列给谁看
这个系列首先写给想自己做项目的人。
尤其是那种已经会一点技术,但总觉得项目做不完整的人。
会写接口,会画页面,会连数据库,也能跑通 demo,可一到真正设计产品,就开始没方向。一到需要把功能串起来,就开始乱。一到需要部署和测试,就开始怀疑人生(我在本地明明是好的)。
这类人缺的往往不是某一个知识点,而是一条完整的路径。
这个系列也写给只懂产品或只懂技术的人。
当然,也写给未来的我自己。
项目记录最大的价值,有时候不是给别人看,而是给自己留个档。过几个月再回头看,会发现当时很多想法非常幼稚,很多设计也很别扭,很多坑其实早有预兆,只是当时没看出来。
写在最后
这个系列,核心只做一件事:把我作为一个产品和程序员将一个项目从想法到落地的真实过程记录下来。
一个产品怎么从一句话变成一张图,怎么从一张图变成一组页面,怎么从页面变成接口,怎么从接口变成数据流,怎么从数据流变成用户真的能用的东西。
PS:更新间隔可能会巨长
让我看看第一个要拉坨大的出来的项目是什么呢?哦哦哦,原来是AI文旅 ^-^