【软工3】迭代二 心得体会及感想

Popush做完了,思绪万端。

就我个人而言,Popush项目是我这学期投入最多、做得最认真、持续时间最长的大作业。做到后来,感觉已经不是在做大作业,而是做一个产品了。

回想一个月前,迭代一结束。我们的面试网站显得平淡无奇,当时我就觉得,如果只是抱着做完大作业的心态,迭代二估计也就这样了。好在我们并不甘于平庸,想到要做批注、语音、绘图板,最后都顺利实现了。迭代一的成果并不是白费的,在严谨的流程基础上,加入了许多新颖有趣的面试交流功能,使得这个在线面试平台既有其严密逻辑,又不乏技术创新,我们的迭代二给人眼前一亮的感觉。在展示时看到大家对我们的项目表现出了兴趣,即使展示结束,依然有许多同学提出问题,我感到由衷的自豪与欣慰。

 

关于个人工作:

  我在团队中负责前端交互开发,到后期也负责了前端界面设计。此外,关于整个产品设计、面试流程设计、批注设计、产品报告等也由我负责。基本上,和项目开始前我写在博客中的团队角色定位吻合。

 

关于团队:

  在团队中,我是最任性的人,基本上前端要做成什么样子,都是由我说了算。这种“强势”很多时候引起队友的反感,我们经常争执。记得上周末,我还在小组群里发了一大段文字,大概是抱怨大家周末两天什么都没做。实际上,大家也有自己的事,或者去做了其他大作业,而我一个人在写代码,产生了一些负能量。那时,我和团队的关系也是尴尬到极点。不过,我觉得哪个团队是一团和气,那这个团队一定是失败的。一个团队里的每个成员都应该有自己的想法,自己对于产品的理解。但是,分歧出现时,大家应该有足够的胸怀去包容其他人,最终达成和解一条心,团队才能继续前行。

 

前端技术分析:

  在小组的迭代一阶段,我们重用原版popush的Backbone前端框架,在开发过程中,出现了许多难以处理的问题。经过思考,我们发现这些问题的出现来源于原框架在数据模型更新与视图渲染层的耦合度过高。View在实际上既渲染视图,又控制了交互逻辑,这造成了View部分的代码臃肿问题。在迭代二部分,我们尝试将该部分肢解为逻辑与视图渲染两层,从而避免了迭代一出现的诸多问题,编程效率也提高了许多。

 

一些思考:

  迭代一结束后的一节课上,老师提出了“优秀程序员”的概念,说优秀程序员与普通程序员的效率区别。这引起我对于何谓优秀程序员这个问题的思考。为什么我们迭代一开发效率比较低?代码写得不好。这主要责任在前端这边。上文我已经分析了这个问题。更进一步,我想讨论的是,优秀的程序是怎么写出来的?迭代二结束后,我有了一点感悟。好的程序就是抽象、抽象再抽象,只有把要实现的功能先总结成一些步骤、框架,将功能系统化、抽象化,整个逻辑才能体现出来,代码才会显得清晰有条理。如果一个函数写得长了,就要思考,这个函数干的事情是不是太多了?有的事情是否在其他函数中也有类似的处理?这时候就要优化代码,将一部分代码抽取出来,增加复用性。更深一步想,整个架构是否存在耦合度过高的部分?比如发现View层的冗余后,就应该重新将View层中的逻辑控制部分划分出去。经过这次项目,我对写代码有了新的认识。优秀程序员之路,路漫漫其修远兮。

 

课程感言:

  首先,要感谢老师一直对我们的关照。其实老师已经很关注popush,给了我们许多有用的建议。我们最初一直困惑的,就是我们要做的东西,是符合老师的期望,还是做我们自己想做的?最后,我们还是坚持做了自己想做的,也感谢老师大度包容。老师有时push得很紧,我们压力确实比较大。但也经常反思自己的不足,也很会照顾学生的感受,这些令学生感动。

  软工是我这学期收获最大的课程,从这一点来说,软工已经是成功的课程了。给建议的话,我是希望软工能更多地教我怎么写代码,舍弃一些讲课的时间,利用课堂更多地请学长带着写一些代码,课后布置一些短小代码训练,体会何谓”有质量的代码“。

  如果我们能有机会将自己的代码传给下一届学生,我希望在之后的某个时间,比如考完试或寒假有空时,将前端代码再重构一次,将迭代一的代码也重新整理成迭代二的模式。

  最后,为这周课堂展示时拖延了时间,向老师、助教道歉。没能现场展示语音功能,也是我们的遗憾。

  感谢老师、助教们一个学期的辛苦工作!祝老师工作顺利,助教们毕业顺利!

 

疯狂输出小组

邹豪风

2014.12.28

posted @ 2014-12-28 11:33  yoyoplugs  阅读(300)  评论(0编辑  收藏  举报