.net 开源技术方向战略备忘记录
公司现状
1. 技术人员水平限制: 基础研发人员技术细节,性能处理能力不足,技术视野不够开阔;甚至一些高可用,高性能方案的概念都未听闻,更别提发展方向和思路了,令人痛心。
2. 技术反馈渠道限制: 公司业务线暂不多,基础服务的应用面尚属狭窄;基础服务和镜像各种环境的适应性和性能不足以及时凸显暴露出来,框架bug和问题使用反馈周期太长,不足以快速跟进和改善基础框架。
3. 人员招聘渠道限制: 高技术人才未中长期储备, 各招聘渠道未能招募到合适的技术人员。临时招聘也不能在中短期内补充恰好求职的合适人员。(.net 行业大环境下人员本身也很紧缺)
4. 人员成本预算限制: 因公司业务的发展与现实情况,基础研发人员数量有限,人员成本预算有限;(即便遇到非常合适者,薪资情况仍需各方努力达成。)
5. 基础开发人员培养: 基础研发不同于业务线研发, 难以通过业务发展提升自身满意度,技术成就感,对性能和技术的追求。需要通过内在和外在的压力,才能推动研发人员不断讨论,不断汲取学习,思考和沉淀技术,微创新,将基础服务真正用心做好。
解决方向
在考虑公司各方面的资源限制和现状,以及人员的限制和培养,基础服务的性能要求和稳定性等综合的考虑,采用开源战略方向,形成开源->反馈->交流->改进的生态圈有利于缓解以上公司的现状问题。
若能形成开源生态圈,则可以促进开源项目稳定性,优化开源代码,根据反馈不断的提升自身的基础服务产品,吸引相关的高级技术人才维护检验项目,减少项目的开发维护成本,同时提升公司在技术领域的影响力,提升开发人员的成就感。(目前淘宝,当当网,蘑菇街,大众点评,携程,小米,58同城等都有部分项目开源)
目标原则
融入开源社区,借助开源的生态能力,在有限资源条件下更有效率验证基础服务的性能,稳定性,推动其发展。
组织形式
公司开源技术委员会(虚拟)
开源生态孵化规划
1. 开源计划
【开发细节收集,改进】@陈虎伯【安装咨询】
1)分布式任务调度平台 (已开源,开源版本未更新最新
@车江毅 @徐龙 @陈虎伯
(已开源,开源版本未更新最新
@车江毅 @徐龙 @陈虎伯
(已开源,开源版本未更新最新,开源名称待订正
@车江毅 @徐龙 @陈虎伯
(待整理开源) @孙明 @徐龙 @陈虎伯
(已开源,开源版本未更新最新
@车江毅 @徐龙 @陈虎伯
(待整理开源) @孙明 @徐龙 @陈虎伯
(已开源,开源版本未更新最新
@车江毅 @徐龙 @陈虎伯
(待研发)
@孙明 @徐龙 @陈虎伯
9)分布式文件系统 (功能暂不足以推进开源)
(已开源,开源版本未更新最新
@车江毅 @徐龙 @陈虎伯
执行步骤
1)上传代码(新版本须建立新分支),整理文档(需求+demo+压测报告等),相关安装包(+安装文档等),readme简介。
(后期以公司形式开源,前期避免行业商业竞争)
2)撰写博文介绍项目的功能,demo和使用等,发布到公司知识库,发布到开源群,发布到开源社区。
开源基金
设立一定的开源基金和开源任务发布计划等。(未来较长期的发展方向,部分核心技术外包形式【部分高级核心技术人员无法招募,就通过外包技术合作等形式】)
2. 开放计划
【安装咨询,使用问题收集,改进】 @徐龙【安装咨询,使用问题收集,改进】
1)基础服务镜像1.0版(内部测试版本->开放测试版本->正式稳定版)
2)基础服务镜像2.0版(内部测试版本->开放测试版本->正式稳定版)
执行步骤
1)发布基础服务镜像内部测试版本,通过一定的业务功能验证其稳定性。(验证周期约一个月)
2)发布基础服务镜像开放测试版本,通过收集开源的反馈问题,验证其稳定性。(验证周期约三个月)
3)发布基础服务镜像正式稳定版本,仅对内提供,一般不对外公开。(产品发布的镜像版本须为稳定版镜像,并记录版本更新信息)
总体原则
1)稳定版镜像不对外公开,对外开放仅为最新开放测试的基础服务版本和跟进反馈。
基础服务镜像暂不对外允许商业使用权利,仅用于学习测试使用。(避免同行业商业竞争)
3. 反馈计划
交流社区: ,51cto等
,github等
通过线上qq群,社区,源码分享等多种渠道(还有线下的交流渠道),分享基础服务设计的成果和思路,汇聚志同道合或者同样需求的人才,一起探讨总体方向,细节,性能优化,同类产品建议等。
(根据经验: 一般至少80%的交流都是一些基础和废话,约20%的交流是值得思考的,10%的交流是值得改进和有价值的; 10%当中结合公司实际业务和具体问题,5%的建议可以形成一轮小版本迭代需求)
4. 线下计划
方向: 打通线上和线下交流,汇聚行业精英人才,打开技术交流渠道
形式: 以QQ群和微信群为交流汇聚点,通过策划线下圆桌会议,1对多小型技术分享会议,技术专家邀请分享,技术沙龙交流等交流会议
间隔: 一季度一次,不限人数,不限大小
人员: 公司内部人员推荐的(其他公司)人才,QQ技术交流群的高级人才,业内知名技术人才等
资金: 公司预算支持
场地: 咖啡馆,小会议室等安静休闲场所
拓宽技术眼界,了解行业技术动向,反馈一些价值的技术建议, 吸纳技术精英。
5. 人才计划
,形成一定规模的开源技术圈子。
互动,培养,并到合适时机招聘入职;且适用于用于长期技术人才储备。
形式: 反馈计划,线下计划,人才储备关注(高级人才招聘时推荐公司开源社区并加入),公司内部员工推荐(曾经认为不错的技术同事),开源社区人才推荐(人脉传递)。
部分高级核心技术人员无法招募,就通过外包技术合作,发布开源任务模式等形式)
6. 培养计划
方向:为公司技术开发人员打开技术交流另一扇窗口,有交流才会有进步。(除了公司内部培训,交流外)
目标:以外部技术人才与内部开发在开源社区的互动交流,了解实时的行业技术动态(行业技术新闻和咨询,相关技术框架和更新等),打开开发人员的技术视野和思考,提升技术能力。
形式:在线社区(QQ,git技术反馈,开源社区)等沟通交流。
举例:一些技术难点,一些技术疑难问题,一些压测的性能指标等都可以在开源社区提出并咨询讨论。
开源规划总结
想法真正各方面切实落地为时尚早;
但是做为技术长期规划和发展展望,我们仍然需要时刻提醒自己的目标和方向,并严格要求自己代码和文档等各方面的质量要求,并不断完善且逐步推进。
(为了解并清晰未来公司开源技术的目标和方向,本规划文档需保留以作备忘。文档分不同时段完成,未校验文字,不足之处须见谅)
开源是一种态度,分享是一种精神,学习仍需坚持,进步仍需努力,.net生态圈因你我更加美好。