[建议]我对软工有话说(上)
我对软工有话说
经历了一学期的软件工程课程实践,先给个自己在这门课中学到的东西打个分:
- 编码能力:★★★
- 代码质量:★★★★
- 团队管理:★★★★★
- 风险控制:★★★★
- 解决问题的能力:★★★★★
下面也不写总结了,想写的话太多,都融入了团队总结里,但不会对这门课有太多帮助。下面就我而言谈谈感受比较深的几点和建议,希望可以通过自己的努力把这门课改得更好。
1、个人项目的题目设计
个人项目的设计上,建议从一些难解问题里面进行挑选,主要目的是开扩思路与解决问题的能力的培养上,不要是一个简简单单的程序题。我觉得今年的个人项目其实就挺不错的。
这方面最近还在想...
2、团队项目
2.1 新的团队组队模式
我认为,对于一个团队,必不可失的核心人物是两个:项目经理与架构师。如果说项目经理是在过程中探索需求与确立开发方向、进度安排、开会研讨的角色,那么技术顾问在整个团队起步时就应当有团队项目的技术架构设想——包括使用什么技术,学习什么语言,最好可以粗略估算一个功能的实现需要的时长,还能给出一定的引导教程。技术栈的确定有关学习成本,会间接影响项目的进展程度,所以我以为,技术顾问最好是之前有过相关开发经验或者有过丰富的项目实践经验的同学,这样可以大大减少团队因缺失经验而出现停滞的概率。
按照今年我了解到的团队项目来看,我发现有技术顾问或者叫技术骨干的团队,最后都做出了相对较好的产品,没有出现短期或长期停工的不可控情况。
但结合今年的团队情况来看,矛盾点出现在技术骨干在各个团队中比例不一 上。项目经理既有全能的技术,又能管理与协调团队的情况很少,所以一支队伍至少需要一个项目经理与一个技术骨干。为了协调各个队中能够尽可能达到这一点,我认为应当对纯自由组队的制度加以部分限制。至少不应让很多强力选手扎堆聚集在一个项目中,强者扎堆的团队可能做出非常惊艳的产品。愚以为,软工课的初衷是让每个同学——无差别对待地——都完整体验一遍类实际生产环境中的软件开发流程,从而对各个环节的知识有一个结合实践的新认知。强者的聚集是对其他团队资源的剥夺,违背了软工课的初衷——让每个同学都在实践中出真知。一个团队项目如果缺乏带给大家信心的技术骨干,又没有严格监督控制进度的项目经理,到最后大家水一水完成,演示也不认真准备,那么开发与不开发其实没有什么区别。
我有几个想法,但是不太成熟,不知道是否可以对上述情况有所改变:
从个人项目初步评价一个人的能力
从个人项目和结对项目中的个人博客其实可以看出每个同学对一个问题思考的深度、广度与对待软工实践的积极性。个人博客写得认真负责有水平的人,相信也会当好一个项目经理(从今年的情况来看是这样的)。
提前放出项目计划与要求,确定项目经理
将在个人项目中个人博客表现较为突出的8位同学作为种子选手,这8名同学将作为第一轮迭代项目的项目经理。同时,为了给予其他同学机会,保留4个项目经理的位置留给剩下的同学,出4名非种子选手作为项目经理。这12位同学通过黄金点游戏进行优先级排序,在课上选择自选或者给定的项目。
项目策划书与计划安排
这12位项目经理应当在个人项目结束一周后写一个小小的项目策划书,项目策划书不要求篇幅很长(大约500~1000字左右即可),内容包括但不限于:
- 面向的用户群体
- web/APP/其他形式
- 拟定使用的语言/工具/开源项目
- 项目期待的角色构成与需求的相关领域知识
项目策划展示
按照个人的想法,希望可以设计一个类似于现场招募的环节来招募到志同道合的队友。在项目策划结束后,老师将每个小组的项目策划链接放在一个博客中,然后要求其余同学对项目进行简单了解,并写出自己最想去的三个项目组以及自己适应该项目所会的基础技能或者以前的开发经验,写上自己想应聘的身份:UI/Test/Dev/Product等(三张纸,每张纸上写上自己的权重比,三个项目的权重比和应当为100)。在第一节课上课期间,助教按照项目组将意向表区分开,第一节课结束后,将每个项目组的意向表分发给各个项目经理。
现场招募
我个人所设想如下:每个项目经理通过自己手里的成员资料意向表自定一个招募队员的优先级,然后进行现场招募。招募的环节类似于下面的场景:
- 招募分几轮进行,第1轮,先按照黄金点游戏排名的次序,首先1号项目经理进行邀请。
- 每个项目经理1轮可以挑选1名成员,当1轮结束后,按照和上次挑选的次序相反的顺序。比如第2轮,首先应该是12号项目经理进行邀请。
- 某个队员同意加入某个项目组的话,则成为该项目组的一员,并且不能再被其他项目经理邀请。
- 如果被挑选到的队员还未有组,并且在邀请项目组的意向表中,且给出的倾向权重大于30,则不得以任何理由拒绝项目经理的邀请;如果被邀请的队员不在该项目组的意向表中,则可以拒绝该项目经理的邀请,且该项目经理挑选其他成员的机会顺延到本轮最后一个。
- 一个团队最低人数为4人,最高人数为6人。
- 如果一个项目团队最终招募到的人数达不到最低要求,将拆分合并到其他组中。
2.2 团队项目第一周
个人觉得很多团队团队项目的第一周有一点荒废,我觉得只有项目经理在写需求分析等,会让整个团队的学习成本转移到scrum meeting
开始后,这样是不好的。与其这样,不如在第一周在项目经理写其他文档的同时,让其他同学也做点东西。
更合理的项目起步
为了不荒废其他队员的时间,我觉得可以每个队员在第一周起始时接受项目经理关于学习语言/框架/工具等方面的安排,个人参考建议如下:
- 前端通过modao/mockplus/sketch等进行界面原型的设计,并上传到Git/TFS上
- 架构师选定某个框架进行学习,并与项目经理一起设计API文档,并上传到Git/TFS上
- 开发/测试人员通过学习项目经理给定的任务,将自己做过的demo和实际体验的心得写成一篇个人博客。
以上是我的一些初步想法,不成熟的地方还请多多包涵~
之后如果有更好更新的想法会及时更新的!