个人课程总结
课程计划完成程度
项目 | 开课时的点数 | 目标点数 | 结课点数 |
---|---|---|---|
软件实现 | 3 | 6 | 5 |
软件测试 | 3 | 6 | 4 |
项目管理 | 3 | 6 | 5 |
软件设计 | 3 | 6 | 4 |
团队协作 | 3 | 5 | 5 |
大数据 | 1 | 4 | 3 |
在软件实现方面分别独立、结对、团队地写了约1.5k行代码,尤其在结对和团队中读了大量别人写的代码,在其中遇到过本地可以de出的bug,也遇到必须前后端一同满足条件才会触发的bug。在实现过程中,遇到有要添加新功能的情况,为了保留原功能,为该函数或者类添加flag或mod,在新的mod里添加新功能,不影响原功能。
在软件测试方面,写的测试代码比较少,原因是从最开始没有太重视这个方面,直到最后团队项目的beta阶段才开始注意到。
项目管理方面,我是团队项目alpha,beta阶段的PM,采用敏捷开发的方法管理项目,具体细节,遇到了诸多问题,比如在总体方针上,alpha阶段做的大而不精,在落实计划上,alpha阶段没有考虑到新环境下可能出现的问题,没有提前测试导致项目延期,对此也在博客里进行了总结。在应对紧急情况的过程中,也学到了要预留人手,变更计划和增强沟通渠道,提早意识到紧急情况的可能。
在软件设计方面,接触了比较简单的服务器后端设计、模块化设计和微信前端页面流程设计。
团队协作方面,经历了说服队友与被说服,方式就是列出原因,摆明道理,就事论事。碰到队友产生懈怠的情况,一方面予以体谅,允许暂且休息,另一方面在关键时刻及时沟通,让他们意识到工作对于整体的关键性,保证这部分队友不掉链子,必要时候直接参与到这些队友的工作当中,督促保质保量完成。
在大数据方面,没有在软件工程这门课中实践,而是在日常组里的工作中有用到。对应能力有所提升。
自问自答
在课程开始时提出了5个问题,
问题1:我曾经跟同学合作写过一些代码,当时写了大量注释,但是后来同学却说注释太多,反而影响阅读,怎样的注释才是最合适的呢?
答:从阅读者的角度考虑,尽量写从代码上不能直观看出来的信息,如这段代码的目的等。尽量简洁,不要写大段的分隔符。
问题2:在团队合作中,不直接触及对方的本质和固有属性我承认是一种比较好的做法,但是如果是长期的伙伴关系,如果本质的矛盾不被解决的话,那么岂不是所有工作都停留在表面上?隐患岂不是始终存在?是否需要制度上的约束来长期维持行为层面的正确性?或者尽早客观地让对方意识到触及本质的问题?
答:直接触及人本质的谈话容易变得不就事论事,确实不利于合作。如果必须合作,应该在点出问题的同时尽量委婉表达。毕竟团队必须有一个凝聚力,必须有包容性,最好充分发挥每个人的最优部分。如果每个人都针对他人本质中的最差劲的方面较真的话,难以合作。
问题3:我在编码的过程中感觉这有点不合适,因为编码过1个小时刚好是我码字比较进入状态的时候,反而是整体的架构我不太想管。这时候换成领航员的角色合适吗?还是说这个时间是可以根据自己上下浮动?
答:可以
问题4:第五章 P95 康威规律:一个机构设计出来的系统,它的体系结构注定会沿用这个机构的内部交流模式。这种交流模式是在何种层面上的?系统的体系是树状结构就一定不好吗?我个人的理解是:这种交流模式体现在机构工作单元对应的任务层级上。这样理解正确吗?
答:从实际操作的角度考虑,我的感受是这样的,一个系统的搭建主要由各部分的实现以及拼接产生,其中,各部分的实现代表机构的不同部门的产出,拼接对应着不同部门之间的关系,二者在操作上具有这样的强相关性。为了实现某种拼接模式,部门的关系也必须以类似的拓扑结构设计。反之,固定了部门之间的交流关系也就固定了拼接的模式。我认为最好在部门交流关系设计时尽量考虑到产品内部结构关系。
问题5:软件工程这门课持续时间只有一个学期,即使是敏捷开发,也发布不了几个版本,如何在这门课程中正确地体验敏捷开发?
答:虽然只有一个学期,但是有目的地去按照敏捷开发的原则去实施,设置敏捷开发中的常见问题确实可以正确地学习到敏捷开发。
新的问题
关于这门课:对于像我们这样的对联项目,是否可以“接力式”开发,加一部分写文档的时间,这样能否锻炼部分的代码交接能力(写文档、注释、明确的代码架构等)因为我们没有意识到这个问题,所以在开发过程中,只要是结对的几个人能相互看懂代码、写出来的接口符合组里最开始定下的规定,就行了,没有注意写文档等这些让别的人看懂的问题。
关于事后诸葛亮分析
在已经构建过一个项目之后,再从批判者的眼光去看待项目,这种迭代比较健康。
我有的时候是在做之前想的太多,还未实施就开始自我批判,因此做不下去,我在第一篇软件工程博客中提到的“行动力低下”的部分原因就来自于这里。也有些时候,是好不容易做出来了一个东西,但是中间没有记录,事后懒得总结,导致没有提高,下次做还是老样子。这两种心态都是错误的。
在alpha阶段的事后诸葛亮分析中,仍然存在“不愿意批评之前的工作”的心态,因此暴露出的问题并不够多。这一点在beta阶段的总结中被改正,做到主要挑错。