前言
作为一个技术人包括技术管理者,需要思考研发的核心价值是什么?
有人说是"降本增效";
有人说是“业务支撑,提升效率”
等等.......,这些都不太明确,都是一个范范的概念。
之前看了一篇文章,比较有意思,我觉得比较能够回答这个问题
分享一下书中的观点:
1、外包公司:
最核心的竞争力不是技术,而是快速响应、资源调配整合、项目成本控制等方面。
2、企业信息化公司(平台):研发的核心价值有三个层次:
第一层是 运用技术更好的去支撑业务;
第二层是 用技术推动业务,帮助客户,提升效率;
第三层是 去用技术经验积累去影响或者改变行业。
3、解决特定场景和问题的产品公司:
不同定位的公司,在不同的角色中研发部门的核心价值不一样。
那么我们的核心价值是什么?
1、高效支撑业务:
高效,研发效率,业务系统效率,技术系统对业务的提升(需要数据对比);
支撑:业务发展和产品落地的支撑
2、技术促进业务健康和持久发展:
构建平台的效率降低成本在对外竞争中保持优势,对内不断优化业务流程促进业务发展;
研发流程的问题与思考
研发流程:
需求阶段 ---> 研发阶段 ---> 联调与测试阶段 --->
1、需求阶段:
问题:需求不明确,需求不充分,需求理解不一致
解决方式:
(1)明确需求上下文,确保需求的理解是一致的,包括研发,测试
(2)需求不明确的,先研发沟通一致,再和产品确认,最好一起通知测试参与
(3)需求反复的,需要制定需求变更流程,在产品确认的基础上再做开发。
2、研发阶段
2.1、研发全链路的技术规范
研发规范 ---> 集成测试规范 ---> 上线规范 ---> 中间件使用规范
(1)研发规范
编码规范,日志规范,错误码规范,系统配置规范,接口定义规范,数据库规范等等
(2)集成测试规范:
提测规范,代码评审规范,项目结构以及接口调用规范,环境规范
(3)上线规范:
系统部署规范,发布流程规范,资源申请规范
(4)中间件使用规范
框架使用规范,依赖规范,外部集成规范,稳定性规范
通过规范文档统一标准,并提供典型场景的案例的使用方式以及通知,强化规范内容的价值。
2.2、通用功能或工具的开发定制
基础脚手架:一键生成应用工程,包括依赖的jar包等。
代码规范的模板:错误码模板;日志模板;工程结构等
中间件的使用:包括使用的案例
项目通用工具类:外部开源的工具类;业务抽象的通用类;自研抽象的通用工具类;
业务标准拦截:用户登录;服务异常处理;
其他通用功能,上传,下载,导入,导出,文件图片的处理等等;
2.3、相互之间的协作流程与规范
项目与项目的边界划分,服务的拆分,调用关系,接口调用等。
2.4、项目过程管理
项目管理,干系人,成本,范围,进度,质量管理等
2.5、研发人员的学习进步
自我进步
团队规范
复盘总结
技术分享培训
3、联调测试阶段
问题:代码提测质量低,环境不可用,联调效率低
解决方式:
(1)前后端分离,单独需要提供mock能力
(2)服务治理能力,降低服务间的依赖关系
(3)基准测试,冒烟测试,P0级别的测试等
4、发布阶段
问题:上线频率,部署时长
解决方案:
(1)控制约定发布时间与频率
(2)提前编译打包
(3)部署工具的使用提高效率
(4)降低服务建依赖
效能指标
制定过程的指标数据,每月通晒与对比,分析数据,定位效能问题。关键指标可参考:
(1)需求交付周期,需求交付数,项目数
(2)代码提交量
(3)Bug数
(4)线上问题与故障