项目总结
写在前面
(1)本文摘要
- 牛搭团队的组成
- 牛搭低代码开发三个阶段
- 每一阶段的感悟与总结
- 团队与个人的项目总结
(2)本文引用
-
我们牛搭团队,选择的大项目作业是LowCode平台的开发,下面是项目相关的链接
-
🏠项目地址:github-address
-
🍻成果演示:demo
-
📝项目文档:docs
-
📸视频介绍:show-video
-
(3)闲话多说
- 大家好,我是青训营牛搭团队的队长
Ciusyan
- 首先感谢字节跳动举办的第四届青训营活动。这里有人美声甜的产品运营姐姐,时刻公布最新的消息。有认真备课的老师,领我们在技术的世界里遨游。还有负责任的大佬,悉心解答我们“cer头cer脑”的问题。正是因为有你们的付出,让我们向往技术,促使我们主动学习,增添我们的项目经验,让我们体验协作开发
- 其次感谢一下我的队友,我们素未谋面,来自五湖四海。沟通成本本会增加,却因为这是一群求知欲强的年轻人聚在一起,在这短短的一个月里,从陌生到熟悉,我们不限于讨论项目作业本身。聊技术、说项目、谈方向规划... 我们勇于交流,相互尊重,共同进步。队内氛围很好,也让自己结交到了不以山海为远的志合者,是队友,更是朋友
- 最后感谢一下青训营的这个大环境,撇开课程项目不谈,光是在这个环境、这种技术氛围,就能让自己产生许多思考,下文会谈到
- 下面我来对我们的项目
(牛搭移动端低代码开发平台)
做一个总结,我会从项目开发的前中后三个阶段为大家细细说来(这里不会对项目技术本身做过多的介绍。若需,请查阅文档:docs)
一、团队组成
- ”一花不是春,孤雁难成行“,下面请容许我先介绍一下我们的团队,他们真的太优秀了,值得我介绍一番
- 参见:团队介绍
(1)Ciusyan
-
天津理工大学2021届
-
主要贡献
- 组织队内氛围,跟进开发进度,组织项目讨论
- 物料开发
- 编辑器开发
-
自己很喜欢的一句话
人生没有白走的路,每一步都算数
(2)JamesCurtis *
-
湖南工程学院2021届
-
主要贡献
- 整体架构设计
- 文档编写
- 物料开发
- 事件动作开发
- 编辑器开发
-
每次想起他,心里会想起的一句话
真正的大师,永远怀着一颗学徒的心
(3)JerryLee
-
河海大学2020届
-
主要贡献
- 物料开发
- 编辑器开发
-
每次想起他,心里会想起的一句话
知不足者好学,耻下问者自满。
(4)zcxspace
-
天津理工大学2021届
-
主要贡献
- 物料开发
- 编辑器开发
-
每次想起他,心里会想起的一句话
宠辱不惊,闲看庭前花开花落;去留无意,漫随天外云卷云舒。
二、种子阶段
(1)过程
- 找到上述队友(一开始是六个人),在确定做
LowCode
项目的时候。对于我们来说,低代码是一个比较新的概念,都是一头雾水 - 在第一周里,我们并没有立即着手做项目
- 首先根据队内情况,统一了大家的开发技术栈,去学习对应知识
- 与此同时,检索各种关于低代码的知识,询问过很多前辈
- 也找了几套开源项目,学习了前辈的写法
- 这时候,团队就已经把牛搭这颗种子给种下了
(2)感悟
1、前辈的力量
- 先不谈项目,来说一下在青训营里遇到的一些人吧
- 几个负责活动的姐姐,感觉全天24小时在线,回复消息也特别及时,真的很负责
- 还有给我们上课的老师,工作那么忙的情况下,还能抽空备课,还是高质量的课程
- 给我们开了两次班会的文杰大佬
Tecvan
- 看到直播弹幕都在刷“文杰哥的黑眼圈,”就知道这真的是大佬~ 当时有一个关于现阶段写文章的问题,和文杰哥交流了一下想法,大佬本没有义务,也可以不用那么认真的回复我的消息的。可是文杰哥很认真的回答了我的问题,并且对我的想法给予了一些肯定(太有成就感了)让我对此问题,有了更深刻的认识、更多维度的思考。当然,这也意味着,我得对自己和团队,更加的负责才行
- 这也许就是好老师和前辈的意义吧,总是能用简短的话语,让人产生新的思考
2、起步真的很难
“上帝赐给人苦难,也赐给人忍受苦难的力量”
-
成年了,就意味着,得学会为自己过去的行为负责,得为未来的理想负责。这也是一个人心智成熟的表现嘛
-
有的人面对困难,总是会选择放弃,毕竟大部分人都是喜欢在自己的舒适区生活。但是长期下去,没有去自己的学习区、乃至困难区生活,将其转化为舒适区,这样注定很难有好结果的
-
可能是因为自己的不善管理,让六个人的队伍,最终变成了四个人的队伍。也许他们有很多棘手的事情,没有选择为自己当初的行为负责,没有为团队负责,但是没关系,这也留给了我更多的思考空间嘛
-
再加上看到越来越多的队伍放弃、就更加勉励自己和我的团队,不要做这样的人。应该学会自己的行为和言行负责了
3、总结
-
团队之间应该多交流,特别是在我们这种学习阶段,锻炼沟通协商的能力,尤其重要
- 会议记录
-
大家的时间都很宝贵,和前辈交流时,一定要通过自己独立思考过后,勇敢的说出自己的想法与思考,这也是你对于前辈尊重的一种表现,毕竟谁会喜欢一个"cer头cer脑"的同学呢?如果你给予了别人尊重,前辈大概率也会回馈你一定的帮助。毕竟我们都是高素质的软件开发人员。相互尊重、共同进步,方能一起向未来~
-
不能死磕技术,还得注重自己软实力的提升。人的能力本来就有百种,只是因为在大学之前的教育体系,束缚了我们去挖掘自己的能力,所以我们得在高中之后的教育,去习得这些能力,这也许就是大学的本质之一吧(注:没有说其不好的意思,反而很感谢这种教育体系,让我一个农村的孩子,也能见到形形色色的人,也能让国家培养一番)
-
成年后,应该用成年人的眼光看待问题,得学会为自己的行为负责,为自己的理想负责
三、发芽阶段
(1)过程
- 有了上一阶段检索的前置知识,队友的了解
- 毕竟那只是检索知识,还没有真正的运用起来,内心还是很焦灼,得想办法把项目架构搭起来
- 因为大家都是在学习阶段,都是相互学习,共同进步,一起去争取荣誉
- 经过讨论,意见一致,大家再花三天,都尝试着自己搭建一套架构,(毕竟一套好的架构,能为后面的开发,减少很多成本)
- 可能你会想,为什么要让大家都试着搭建一套呢?
- 这个过程,让你对低代码有更深的理解,也是对你检索知识的一种输出,你思考过后,在后面的实现起来,你也更容易接受很多
- 这个阶段过后,我们的项目架构,最终采用了
JamesCurtis
(团队主要贡献者)搭建的架构单个仓库且只有editor
的一套架构 - 项目搭建起来后,还要对其代码规范进行约束(如:目录/命名规范、代码结构、文案规范)
- 牛搭团队代码规范:文档地址
- 熟练使用
Git
进行协作。熟悉issue、pull request、github action
对于提高协同开发效率非常有帮助- 牛搭团队Git协作规范:文档地址
- 有了上面的铺垫,大家讨论的思路是,先实现几个基础的物料的基础功能
- 能够托拉拽、将其渲染到画布上、在属性栏修改基础的属性
- 这时候,在团队的培养下,看到了牛搭的长出来的嫩芽
- 项目Logo:
(2)感悟
1、大胆尝试
“所有的尝试,都是勇气和努力的结果”
- 在学习阶段,就应该多多尝试,即使是自己不擅长的领域和技术。
- 在大胆尝试的过程中,你在了解技术的同时,也是对自我的认识。
- 毕竟在成年不久的阶段,很多人总是有一种
"奇迹思维"
,能够承认自己是一个普通人,真的很难。更别谈认识自己的能力了。 - 即使是真的错了,你在这个阶段,试错成本不高。不会等到开始找工作投简历的时候,才去试错吧。
2、架构搭建
- 这里又得表扬一下队友了
- 因为一个项目,如果架构搭建得好。团队在之后的开发中,会大大减少开发成本
- 可扩展性高,复用性较高,这些都是需要在搭建架构的时候,考虑到的点
- 团队一开始让大家都尝试一下。如果你是这个项目的架构师,你会如何搭建这个项目?
- 自己也尝试了一下,更能够体会到,好的架构,有多么的重要
3、团队协作
- 这是在青训营里,收获到很重要的一个点
- 毕竟现在真实的工作,基本上都是团队协作
- 与同部门人员、团队其他部门都是协作办公
- 这让我们一群涉世未深的大二大三的学生来说,在哪里能有这种很好的平台给你锻炼呢?
- 答案是:很难找到
4、代码规范
- 多人协作中规范的落地很重要
- 需要有机器也能够确定对错的规范才能够比较好的效果
- 不然开发人员各有各的想法思路,各个代码规范
- 必须要一套客观的能够直接确认对错的规范才能较好的约束开发人员手脚
5、总结
- 做事情要大胆地尝试,个人也好,团队也罢。都需要不断的尝试
- 团队而言:我们团队做了一个较好的尝试就是:“花三天时间,让每个人都搭建了一下项目架构”
- 个人而言:因为我暂时的方向,学的是后端。来到青训营,做这个项目,就是一种尝试
- 努力让自己和团队做一个 ”长期主义者“,不能盯着自己脚下的一亩三分地,毕竟真实的生活,就是没有那么多的即时反馈。就像搭建架构一样,如果只考虑当下的功能,将来会花很多时间从构、维护、修复...
- 代码质量、规范尤为主要
- 不难发现,现在在企业的招聘要求上,几乎都会加一条:高质量的代码
- 一个团队,就应该发挥出
1 + 1 > 2
的效率
四、成长阶段
(1)过程
- 在上一阶段,我们完善了项目架构、代码规范、提交规范、基础组件的基础功能
- 在最后的阶段,我们主要完成了
- 扩充物料、及其属性
- 项目架构现在改进成了monorepo架构,并且做了相应的分离
- 项目、答辩文档的编写,答辩视频的制作
- 其余功能的编写
- 其余的功能主要包括
- 预览和发布
- 画布区的右击事件
- 属性区的外观栏、事件栏
- 物料区的大纲栏、设置栏
- 增加了可嵌套的分栏物料
To write and fix Bug
- 在牛搭团队的坚持下,这颗种子,终于成长了起来
(2)感悟
1、坚持与韧性
”只有经历地狱般的磨练,才能练出创造天堂的力量。只有流过血的手指,才能弹出世间的绝唱“
- 最艰难的起步阶段,都熬过来了,在最后关头,总不能掉链子吧。
- 明明知道眼前就是一片光明,总不能不去追求吧
- 我们这一只
"Coder Cow"
,虽然起点没有那么高,但队友的韧性都很强 - 大家都沉得住气、静得下心。肯花时间
2、思路比编码重要
- 我们会发现,很多需求,要是是我们写过的、或者是类似的,又或是已经有思路
- 在编码层面上,即使第三方库的API不能完全记住,也能很快的实现出来
- 但若是一个需求,没有思路,会花很多的时间
- 而很多思路想不到,因为用得少、没见过,很正常,这可以通过积累与总结得到提升
- 我认为这可能也是为什么现在的招聘要求,更多看中的是程序员的内功、以及软实力的原因吧
3、额外补充
- 单元测试非常重要,很多优秀的项目无一不是测试覆盖率逼近95%。
- 少了单元测试的话可能在后期莫名其妙就出现了其他的Bug。
- 单元测试的好处在一方面,PR的时候可以检查对方代码质量和完善程度,并且可能还能够发现隐藏暗处的Bug。
- 另一方面,单元测试可以提高代码质量和可维护性。
- 不论是从哪个方向考虑单元测试的重要性都非常高,甚至等同于功能代码的重要性。
- 如果没有自动化测试其实到头来还是得手动测试,还不如写自动化测试。
测试在现代软件开发中的重要性怎么强调都不为过。交付产品不是一项一次性的任务,而是一个持续的过程。每一行代码的更改,都必须保证先前的功能不被破坏,这意味着软件需要进行严格的测试。
3、总结
“我是一名 Fibonacci 程序员,不断的重复和改写昨天和前天的代码”
-
实现并且扩充了项目基本需求
-
还有很多为实现、待改进的问题
-
应该加强自己对信息的检索能力
-
先至上而下的去检索,又从下往上的去学习
-
你会发现,最终实现所需要的能力与技术,也就是扎实的基础知识
写在后面
(1)团队总结
- 牛搭团队,在完成了项目大作业的基本需求的前提上,扩充了许多新的功能
- 不管最终的评比结果怎么样,已经不重要了
- 重要的是,团队中的每一个成员,都得到了应有的锻炼
- 也让我们在大二的时候,就能了解到什么是技术、有一个还不错的项目经验
- 而且我们团队看中的,也不仅仅是项目本身的功能实现
- 我们有培养自己独立思考的能力、信息检索的能力、沟通交流的能力、输出总结的能力等等
- 譬如我们的会议项目讨论,群内的活跃度,文档的书写,视频的制作,对源码的阅读等等
- 我们“脚踏实地,仰望星空”,也“落落大方,人人如龙“
(2)个人总结
-
再一次感谢青训营这个平台、字节的漂亮姐姐和大佬前辈,以及我的队友
-
在这一个多月的时间里,我们从0到1,发挥出了一个团队应有的力量
-
还有就是夸夸队友们。他们认真做事负责的态度,让我见识到了成年人的思维方式
-
也让自己产生了许多思考,譬如:
- 我前些时间写后端居多,我来写前端的收益是如何的呢?
- 我现阶段花时间写文章输出的收益又是如何呢?
- 我真的适合前端吗?或者我真的适合后端吗?
- 来参加青训营,和自己的计划冲突了,下次是不是应该多思考一下,为什么要这样选择呢?
-
最后还是我最喜欢的那句话收尾
“人生没有白走的路,每一步都算数”