
企业项目研发流程 | 26 年最新零基础到精通一条龙(万人收藏⭐️)
编程导航学习网站:学编程、做项目、拿 Offer!
企业高频面试题库:开始刷题,面试遇原题!
精选简历模板大全:1 分钟搞定简历!
AI 资源导航网站:获取最新 AI 黑科技!
1 对 1 模拟面试:随时随地提升面试能力
开篇介绍
很多未工作过的小伙伴都很好奇:企业中做项目是怎样的流程?尤其是大厂那些百万用户的项目,和自己学编程时做项目到底有什么区别呢?
实话说,区别可大了!
自己开发项目那是单打独斗,自己掌握命运,不会拖垮队友;但企业中开发项目是开团打本,大家是一根绳上的蚂蚱,每个人都会影响整个项目。
鱼皮自己也在几家公司实习过,不得不说,大厂和其他公司的研发流程也有很大的区别。因此,对于大多数同学,如果没有在大厂工作过,对很多研发环节可能都是一无所知的。
所以这篇文章就来揭秘一下大厂的项目研发流程,帮大家开拓思路。正好之前有同志质疑我的日常工作就只有写代码和摸鱼?这篇文章就作为回击,让他明白,在大厂做项目,可不止写代码那么简单!
如果你想更直观地了解大厂项目开发流程,强烈推荐观看鱼皮的视频:一线大厂项目是怎么做出来的,结合视频和本文一起学习,效果更好。
研发流程全景图
为了规范团队、保证项目的进展,大厂研发流程一般还是比较复杂的。可以分为很多个阶段,用一张思维导图来概括:
需要注意的是,以上阶段并不是完全按从上到下的顺序执行,阶段间可能存在交叉,比如 技术选型 其实在 设计阶段 就应该考虑。
正式工作一年多,我也是经历过多次项目的完整研发流程的。下面就以我的视角,带大家快速过一遍~
(为了内容更有趣,以下故事有虚构成分)
需求阶段
今天是周一,鱼皮像往常一样骑着他的小电动车来到公司,殊不知,等待他的是一场噩梦的开始。
需求产生
上午十点,产品妹子找到鱼皮,告诉他:咱们的系统上线后,用户表示很多功能并不好用,需要大改。
老板也找到鱼皮,告诉他:我今天打开页面竟然加载了十几秒,咱们这个系统的性能太烂了吧!
鱼皮心想:呕豁,完蛋!估计得做个新的项目了,又要开会了。
果然,没过多久,屏幕上弹出了一条 "欢迎加入会议" 的邀请。
需求评审
第二天上午,老板、产品、测试、几位开发大哥和鱼皮一起来到会议室,具体讨论昨天提到的那些需求 是否合理、要不要做?
产品妹子打开文档,说到:这一期呢,我们要做这几个需求,下面我来详细讲一下,大家一起评估下有没有问题。
需求分析
接下来,产品妹子正在对着屏幕侃侃而谈、疯狂输出时,旁边的开发大哥坐不住了。
开发大哥:这个需求不合理啊!
产品:为啥不合理?用户就是有这个需求啊!
开发大哥:我知道,实现不了啊!
于是开始了经典的产品开发撕逼大战。。。
而鱼皮正躲在角落冷静分析 这个需求怎么做,过了一会儿,提出了一种改动低、实现快的解决方案,平息了这场战争。
在 AI 时代,我们还可以用 AI 工具(如 ChatGPT、Cursor)来辅助分析需求,快速生成多种技术方案进行对比,大大提升需求分析的效率。
排期
确定需求合理、可实现之后,产品妹子问到:那这个需求啥时候能上线呀?
开发大哥:我这周忙,下周吧。
产品:用户可能比较着急,这周就要呢!
开发大哥:我知道,做不完啊!
于是开始了经典的产品开发撕逼大战。。。
鱼皮:要不我们把这个需求拆解为功能 A 和功能 B,这周我先把功能 A 做了,功能 B 排到下周二测试,下周四上线?
就这样,我们一个个安排了需求的计划完成日期。
设计阶段
终于开完会了,看了下时间,都该下班了!
唉,需求讨论完了,产品的工作是完成了一些,可鱼皮的工作才刚刚开始。
急着开始写代码么?
不,想好怎么写代码比写代码更重要。
架构设计
鱼皮打开写文档软件和画图软件,开始梳理整个系统,从整体到局部,依次设计出系统的层次结构、各层间交互的接口和通讯方式、每层之间包含哪些重要模块、模块选择何种物理部署方式等。
现在有了 AI 工具的加持,我们可以用 AI 辅助生成架构图、分析架构方案的优缺点,甚至让 AI 帮我们做技术调研,大大提升设计效率。建议观看鱼皮分享的 AI 画图保姆级指南和技巧分享视频。
概要设计
写完架构设计后,鱼皮开始对着产品妹子写的 PRD(产品需求文档),分析需求,然后依然是从整体到局部,先整理出系统需要的功能模块,再分析每个功能模块内有哪些子模块。
和抽象的架构设计相比,概要设计和需求的关系更紧密,是对架构设计的细化。
打个比方大家就明白了,你要盖一栋楼,架构设计就是从整体来考虑,总共有几层、每层管道怎么接、每层有几户、地基怎么打等;而概要设计就是考虑每户套件的内部怎么划分,哪里是客厅、哪里是卫生间。
很多情况下,概要设计和架构设计可能会在一个文档中进行,划分并不明确。
详细设计
想好系统有哪些功能后,鱼皮就开始具体分析每个功能如何实现,用到哪些算法、需要注重哪些细节等。
方案对齐
写好设计文档后,下次会议上,鱼皮和其他的开发同学(前端、后端等)一起针对自己设计的方案展开讨论,最终产生一个统一的方案,然后大家分工去做就好了。
测试用例设计
为了保证系统功能的正常稳定,测试同学(或者叫 QA)是非常重要的。关于软件测试的详细学习,可以查看 软件测试学习路线。测试不是像我们自己做项目一样对着网页点几下就 ok 了。
在大公司中,为了保证测试的覆盖度、提高测试效率,一般是要设计测试用例的,比如:用户点击 "登录",未传任何数据,期望结果是警告用户输入用户名和密码。
测试用例设计完后,需要其他同学一起来评审把关,而不是只交给测试同学。因为一个人很容易忽略掉很多测试细节,最好让更熟悉代码的开发同学一起帮忙补充。
鱼皮自己也写了几个测试可能会遗漏的用例,和测试同学一起进行了确认,尽量让问题暴露在测试阶段而不是线上。
研发准备
写了快一周的设计文档,终于准备开始动手搭建项目了。但在此之前,还有一些准备工作要进行。
技术预研
如今技术发展太快,新技术层出不穷,所以鱼皮首先对项目中需要或可能需要用到的技术
