前言:咳咳,一个多月了,最近忙这忙那,都把这个故事给落下了,昨晚刚回到家,白天得干活,晚上赶紧把这个故事写完,以此纪念自己的软工。
说明:故事中的人物均是化名,故事情节经过些许加工,故事情节并没有针对任何人,仅以此纪念自己的成长。
回顾上一章:详情请猛戳
第四章:Alpha冲刺
Alpha阶段的冲刺就这么的来了,似乎来得有点晚,因为你已经接近一个月没有敲过代码了。这个月来,懂哥一直要求你们写文档,学工具。其实,这些都是编程前的准备,但你们确实还没领悟到它们的重要性。
冲刺的阶段碰上了你们的电工实习,懂哥说这段时间不用上课,正好可以拿来敲代码。
但第一天的电工实习,你们发现,似乎时间不够,白天一整天都要在实验室焊字焊表,敲代码的时间就只剩下晚上了。在你们第一次的会议上(懂哥要求你们在Alpha冲刺阶段必须要有十次的会议记录),瓜哥为你们其他三人都分配了任务,你负责界面的编写,而BOSS继续学生服务器的知识,元哥负责一些工具的编写。瓜哥表示他不参与编程,他专心做PM。
一开始都是处于各种探索的状态,不管是任务的分配,还是敲码的分工,以及编码规范等。这些任务都是由瓜哥来负责,并且瓜哥还特意花了一晚上的时间给你们讲解编码规范的各种要求。虽然在日后你们并不是次次按照文档的要求,毕竟你们各自的风格习惯一时改不过来。
你的第一次任务就是编写一些基本界面,有标题栏,有列表等。虽然是第一次接触安卓,你照着教程书上的代码,自己做些修改,勉强算是完成了任务。但花费的时间其实比瓜哥给你预定的时间还长,但你觉得还行,毕竟还是在当天就完成了,虽然为此熬夜到了半夜一二点。
第一天过了,瓜哥审核了你们提交的代码,然后合并到仓库中。瓜哥找到你,叫你可以先写个基类的界面,把所有界面的一些共有属性提取出来。你一听,这个好,可以这么做。然后在自己琢磨时才发现,其实你对Java的继承,多态并不是很了解,而且你似乎没办法找出各个界面的共有属性,你突然觉得好烦躁。这一天的时间就要这么的浪费掉了,一点进展都没有。
无奈之下,你只能出下下策。你跟瓜哥表示,你找不出有多少共有的属性可以提取出来的。而且,一旦界面是继承基类的话,就没办法再实现自己的界面布局了,其实是你没搞懂安卓的界面机制。但也没时间留给你慢慢去推敲了,所以只能在以后碰到共有的属性时复制粘贴了,这是个很低级但却能解决的办法。
就这样,你们小组的项目在一点点的进展着,期间你们又开了几次会议。其实,你之前并没有这么正式的开发软件的经验,以前的实践课虽然也有组队,但都是各做各的,有的同学是抱大腿的,大家也都心知肚明,能带就带。开会这种事,也就是QQ上说两句而已。因此,在第一次开会中,你看见瓜哥那么重视,你觉得似乎没这种必要。
但瓜哥仍旧一直这么严肃下去,在之后的几次开会中,瓜哥次次要求围成一个圈,不能坐着,不能嘻哈。看见瓜哥那么重视会议,你也渐渐的端正了态度,也重视起了会议来。在会议上都是汇报自己的进展,然后说一下自己遇到了什么困难,最后再讨论一些解决方案。
一个礼拜的时间,你负责的界面却还没有全部完成,懂哥给的时间是两个礼拜。只剩下一个礼拜,既要完成界面,又要完成各种逻辑的书写,你突然觉得时间来不及了。而且,这并不是你们这一组的状况,似乎有很多小组都进展缓慢,很多人在群里抱怨说任务量太大了,白天要焊字,晚上敲代码,已经连续一个礼拜在熬夜了。
最后,懂哥表示,截止时间可以延后一个星期。这确实是一个令人兴奋的消息。
瓜哥为了能更好的安排进展,叫你们把各自每天能挤出多少时间来敲代码都自己先算一下,然后汇报给他。然后,瓜哥根据你们各自的安排,给你们安排了一个礼拜的工作量。
这样看下来,进展似乎就能保证了。而且,每个人也具体到每天要做什么了,但其实,就像你在几个月后读人月神话中看到的一句话一样,“我们采用的估算技术隐含地假设人和月可以互换,错误地将进度和工作量混淆”
瓜哥给你的安排的每天的任务里,都给出了预计的用时。但真正开始时,总会碰上各种想不通的问题,为了解决自己不断地找资料,这样一来,时间将大大的超出了预计的用时。当实在不知道怎么实现的时候,你烦躁得想吐槽,并不是给你时间,你就能做出结果来。有的问题,实在是无法搞定。
吐槽归吐槽,项目还是要继续做。这条路不行,那就换一条试试。时间超了,今天的任务要来不及了,那就自己熬夜去吧,反正给瓜哥汇报的时间里又没有算上熬夜的时间,自己在预定的时间里完成不了,就只能自己再次挤时间来补充了。
时间一天一天地过,在第一个礼拜里,你白天都用来焊字了,瓜哥还曾表示说没必要花这么多的时间在上面,项目重要。但你觉得这毕竟这门2学分的实践课,老师布置的作业还是好好做吧。但当第一个礼拜末,你含辛茹苦的焊了四五天的字在老师的手中待了不到0.5秒时,你才意识到自己太年轻了。之前还吐槽说学长骗人,这门课根本就不水,白天都要焊字。现在,算是见识到了。
在第二个礼拜的实践里,你花费更多的时间投入到了项目里去了。至于电工实习,花完时间学懂就放一边了。算上第一个礼拜,你总共花费了一个半礼拜将所有界面草草完成。接下去必须进入逻辑的书写了,或者有专业术语叫业务层的逻辑。但由于你们之前并没有对这个项目进行架构设计,这些东西并没有区分得特别开。
甚至你还在界面代码里混杂着对数据库的操作,因此,被瓜哥一顿批评。
会议保持着一定周期开着,进展也一天天的提高。你和元哥一起负责着安卓端的逻辑实现,两个礼拜过去了,一些基层的逻辑也完成了,但也找出了几处BUG,而且有的思路不懂怎么实现,只能暂时假想客户会正确的使用软件,这样程序就不会崩了。
是时候跟服务器端连接上了,在一次的会议上,针对这个问题的实现思路组员出现了分歧。元哥,你还有瓜哥都有各自的实现思路,都觉得对方的并不合理。为此,你们讨论了将近一个小时,但仍然没有谁说服谁,瓜哥不得不终止这场会议。瓜哥说怎么实现,搜集好更多的资料再来继续讨论。
而且,BOSS负责的服务器端进展也很缓慢。后来,为了能按时完成任务,瓜哥表示,他要开始参与进敲代码的工作了。瓜哥说,让团队里编码能力最强的来做PM是个错误的决定,你却觉得这才是正确的决定。或许放到公司里这是错误的,但这只是在学生之间,团队的成员并没有像公司的职员一样,已经具备基础能力,懂得各种开发流程,只剩下一个PM来领导。
相反,团队成员里基本都是零基础,都是第一次接触。这时,要是没有一个能力强的来领导团队,给队员安排好任务,指导学习方向,那么这个项目很可能根本就启动不了。
瓜哥参与编程后,先是完成了一个服务器端的接口,然后让BOSS照着学习,完成剩余的。而安卓端也可以开始着手进行与服务器的交互。之后,瓜哥便参与进了安卓端的任务,就这样项目的进展一下子快了起来。
但参与越多,瓜哥越生气,他表示你跟元哥的代码实在让人看不下去,太多地方需要重构了。为此,瓜哥叫停了你们的工作,他要先对当前的项目代码进行一次大修改,然后大家再继续去完成。
瓜哥是怕到时会出现太多冲突,然后才让你们停下手头工作。你却觉得自己对Github已经足够掌握了,没有听取瓜哥的安排,继续你的开发。结果,你算是体会到了大冲突的滋味了,而且冲突最后也是交由瓜哥进行处理,你才彻底的服了,对于Github的操作你还需要多学习。
就这样,三个多礼拜的Alpah冲刺,你们碰上了各种问题。有过冲突,有过争吵,有过烦躁,甚至有过厌工。最终,算是挺过来了,Alpha版本预计的功能基本上已经实现。懂哥的验收演示上,虽然临时出了各种意想不到的问题,比如没网络,服务器崩了!但最终还是完成了,成绩也不错,这几个礼拜的努力也是值得了。
接下去就是好好休息几天,然后等待懂哥的Beta冲刺了。