这个是我CS2101 reflection 的题目,
可是内容不是我想要写的内容。
(因为问题限制)
我个人蛮喜欢这个名字。(当然!自己想的嘛!哈哈哈)
TaskPad,
是我和朋友 Taining, Lynnette 一起亲手制作的project.
它是一个协助你安排好自己的时间的 software... :)
你可以 download
TaskPad.
这是
user guide 。
这是我队友 Lynnette制作的 promotional video。
这是我自己制作的 Demo Video,欢迎大家 comment!哈哈。
题目说 The rise of TaskPad,
不是说现在 TaskPad 已经很出名了,
而是说现在至少它已经成形了,可以见世面了。
而The Software Perfectionist 呢,就是我对自己的评语。
~~~~~
2014 年初,
我带着期待又惶恐的心情进入了 CS2101 的课室。
期待那个 group project,却也害怕和不好的组员同组。
结果就这样不小心分了组,和 Lynnette,Taining 一组……
组队后,我们并没有马上制作TaskPad,
而是先制作OP1……
右起:1)Taining , 2) Lynnette, 3)我
这张照片是我们第一次一起合作呈现 OP1,
那时候和他们都不熟,就慌忙地制作了 OP1 ppt,
一起呈现了。
效果当然没有很好,因为大家都是新手,
但是还算ok。 :)
~~~~~
在我们摸透了Tortoise Hg (一个记忆性 program)以后,
我们终于开始制作TaskPad了!
我们花了一段时间制作除了我们的V0.1 产品。
我制作了 GUI,(虽然现在才察觉那个设计没有很好,唉……新手)
Lynnette制作了InputProcessor,
而Taining制作了Storage 和 Executor。
**GUI 就是你看到的TaskPad外形,InputProcessor是负责解析你输入的资料,Executor 负责执行你给TaskPad的任务,而Storage则负责记忆你的所有资料。
这里不详谈那些制作地方法,怕闷着大家啊! :X
~~~~~
这时我们仍然不是很熟,
因为我们各自做自己的工作,
感觉没有多大的交集。
在 V0.1 以后我开始帮 Lynnette做 Flexi了,
因为我的 GUI 工作大体上已经完成。
于是开始和她有比较多的交集。
~~~~~~
我们当然没有把全部时间都投入 TaskPad:
Taining 有不断忙自己 module 的时候……
Lynnette 有忙 BumbleBee 的时候……
我也有在忙Teammates 的时候 (GSOC申请)。
我们互相迁就,互相包容,所以现在大家的感情还是好好的。
~~~~~
我和 Lynnette原本想要很快速地把flexible-commands 解决,
也许是自己太过完美主义了吧。
我觉得 Natty 有很大的限制,而自己写就会突破这些限制,
所以我告诉 Lynnette,我们一起做吧!
我们投入了3~4个星期,就只是为了做这个Flexible commands。
翻看我们两人合在一起的 code:16000 行啊!
开心的是,我说要自己做的时候,Lynnette并没有阻止我,
Taining 也没有不让我做。
Lynnette还和我一起投入了一大堆心血……
说真的,我很幸运,遇见了这样好的队友。
**要做好一个 project,队友真的很重要。如果你遇见了很好的队友,请记得感谢他们。
~~~~~~
于是我们好不容易地把这些东西都做完了,
我们开始了我们的第二个presentation:OP2。
我们大可和 OP1 一样,很Formal 地present,
但是那实在太闷了,所以我们就以 Pokemon 为主题呈现了:
目的就是要有一个有趣的presentation。
不知道目标有没有达成,但是至少我们尽力了。 :)
不是很满意那时大家面对Q&A的方式:
太乱了。
也不满意自己没有 check 好 code,
呈现的时候有小 bug 也没发现到。 :O
--> 我把自己说成是 Software Perfectionist 是因为,
我拼命 test,加一点新东西,就是为了确保TaskPad越少 bug~
如果不小心发现了一些明显的bug,不免伤心难过。
(尽管内心知道那是好事)
不能原谅自己的这个错误,
所以我暗地里发誓下一次一定要先准备好 tests 才写 code。
~~~~~~
OP2 结束以后,我们就快速地增加tests 的数量以把错误减到最低。
到最后我们还有了77.2%的code 覆盖率,
也就是说我们 test 了77.2%写了的code。
然后,根据collate tool,我们三人总共写了18000++ 行……(包括 tests)
77.2%可以算很多了。
因此,就算还有一些瑕疵,但至少还可以接受。 :D
~~~~~~
左起:
1)Zeng Yong (我们的 tutor)
2)Lynnette
3)TaskPad
4)Taining
5)我
这张照片是我们最后一堂tutorial 的时候拍的,
那时TaskPad也成形了,只是要test 多一点而已。
必须要特别我们的 tutor,Zeng Yong,
因为他真的帮了我们很多。
我们也每次用稀奇古怪地问题去烦他,
真的很不好意思。 >< 哈哈。
~~~~~~
看着 TaskPad 从 0 到 有,
从小到大,
到最后呈交了,
感觉就像爸爸看着儿子长大,
然后送他去追求自己的理想。
虽然他不是最完美的,
却是你最疼爱的。
这张照片就不标示谁是谁啦。哈哈。
这张照片是在 final demo 过后拍的,
标示着这个project 的结束……
(但不是 TaskPad 的结束,因为我和Lynnette会继续做)
今后大家可能都会分道扬镳,
但是真的很感谢他们,
因为他们真的把他们的工作做得很好!
谢谢他们……谢谢……
~~~~~
当中我最满意的 test case 就是和 Lynnette 一起写的 TestGui,
因为那是非常难写的。
这是Lynnette拍的短片,可以放块速度来看。呵呵。
**短片里的"TaskPad" 是自己跑的。
p/s: 那个音乐很好听。
~~~~~
若是真的想要仔细了解我们到底学了什么,
可以看看我队友 Lynnette 写的
post .
~~~~~
说了 The rise of TaskPad,
还没更仔细地说 The Software Perfectionist 呢!
我花了 n 个时间去 test TaskPad 不在话下,
也不说研究了如何试验 GUI 或 花时间 restructure 那个 component,
我在 implement flexi commands 的时候,
任何我想到的细节,我都去实现他们。
有些东西是在真的是太细节了,比如说:
next Sunday, 要怎样转换成 27/04/2014, ?
因为我实在太挑剔了,写到停不了手,
到最后Lynnette还劝我:是时候停了,准备其他 module了。
~~~~~
如果我是 The Software Perfectionist,
那 Taining 和 Lynnette是什么呢?
我称 Taining 为:The Team Lead
而
Lynnette 是: The Designer。
~~~~~
The Team Lead -- Taining
Taining 是我们一开始所遴选出来的组长,
所以我把她称为 The Team Lead。
我们都很自发都工作,所以 Taining 也不用担心我们,
也没什么催促我们,只是偶尔会提醒我们:
我们的进度应该要到哪里。
Taining 是一个很忙碌的人,
每天都会看到她在忙自己module 的东西,
可是她也愿意花相当多的时间来完成自己的部分。
呵呵。真的很感谢她。
她每次都会提醒大家我们应该往哪个方向走,
要如何做才能满足我们的目标用户的要求,
什么东西应该被 implement,
什么东西可以暂时不 implement。
TaskPad 的 table view,
就是 Taining 跟我建议的 user friendly GUI。
(原本是zeng yong 的建议,Taining提醒我这个建议)
**我记得我刚把 table view 做出来的时候大家的惊喜:
Lynnette 和 Taining 都说很美。呵呵。
XML,也是Taining 建议的记忆模式。
我们可以都用 txt file 来储存资料,
可是 Taining 建议用 XML 来做得更好。
我们大可以保留一个 undo 和 redo,
但是 Taining 也把 multiple undo 和 redo 最出来了。
**虽然我不是很赞同那个做法,但是必须把这个功劳归于 Taining。 :)
有些时候她不明白我在说什么,会一直问问题来更了解我说的话。
有些时候她的想法和我很不一样,所以我们 “争执”,然后我们一起进步。
我曾经问她,我能不能修改她的 code,
她说可以。
很感谢她信任我,虽然我GUI 的 design 没有很完美。呵呵。
最后,我没有修改过她的 code,
出于尊重,也碍于时间限制。
谢谢你,Taining!
~~~~~
The Designer -- Lynnette
Lynnette 不只是擅长于画画,也擅长于documentation和提供一些创意的 idea。
我把她称为 The Designer 绝对不只是她 design 了 TaskPad的样貌,
她还 design 了所有 documentation 和 presentation 的 框框,
大幅度减低了我们documentation 和 presentation 的难度。
她也不是很得空的人,年头就一直在忙 BumbleBee,
但是她都会把自己的负责的部分做好,
还会要求得更完美。
她是后期和我有更多交集的队友,因为我们一起做 flexible commands。
我们都互相修改对方的 code 使 TaskPad 变得 更好。
一开始认识她从没想过会和她混得那么熟,
只是经过Andrew 的介绍,在 CS2101课室外认识了她。
她给我的第一个印象就是她很静,
大概是因为她在陌生人面前很安静?
结果还阴差阳错地和她同组,
然后又和她一起做flexible commands......
她是我进 NUS 以来第一位找到比较有默契的队友。
很多时候她和我有一样的想法,然后我们一起把它们实现。
感觉真的很不错。
难得有一位有默契的队友啊,要知道要和我有默契是一件蛮困难的事啊。呵呵。
她,总会关注她的队友多于关注project;
她,总会分享自己的东西给我们知道;
她,总是不计较别人怎样讲她,她只会要求自己把事情做得最好。
她,真的像她自我介绍那样:她不会生气的;
她,真的很玩得起,花了好多时间和我一起玩。
她,有时也会对自己失去了信心,需要别人不断鼓励她;
她,有时也会很懒惰,需要别人去提醒她;
她,有时也会很糊涂,需要别人去点醒她。
在我拼命写程式,写到很累的时候,
感谢她:看到她那么努力,我也突然很有冲劲想要继续写下去。
在我努力到忽略其他科的时候,
感谢她:她提醒我,是时候读书了!
在我想要放弃自己想要做的事情来完成 TaskPad的时候,
感谢她:她鼓励我,叫我抽出一点时间给自己做那些事。
在我很紧张 presentation 的时候,
感谢她:她抽出一段时间,陪我练习。
在我为自己的错误自责的时候,
感谢她:她尽量想办法让我感觉比较好过。
在我决定自己写 flexible command 的时候,
感谢她:那么支持我,和我一起写,一起努力。
我觉得我们两个人写的行数加起来应该比任何一组的总行数都多,
因为我们真的花了很多时间和心思在我们的 TaskPad上面。呵呵。
想要继续 TaskPad 的想法是她提出的。
因为我们都花了那么多努力把它产出来了,
我们当然还会继续把它弄得更完美啦!
如果要说这个 project 给到我什么意外收获,
我会说,它让我认识了这样好的一位队友:Lynnette,
一位也总是为别人着想但不为自己着想的好朋友。
谢谢你, Lynnette!
~~~~~~
后记 -- The Original TaskPad developers
希望我们的友谊能长长久久。
此部分是要记录原本的 TaskPad's developer :
Jun Wei, Lynnette, Taining。
未来大家可能不会再合作了,
感谢认识了你们,
感谢你们的付出……
感恩。
最后送大家比较 hot version 的 Lean On Me。
祝大家 安康 + 考试顺利!
谢谢!
法老
20/4/14
5:54 a.m.