大厂做项目的过程,你真的知道吗?

文章目录

  • 明确需求
  • 排期
  • 代码设计
  • 技术选型
  • 写代码
  • 迭代更新

一线大厂的项目是如何从0-1被做出来的,了解大厂项目开发的详细流程;自己开发项目那是单打独斗,没人管你;但进入企业中开发项目那是开团打本,大家都在一股绳上,所以为了保证项目顺利进行。大厂研发流程通常还是比较复杂的,可以分为很多个阶段。

明确需求

需求一般是由产品经理或者老板提出的。可能是程序员自发的去修改屎山代码,有了需求之后,不是一拍脑袋就做,而是要先把老板、产品、测试、几位开发大哥一起叫到会议室来讨论需求是否合理。

排期

在确定需求合理可实现之后,我们要讨论出排期,就是先做哪个后做哪一个,要做多久?啥时候能上线之类的,开完会议,产品经理下班了,程序员也在开始干活。

代码设计

接下来先别急着写代码,而是要做一番设计。想好怎么写代码再写代码会比直接写代码写出更好的代码,从一脸懵逼到渐渐清晰,大概有几种设计。首先是架构设计,打开写文档软件和画图软件,从整体到局部依次设计出系统的层次结构,各层之间的交互接口和通讯方式,每层之间要包含哪些重要模块?然后是概要设计,打开产品同学写的需求文档分析需求,然后依然是从整体到局部,先整理出系统需要的功能模块。再分析每个功能模块内又有哪些子模块,想好有哪些功能,之后要写详细设计,具体分析每个功能的实现算法和细节,写一些伪代码之类的,写好设计完成后,还要再和其他的开发同学一起开一次小会,对接口什么的最终讨论出统一的方案,然后大家分头行动就好了。除了开发同学要做设计外,测试同学也是要根据需求来设计测试用例的。

技术选型

选出相对最合适的,确认好技术后还得申请资源,比如数据库、服务器等。在大厂中,资源的管控真的很严格,你要计算用量、填写说明,层层审批才能拿到资源。拿到资源后,可以开始在自己电脑上搭建同样的环境,安装数据库等;如果是新项目,一般先用脚手架自动生成代码,如果是老项目,把代码拉下来就行了。然后是安装所需依赖,再测试空的项目能否运行,不要一行代码都没写就报错了。

写代码

先用这个版本控制系统建立自己的开发分支,和别人区分开,然后你可以选择本地开发搭配热更新工具,不重启项目也能在代码中心自动看到新效果,也可以选择远程开发直接用自己的电脑去修改服务器上的代码,可以更方便的和其他同学协作,像我们做需求一般都是先保证功能可用,然后再去优化代码,注重更多的细节。写好代码后得为自己的代码负责,所以除了随便执行几次,还要编写单元测试,用力把每个小的功能比如函数等都得跑一遍,在这之后就可以把写好的代码打个包,然后发布到测试服务器上,和其他同学一起联调了,也就是说就是把大家开发好的功能组合到一起,看看还能不能用,联调结束后,测试同学开始愉快的找bug,比如集成测试,系统测试、自动化测试、回归测试等。验证阶段时,产品经理一边体验现有的功能是否符合预期,一边还源源不断的提出新的需求,在验证系统没问题后,我们就可以把代码提交和推送到远程仓库了,并且要将自己的分支和主分支合并。主分支一般是可以上线的代码并且经过验证的分支,所以合并时要小心谨慎,先发起一个merge request,再经过插件,经过同事和领导的重重代码审核把关之后才能合并;代码提交之后,一般也不需要我们自己登录服务器来打包构件和发布,已经配置好的流水线会自动识别到项目代码的变更,触发项目的构建,也就是我们常说的CI/CD。构建完成后,一般我们会先在预发布环境发布,再次检查下项目能否运行;如果真的没问题了,才可以正式发布,一批一批的加老的项目进行升级。

迭代更新

项目上线之后,并不是一切都万事大吉了。

等待你的只有源源不断的用户反馈,无休止的告警,无穷的bug和更多的需求迭代。还要持续写各种各样的文档来维护你的业务和沉淀知识,要不然几天不见你自己写的代码估计都看不懂。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/175131.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

龙芯loongarch64服务器编译安装pyarrow

1、简介 pyarrow是一个高效的Python库,用于在Python应用程序和Apache Arrow之间进行交互。Arrow是一种跨语言的内存格式,可以快速高效地转移大型数据集合。它提供了一种通用的数据格式,将数据在内存中表示为表格,并支持诸如序列化和分布式读取等功能。 龙芯的Python仓库安…

Ubuntu 22.03 LTS 安装deepin-terminal 分屏

安装 源里面自带了这个软件,可以直接装 sudo apt install deepin-terminal 启动 按下Win键,输入deep即可快速检索出图标,点击启动 效果 分屏 CtrlShiftH 水平分割 CtrlShiftJ 垂直分割 最多分割成四个小窗口,鼠标点击可以切换…

[ BUG ] 踩坑 Axios Delete 请求传参

踩坑 Axios Delete 请求传参 问题描述 今天在写前后端交互时,我想将 data 数据通过 delete 进行传参 axios.delete("/info", data),但是发现后端一直提示参数错误,我看了看代码也没错啊。跟 post、patch 一样的写法为什么会出现参…

三方支付接口成为了电商竞争力的新动力

在当前快速发展的互联网时代,随着电子商务行业的兴起,支付体验已经成为企业获取竞争优势的重要因素。一个快速、安全、便捷的支付环节不仅可以提升用户的体验,还能有效促进交易的完成。在众多支付解决方案中,三方支付接口因其独特…

18.Spring框架中的单例bean是线程安全的吗?(阿里一面)

Spring框架中的单例bean是线程安全的吗?(阿里一面) 不是,Spring框架中的单例bean不是线程安全的。spring 中的 bean 默认是单例模式,spring 框架并没有对单例 bean 进行多线程的封装处理。 实际上大部分时候 spring bean 无状态的(比如 dao 类),所以某种程度上来说 bea…

PCL 计算点云图中任意两点的欧式距离

目录 一、算法原理二、代码实现三、结果展示四、相关链接本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法原理 使用PCL实现在可视化界面上用鼠标点选两个点,输出两点的坐标和两点之间的欧式距离。 二、代码…

linux 内核线程

内核线程类似于用户进程,通常用于并发处理些工作,它是一种在内核空间实现后台任务的方式,并且可以参与时间片轮转调度。 内核线程可以进行繁忙的异步事件处理,也可以睡眠等待某事件的发生,内核线程可以访问内核函数和…

Linux操作系统使用及C高级编程-D17D18编译与调试

编译 当有线程创建时编译:gcc test.c -o test -lpthread 分文件编写时主要是分为:.c(函数声明的具体实现)、.h(说明性文件:#define 结构体共用体 声明)、.c(main) 条件编译 一般情况下&#x…

激光线提取

在做单线激光三维重建,和多线激光三维重建的时候都会设计到激光线提取算法的实现,如何保持高速和高精度是关键 ,最近优化了steger中心线提取算法,通过并行化实现在cpu版本可以做到2m,GPU版本可以做到0.6ms左右,完全可…

Flask 运用Xterm实现交互终端

Xterm是一个基于X Window System的终端仿真器(Terminal Emulator)。Xterm最初由MIT开发,它允许用户在X Window环境下运行文本终端程序。Xterm提供了一个图形界面终端,使用户能够在图形桌面环境中运行命令行程序。而xterm.js是一个…

Kotlin学习——kt入门合集博客 kt里的委派模式Delegation kt里的特性

Kotlin 是一门现代但已成熟的编程语言,旨在让开发人员更幸福快乐。 它简洁、安全、可与 Java 及其他语言互操作,并提供了多种方式在多个平台间复用代码,以实现高效编程。 https://play.kotlinlang.org/byExample/01_introduction/02_Functio…

23. Spring源码篇之环境变量Environment

简介 在开发过程中,我们通常会把一些变化的数据,或者说不同环境值不一样的数据抽离出来,代码可以根据需要通过配置动态的方式获取不同的值,这个值可以是在配置文件中,数据库中等 在spring中定义了一个统一的环境变量…

android 9 adb安装过程学习(三)

PackageManagerService 一、PackageManagerService.installStage 接下来,进入 PackageManagerService 阶段。从PackageInstallerSession.java的commitLocked调用 这里的 IPackageInstallObserver2 observer 是前面创建的本次 localObserver: 位置&…

详解FreeRTOS:互斥信号量和递归互斥信号量(高级篇—3)

目录 1、互斥信号量 1.1、互斥信号量运作机制 1.2、创建互斥信号量

[SpringCloud] SpringCloud配置中心的核心原理

SpringCloud是什么时候去拉取配置中心的配置中心客户端的配置信息为什么要写在bootstrap文件中对象中注入的属性是如何动态刷新的一些开源的配置中心是如何整合SpringCloud的 文章目录 1.从SpringBoot的启动过程说起1.1 大致过程 2.准备Environment的核心操作2.1 前置操作 3.pr…

NOI / 1.10编程基础之简单排序 提问05:分数线划定 c语言 结构体

描述 世博会志愿者的选拔工作正在 A 市如火如荼的进行。为了选拔最合适的人才,A市对所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试。面试分数线根据计划录取人数的150%划定,即如果计划录取m名志愿者,则面试…

SEOAI每周资讯和Linus思考 231127

欢迎查看 Linus筋斗云SEO 的每周资讯整理,本周的一些要点: Google11月核心更新和评论更新仍然没有结束9个搜索结果页的主要变化:图标、品牌、粉丝数、新模块GSC已索引页面狂掉?Google的问题,已修复黑五网一期间的搜索…

Doris物化视图

物化视图就是包含了查询结果的数据库对象,可能是对远程数据的本地copy,也可能是一个表或多表join后结果的行或列的子集,也可能是聚合后的结果。说白了,就是预先存储查询结果的一种数据库对象。 在Doris中的物化视图,就是查询结果预先存储起来的特殊的表。 物化视图的出现主…

《100 Java Mistakes and How to Avoid Them》笔记 2

继续阅读本书,编程语言处理数值都有可能出现问题,如溢出,整数的最大最小值不对称,Double.NaN 等。 由于 Java 学了 C,也用 0 开始的数字来表示 8 进制数,如 037, 010 分别是十进制的 31 和 8,这…

强化学习中的Q学习

Q学习(Q-Learning)是强化学习中的一种基于值的学习方法,用于在有限马尔可夫决策过程(MDP)中学习最优的动作策略。Q学习主要用于离散状态和离散动作的问题。 以下是Q学习的基本概念和步骤: Q-Value&#xf…