# 从高校成员开源基线做中台架构与产品
接触平台的概念是在18年,互联网在流行微服务,DevOps,敏捷等(当然也有AI),资料异常多,但是却又是异常的敷衍,几乎没有一套完整的可落地的开源框架,大多就是一个权限系统、一套微服务脚手架,或者说一套似乎有完善落地的Docker或者K8s,但是能不能真正落地起来,不清楚,也不知道,符合不符合场景,查找到的资料都是说好,但是不是真的在场景里那么好,心里很是没底。
考虑左右,从零搭建了一套开源的研发平台,带着几个大学生,利用业余时间,用了大概1年多的时间,从过程的团队建设,试点尝试,过程分工,到形成一套平台项目管理流程,整个最终可以实现下来,也是感慨万千,唏嘘不已。
# 为什么要做这样的平台,还要从零开始
# 需要知识积累和沉淀
不断的反思,不断的吸收,不断成长
有一定工作的经验的开发肯定知道,企业开发中包含有大量的、重复的CURD(增删查改),以及重复性组件,还有不断的获取和重复使用的学习资料等等,这些重复性的东西,每次使用都有新的感悟和感受,如果没有积累,每次都可能从零开始,无法达到沉淀和积累,从而浪费大量的时间和精力在上面,如温水煮青蛙,久而不知,而自茧作缚。
而相对的另一个例子,滴水穿石,之所以可以穿石,就是因为不断在前面的积累基础上,加上不断的坚持,如果每次从零开始滴,也许也可以穿石,但是消耗的成本和时间,也是很巨大的。学习也是如此,加上不断的积累,在一项技能上不断的学习积累,日积月累,不管有没有达到”穿石“,但是一定有会不小的进步。
# 不想把时间浪费在无用的点上
更想专注,不用站在巨人的肩膀,自己就有肩膀
有一种慢慢的体会和感悟,叫“ 欲速则不达 ”, 每个事情都有消耗时间、精力、过程,而人本身就是时间精力有限,怎么样可以在有限的条件里面,更好的完成和学习,需要的不是其它,而是【专注】。所谓的专注并不是要时时刻刻的去想,去学习,而是坚持长久的做这个事情。
类似的如常见的1万小时成专家说法。 平台搭建的目的之一,就是节省用时间,去掉重复无用的东西,在有限的时间里面,更好的专注在新的点上,不断的前进,不断的提升自我。
# 落地不是一个人的事情
是整个团队的事情,要学会带团队一起成长
一套平台,需要涵盖的内容很全面,每个模块,领域都需要有对应的人员,这个时候,不是一个人能完成,而是需要调用团队的力量去实现。 就像打球,即使说有一个人球技出神入化,但是他一样也需要传球的人,助攻的人。想要落地这个平台,就需要有团队参与,发挥团队优势,提升整个团队气氛,团队合作,合理分工等,这些都需要学习和实践。
最后获利的不是某一个人,也不是具体谁谁,而是团队的每一个成员,在这个过程中能发挥、创造、体现出他们自己的价值,团队成员的见识、协作、信心等的成长。不管这个过程是艰辛也好,埋怨也罢,你走你才知道,而不是听谁说你才知道,这就是你自己的经验,自己的价值。
带人的过程是要学会发挥自己的能力的同时,更要学会带团队一起成长。
# 需要一套完善的研发平台打磨,站在前面的基础上提升
在出来一套可见东西之后,可能比想像的还要“千疮百孔”,还要不堪,甚至连往回看的勇气都没有。但是正是这样的东西,摆出来,拿出来,虚心接受所有的问题和建议,然后在后期一步步消化,一步步打磨,而形成出来的,就是自己的产品,或者说,把自己打磨成一套精品。
技术总会在不断的发展,需要有一个产品,一个平台可以让你,或者我在更好的平台上面做预研,而出来的成果,也会比从零起个“Hello World”强得多,毕竟你已经在场景里面,已经在平台里面,安全,测试,规范,可用性,健壮性等等都有平台的验证和支撑。
# 开发接入研发平台的HelloWorld说明
没有实战基础的学生,是否能组成团队
# 为什么要选择学生团队
不找有工作经验或者社会经验的人
找学生,这也是B方案,前面的A方案,最初规划,团队组建的是找的是同学和有工作经验,还找了以前老师作为指导,沟通好,拉了10几个人成团,便开始。但是这个过程经过不到2个月就发现问题,异地沟通困难,团队鸡血也很快消磨,有转成观望态度,原因不免是 工作忙,时间精力不足,整体的技术预研也几乎停滞不前,原计划的分工,很快无法往下,研发任务开始体现出敷衍趋势,成立的微信群很快形成死群。开始信息发出的时候,还有几个人附和,到后面,可能连附和都没有。
很快,就有提出要退出研发计划,同时各种小群也开始建立,这些都意味着团队有危机的趋势,不管是信任和人心开始出现浮动,放置观察了1个多月,考虑同学,朋友,还有后面的各个因素,无奈放弃此方案,成员停止研发沟通联系,慢慢的转向分享文章,咨询经验等方式,进而消停。
由于之前在校时有一定的学生接触、组织经验,B方案实施也是很快落地,不到2个星期的时间,也成立了10几个人的群。学生没有实战经验,不管是沟通还有动手,都与实际工作人员有天跟地的区别,而能不能落地,却成为一个最担心的事情。不仅仅如此,学生成团的现象,抱团等情况,过于依赖于师生级别关系(比如较愿意听老师的话),这些都是问题,不过既然A方案放弃,就得全力保障B方案的实施,而且这步的操作过程,更需要严格,可控。
# 怎么进行团队的培养、磨合
最终成为可作战的兵团
学生团队开始分两个组别进行,互相互相隔离的分开,原考虑是分开培养,然后两边达到可控,可对比,以小组作为培养线。一开始活跃气氛远高过之前的团队,也是理解,毕竟学生很有学习的积极欲望。开始的时候,流程按 【培训_学习_考试_分级_练习_评审_重构】 这几个流程,按这几个流程下来,这个过程很快,几乎一个月内就可以完成。
过于顺利的流程让我感觉,应该问题不大了,而且很快就可以进入提升学习阶段。考虑左右,虽然考虑可能有难度,由于之前的表现,还是比较有信心,毕竟流程,团队制度有建立雏形。决定开始接入新项目,进行实战练兵。
很显然,我的判断是错的,而且过于过早的接入实战,实战性的要求,沟通,压力等,让组长无法承受压力,而且之前做了一个最大的失误,考虑组长退了,副组长可以顶上,也就是常见的AB岗形式,结果却是组长退了,下面的学生人心异动,而且又是核心成员,很快引起其它成员信任危机,深度做安抚工作,而且减少对应的任务安排,但是最终还是造成内部沟通的不利,需要在任务上进行妥协,而这样的妥协却极度不利的平台的研发和后期的任务安排。这个近乎两个月的组团培养,组团受挫,这不得不让我思考之前的一些策略与方式。
明显,资源开始主要集中在第二组,这个时候,已经开始感觉到,组团的风险和管理上的缺失,不过幸运的是,前面两组留下了很多资料和资源,留下的这组人与上一组留下的成员,从综合素质,追求都比较明确,很快完成了新的组团,而且意识较为统一,在沟通明显都成一气。
也发现,找人组团,不管是人员素质,意志力还有自控力等都有一定的要求,是否看个人有成长的追求等,能克服困难,能坚持。在进行多次任务安排和沟通之后,最终确定留下人员也就只有几个学生。 由原来的差不多30人, 差不多半年的时间里面,经历两轮的练兵和实战,后面一年的时间里面,也有进进出出的,但是最终来说,还是这几个人为核心。
# 怎么消掉学生气,形成接近社会的工作状态
学生团队与实战要是能对接得上,最大的问题是怎么样调整状态,即执行力,沟通能力,协助能力等,合理安排好自己的学习和工作时间,不影响学习,然后又能参与到项目建设中来,学会怎么样安排,怎么样协助,遇到困难的时候怎么面对,使达到任务目标。
而想到的,最好的练习方式,也是要接一个实战,所以,校内跑腿项目就建立了。
校园跑腿项目后台(测试界面)
校内跑腿是考虑到的一个比较接近于实际,涉及到各个方面的能力的项目。从开始的开始的项目立项,然后到团队执行,再到人员计划安排都走过一次,比如计划方案怎么写,中间沟通问题怎么考虑,遇到一些问题,怎么处理。如与社团合作的时候,达不到效果,然后就找会长一起沟通,然后面对问题,而不是说,逃避问题。开始常常是一个问题一遇到就想着可能会失败,“哎,可能就这样了”,这个时候就引导找到问题点,解决问题点。也有说以为安排就需要马上完成的,就告诉他们要有计划,然后哪天完成哪些,一步步执行,不要急于这一天等。
他们有思路,听取他们的意见,尊重他们的意见,有一些想法就多鼓励去做,在执行过程中,也配合他们一起处理,让他们有意识的知道,他的想法哪些是对的哪些是错的,毕竟新人,带有一些学生气,有冲劲。如果执行过程有困难,就多鼓励,如果有错误,就引导并适当批评,有成果,就奖励等。
在两个多月的时间里面,跑腿人员大概有70多人,公众号关注人1000多人,然后订单2000多单,整理了从申请,接单,跑腿,扩展等流程。团队也开始慢慢会了讨论,沟通,使用一些常用的工具,体会互相理解,互相宽容,执行力和作事思维也慢慢了有了提升,了解到生产中实际项目,包括工程代码的研发过程过程,比如怎么对接微信,登陆,支付等(跑腿项目是自研的),至少达到这一步,也是多少有些欣慰的。
关于公众号,原本可以让他自运营的,毕竟流程制度都在,对跑腿人员也有利益,却因为公司的问题,暂时停止了项目,也是较为可惜。
平台研发过程中怎么安排学生团队,学生团队可以做什么
# 过程成员缺少很多东西,怎么安排任务
最主要的是怎么安排研发任务,然后又不能一下给太多任务,还要有一定的成就感,这个倒是为难到我。整体的研发平台涉及到的面太多,从文档,服务器,运行,执行集成,项目代码等都有一整套,这些都要落地,让他们实现任务的同时,能有自己的成果。
前面的整体架构,包括规划这层,在前面团队组建的时候,我这就把整个蓝图做了规划(组团的时间远超过之前的估计,原计划是3个月,最后想不到用了大半年),这也是特别麻烦的一点,无法让他们有参与感,考虑左右,就只能从最简单的开始。
规划的第一版本技术研发平台架构
开始从 jenkins 的使用,然后到Git导入批量工程,怎么团队协助,合并代码,怎么帮别人运行平台,从最简单的操作开始,然后怎么本地部署,比如Zookeeper,redis使用场景,工程怎么打包,服务器怎么查看异常,怎么查看日志等,都从最简单的做起,一点点的完成带入感,慢慢体会到平台的过度。在有些了解之后,开始学会使用代码生成器,生成服务工程 ,生成一些组件,生成CURD,做一个学生管理系统。比如日志组件,通知组件,这些都可以让他们使用代码生成器一步完成初版,后期的我再在上面进行优化处理。
规划的第一版本整体学习计划
目标就是让有了解之后,有自己的想法,可以实现自己的想法,从而提升自己,增加自己的知识面,这也是引发出其它的问题,就是知识深入的问题。毕竟面的代价就是深度,而这个,当前做的最好的办法就是,鼓励认真学习大学老师的课程并说明重要性(我们大学都是以学习基础为主),然后计划的时间拉长,比如完成Git工程导入的任务预计时间是一周。
# 消极,缺乏自信,缺乏学习主动性
怎么办
平台研发过程中,最为难的事情就是接触新的事务,常常接触到的回应是 ”我不知道“ ,”我没接触过“ 等,或者说,一接触到新的东西,就莫名的害怕,还有一种比较常见的情况就是,任务往往都是最后一天才有去执行,其实这个问题倒不大,但是却有各种理由来表达 如 “学习任务太多” 或者说 “正在看” 。开始就发现问题,然后就往下问,却不是这么回事。主要还是缺少学习的主动性,然后在追问的时候,又知道这样不对,内心存在愧疚,然后又有点畏惧罢了,这也许是学生团队的可爱之处。
这种情况还是比较常见的,无可否认,即使在实际工作中,这种也是屡见不鲜的。没有接触过就先让他们百度,网上参考,找解决方案,多问人,不要怕问,也不要害怕说问多别人会生气,更不要怕百度拿别人的代码(这是与应试教育不同的地方之一了)。软件以实现功能为主,也鼓励创新,但是更多的是,解决问题为主,做事要有始有终,有成果。针对于另一种情况,却是批评为主,或者说有时候激动,就真要多说几句。并不是不允许最后一天执行,但是最主要的是不能敷衍,对就是对,错就是错,要敢于面对问题,敢于表达自己的问题,也不要怕被别人看见,怕被别人知道,学会面对,然这样才有发现问题,解决问题,避免自欺欺人。
过程以慢慢的培养主动性,自主学习能力,自我提升为主,同时,也要树立正确的三观,工作观,培养的做事的魄力。
# 团队过程最为合理的
感觉还是激起人善意和潜力
其实这个过程中,最害怕也是最难做的,就是怎么带团队的问题,结果不是怕不出成果,而是误导。带的过程,并不是说不敢给压力,更不是说不敢给努力,而是在有限的能力里面,让他们最大的发挥自己,然后创造他们自己的价值,发挥他们自己的价值。其实这个并不是自己的觉悟,而是在自己莫大的团队管理困扰之后,在读到一篇微信文件,介绍“彼得 德鲁克”的时候,一个自己的真实体会。
现实中,不仅仅是这几个学生,在公司内部也一样涉及到一些管理性的工作,带队工作,这个比起学生团队,更加残酷得多,也现实得多。团队成员并不是我们的上下级,而是大家的一种互助,一种共赢。自己在培养别人的同时,别人也在培养你,提高自己更高的标准,锤炼自己的人格,同时超过我们自己的局限,做出自己可能自己都没有想到的事情。提升他们,帮助他们,感恩他们,同时他们会感恩你,跟随你,展现自己的人格魅力,而其它的管理工具,还有书籍,更多的感觉是一种辅助。
带团队过程中,本身也要学会反省,检讨自己,必须要清楚自己在做什么。反之,正如一部电视剧里面说的,孝庄对康熙说的:“鳌拜可能不是自己要反的,而是你把它逼反的”(大意如此,原话不记得了)。而相反的,激起他内心的善意,学会感恩,这样,也许会更好的让他发展自己,即使不在这个团队,在另一个团队,公司也能有这样的心态,久而久之,也肯定会赢得别人的认可 ,创建自己应该有成就。
# 我们要做成怎么样的目标
# 要形成大平台作为后盾
小兵团进行作战的战略
平台建设从开始的团队组建、培养、到一起作战,项目从开始的架构设计,技术选型,第一行代码,到第一个访问链接,都包含着一层层的努力和坚持。这个过程大概过了1年多,从计划到出来第一版本,基本上能达到“大平台,小兵团“作战的目标。
平台的形象示例
当然,目前的版本还是千疮百孔,有些地方甚至可能不堪,或者不完善,这些都是开始,一个初型。需要不断的实践,团队不断的去上面去锤炼它,让他成长,然后添加自己的想法,表达自己,它就像一个土壤,为下一步的完善的过程提升了基础。
为团队的下一步,后来,甚至未来的蓝图规划, 带来了一种可能,而不再是纸面上理论,更不再是网上这里缺少一块,那里缺少一块,不可落地的东西,而是一个完善的架构,一个完整的研发平台,希望可以为项目管理,开发,管理带来战略上的共赢。
# 持续迭代,不断更快更好的升级和优化
在后续不断的学习中,会不断的去学习,实践自己的想法,整合更好的资源,技术,吸收更稳定的,可用的东西,不断的提升研发平台的能力。
这是一个很长的过程,可能是一年,两年,甚至是五年十年,学习不止,步伐不停,积跬步以至千里,积小流以成江河。打造研发平台的过程其实出来这个并不是平台的精品,而是这个精品是你自己,磨炼的不是所谓的平台,而是你自己。
平台在研究过程还会不断的有人参与,离开,但是接触的过程,更多的是让接触的人有一定的参与感,可以不再从零或者迷茫,盲目的查找资料,在一个综合的研发平台上面发挥自己的想法,丰富平台,同时也丰富自己。
寄:也更多的希望有兴趣的朋友参与到研发平台的设计与实现。
# 最后
以上就是带学生团队1年多来走过的历程,从零实现,走过的路程。不算长,也不算短,只是一个过程。