今年3月份,我收到周老师的委托,希望我可以在校内帮沈阳航空航天大学找一名软工的助教。同为航空航天大学,本来以为小班内体验过软工课程的同学会很积极地响应,最后大家的反响寥寥无几。思考再三后,虽然这学期事情蛮多,但是当软工助教的机会不可多得,也能为下学期担任我航软工助教积累经验,于是毛遂自荐,加入了沈航软工教学团队。
刚开始做助教的时候,不知道该从哪里下手。软工助教和计组、操作系统助教的体验确实是不一样的。计组和操作系统只要有足够的专业素养就可以,但是软工助教有着更高的要求:信息抽取的能力,沟通的技巧,兢兢业业负责的态度与随时随地都要有的鸡汤,或许是老鸭汤也不一定。(哈哈哈哈)
每一句评语都应当有适宜的语气,对于认真的同学要有肯定,对于”身体力行反抗教学“的同学要加以规劝,对于抄袭的同学要毫不留情。每一次评分都要有服众的评分准则。每一次排行榜都要有鲜明活泼的图表。
不在其中,不知其味。上学期看范老师为福大做的排行榜,当时并不觉得范老师的工作量多大,直到自己开始作为助教完完整整地体验过一次,才知道范老师每次发布排行榜需要多耐心,也才知道邹老师能够这么多年都坚持为同学们点评是多么不容易。
沈航的软件工程今年是第一次改革,在同学们的感受中,“效果颇为显著”,但还是有“很多需要改进的地方”。一起共事的两位老师(许老师和张老师)对软件工程课也很上心。他们本可以像大多数大学老师:备课讲课,找个助教改作业,考试时改卷子。同样的课时,他们付出的心血要多至少一倍。感谢他们,尤其是张老师作为学院的领导给予的很多“大权”,才让助教放得开评分,让沈航的同学有了这样的福音。
今年的软工助教之旅也是一次心路起伏的过程。个人项目和结对项目后,在沈航众多同学中涌现出了一位表现突出、行动力强的同学,当时我很看好他的潜力。但很可惜,他的个人总结有一点像应付,他带的团队的博客也处于半荒废的状态。我也曾积极联系他,希望他就他们团队的现状写一篇总结教训的博客,最终无果。这个“伤仲永”的故事告诉我们:个人能力突出的同学并不一定适合做团队的项目经理,项目经理更需要一如既往的坚持与勇气。助教也是如此:)
在3、4班同学的个人总结中看到了不少对我的评价,感谢这些同学在写个人总结的时候还愿意花些笔墨来写写这个素未谋面的刘助教。正面评价里基本上都是”认真、负责的工作态度“ “图表结合的排行榜很有说服力”。虽然没有同学直接给出负面评价,但能从大家的语气里看出我的工作中的确存在的一些不足:1、助教与老师之间的沟通交流较少,无法准确获知老师作业的意思;2、评分细则给出的时间太晚,导致大家想挽救的时候已经“来不及了”。3、助教与学生之间交流不足,不能知道大家的真实情况与基本需求。谢谢这些同学给我提出的意见,我会反思自身的不足,争取在下学期做得更好。
很高兴能在邹老师、周老师的帮助下,在与郑蕊同学的合作中顺利地将沈航的助教工作进行到了最后。最后,希望我给沈航的同学灌过的鸡汤,变成一股股涓流汇入每个人的心底,灌溉他们心底的苗。终有一天,它们将长大,成长为蓬勃的巨树。
邹老师和范老师说的都很对,光有鸡汤是不够的,得有一些实打实的数据来鼓励自己和反思不足。
本学期在担任助教期间,除去本篇助教总结外,一共发布了11篇教学有关的博客,列表如下:
从发布时间来看,除8-12周期间因各种琐事缘故停滞两周外,基本保持了两周或一周一迭代的发榜速度。
因为是"半路出家",所以沈航的前几次作业我没有进行评价与给分,我点评的博客作业有以下几次:
从点评时间和点评反馈来看,本学期我存在问题有几点:
我和郑蕊同学商量后决定我负责许老师班的同学,一共有 69名同学。
非常遗憾的是,因为和两位老师沟通不及时,单词统计和扩展四则运算很多同学只在Coding上提交了代码,并没有相关的博客说明他们的项目内容,所以最后这两次的博客变成了一个作业的加分项。
按照博客园的统计数据,本学期我给沈航同学点评的评语一共约390条,总字数约18600字,平均每条点评约 47 字左右。
上面是助教工作的任务量,下面则是一些隐性的时间统计数据。恰好我之前为了每周查看自己的有效工作状态时长,安装了ManicTime这个软件。在软件的帮助下,我统计了本学期花在沈航的助教工作上的时间,以下是我在ManicTime上从2016年4月份到2016年7月份工作量的统计结果:
不论是团队还是个人,排行榜对于一些有上进心的同学的激励作用还是很大的。所以在担任沈航助教的这段日子里,我很重视排行榜图本身的质量。为了生成直观、舒适的排行榜,花了一些时间在调整排行榜的样式上,最典型的样例莫过于下面这篇博客中展示的:
http://www.cnblogs.com/SivilTaram/p/5424813.html
除此之外,还有一些比较常见的需求,相信其他学校的老师们可能也会遇到:
Sub TeamPointsToPerson(InrangeText As String)
ActiveWorkbook.Worksheets(1).Select
Dim i As Integer
Dim j As Integer
Dim k As Integer
'序号都是有效数据开始的行数 与 结束的行数
For i = 4 To 72
For j = 2 To 70
'worksheets(1)是个人统计成绩,C列是名字,worksheets(3)是团队成绩,A列是团队名,B列是团队对应的队员姓名
If ActiveWorkbook.Worksheets(1).Range("C" & i).Text = ActiveWorkbook.Worksheets(3).Range("B" & j).Text Then
For k = 2 To 70
If ActiveWorkbook.Worksheets(1).Range("B" & i).Text = Range("A" & k).Text Then
'这里将团队分数所在的特定单元格作为公式让个人分数的某个单元格进行引用,从而保持个人分数这里拿到的永远是他自己最新的团队总分
Cells(k, Rows().Find(InrangeText).Column).Formula = "=团队分配!C" & j
End If
Next k
End If
Next j
Next i
End Sub
即使有以上的宏代码支持,但操作excel本身,导出成markdown格式等仍然有许多不便。所以我决定将在未来几周内开发一个windows平台上的应用,一劳永逸地解决老师和助教们因为工具不好用而浪费时间的问题:)
本学期看同学们的博客的有效时长为 42.28 h,即在担任助教期间,在看博客园的时间长度为42.28小时。
同学们的理想博客总数为 12*7(团队博客) + 69*5(个人+结对博客)= 429 篇博客。
下面是抄袭和未交博客统计
项目 |
抄袭 |
未交 |
---|---|---|
单元测试 |
3 |
10 |
阅读源代码 |
2 |
12 |
结对博客 |
0 |
2 |
个人总结 |
5 |
15 |
团队四 |
0 |
1 |
团队六 |
1 |
2 |
团队七 |
1 |
3 |
去掉抄袭,未交博客,实际博客总数为 372 篇博客,沈航软工的博客作业完成度为86.7%。
对助教的工作来说,平均每篇博客的阅读时间为 6.819 分钟。除去走神与被干扰等问题,大约一篇博客的总阅读时间为 9分钟,有效阅读时间为 6分钟,评价时间为 3分钟。
一本正经地分析一下与同学们的沟通情况:
与老师的沟通情况:几乎没有。
从本类统计数据来看:
这学期做的好的地方在于与同学们还算是积极互动(虽然反响不是特别多),也在群里点名批评了一些团队和同学以警醒他们,在沈航的软工群内维持了一个比较好的氛围。
做的差的地方在于没有与老师沟通,没有与老师协商统一好项目要求。下学期一定要多与罗老师沟通,不能让学生因为助教与老师沟通不畅而变得迷茫。
我在阅读各位同学的总结的过程中,发现了一些有价值的总结和反馈意见,下面分门别类地列出来,希望不止是沈航,其他学校也可以作为参考,共同进步。
不少同学都提到了希望将课程开设在本科三年级上学期,因为他们这个学期面临着考研、实习、英语考试等众多关乎前程的事情,很希望能在软工中学习到更多,所以希望能调整时间以获得更好的课程效果。以下是部分同学的原建议反馈:
还是那句话,开课时间,大三下学期有些晚,考研的考研,考公务员的考公务员。这门课开在大三下学期感觉很麻烦。其次,一个学期之内接触的软件太多,感觉都很重要却来的太突然,其实可以从大一就开始给学生教学使用。我们大一下学期大二上学期全是基础课,专业课的学习隔了一年,接触的新的软件,新的平台。最后其实博客园也可以从大一开始给大家介绍。这样多好。
我的建议就是把软件工程不要放在大三下学期(因为这是实习季,考研季,我们真的没有那么多时间去研究软件),最好的是放在大三上学期,用一年的时间去认认真真、切实深入地做一个项目。这样的话就完美了。只有在时间充分的前提下,才会有高质量的程序。再一个我认为作业的难度也应该按照梯度布置,逐渐加大难度,而不是一蹴而就,会打击学生的信心。
我建议把软件工程课放在大二下或者是大三上来学习,这样一门实践性很强的课程需要花费大量的时间,在大二或大三上学期我们可以专注地锻炼编程能力。而大三下学期,同学们中有很多人决定了考研,这样在时间分配上就会有一定的困难,毕竟人的精力有限。
不少同学都提到了:相比实践的内容,觉得课堂理论内容比较少。可能是因为第一次改革,老师们的讲课风格还偏向传统形式?
也有不少同学提到希望将课堂增加更多的互动性,不要只是老师讲,可以调动同学们的积极性,就个人/结对/团队项目之间进行充分的学生之间的交流。以下是同学们的原反馈建议:
我认为这门课程在上课过程中虐显枯燥,主要表现上课玩手机,兴趣都不高。可能老师的讲法太过单调,适当丰富下教学模式也是好的建议,在经典案例的剖析上也不够深刻。
我认为课堂内容可以更加精炼一些,有些内容是不必要去讲的,应该更多的讲一些实用性强的内容。
至于建议,我感觉这学期虽然学到了很多,但是几乎全是在课下自学的,课堂上只是听老师讲讲PPT,效果很不好,这样就相当于把整个课堂时间给浪费了。我建议以后教学先让同学们在前两周时间内把教材通读,对软件工程有一个大致的了解之后,按照现在的方式发布作业,写博客,交代码,最好把上课时间改为团队交流时间,毕竟因为课程安排问题,很多团队并没有太多时间坐下来交流,而透彻的交流恰恰是一个成功的项目团队必不可少的要素。
希望课堂上的时间能够充分利用起来,增加一些必要的理论知识,我们很大一部分同学在上完课后都很茫然,不知道做什么,更不知道该怎么做,如果全都是“做中学”的方式,可能会适得其反。
老师讲课时缺少例子,太抽象,不好理解。(助教的话:构建之法里都是例子,不知道是老师们上课时忽略了还是这位同学没好好听课?)
希望老师们能够在课堂多讲些他们的项目经历,增长我们的项目知识。
建议增加课堂的互动性,特别是在团队作业进行的课时中,老师可以考虑围绕学生具体的团队项目来进行讲解;让在某方面完成的比较出色的团队上台讲解经验。
不少同学觉得结对编程跟一个"不负责任"且"不熟悉"的人在一起结对就变成了"个人项目"。所以同学们希望可以结对编程实施自由组队,让"志同道合"的人在一起结对。
同时也有同学希望增加结对编程的次数以多体验几次与不同人结对的乐趣,更好地锻炼协作的能力。
以下为同学的原反馈建议:
希望结对编程并不是完全随机,老师可以根据每个人的性格特点来分配。
结队编程和团队编程可以多一些,这样不仅可以提高自身的编程的能力还能提高团队协作能力和其他方面的能力,对以后的发展也会更好。
我知道结对的好处,但是并没有严格进行,因为平时学习不到位编程能力不强所以帮不上什么忙,都是队友的功劳。
在今年的团队项目的评分环节中,我和郑蕊同学只能依据大家在Coding里的源代码和团队展示博客来了解大家的团队项目。如果能学习福州大学有一个项目展示以及小组互评的环节,对团队项目的质量把握会更准确一些。同时希望团队展示的博客写的细化一点,现在这样要求太抽象,同学们自由发挥的余地太多。希望老师可以细化成几个方面去写,可以参考罗杰老师的展示要求。
以上是部分建议,之后还会继续补充。如果大家有什么更好的意见,也欢迎在本博客下留言,来者不拒:)。