其实呢,以前本身我这块不存在特别多的直接疑惑,毕竟以前本人有过相当的项目实践经验,对有些事情还是相对了解的。
既然如此,那在这里笔者就简单说下之前的问题在本学期中所面临的一些真实状况。
这块的话,我们团队整体做的还算可以。分工相对明确,大家都有一定的热情和积极性。并没有出现寡头垄断的情况,所以自然也不存在后续的崩盘之类的。
这部分的话,我们团队内各自对这个项目,以及这个项目中自己的得与失,还算是基本拎得清的。总而言之整体上合作愉快。
笔者之前的话,其实在多个技术团队做过事情,基本上没啥问题。
但是,之前的团队不管怎么说,协作者都是有着相当完善的工作经验的。而在软工课程中所面对的这个团队确实一群完完全全的学生。于是在很多地方就存在了思想上的冲突:
这样的矛盾其实很显然,虽然我某种意义上大概能理解为啥很多人会有这样的学生思维(实际上很早以前的我也差不多,只不过经历的比较早而已),但是很多时候为了更长远的利益,却又不能妥协。然而讲道理却又不是什么时候都能行得通的,毕竟视野深度和广度存在明显的代差。
于是在这样的情况下,如何和具有代差的人相处并做好事,就是一个亟待思考的问题了。
正如笔者在前面的博客中所写:
世上只有利益上相互依存的关系,才可能是稳定的关系。
同时,基于上面一点的论述,不难发现技术段位差距较大的人,已经容易存在眼界和视角上的代差。那么在现实的组织架构中,一个高层管理所能看到和察觉到的问题,可就和下层的人相比起来差别大了去了。
所以,在这样情报严重不对等,甚至很多时候连深层的信赖关系都难以达成的情况下,能依赖的唯一纽带就是共同的利益关系。或者也可以说,正是因为很多的下层人员与上层所共同考虑的问题也基本只有利益(996事件中,大部分基层程序猿的发声,基本逻辑都是如此),所以利益也是最靠得住的一种纽带。
那么问题来了,在这样严重不对等且没有信赖关系的情况下,利益共同体该如何达成?是否有一些一般性的思路。
先说说个人目前的一些粗浅认识,思路有两种:
综上,实际上在上下级这一层的关系维系上,是存在这样一个很尴尬的僵局的。所以,这块应该还是需要一系列更成熟的思路和解决方案。还望不吝赐教。
同样的,实际上在合作方之间,也会存在这样的一层问题。
简单来说,人家也有人家的利益。人家不可能因为你胡吹出来的那点所谓的“情怀”、“信仰”,就来和你谈合作,因为人家也是人,也得吃饭,也和你一样没有太多的时间做无意义的事。
和上面一条基本类似,此处不再做详细描述。
首先,需求层面,需要从两个角度来分析:
在需求层面基本明确的情况下,那么设计也就该提上日程了。
设计也分为几个层面:
实现这块,则需要在整体架构设计相对明确的情况下进行。
此外,在实现的过程中,最好伴随着主干功能的实现,一并将单元测试也进行实现。
除此之外,还需要在开发实现的过程中,注意后续的可维护性(实际上个人感觉开发与维护这块本身就是一体的)。
本学期对我而言,实际上只相当于把以前做过得事情再次弄了一遍。唯一一点比较重要的差异,在于这次的团队配置和以前大不一样(前文有说到)。所以能总结的内容其实很有限。
不过实际上,笔者也在思考这个课程的一些得与失。同时,笔者也在这个学期当OO的助教,对有些问题也算是有那么一些略微的认识,在这个部分我就着重说下这方面的问题吧。
首先,这个课程是一个只有一学期的课程。而且一学期时间,涵盖了三个阶段,包含了那么多个环节。
老实说,以我之前做创业项目的实际体验来看,除特殊情况外,一般不会有周期如此之短的事情。
而且这样的短周期还会带来另一个问题,那就是很多要素的重要性的体验严重不足。例如:
实际上,在OO课程哪边,也一样存在类似的问题。OO和软工的一个共同特点,那就是有些内容是很概念化抽象化的,与其说是技术技能倒不如说更像是概念机能。在短周期内想做到这件事,并不容易,甚至一定程度上,软工比OO面临的形势只会更加严峻。
在这样的环境下,如何把握好整个周期,如何把有些该体现的内容充分体现出来,让学生在学习过程中把这些内容落到实处而不是流于形式,则是需要课程组好好考虑的问题。
如题,很多的指导还是偏向了理论,和实际操作的结合有一定的错位。这就导致一些组或者个人,到了一定阶段会开始陷入很大的迷茫,而且还没有办法通过理论课的讲解来进行补足。
其实,这件事说来并不能全怪这门课程。学生在学习这门课程之前,实际上一些前置知识还是比较匮乏的。比如一些考虑问题的基本方式,以及一些架构布置方面的基本功(这块2016级及以上会表现的比较明显,因为OO这块的整体学习质量不够好;相比之下2017级,也就是明年开始,因为今年OO大规模课改,同学们的这块能力会有明显的好转)。于是实际上,我们的指导需要分为几个阶段:
personal development
to team-working
programming
to coding
, and then to developing
and producting
doing homework
to exploring
and creating
其实OO也有类似的一些过程:
今年所采用的模式,是两部分交织着进行。在第二单元多线程结束后基本完成起步阶段的教学,但是正轨部分实际上第一单元就开始了。保证学生做到不至于营养不良,也不至于营养过剩,饭一口一口吃,事情一点一点做。到了起步阶段完全结束的时候,一多半的同学已经具备了完整的架构思维,剩下的就是不断优化追求卓越了。
所以建议课程组也在这个问题上多下一些功夫,要切实了解起来学生的真实情况。
如题,实际上助教在同学这边的存在感实在是很低(相比于机组和OO课程而言),一整个学期除了通知消息之外基本见不到助教出没,甚至通知消息也都是高阶助教一个人在不断的通知。
助教,其实是个很微妙的职业。说微妙,其实原因如下:
助教的这一特点其实很微妙,老师、学生,都整体上缺乏某一方的资源,而助教却完全有这种可能打破资源时空分布不均的困局(甚至部分比较厉害的助教自己一个人就能完整的掌握两头的情报)。
于是,个人认为,助教的一个职责就是——充当起师生情报传递的桥梁。
如果追求更深层次的话,那就是——基于双边的情报,优化双边资源配置,一达到一个全局更优的解。
所以,其实建议助教们看到这句话也能好好思考一下。我相信助教们也都应该是有志于改进整个课程的人,那就好好思考思考我说的这些,想想看自己到底该做点什么,而不是只是一味充当苦力,或者干脆只是一个传话筒子(而且搞不好还是单向的)。