项目 | 内容 |
---|---|
这个作业属于哪个课程 | 2020春季计算机学院软件工程(罗杰 任健) |
这个作业的要求在哪里 | 团队作业-团队介绍和采访 |
我们在这个课程的目标是 | 学习软件工程的开发知识,培养工程化开发能力 |
这个作业在哪个具体方面帮助我实现目标 | 介绍团队,加深了解,向大家展示我们 |
第一部分 团队介绍
团队成员
郭骏
普通程序员预备一枚。喜欢编程,想要做软件。担任过计组助教,进行过一段时间的网页后端开发。自己没事也喜欢鼓捣一些无聊的小脚本、小程序。
希望在软件工程这门课上能够做出自己未曾实现过的级别的软件,相信团队的力量。
目前掌握技术:C/C++, Java, Python控制台编程,C# Winform开发,Django后端开发,(一定程度上的)Linux服务器维护
想担任的职位:PM、后端开发
李嘉铖
什么都会一点但是什么都不精通,非ddl玩家,喜欢提前把任务做完。
希望在软件工程的项目上可以通过担任测试的岗位,学习其他人的代码风格和编程思想,提高自己的编程能力、设计测试用例的能力、执行自动化测试的能力,提高项目软件的质量。
目前掌握技术:C/C++, Java, Swift, Ruby和基础Rails框架, Python控制台编程
想担任的职位:测试
单彦博
精通C语言,能熟练使用java,python,c++等语言,作为组长组织过无线网络系统项目的编写和集成,对团队工作有一定经验。本学期是我第二次参加团队项目,希望能有更多收获。
目前掌握技术:C, C++, Java, Python, Ruby on Rails.
想担任的职位:开发,测试,PM
胡彬彬
能够熟练使用C,C++,python,java等语言,曾做过数据库课设,对于MySQL有一定的了解,自己也比较喜欢计算机图形学相关知识。在这次想进行前后端开发。
目前掌握技术:C,C++,Java,Python,MySQL
想担任的职位:前端,后端
张艺璇
个人属于ddl玩家,不过希望且愿意接受push。上学期安卓课上做过一点客户端开发。在这次软工中希望和大家一起做意思的项目,学习团队合作的经验。在这次团队项目中想做前端或者测试的工作。
目前掌握技术:C/C++, Java, python,安卓客户端开发
想担任的职位:前端、测试
杜博玮
C/C++,Java,Python均有所涉及,会用其中一部分内容。写代码时经常上网查函数定义。
我希望在这次软件工程的项目中担任前端或者后端的开发。有了PM和测试人员的存在,在团队中进行开发工作可以使我得到更多的收获。
目前掌握技术:C/C++,Java,Python,MySQL
想担任的职位:前端或后端开发。
乔玺华
会使用C/C++, Java, Python,但都不是十分精通,具备一定的网上搜索能力,有过写简单UI的经验。对于软件测试比较感兴趣。希望和团队里的成员一起合作完成较为综合的软件项目。
想担任的职位:前端,测试,PM
第二部分 团队采访
我们团队有幸采访到了2019年软件工程课上的BuaaRedSun团队,这个团队在去年取得了非常优异的成绩。
接受采访者是16级的张少昂学长。
-
请问你们当时做了一个什么样的项目?
北航社团帮,一个提供给北航社团使用的微信小程序,用来统一管理全部社团的信息,推文,活动,成员等。
实现学生认证从而将用户信息与学校数据挂钩,给社团提供管理功能,给社员提供入社申请功能,实现简单的社团讨论区,实现网页端供社团录入社团的各种信息,实现活动通知功能以及海报生成功能,从而给社团活动的宣传和提醒提供支持。
-
这个项目当时有多少用户,提供了多少价值?
学期结束的时候有67个社团入驻,当时的日活指数大概几百。由于团队和社联有一定的联系,所以当时其实已经有不少社团都开始使用这个小程序了。
这个小程序给很多社团都提供了一定程度上的遍历,也为社联等管理平台提供了方便,毕竟数据统一到了一个平台上。
-
这个项目现在还有人用吗?
由于课程组提供的服务器资源到期,现在这个项目已经凉了。但是究其分析,还是因为团队抓到的需求不是真正的痛点需求,这个项目依然处于可有可无的地位,社联的人也并非那么上进且有钱。
-
这个项目能否给我们团队继续开发?代码和文档还有吗?
这个项目依然可以继续开发。在我的私人GitLab上有这个项目的源代码,且文档基本齐全,还有配套的新人入坑指南,如果有兴趣欢迎继续开发(笑)。
-
通过这个项目,有收获什么经验教训吗?
经验和教训大概有如下几点:
- 一定要有明确的分工和决策模式,团队需要一个主心骨。大家聚在一起试图通过集体负责、互相监督等方式在本次开发中并不靠谱。需要有负责任的人站出来挑起大梁,否则就是小组内耗,最终导致许多麻烦。
- 组内奖惩制度一定要靠谱。因为团队内的考核制度完全由团队自己起草,所以如果奖惩制度不靠谱,则会带来灾难性后果。按工作时间分配之类的评价不提倡,这个方法看似合理,其实只会奖懒罚勤。
- 团队内要注意沟通的有效性和及时性。团队开发不能太讲情面,也不能没人情味,不能老是活在自己的世界里,要能够一块高效协作办大事,才能够说明你们的团队是一个靠谱的团队。
- 团队的主心骨一定要有远见,不能是纯粹的“分奴”,只是为了分数做项目的人。
- 要避免团队内部的矛盾,兄弟阋于墙外御其侮,内仗外打万万要不得。
- 做事要脚踏实地,不能只是为了应付差事而做事,要为自己、团队和项目负责。
-
可以举个例子,告诉我们为什么会得到这么丰富的经验吗?
比如说考核制度。去年我们组的考核制度是严格按照“工作时长大头+少量绩效”的模式来进行加分。比如在配环境的时候,有的人一搞一两天,20+小时,而我轻车熟路,半小时完成了(笑)。虽然这个例子有点极端,但是在其他的地方也有类似的不平衡发生。工作时长制度还会导致已经虚报工作时间的情况。虽然这只是一个小半年的课程团队,但是如果这个制度进入商业化,后果是不堪设想的。如果谁填的时间多,谁就分数高,那这个团队吃枣药丸。
另外就是做调研的时候,很多组就是将问卷丢到群里,截图交差就完事了,甚至没有弄清楚目标人群,如何做整合分析,问卷的设计是否合理,都没有很清楚。这样从长远的角度来考虑,对项目没有益处。
-
对学好软件工程有什么建议吗?
首先是脚踏实地,做实事,不要为了分数或者是应付差事去开发软件。
其次是用脑思考用心体会,认清软件的定位和团队的能力,尽力做到最好。
-
对团队的分工有什么看法吗?
分工的基本原则是层次分明,权责分明,计划清晰。具体分工可能要看你们团队的人员能力与性格,要具体事情具体分析。
开发、测试、PM这种分配方式不用太死板。开发和测试不一定严格分家,PM也不一定游离于技术开发之外。测试其实我建议不要单独抽调人员专职进行,在课程小项目里面这样弄不划算,且很容易造成摸鱼和组内矛盾。我个人建议,后端兼任“其他”部分的测试,前端兼任后端的测试,PM和全组兼任前端的测试。
我觉得一个团队需要一个真正有头脑有目标最好再有点信仰和强烈欲望的主心骨,一两个有能力有头脑善于合作与协调的副主心骨,和若干脚踏实地服从命令技术尚可的螺丝钉。
-
刚才说到分工要看团队成员的能力与性格,你们在一开始就对团队成员知根知底吗?
一开始大多数人都还算是知根知底,我们组没有弱手,最不济的也干的动活。我们组在开始的时候当时只有我和另一个学长,后续扩人很严格,要么得有高成绩要么得有说得过去的经验,宁缺毋滥。不过这种招人方式不可能在每个组都实行,如果不了解的话,就尽快熟络起来,然后在工作中熟悉成员。
采访耗费时间:3小时