伴随着愈发红润的骄阳,火热而紧张刺激的五月悄然而至。这一个月以来,曾经让同学们“废寝忘食”的软工课大作业终于告一段落,每周一篇的读书笔记也缓到半月一篇,着实令人长吐一口气。但这一份表面的余裕当然没有看上去这么美好,之所以大作业和读书笔记“放下屠刀”,是因为更具魅力的杀手:团队项目,站上了舞台。在六月考试月到来之前,五月可以说是我们每个小组团队项目的主要开发月,也是真正冲刺的月份,更是考验每一个团队生死存亡的关键战斗月。以下,我将简单记录我本月的心得体会。
总说万事开头难,然后中间难,然后结尾难。这一个月来的团队开发,让我深切地感受到了世事艰难。我们组选择做的是科大的BBS,这一选题在初次组会上力克“校园慈善志愿平台”“校园二手市场”“课程资料交流平台”等不错的方案,毫无疑义地获得了最高票。我们满怀雄心壮志,想将科大曾经辉煌一时、现今版式老旧且操作体验令人咋舌的瀚海星云BBS翻新重修。为此,我们特意做了学生群体调研、相关教师调研等,获得的反馈都相当鼓舞人心,而竞品分析中,BBS独具的官方性、校方与学生互动的可靠性等特性也很有优势,唯一需要操心的工作量和知识量,在我们当初想来也不会太多,毕竟原版BBS摆着,我们只需要将内核和框架拿过来,把老旧的代码更换成现代的html5、css与js,提供顺眼的特效和良好的排版便足够了。因此,当从网络服务中心负责人的信件中得知瀚海星云BBS没有数据库、是纯用C语言和文件系统搭建起来的、极具时代特色且几乎不可升级维护的巧夺天工的无懈可击的令人叹为观止的鬼斧神工之作时,我们相顾无言了。这意味着我们的项目,变为从零开始创造一个瀚海星云。
难归难,我们还是决定做下去。对于一些经验丰富的全栈工程师来说,手撸一个BBS应该算是轻而易举的搬砖工作,但我们的团队里是对前端知识几乎一无所知、对后端架构也不甚了解、只会一些C/C++/Py的萌新选手,上来就搞一个大新闻,压力还是相当之大。经过三月和四月的相关知识学习,我和其他三位前端小伙伴算是对前端的知识有了基本的认识,组长拉起的后端小组成员也都学了数据库、Django等,五月,便是真正与项目正面对决的时刻。
第一道难关是分派任务和设立时间节点。还是经验宝宝的我们没有什么高招,只能靠着初生牛犊不怕虎的气势,设定一些初步时间线、ddl,然后每周分前后端组分别完成各自任务,在每周例会上进行报告和更新工作安排。此前,我自告奋发担任了前端组的组长,需要每周安排我们前端同学的任务,这对于初心者而言实在是一大挑战。为了合理安排任务、配合项目进度,我找舍友咨询了IGEM竞赛队的前端组的工作规划安排,参照结合我们组的项目情况进行任务布置,并收集了一些论坛的源代码,让小组成员阅读和参考,尽量有的放矢、提高效率,而非从零开始举步维艰。这一过程充分锻炼了我的信息搜集整合能力,让我对软件开发的时间安排等方面有了初步认识。
第二道难关是技术难题。敏捷开发说来容易,做起来却是难上加难,我和其他组员在刚刚能看懂源码的时候便投身到较大型网页的开发中,少不了在开发过程中要不断试错、疯狂google。即便有着一些源码的帮助,我们在实现特定功能时还是大费周折、抓耳挠腮,交了不少时间作为“学费”后才恍然大悟。好在知识的积累确实卓有成效,我们经历了初期的摸不着头脑后,逐渐找到了一些套路和方法,完成小任务的速度也越来越快。这一过程让我感受到了学习和运用新知识的困难、挑战,以及一步步攻坚克难的乐趣和信心。
第三道难关是课业压力。尽管软工课网开一面,但其他课程在五月可是马不停蹄。作为课表充实满当的信院、计院学生,整个五月我们有4~6次工作量类似于大作业的实验,还有1~3门期末考,这直接导致我们的开发时间打折扣。在全组同学都有数理方程考试的那一周,我们最终还是只能暂停项目一周、投身到学业中去。于我而言,还有一些课业之外的事务需要完成,比如某些团日活动、某些辩论比赛,时间上的吃紧使得项目推进的计划更加难于设计和实施。这一难关着实让我赔了不少宝贵的休息时间进去,说起来也是颇为无奈,菜的代价在野蛮生长的背景中体现得更加明显。这也让我学会了如何挤压时间、高效工作。
现在,我们的团队项目逐渐稳定地赶上了预定的时间线,再经过一到两周的编写和整合排版、加特效,我们前端组的预期工作就能大致完成,可以与后端进行对接。遗憾的是,时间不等人,在我临近敲完这篇不甚通顺的文章之时,已是举国欢庆的六一儿童节了。考试月意味着团队开发的停滞,但个人的修补和开发在这个月里仍旧能有效执行。整个五月,我努力去实践了敏捷开发(虽然成效不算很好),也尽力做着身为团队管理者之一的工作,同时在各种压力之下抽出时间攻坚克难,得到了很多宝贵的经验、方法和技巧,也逐渐获得了信心和勇气。我相信,我在这个月的所作所为、所思所感,都会成为我受用终生的宝贵财富。