个人总结-不说再见
这个作业属于哪个课程 | 软件工程 |
---|---|
这个作业要求在哪里 | 个人总结 |
这个作业的目标 | 个人总结 |
作业正文 | 如下 |
其他参考文献 | 无 |
写在最前
想说的太多了,反而无从讲起。在以往的博客里,淡化了很多遇到的困难,在这个结尾,会写更多背后的故事,以我的视角看软工实践,也会把那些曾经过不去的坎都分享出来,有酸有甜才是软工体验
回望碎碎念
故事的开始Hello World,最初只是当作普通作业,但是还是认真完成了,对于当初写的期许,现在的确都实现了。第一次个人编程作业-中文编程,让我开始觉得这门课有点东西,靠着大一写算法题目的底,比较顺利写了出来,还得到了栋哥的认可,慢慢迭代了几个版本,在这个过程中熟悉了Git操作。第二次个人编程作业-互改代码,通过这次作业,熟悉了Github的一些操作,同时埋下了伏笔:结识了明锐
第一次结对作业-数据采集和第二次结对作业-原型设计,和明锐一起完成结对作业,现在想想觉得真的挺厉害的,和没有见过面的“网友”一起完成作业。和明锐协作挺愉快的,想法有冲突的时候,一起分析完就能直接敲定下来。在做两次结对作业的同时,我开始找团队作业的伙伴。第三次个人作业-用例图设计,慕课的案例比较少,而且作业有时间限制,让我们头疼不已
个人和结对作业结束后,团队作业开始,Happy Tree Friends——团队展示,回想定选题的那天晚上,大家提出了很多有意思的想法,很多想法都因为可行性太低被否定了,最后我提出了一个想法:能不能做一个图书馆图书查询的App,因为我们学校图书馆查询系统确实不好用,说完大家都很有共鸣。大家就开始找不同学校的解决方案,偶然间找到了福大助手,发现我们学校缺少一个好用的第三方课表软件,讨论到这里大家都很振奋,把所有已知的至诚课表查询方式的痛点都罗列出来,讨论如果开发类似App该如何解决这些痛点,还分析了技术上的可行性,主要的技术难点:模拟登录、验证码识别,确定了这些技术难点可以解决,最后敲定了我们的开发课表App:橙汁,核心功能课表查询,亮点:签到查询。博客发布后SoftwareTeacher给我们留了评论:问题是,真的有人用么?这个评论给大家的打击还是挺大的,从此给大家留下了刻板印象:SoftwareTeacher一出,必属灵魂拷问。当然在那个时候无论说什么都显得有点苍白,Talk is cheap,也不必说太多,做实事就好了。从这里开始我们就开始准备性学习,一部分伙伴开始学习安卓开发,我也开始研究模拟登录和验证码识别,每周都开会讨论本周的学习进度
从项目介绍作业开始,我们团队每个人的分工越来越明确,有点伙伴趋向实际开发的开发,有的朋友趋向项目管理。在这之前我们已经做了很多相关的技术调研,也初步解决了两个技术难点:模拟登录和验证码识别,因为准备的比较充分,在选题课上我们很漂亮的回答了同学们和栋哥的问题
之后完成了团队作业——UML设计和第三次团队作业(需求分析)从这时候起,很大一部分团队管理和调度的工作都由马骏负责,我从解决技术难点转向到安卓开发的学习
最让我头大的就是团队Github实战训练,时间紧,任务重,因为那个时候只有我做过后端的开发,所以大部分后端代码都是我写,在写的时候还要兼顾前端进度,真的是“裂开了”,
让人更头大的是Git协作,大家Git操作不熟练,各种冲突,时间紧迫直接-f (真实!),虽然最后完成了任务,但是这次的实战暴露了很多问题,特别是Git协作,必须把这个问题解决,痛定思痛,我先把Git重新学了一遍,然后用了两个晚上,一步步教给其他伙伴,最后还带着大家一起用GitHub做了五次实战,至此我们团队Git操作基本没问题了,对于我自己来说,通过教大家Git,我更加深入地理解了Git
在团队作业第四次—项目系统设计与数据库设计开始之前发现了一个很严重的问题,发现安卓开发的伙伴学习实际进度比预期滞后太多,大家看教学视频就像看综艺一样,没有动手敲代码,然后继续痛定思痛...这也太痛了吧...推翻原有进度,以实际敲的代码来衡量进度,让大家从最基础的案例开始动手敲代码
经过了这么多前期准备,我们进入到了Alpha冲刺。虽然我们已经做了很多准备,但是还是遇到很多意外情况,Alpha冲刺深刻理解了实践的厚重,记录在博客中Alpha冲刺——总结
Alpha冲刺结束了,我们组喜提一件小黄衫,大家都让给我了,我也把这段时间的感悟写在小黄衫的故事,这篇博客的评论区集齐了我们平时常见的老师,而且通过这篇博客还让我结识了莫多,真是网络一线牵呀
经历了Alpha阶段的磨练,大家的协作已经很默契,Beta冲刺更多是和用户交流,做出产品,体验记录在Beta冲刺——总结
软工课带来的提升
学习的新软件和新工具:
- 集成开发环境:Android Studio
- 网络工具:Fiddler,Postman
- UML图:ProcessOn
- 版本控制工具:Git
学习和掌握的新语言、新平台、新框架、新架构:
- Android JetPack组件库:ViewModel,Room,LiveData,Navigation...
学习和掌握的新方法、新思维、新思想:
- 在小黄衫的故事里我更详细地说我的体会
- 总的来说就是要动手做,以终为始,用你期望的目标倒推你需要付出的努力。当然这一切知易行难,你可能需要上个软工课体会一下
人月神话
- 人无远虑,必有近忧。如果想在软工课结束的时候拿出还不错的作品,一定要提前学习相关的技术,如果开始冲刺才开始学习,那么来自其他队伍或者 deadline 的压力会使得团队在做决策的时候不断妥协,最后只能草草地完成项目,这也可能导致恶性循环,使得软工实践没有帮助到你提升能力,反而还成了你的负担
- 项目不易,组长叹气,作为组长,在这次的项目中真的很累,不仅需要推进自己的开发进度,还需要处理组内各种事情,需要跑在整个组的前面,选用什么技术栈要先分析,然后尝试,最后推广到组内。除了需要应对眼前出现的问题,还要安排大家学习即将用到的技术(因为我们都没做过安卓开发,大家对自己要做的事其实是挺茫然),所以要做一个还不错的组长你需要付出很多,当然也会收获更多,对于我自己而言,收获了协作开发能力的提升,这可能是一个人埋头苦学永远也学不会的东西
- 关于团队氛围,因为今年疫情的原因,我们没有办法见面,我的固有认知就是:没有什么是一顿饭解决不了的,如果有就再加一顿火锅。当然最核心的还是团队成员应该多沟通。我们的团队氛围一直以来都是为大家所津津乐道,但是你知道吗,刚开始我们群里也是发消息没人回,大家都很生疏。我其实也挺崩溃的,但是我能跟谁说呢。还是需要用心做点什么:多帮助组员,让他们能融入到团队里来,还要多鼓励组员在团队里多沟通(即使与项目无关也没关系),我就很鼓励大家开会的时候聊一些其他话题,当然这个会导致会议效率下降,在Beta冲刺我们对这个进行了改进,这个平衡还是要慢慢把握
- 如果只是把软工作业当成一个任务,那么比较难做好,最好能跟自己个人发展结合起来会更好
- 不要轻易妥协,如果每一个细节都妥协,那么最后做出来的东西注定很很难让人有眼前一亮的感觉
- 保持谦和和对事物的好奇心。印象比较深刻就是栋哥分享的一个视频:与翁恺老师面对面,在这个视频里翁恺老师演示了一段手写C语言,用的是zsh,通过GCC手动编译,这个很颠覆我认知的,因为我可能先入为主了,认为学校教C语言一定是凭着一本红红的书,用着VC6.0。除了这个呢,Q&A环节翁恺老师也回答了很多问题,谈到技术的时候,老师的眼睛都在放着光,而且他表达的方式谦和,与其说是受教,不如说是在和一位老友聊天。也许我也想做这样的人,功力深厚,平易近人
一些建议
无论是考研、开发、或者其他行业,如果你认定了,就朝着这个目标不断进发就好,不要觉得太晚了,只要有一个开始,持续投入就一定会有回报。种一棵树最好的时间是十年前,其次是现在
对未来的期许
今天下午在写博客的时候,看到学长发了一张离开福州站的照片,很感慨,对他们来说,没有毕业典礼,也没有毕业照,只有匆匆收拾行囊,奔赴人生下一站
今年突然起来的疫情,打乱了大家原本的计划,让我们慢下节奏重新审视我们所拥有的,也让我们更加珍惜眼前所拥有的。希望疫情快点过去,回到学校,看看那些许久未见的人。珍惜大学的最后一年,珍惜这段人生中最美好的时光
很感谢 happy_tree_friends 的伙伴们,不将就,拼尽全力把团队项目做到好。体杰博客里提到:“我们可能没有再合作的机会。”其实没有关系,一起吃过苦情谊才厚重,不说再见
对于未来,希望自己可以继续脚踏实地地努力,不断向自己的目标进发,加油!