其他
「技术人生」专题第1篇:什么是技术一号位?
前言
什么是技术一号位、有哪些关注点、怎么做技术一号位?
如何识别自己是不是技术一号位
分析你所在环境的局势
业务方面
你的大团队的业务大图是什么
你负责的业务的大图是什么
你负责的业务大图是否和大团队的业务战略匹配
你负责的业务和大团队的业务看似没有契合点的时候,你的leader跟你对焦以后的结论是什么
这个业务对客户的价值是什么
这个业务对组织的价值是什么
这个业务对你个人的价值是什么
这个业务是否会在未来承担社会责任,会有怎样的社会价值
这个业务目前处于什么阶段,是刚开始,还是已经成型等待发展,还是已经发展一段时间需要业务规模
这个业务目前存在最大的问题是什么
协作方面
谁在配合你一起做这个业务
和你一起做业务的同学中,分别有哪些角色,他们会在哪些方面和你有交集
和你一起做业务的其他角色的同学,是否对业务大图的理解和你一致
和你一起做业务的其他角色的同学中,谁是业务的负责人;或者关键角色的人员是否对自己是业务负责人有感知
业务上下游的同学段位怎么样,是否能在实际落地过程中跟上你的节奏
业务一号位的KPI是什么,你的KPI是什么,你们两人的KPI是否方向一致,你的KPI是否能支撑他的KPI
团队研发方面
现在是否有一个研发团队支持你一起做这个业务
和你一起做业务的研发团队是否在行政上从属于你
你带的团队人员每个人的特点是什么,有什么短板,在这个业务里面负责什么事情
研发团队里面谁是你的接班人
研发团队里面谁能补充你的短板
研发团队里面,每个人做事都有什么个人的想法?个人的成长目的
研发团队里面的每个人对业务大图是否了解,认知是否一致,目标是否一致
如果你本身已经是专家级别以上了,那么下面这些维度可能是需要你继续深入思考的:
业务方面
业务的愿景是什么
业务的愿景在不同时间维度上拆解以后的关键业绩指标是什么
为了实现不同时间维度的关键业务指标,你准备投入什么样的资源?投入的资源之间相互怎么配合?相互配合的原则是什么
这个业务现在做是否合适?现在做不合适的话,需要在什么时候做合适
这个业务现在做不合适的情况下,哪些因素让你觉得现在做不合适
让你觉得现在做这个业务不合适的因素中,哪些因素是可以通过人为干预让它不再是阻碍性的,哪些是可以通过人为干预增加它对业务的积极作用
业务的现状及瓶颈问题
业务问题的技术解法
业务发展趋势
业务竞合分析
业务发展策略
业务的终局畅想
团队方面
团队的使命是什么
团队推崇的价值观(做事原则)是什么
当前团队的人才梯队是否合理
当前团队的人才储备方向是否完备
当前支撑业务的团队是否未来依然能够支撑业务的发展
当前团队不能继续支撑业务的战略规划的情况下,需要做怎样的调整
协作方面
业务是否可以向其他BU借力,或者借力于其他BU
当前的业务是否和其他BU可以相互配合形成某种合力的优势
当前业务和其他业务如何配合来完成未来的布局从而获取对应的优势
未来的布局落地后,想要形成什么样的局势
局势形成以后,对完成组织愿景,履行组织使命有什么决定性帮助
找准自己的定位,明确自己的定位的含义
应该有什么样的工作原则和要求
在产品方面具备基础的产品规划和设计能力;
在业务方面具备有一定深度的领域知识,或者具备相关的方法论可以快速向领域专家完成领域知识的学习。
在商业化方面能够提供合理的商业化模型设计,包含提供合理的计费维度和技术成本清单。
在产品运营方面能够了解常见的基础运营手段和方法论,能够结合运营策略给运营同学提供准确的专业知识的支撑。
在客户沟通方面,能够有良好的倾听能力,理解客户的诉求,辩证地转换为系统改进的动力。
在技术方面在公共技术服务的基础上完成全维度技术能力建设,考虑技术的投入产出比,不能只做架构或只做核心代码的实现。
在团队方面能够建设合理的人才梯队,储备必要的技术领域人才,推行组织文化,确保成员对做事的风格和原则理解一致,有行之有效的方法论帮助不同层次的同学找到成长的突破口。
履行技术一号位的职责具体需要感知哪些事情及其要点
业务方面(后面会有单独的文章详细解释业务方面怎么做)
建大图
定方向
找打法
撑业绩
技术方面
1.技术选型
业务需要什么样的技术能力支撑
需要的技术能力集团或其他BU团队已经具备了并且可以被你复用
如果不能复用,差异点在什么地方
如果不能复用,差异点不是方向上的根本问题,是否可以通过共建或提出合理需求来完成复用
如果不能复用,不能共建,是否可以使用开源项目
如果不能复用,不能共建,需要自研,需要个人具备什么样的技术背景,需要团队具备什么样的技术积累
团队或组织是否已经有了相关的基础框架或效能提升工具
业务是否需要考虑数据安全问题,组织或团队是否有安全防护相关的积累可以复用
业务是否需要考虑业务风险问题,组织或团队是否有业务风险控制的积累可以复用
业务一般情况下都需要数据服务做业务运行期的运转情况的监控和后期业务决策的支撑,组织或团队是否有相关的积累可以复用
技术投入产出比
2.系统架构设计
一般而言,不同的业务场景会体现出不一样的技术特征,对技术反应出不同的需求。
面向B端客户的传统企业级应用,通常情况下对稳定性要求高,对数据安全要求高,需要保证业务操作结果和实际数据匹配。业务流量不大,系统用户对用户体验不如C端用户敏感。针对这类系统,往往通过简单的单体应用做高可用部署即可,使用单一数据库并通过数据库保障业务数据变更的事务,界面契合客户业务。
面向C端客户的互联网应用,通常情况下对流量承载能力要求高,对数据安全要求高,对用户体验敏感,对稳定性要求高,业务流量巨大,特殊的业务场景会出现特殊的流量峰值。针对这类系统,往往需要构建分布式系统做大流量高并发高可用系统架构建设,自顶向下分层优化,从终端层的静态资源CDN化,到应用层的前后端分离,应用逻辑和底层服务分离,再到核心业务层的微服务架构建设,从服务发现服务治理,到无状态应用的规模化部署,从大量基础中间件的使用,到大量公共业务服务的构建,每一层都需要做好对应场景的优化和架构设计。
大流量高并发高可用系统架构
业务流程异步化
使用限流手段确保系统不被突发大流量压垮
使用降级手段确保下游系统不可用时能够快速失败避免请求堆积造成系统无法接受或响应外部请求
使用逻辑隔离或物理隔离手段确保多租户模式下各租户互不影响
使用合理的资源调度策略确保不同规模的租户享受同等技术服务水平
使用合理的资源使用策略确保成本维持在合理水平
使用合理的监控手段提前发现系统承载能力的变化,及时通过扩容或缩容来应对系统流量变化
使用分库分表或根据业务需求采用合适的NoSql数据库来支撑海量数据持久化
使用缓存抵挡大流量对数据库的压力
使用分布式锁处理高并发业务场景下的公共资源抢占问题
使用幂等服务屏蔽高并发场景下的重复请求
使用分布式事务服务确保业务数据的最终一致
使用负载均衡承接业务流量,分配给后端应用服务器,避免单点风险
使用同城双机房来规避单机房风险
使用异地多活技术来规避单个城市的不可抵抗风险
业务复杂的情况下,采用微服务架构
如果是单体复杂业务应用拆分为微服务,则应该按照业务领域来拆分,拆分后通过服务接口对外提供标准服务。
如果是开始就确定要做成微服务架构,那么要先做领域划分和建模,然后大的复杂的领域单独形成业务服务,公共依赖的领域做成服务,使用合理的服务治理框架,选择合理的服务通信协议,构建业务系统。
3.业务建模
业务领域知识学习。
业务领域建模,使用领域驱动设计完成战略设计(领域上下文的划分和上下文之间的协作模式的确定)和战术设计(领域内的实体、值对象、领域服务、实体工厂、仓储层、数据持久化层的设计)。
业务建模是否合理,是否采用了合适的方法论来应对不同复杂规模的业务?
面对复杂业务,是否有完整的领域设计和匹配当前阶段的落地路径?
针对复杂业务,不需要最开始即按照完整的业务模型做落地,而是根据实际业务需求和时间进度合理定制业务模型的落地计划,既确保需求能按时完成,又确保代码落地始终在业务模型设计范围之内而没有腐化。
4.研发落地
5.项目管理
项目目标
完成时间
想要取得的结果
项目成员
关键里程碑
风险预警
多方协调沟通
日常进度追踪
6.项目复盘
代码扫描
代码评审
研发单元测试
团队业务需求沟通及评审
测试用例编写
测试用例评审
基础功能测试验收
上线发布验证
灰度测试
线上验收测试
自动化冒烟测试
每日自动化测试
关键业务流程日志打点
全业务链路跟踪
系统技术指标监控
系统业务指标监控
告警
自动化告警恢复
关键业务场景预案建设
关键业务场景预案执行
值班响应机制
业务风险点定义
业务风险点识别
业务风险点级别定义
业务风险点分级处理
业务风险点报警
业务风险点触发趋势
实时业务风险控制
离线业务风险扫描
业务风险点诱因分析
团队方面
成员 1v1 沟通
成员优劣势分析
成员做事意愿分析
成员角色定位对焦
成员能力梯队聚焦
方法论的探讨与实践
帮助不同的人看到自身不足,定制不同的成长规划
根据不同人的优劣势和做事意愿,安排调整合理的事情和责任范围,激发做事的主动性,为其发挥出创造力营造良好的环境
业务大图的解读和 KPI 的设定
工作原则和工作要求达成一致认知
明确团队要什么,不要什么,推荐怎么做,不推荐怎么做
要创新不要墨守成规 要思考不要苦劳 要打破思维定式和束缚,不要自我设限 要 Ownership,不要推脱