软件研发管理经验总结 - 技术管理
软件研发管理经验总结 - 技术管理
- 技术管理主要负责有技术团队建设、管理团队成员技术相关事务、帮助团队成员成长、负责团队成员交付的代码质量、以及负责产品技术方向、以及产品相关前沿技术调研;
- 管理团队成员技术相关事务有代码Review、故障率跟踪、分析及根据分析结论指导开发人员改进技术能力、常规问题解答、疑难问题攻关…
总之技术管理者的工作重点就是以技术为中心展开
相关系列文章
软件产品研发管理经验总结-管理细分
软件研发管理经验总结 - 事务管理
软件研发管理经验总结 - 技术管理
目录
- 软件研发管理经验总结 - 技术管理
- 一、建立完整的产品开发过程
- 1、需求分析
- 2、概要设计
- 3、详细设计
- 4、编码制造
- 5、测试
- 二、建立完整的质量管理体系
- 1、基于产品开发过程建立质量管理
- 1)、需求分析质量管理
- 2)、概要设计质量管理
- 3)、详细设计质量管理
- 4)、编码制造质量管理
- 5)、测试质量管理
- 三、产品相关技术
- 四、团队成员技术能力管理
- 1、建立团队能力进升机制
- 2、尽可能的量化指标
- 五、行业技术前沿
一、建立完整的产品开发过程
以下过程并非CMM系统标准过程,而是根据我们公司自身产品研发出发,目的是在有限的条件下,提升产品质量,使产品研发周期可控、产品质量可控、产品可维护,不断的提升团队整体技术能力,软件研发规范性…
1、需求分析
此过程由需求分析人员负责将用户的需求进行收集、理解、分析后,形成需求分析文档,然后再与用户确认,需求是否正确、缺失、多余的部分。
如果用户确认后会根据需求分析的成果对功能点进行拆分,颗粒度一般到页面的级别或功能级别,具体以技术人员能理解、控制得了的最小颗粒度为参照即可;
2、概要设计
经过需求分析过程后,将一个复杂系统按功能进行模块拆分; 概要设计的主要任务是把需求分析得到的DFD1 (数据流图) 转换为软件结构和数据结构,进行功能和体系结构分析设计。
3、详细设计
详细设计主要是对模块的各子功能设计程序的输入参数、程序的处理流程、输出值,包括采用的算法、计算方法、计算步骤;在模块中需要定义的接口…。
4、编码制造
根据设计文档、代码编写规范…要求编写代码、单体测试…
编码规范如果团队没有统一的规范可以参照谷歌、阿里、腾讯发布的相应规范进行一定的调整即可。
5、测试
※ 说明:
- 如果产品开发过程采用了CMM系列标准过程的可以跳过此节。
- 如果产品开发过程未采用CMM系列标准过程的,开发过程需从各自企业、团队、产品自身出发来确定自己所需要的过程,不用每个过程都要做。
二、建立完整的质量管理体系
1、基于产品开发过程建立质量管理
1)、需求分析质量管理
此过程主要的质量管理方法是人工【评审】,针对需求分析的成果物进行评审,或全程参与到与用户沟通与确认过程中,确保需求的准确性、完整性。
2)、概要设计质量管理
此过程主要的质量管理方法是人工【评审】,主要评审的内容是设计文档,评审内容
序号 | 评审内容 | 说明 |
---|---|---|
1 | 文档变更记录 | 变更记录中要体现现变更者、变更日期、变更的章节、变更内容 |
2 | 规范性 | 概要设计是否与符合规范(此处的规范是公司内部制订的概要设计规范) |
3 | 设计内容 | 概要设计是否与需求分析中的功能一致、是否准确 |
3)、详细设计质量管理
此过程主要的质量管理方法是人工【评审】,主要评审的内容是设计文档,评审内容
序号 | 评审内容 | 说明 |
---|---|---|
1 | 文档变更记录 | 变更记录中要体现现变更者、变更日期、变更的章节、变更内容 |
2 | 规范性 | 详细设计是否与符合规范(此处的规范是公司内部制订的详细设计规范) |
3 | 设计内容 | 详细设计是否与概要设计中的一致、是否准确 |
4)、编码制造质量管理
此过程主要的质量管理方法是,当开发人员编码完成后,首先需要自测,可以采用【单元测试】、【覆盖率测试】,并验证业务功能; 自测完成后就可以向上级负责人提交【评审申请单】,批准通过后会根据模块的复杂程序安排小范围的评审、正式的多人参与的评审会议,在评审过程中开发人员记录被评审出的问题,评审过程完成后,需要将评审出的问题、原因及修改方案以正式的评审记录文档提交,并在审核通过后归档;
从管理的角度还需要记录开发代码量、评审时长、故障率等数据来做分析,将分析结果反馈给开发人员,并引导开发人员提升改善自身的不足。
下图故障跟踪记录表仅供参考:
5)、测试质量管理
此过程主要的质量管理方法是人工【评审】,评审测试用例。
三、产品相关技术
定期组织团队成员分享产品使用的技术、框架、原理…,遇到的技术问题以及分析解决过程,经过长期反复的磨炼后,团队成员的思想、能力逐渐一致了,团队凝聚力、能力会越来越强。
四、团队成员技术能力管理
1、建立团队能力进升机制
按技术力能划分出几个级别,每个级别需要具备的技术能力,腾讯、阿里也采用类似的方式将技术人员划分为P1到Pn级别,这样技术人员有明确的发展方向和规划。
2、尽可能的量化指标
将团队用到的所有技术、能力、态度、极积性等很多无法准确的判断的信息通过尽可能的去量化,将感性判断的范围尽可能的缩小。
- 例如,我们在面试Java技术人员时,可能很多时候面试完只能给人力资源一个行或不行的结论,人力资源也比较懵,不知道如何调整找人的方向。面试者心里有个感性的判断,无法明确的表达;
- 这时我们可以按照技术要求,将需要面试的技术项进行细化,并给其一个百分占比,所以有项加起来100分,下图为参考图
- 这样做的话,面试者每面试完一个技术小项后可以给这个小项一个印象分,每个小项满分100分,但是每个小项的得分=印象分*(百分占比),例如上图中【集合】这个技术小项占比为%5,当面试完“张三”后,面试者对于“张三”【集合】这个技术小项给出的印象分为30分,则“张三”在【集合】这个技术小项的得分=30*%5 = 1.5,这样就可以将感性影响的范围限制在较小范围内 。
五、行业技术前沿
- 定期分享行业前沿技术资源,与团队成员进行讨论相关的技术内容;
- 鼓励团队成员极积和探索前沿技术、最新的技术,不断开横向扩展技术面,纵向的加深技术能力;
数据流图(Data Flow Diagram):简称DFD,它从数据传递和加工角度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。 ↩︎
相关文章:

软件研发管理经验总结 - 技术管理
软件研发管理经验总结 - 技术管理 技术管理主要负责有技术团队建设、管理团队成员技术相关事务、帮助团队成员成长、负责团队成员交付的代码质量、以及负责产品技术方向、以及产品相关前沿技术调研;管理团队成员技术相关事务有代码Review、故障率跟踪、分析及根据分…...

项目实战典型案例19——临时解决方案和最终解决方案
临时解决方案和最终解决方案一:背景介绍二:思路&方案四:总结五:升华一:背景介绍 本篇博客是对项目开发中出现的临时解决方案和最终解决方案进行的总结和改进。目的是将经历转变为自己的经验。通过博客的方式分享给…...

机器学习模型的可解释性算法汇总!
模型可解释性汇总简 介目前很多机器学习模型可以做出非常好的预测,但是它们并不能很好地解释他们是如何进行预测的,很多数据科学家都很难知晓为什么该算法会得到这样的预测结果。这是非常致命的,因为如果我们无法知道某个算法是如何进行预测&…...
什么是着色器/Threejs如何使用着色器/Threejs使用着色器实现平面网格的动态效果案例
1,什么是着色器着色器(Shader)是计算机图形学中的一个重要概念,它是在 GPU 上运行的程序,用于计算三维场景中每个像素的颜色和其他属性。着色器通常分为两种类型:顶点着色器和片元着色器。顶点着色器主要用…...

191、【动态规划】AcWing ——AcWing 900. 整数划分:完全背包解法+加减1解法(C++版本)
题目描述 参考文章:900. 整数划分 解题思路 因为本题中规定了数字从大到小,其实也就是不论是1 2 1 4,还是2 1 1 4,都会被看作是2 1 1 4这一种情况,因此本题是在遍历中不考虑结果顺序。 背包问题中只需考虑…...
Java 比较器
public interface Comparable Comparable 接口位于 java.lang 包下,对实现它的每个类的对象强加一个总排序,这种排序被称为类的自然顺序,compareTo 方法被称为其自然比较方法。 实现此接口的对象的列表(和数组)可以由…...

配置本地 python GEE、geemap环境
1.安装anconda 百度搜索anconda清华镜像,从清华镜像中选择最新的anconda安装包,国内镜像网站下载速度较快,如果从国外官网下载速度相当慢,详细安装教程请参考: anconda安装教程https://blog.csdn.net/lwbCUMT/article…...

cmd命令教程
小提示: 在本文中,我将向您展示可以在 Windows 命令行上使用的 40 个命令 温馨提示:在本教程中学习使用适用于 Windows 10 和 CMD 网络命令的最常见基本 CMD 命令及其语法和示例 文章目录为什么命令提示符有用一、cmd是什么?如何在…...
深圳大学计软《面向对象的程序设计》实验15 函数模板和类模板
A. 有界数组模板类(类模板) 题目描述 编写有界数组模板BoundArray(即检查对数组元素下标引用并在下标越界时终止程序的执行),能够存储各种类型的数据。要求实现对数组进行排序的方法sort,及对数组进行查找…...

组播详解及示例代码
写在前面 由于公司业务需要用到组播实现,这里就记录下学习过程。在学习组播之前,我们先来看看另外两种数据包传输方式:单播和广播。 单播:简单来说就是数据一对一发送,如果需要给多个主机发送数据时,就需…...

C语言-qsort函数示例解析
一.qsort函数是什么stdlib.h头文件下的函数qsort()函数:是八大排序算法中的快速排序,能够排序任意数据类型的数组其中包括整形,浮点型,字符串甚至还有自定义的结构体类型。qsort函数实现对不同元素的排序主要就是通过对compar函数…...

一些Linux内核内存性能调优笔记!
前言 在工作生活中,我们时常会遇到一些性能问题:比如手机用久了,在滑动窗口或点击 APP 时会出现页面反应慢、卡顿等情况;比如运行在某台服务器上进程的某些性能指标(影响用户体验的 PCT99 指标等)不达预期…...
【JVM】逃逸分析
开发者都知道,基本上所有对象都是在堆上创建。但是,这里还是没有把话说绝对哈,指的是基本上所有。昨天一位朋友在聊天中,就说了所有对象都在堆中创建,然后被朋友一阵的嘲笑。 开始我们的正文,我们今天来聊聊…...
C51---震动传感器控制LED灯亮灭
1.example #include "reg52.h" sbit led1 P3^7;//原理图中led1指向P3组IO口的P3.7口 sbit vibrate P3^3;//Do接到了P3.3口 void Delay3000ms() //11.0592MHz { unsigned char i, j, k; //_nop_(); i 22; j 3; k 227; do { …...

使用 JaCoCo 生成测试覆盖率报告
0、为什么要生成测试覆盖率报告 在我们实际的工作中,当完成程序的开发后,需要提交给测试人员进行测试,经过测试人员测试后,代码才能上线到生产环境。 有个问题是:怎么能证明程序得到了充分的测试,程序中所…...

windows下neo4j安装及配置,并绘制人物关系图谱
neo4j安装及配置,绘制人物关系图谱 先升级pip,安装py2neo pip install py2neo2021.0.1依赖 jdk1.8, neo4j 3.xx; 或者jdk18,neo4j 4.x,5.x; 官网下载了neo4j4.x,5.x 因为jdk版本原因都不行&am…...

【Spring6】IoC容器之基于XML管理Bean
3、容器:IoC IoC 是 Inversion of Control 的简写,译为“控制反转”,它不是一门技术,而是一种设计思想,是一个重要的面向对象编程法则,能够指导我们如何设计出松耦合、更优良的程序。 Spring 通过 IoC 容…...

Warshall算法求传递闭包及Python编程的实现
弗洛伊德算法-Floyd(Floyd-Warshall)-求多源最短路径,求传递闭包 Floyd算法又称为插点法,是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法, 与Dijkstra算法类似。该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大…...
AcWing第 93 场周赛
4867. 整除数 给定两个整数 n,k,请你找到大于 n 且能被 k 整除的最小整数 x。 输入格式 共一行,包含两个整数 n,k。 输出格式 输出大于 n 且能被 k 整除的最小整数 x。 数据范围 前 4 个测试点满足 1≤n,k≤100。 所有测试点满足 1≤n,k≤109。 …...

计及需求响应的粒子群算法求解风能、光伏、柴油机、储能容量优化配置(Matlab代码实现)
👨🎓个人主页:研学社的博客💥💥💞💞欢迎来到本博客❤️❤️💥💥🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密…...

Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...

【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...

【51单片机】4. 模块化编程与LCD1602Debug
1. 什么是模块化编程 传统编程会将所有函数放在main.c中,如果使用的模块多,一个文件内会有很多代码,不利于组织和管理 模块化编程则是将各个模块的代码放在不同的.c文件里,在.h文件里提供外部可调用函数声明,其他.c文…...

2025 后端自学UNIAPP【项目实战:旅游项目】7、景点详情页面【完结】
1、获取景点详情的请求【my_api.js】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http(/login/getWXSessionKey, {code,avatar}); };//…...
第14节 Node.js 全局对象
JavaScript 中有一个特殊的对象,称为全局对象(Global Object),它及其所有属性都可以在程序的任何地方访问,即全局变量。 在浏览器 JavaScript 中,通常 window 是全局对象, 而 Node.js 中的全局…...