00:00
大家好,我是于皮,今天给大家揭秘一线大厂的项目是如何从零到一被做出来的,带大家走进企业的同时啊,也可以顺便了解一下我们这些在大厂的程序员平时的工作,除了摸鱼还有啥?以前自己开发项目那是单打独斗,爱咋咋样,没人管你,但进入企业中开发项目那是开团打本,大家都在一股绳上,所以为了保证项目顺利进行,大厂研发流程通常是比较复杂的,可以分为很多个阶段,下面我以程序员的视角带大家盘一下。首先要讨论做什么,一般这个需求啊,可能是由产品经理或者老板提出的,此外呢,可能是程序员自发的去修改史山代码。有了需求之后啊,不是一拍脑袋就做,而是要先把老板啊,产品啊,测试啊,几位开发。
01:00
大哥啊,一起交到会议室来,讨论需求是否合理。一般会议现场就是产品经理对着电脑讲PPT,老板一旁看手机,开发小哥再分期。怎么能把需求多谈一点呢?在确定需求合理可实现之后,我们要讨论出排期,就是先做哪个,后做哪个,要做多久,啥时候能上线之类的。会开完了,产品经理下班了,我们程序员也该开始干活了。接下来先别急着写代码,而是要做一番设计,想好怎么写代码,再写代码会比直接写代码写出更好的代码。从一脸懵逼到渐渐清晰,大概有几种设计啊。首先是架构设计,打开写文档软件和画图软件,从整体到局部依次设计出系统的层次结构,各层之间的交互接口和通讯方式,每层之间要包含哪些重要模块。然后是概要设计,打开产品同学写的需求文档,分析需求,然后依然是从整体到局部,先整理出系统需要的功能模块,再分析每个功能模块内又有哪些子模块。想好有哪些功能之后呢,就要写详细设计,具体分析每个功能的实现算法和细节这些伪代码之类的。写好设计文档后,还要再和其他的开发同学一起开一次小会,对对接口什么的,最终讨论出统一的方案,然后大家分头行动就好了。除了开发同学要做设计外,测试同学也是要根据需求来设计测试用例的,比如说用户点击收藏之后。
02:38
后应该自动投币和点赞。接下来是研发准备阶段,首先要调研一波项目中可能用到的技术,整理起来。但如今有那么多的技术,到底该用哪一个呢?这就需要技术选型,选出相对最合适的。确认好技术后,还得申请资源,像数据库、服务器什么的。我操我最讨厌这一步了。在大钟寺中,资源的管控真的很严格,你要计算用量,填写说明,层层审批才能拿到资源。拿到资源后,可以开始在自己电脑上搭建同样的环境,安装数据库什么的。如果是新项目呢,一般先用脚手架自动生成代码,如果是老项目,把代码拉下来就行了。然后是安装所需依赖,在测试下空的项目能否运行,不要一行代码都没写就报错了。搞完这一通,我们才终于开始写代码了,先用这个版本控制系统啊,建着自己的。
03:38
开发分支和别人区分开,然后呢,你可以选择本地开发,搭配着热中心工具,不重启项目也能在代码中心时自动看到新效果,也可以选择远程开发,直接用自己的电脑去修改服务器上的代码,可以更方便的和其他同学协作。像我们做需求,一般都是先保证功能可用,然后再去优化代码,注重更多的细节。写好代码后呢,得为自己的代码负责,对不对?所以除了随便执行几次外,还要编写单元测试用例,把每个小的功能函数啥的都得跑一遍。在这之后啊,就可以把写好的代码打个包,然后发布到测试服务器上,和其他同学一起联调了。说白了就是把大家开发好的功能组合到一起,看看还能不能用。联调完毕后呢,测试同学开始愉快的找bug,什么集成测试、系统测试,自动化测试,回归测试、冒烟测试,咔嚓,全都。
04:38
整上,哎,厉害的测试同学也是真的厉害,就我藏的那些很底层的霸者,她都能给我揪出来。验证阶段呢,这产品妹子也要来添油加醋,一边体验现有的功能是否符合预期,一边还源源不断的提出新的需求,恨不得让我们这期就把新功能给加上。在验证系统没问题后呢,我们就可以把代码提交和推送到远程仓库了,并且要将自己的分支和主分支合并,主分支一般是可以上线的代码经过验证的分支,所以合并时要小心谨慎,先发起一个me request,在经过插件同事和领导的重重代码审核把关之后才能合并。代码提交之后呢,一般也不需要我们自己登录服务器来打包构建和发布了,已经配置好的流水线会自动识别到项目代码的变更,触发项目的构建,也就是我们常说的cicd构建完成后呢?
05:38
一般我们会先在预发布环境发布,再次检查下项目能否运行,如果真的没问题了,才可以正式发布,一批一批的将老的项目进行升级。最后啊,你以为项目上线之后就没事了吗?等待你的只有源源不断的用户反馈,无休止的告警,无穷的bug和更多的需求迭代,还要持续写各种各样的文档来维护你的业务和沉淀知识,要不然几天不见,你自己写的代码估计都看不懂了。所以呢,照顾好自己,关爱程序员吧。
06:14
以上就是本期内容,还请大家三连鼓励一下那本视频的图文版思维导图,还有整理好的大厂面试题,大家都可以在我的原创公众号程序员鱼皮关注后回复大厂获取。我是鱼皮分享干货的程序员up,我们下期见。
我来说两句