全球架构师峰会 Arch Summit 2018

沈剑 12,4 技术选型,技术委员会必要的思考 沈剑

1. 技术委员会,一个神秘组织的一些思考 快狗打车-沈剑
3. 关亍-我 • “架构师之路”作者,深夜写写技术文章 • 百度 - 高级工程师 • 58同城 - 技术委员会主席,高级架构师 • 58到家 - 技术委员会主席,高级总监 • 快狗打车(原58速运) - CTO • 本质:技术人一枚
4. 目录 • 技术委员会的核心职责? • 职级评审二三事 • 开源与自研二三事 • 框架组件、基础服务、技术平台二三事 • 到底哪些事情应该先做?
5. 一、技术委员会的核心职责
6. 组织人才相关 • 制定职级标准 - 能力框架:知识,技能,通用素质 - 职级标准:T2T3T4…P7P8P9… • 职级评审,对齐标准 • 高端招聘,对齐标准 • 校园招聘,对齐标准 • 统一人才培养与培训 潜在问题: 1. 没有职级标准 2. 没有晋升通道,晋升规则不透明 3. 招聘各自为政,能力参差不齐
7. 技术战略 • 制定技术标准,流程与规范 - 开发标准与规范 - 质量与安全标准与规范 - 研发流程 • 统一核心技术选型:框架组件,基础服务,技术平台 • 前瞻性技术研究与探索:区块链,TiDB 潜在问题: 1. 没有标准,以日志规范为例 2. 没有统一的技术体系 3. 新技术研究各自为战 4. 没有人为技术战略方向负责
8. 技术落地+其他 • 核心项目技术方案评审 • 推动统一核心技术选型落地 • 其他 - 对外扩大技术影响力 - 营造技术氛围:编程大赛/黑客马拉松 - 技术丏利挖掘 - 对接IT审计 潜在问题: 1. 业务研发大项目,方案拿不准 2. 只是参谋,没有团队 3. 推动公共事务没有授权
9. 一些实践 • 公司高T组成的虚拟组织 • 以项目的形式推动一些事宜 - 例如:职级评审,校园招聘,技术培训等 • 有实体组织承接与落地技术战略 - 例如:架构部,基础服务部,技术平台部 • 需要获得老板授权,实体组织必须配合相关项目与技术落地
10. 二、职级评审二三事
11. 一些问题 • 有没有职级评审,需不需要职级评审? • 如果有,职级评审的目的是什么? • 评什么?谁来评?怎么评? • 依据什么评?评委是谁?评审规则如何?
12. 职级评审的目的 • 帮助员工看清直接发展道路(明确目标) • 通过职级评审,帮助员工进行工作总结(强制总结) • 评审过程中自己能力的不足(发现不足) • 在工作中有意识的提高自身各方面能力(提高员工能力) • 员工逐步提升,以达到提升公司整体技术能力的目的(提高公司能力)
13. 职级评审有必要!
14. 评什么?谁来评?怎么评? • 玩法一:HR定晋升比例(例如10%),直属TL提名,汇总后技术负责人拍板 • 玩法二:HR定晋升比例,员工自提名,技术总监组成答辩委员会,半数通过晋升 • 玩法三:直属TL提名,技术总监组成答辩委员会打分,最后根据比例画线 • 需不需要有晋升比例? • 答辩委员会组成范围? • 评审依据什么?
15. 能力模型是核心!
16. 能力模型怎么来? 各公司对同一个岗位的要求一样么?
18. 依据什么评?谁来评?怎么评? • 根据能力模型来评 • 评委:丏家为主,管理者为辅 • 规则公开透明,拒绝任何暗箱操作 - 准入要透明 - 规则要透明(不能暗箱划线) - 成长报告最重要
19. 强调:成长报告很重要!
21. 牢记:帮员工指明职业发展的道路,发现不足,帮助 其提升技术能力,是职级评审的目的! 最终达到的效果:提升公司整体技术能力。
22. 三、开源与自研二三事
23. 先说个人观点:任何脱离业务的选型,都是耍流氓
24. 为什么早期不建议自研?
25. 为什么技术栈建议收敛?
26. 观点一:即使不自研,技术栈也建议收敛
27. 不完全自研,为什么也建议浅浅封装一层?
28. 不封装 vs 封装 String Memcache::get(String key) String Memcache::set(String key, String value) String Memcache::del(String key) String 58DaojiaKV::get(String key) { String result = Memcache::get(String key); return result; } String 58DaojiaKV::set(String key, String value) { String result = Memcache::set(String key, String value); return result; } String 58DaojiaKV::del(String key) { String result = Memcache::del(String key); return result; }
29. 有什么好处?
30. 好处 String 58DaojiaKV::get(String key) { String result = Jedis::get(String key); return result; } • 一、对上游屏蔽底层细节 • 二、如果更换引擎,对调用方透明 String 58DaojiaKV::get(String key) { • 三、通用功能(统计,监控等),对调用方透明 Long startTime = now(); String result = Jedis::get(String key); Long endTime = now(); reportKVTime(startTime - endTime); return result; }
31. 观点二:即使不自研,也建议浅浅封装一层
32. 随着规模扩大,为什么建议造一些轮子?
33. 观点三:个性化多了,需要适当造一些轮子
34. 四、到家造了哪些轮子?
35. • 通用框架+服务 - 到家WEB框架,Daojia-Web-Framework,DWF - 到家Service框架,Daojia-Service-Framework,DSF - 到家消息队列,Daojia-Msg-Queue,DMQ • 基础组件 - 缓存访问组件DMemcache,DJedis - 数据库访问组件DAO - 分库分表组件Dshard • 技术平台 - 监控平台 - 分布式定时任务平台 - APP灰度发布平台 - 服务治理,服务管理平台 - 调用链监控平台 - 自动化上线平台 - 项目管理平台
36. 五、哪些事情应该先做?
37. 你真的了解一线同学的主要痛点么?
38. 总结
39. 分享我认为对的东西! 分享我们的最佳实践!
40. • 核心职责 • 要不要自研 - 技术组织人才(职级,招聘,培养) - 早期不要 - 技术战略(标准,选型,前瞻) - 技术栈收敛 - 技术落地(方案,战略落地) - 浅浅封装 - 适当造轮子 • 职级评审 - 目的:帮助员工提高,最终使得公司技术实力提升 • 做事思路 - 核心:能力模型+成长报告 - 找到一线员工通用痛点,用技术解决

相关幻灯片