【做业】指望与笃信
开头一些本身想说的
以前的话,无论怎么说,还算是顺利地本校保研了,并且与本身相性良好的软件工程专业,总体来讲还算是顺利。此时选择了高等软件工程课程,在这刚开始固然不免有些想絮叨絮叨的,还望各位看官老爷们海涵😄。若是对此没有太多兴趣的话,能够直接跳转到下一节。html
其实也没啥,不过就是老调重弹而已,此处是一点我的的过去履历,本文不做赘述,也没太多可说的。简单来讲的话,笔者自认为能够算是有必定的代码和工程经验,对一些问题应该还算是勉勉强强有些理解。java
此外,笔者在本科期间,担任过2019年度的面向对象设计与构造课程的助教组长,作了点微小的贡献:git
- 分不一样层次,调研了原有课程体系的问题表象
- 基于问题表象,抽象了问题内涵,并理顺了相关的逻辑关系,找到了几点根本症结所在
- 基于上述分析,从新设计了课程制度,构建了全新的分布式课程系统,课程内容也必定程度上进行了重构,并最终取得了阶段性成果
- 此后,做为高阶助教指导下届助教的工做与进一步改革,并提供系统技术支持与指导
- 再此后,卸任助教,担任课程组顾问,参与部分课程事务并负责持续提供系统技术支持与指导
关于对这个本科课程的一些思考和说明,能够参考下我知乎上的回答,以及其余的一些博客内容,此处再也不赘述。其实说这些,主要是感受若是是个人话,或许能够从一种不同的视角来看待这门新的软件工程课程。算法
我的的一点碎碎念到此结束,接下来是我的针对课程的一些思考。jvm
我的对课程的理解与指望
目前读了已经提交的几篇博客,能感受到这些同窗们无论怎么说,态度很认真,很值得钦佩。不过也不得不说,确实体现出来了一些实实在在的问题,或者更准确的说,是此类课程都广泛容易存在的实实在在的问题。maven
以前笔者做为助教实际上也广泛发现了相似的状况,并作过一些学生视角层面上的思考。此外,还和老师们有过一些交流了讨论,在此我做以下思考:分布式
- 软件工程课真的没有意义吗?NO!做为过来人,个人感受是,不只有意义,并且意义大了去了。有不少课程上教的理论内容和实践要求,偏偏在实际工做中是相当重要的。举例来讲,面向对象的各类设计要求,看似很无谓,但实际上正是有了这些,大规模团队开发的质量才有可能获得保障。各类文档的撰写,看起来很无聊很累,可是只要项目一大,人数一多,对代码没有充分且规整的记录的话,那么团队协做将基本不可能,软件的后续开发与迭代效率将以肉眼可见的程序急速降低,这对于任何团队和组织而言都是绝对不可接受的。这些事情真正作过实际应用向工做的人应该没有谁不明白的。
- 可是为何这么多学生就是以为这些事很无聊很没意义甚至很扯淡呢?恩,这是个好问题!其实生活中就有相似的场景——有至关一部分的中老年文学做者(固然普通人也大抵相似,只不过文笔不够好不能作到让本身的故事尽人皆知而已),回忆年轻的时候,都会发现本身的长辈某些劝告简直是至理的,但是还有更微妙的一点,那就是这些人广泛表示本身年轻的时候可不懂这些,并且大抵还都独断独行过。其实这个道理相似——由于这些经验显然不是空穴来风,都是经验丰富的实践者们用本身双脚丈量出来的最好的路,但是这些都是创建在丰富实战经验的基础上的,对于缺少经验的学生而言,这些就会很容易变得像是在单纯的灌输和说教,不只起不到应有的效果甚至可能加重反感。
- 那既然这样该怎么作呢?另外一个好问题!私觉得最根本也是最直接的解决方案就是将实践真真正正的引入课程中来。不少时候,光说不练不可能领悟到真正的内容,在计算机这个专业,尤为是软件工程这个方向上更是如此。理论终究仍是为更好的实践而服务的,都是无数前人总结出来的干货。而没有充分的实践经验为基础的话,思想意识上首先就不可能达获得这一层。私觉得这也正是北航六系的一个亮点所在,几乎全部的关键专业课的课程组,都在这一点上达成了高度共识。
- 那应该怎样在课堂这样一个有限的周期内进行实践训练呢?这个问题问到点子上了。其实,很多相似实践类课程之因此效果欠佳,倒并非由于平铺直叙,而是没有处理好无限的工程实践与有限的课程周期的这组矛盾。对于这个问题,比较容易想到的一种方式,就是加大工做量。实际上这毫无疑问是必要的,没有充分的实践经验培养,不少问题的理解根本无从谈起。可是另外一个值得思考的问题在于——真的是越累越好,甚至于向辱而生么?我我的以为实际上并没必要要,最佳的一个状态,是强度保持较高且恰到好处的水平,而且课程自己须要具有充分的引导能力,将学生的付出引向正确的方向,简而言之——好钢用在刀刃上,让师生助教的时间都花在正确且高效的地方。
- 此外,课程层面上还有另外一个值得注意的地方,那就是是否适合直接将产业用技术、方法及其工具链(下文统称产业应用)直接引入课程教学中。这个问题我在以前的面向对象课程中也面对过,曾经使用的JSF是一个不算成熟且有颇多缺陷的实验型工具暂且不论,后续引入的是JML、UML相关工具链,这是都在严格软件工程领域有必定应用的,实际产业应用的推广足以证实其对于产业的价值。可是产业的应用场景和教学的应用场景依然有很大的差异。具体来讲,产业应用重在提升产业开发与协做效率,而且经常有一个基本的前提与假设——使用者是在以提升开发效率为目的进行工做的(相似于no evil原则)。而这个假设对于课程应用来讲,可能会形成致命的后果,由于学生经常并不能作到这一点,偏偏相反不少学生更像是在为了经过某种考核而工做。而产业应用经常由于其需求性质,而不具有对教育与考核相关功能的充分支持,因而就会形成不少钻空子甚至严重破坏教学与考核秩序的状况出现。固然,说这些不是说不该该引入产业应用,只是说不该该直接盲目地,生搬硬套地在课程中引入产业应用。为了解决这一问题有两种基本思路,其一是基于产业应用,自行设计教学考核用应用,这样能够作到量身定制可是对于课程组而言水平要求至关高;而另外一种思路,则是进行充分调研分析后,设计出合理的教学内容与方法,辅助以完善的考核方法与制度,实现公平合理且引导性良好的考核。
以上是本人对课程自己的指望,接下来讲说我本身的。其实我本身的部分很是明确而简单:工具
- 但愿课程能在我本来的一些基础上,进一步强化理解与技能水平
- 此外,但愿此次带团队的经历能给我带来teamwork方面上的提升
大概就是这样。学习
我的对项目的理解
宏观理解——如何作好团队工做
在这里,实际上笔者也认真拜读了以前几位同窗的博客做业,一样的,我以为他态度很认真,很值得钦佩,就这一点而言比我这样十足的懒汉强的不知道到哪里去了。那接下来,我这边也尽量结合过去的经历谈谈本身对项目这件事的宏观理解。测试
让咱们回到这节的标题上来,如何作好一个项目,在宏观层面上我是这样的看的:
- 认清形势。具体来讲,这个团队的牵头者必须对行情有充分的了解,且具有冷静理性的头脑。不可陷入经验主义从而做出不合时宜的判断。
- 具有合适的行动路线。基于上一点的准确认识,而规划出一条比较适合此时此地此些人的行动路线,尤其重要。切忌基于过去或者他人的某些所谓“成功经验”而全盘照搬,由于成功不可复制。
- 合理统筹规划。事实证实,一样的一个班子,一样的一批资源以及相似的所处环境,不一样的规划下实际作出的成果可能天差地别。做为计算机科班出身的人应该会知道一个问题,分布式系统的运行效率很大程度上取决于其内部的调度算法。团队工做也是相似的道理。
- 充分的团队协做。这一点依然很重要,毕竟不管什么时代、去作什么,最关键的都不是几件纸面参数厉害的武器装备,而是使用它们的人。一个团队如果具有强大的凝聚力与行动力,那么在摇摇欲坠之时可屹立不倒,在冲锋号响之时可重拳出击,望风披靡。
简而言之,以上问题,分别解决的是几个问题:
- 咱们是谁,咱们在哪,咱们有什么?
- 咱们该往哪里走,该去作什么?
- 咱们该怎么去作,该让谁去作?
这些看上去像废话同样很简单而又假大空对吧?可是实际上并不那么容易都作到,这是很真切的体会😢。不过若是能作获得这几点,那很 多事情基本上已经算是能够正常运转了,即使偶尔偏离航线也有充足的修正能力。某种意义上,宏观工做的优劣决定了项目成果的下限。
微观理解——如何作好合做开发
在上述的基本面上,想要作好合做开发,依然须要更加微观层面上的一些注意点。此处我谈一些我的的理解。笔者在微观层面上是这样看的:
- 基础要求
- 全体人员的重视度与投入度。这一点毋庸置疑,也能够算是一个团队最最基础的,缺少了这一点团队基本没什么能量可言。
- 团队成员对总体技术栈的了解和把握。具体来讲,就是须要对所需使用的技术栈与工具链等有充分的熟悉和了解,好比对java、git、对plantuml等工具的了解。这也属于很是基础的要求。
- 团队领导者对状况的掌握能力。具体来讲团队领导者须要对眼下的状况(包括成员内部关系状况,技术积累状况,资源积累状况等)有充分的认识和了解,并须要必定程度上具有抽象思惟,将状况进行准确理解和描述。
- 基本要求
- 团队成员的技能水平与熟练度。这一点和上面相似,可是对技能的要求更高一些,须要作到熟练操做并完成任务,并可以造成必定的规范性,且保证质量可靠。
- 团队领导者对状况的分析能力。在充分掌握状况的基础上,还须要作到对状况的分析,找出真正的成功关键,以及真正的失败缘由在哪里,而不是人云亦云,或者头痛医头脚痛医脚。
- 团队领导者对各种资源的调配能力。在充分掌握资源状态的基础上,还须要能作到合理配置资源,作到充分的物尽其用,并作到充分的并行化以提升效率(实际上,大多数的团队协做效率提升,其精髓都在于这并行二字)。
- 进阶要求
- 团队成员对大方向的充分了解与承认。实际上,一流团队拥有共同的信仰,二流团队拥有共同的利益,三流团队拥有共同的敌人,不入流的团队别名乌合之众。一个团队的大多数成员要是能作到很清楚本身究竟在作什么样的一个事业,并对此充分承认,而不是对某个领导者我的崇拜(这样的团队很脆弱)或者纯粹逐利(因利而聚的团队注定因利而散),那这样的团队将拥有史无前例的凝聚力和行动力,且坚如盘石。
- 团队成员之间的相互信任与支持。同上,团队成员之间的充分信任,以及通力协做,能够极大减小团队内耗,提升效率。
- 团队领导者的大方向把握能力。领导者须要对整个环境有充分认识,并基于此做出整个团队将来走向的决策。这是关键中的关键,甚至能够说,哪怕别的全有而这个没有,也八成会走向失败。
以上算是我的的一些简单总结,可能并不全面,还望指正😄。这些方面则是一些具体执行层面上的注意事项了,通常来讲想要作到虽仍需修炼,但并不是高不可攀。作获得这几点,意味着主线工做已经能够正常展开并有力推动了,能作到开足马力向目标前进。某种意义上,微观工做的优劣决定了项目成果的上限。
提早分析——对自选项目的理解
咱们组本次选择的项目是Program knowledge提取
,须要完成的工做有需求、设计、实现与测试。我的感受,这样的项目实际上说难也难,说简单也很是简单,难在一些前置的技术栈须要去充分了解,而且为了获取最佳学习体验,须要作足功课;简单在于在完成上述的准备工做后,接下来就是系统设计与实现,这些都是本人足够熟悉的领域。
实际上对咱们这边来讲,完成任务是稳得,因此我认为更须要关心的是如何让本身得到真正的提升,而完成任务只是手段而不是目的。
勤能补拙——自我拯救补课计划
考虑到笔者仍有较多不成熟的地方,因此笔者以为本身实际上很须要进行一些补课,在此简单列举一下:
- Java部分,笔者虽然有过必定的java开发经验,并熟悉maven等工具的使用,可是依然有必定的知识空白须要填补,以适应复杂的程序分析需求。其中包含:
- jvm底层知识,须要能够基于指令进行必定行为分析的程度
- java语法深层知识,须要达到能够对代码语义进行定量分析的程度
- 相关java工具链的使用,用于支撑语义的定量分析
- 建模相关部分,笔者虽有过感性体会与实际操做经历,可是并未太多深刻研究过详细理论,这部分尤为须要恶补。其中包含:
- UML及其相关工具链的使用与理解
- 在上述基础上对建模这一律念自己的更深度理解
- 团队协做及资源配置能力,这个自没必要说,团队协做的成败与我这个团队leader有着重大关系。这个的话没办法很细致的罗列补课清单,大概只能实践中不断学习吧。
一点随意的总结和大量的胡言乱语
以上的部分算是个人一些思考,感受本身还须要学习的东西仍是太多了。并且,这注定不是一个轻松地过程,每每伴随着破,以及然后的立,人这种生物,思惟永远带有一股子惯性,想打破原有的温馨区并非件容易的事,须要充分的觉悟与执行力。具体来讲,当你随便码代码,码习惯了码爽了,而后有一天正儿八经教你如何像个正经工程师同样的码代码,这时候不少人就开始不肯意了,也不为啥,就是不爱被管这管那,尤为青黄不接又不得不服从的那段时间,并很差受。可是当瓶颈过去了,才会明白,所作的这一切真的都是血赚的,关于这一点,懂的人都清楚。为此,我会拿出个人认真劲,并拿出学习的姿态来面对课程及其做业,由于我相信其意义,更相信本身。
此外,估计后续还会有选了这个课的人看到个人这篇博客。为此我我的比较想提醒一句,若是你真的想要有所收获的话,就请务必摆脱学生思惟,以彻底面向实战的心态进行学习与训练。接下来的话可能会揭有些人的伤疤并引发不适,笔者对此表示遗憾并请玻璃心们主动绕行。首先我看到部分同窗退选,而缘由仅仅只是由于据说课程是硬核的,就马上打了退堂鼓。关于这件事我不想过多揣测他人,我没这个德也没这个能,何况有些人总归是有本身的规划的,对于这样的人咱们固然应该尊重,由于他们为了本身的信仰而去作了一件正确的事,这很是好。但是若是仅仅只是由于畏难就这么撤了,或者没有撤而选择消极应对,那真的有些使人费解。首先,逃避能够解决什么问题?逃避只能让你除了收获无底洞般的空虚和恐惧以外一无所得。而后,请问您真的以为就能够一直这样下去么?还真别说,我在本科阶段遇到过不止一个这样想的人。这些人一个广泛的特色,就是认为现实社会和童话同样美好,其中一部分人以为天下无贼岁月静好,另外一部分人更简单,由于他们根本什么都没去想过,也压根不关心,今朝有酒今朝醉,哪管明天是与非。他们压根不明白,到了那个时候,本身的那点小确幸小尊严,以及引觉得傲了十几二十年的考试分数,在现实面前一分钱都不值,哪怕是最被视为硬通货的文凭,在起到敲门砖做用后也和废纸没有本质区别。现实永远是最简单粗暴且不乏残酷的,没有那些奇异瑰丽的美景,取而代之只有——胜者与败者、王侯与匪寇、生存及毁灭。笔者曾被这些人反驳过“为何课程要这么难?”、“为何要和学生这么过不去?”、“学这些有什么意义?哪有一个用得上的?”、“我辛辛苦苦18年高考到这就是为了来被一门课为难的么?”等种种言论,简直无奇不有。对此,笔者的一个统一回复是——您和我在这掰扯没用,请您直接去找你将来的上司、将来的老板、将来的客户、将来的竞争对手,还有将来来基于各类或利益或其余动机的敌对势力去“友好商谈”一下,看看他们会不会由于大家不知道几年前曾经被叫作学霸会多考几分抑或长得有点帅,就给大家如此“水”,如此“轻松愉快”的环境。然而事实是,他们不只不会放你一马,还会将你如同打猎般击溃后提着你的脑壳壳去领功。到那时候,曾经在学校高洁风雅不可一世的您,充其量不过只是他们碗里多出来的一块排骨而已,吃完肉剃干净骨头就被吐进垃圾桶,遂自仰天长啸曰“世道不公人心不古”、“时运不济怀才不遇”、“内卷之害甚矣”云云,嗤,止增笑耳,早知今日而又何须当初😆。笔者忍不住想起了某位伟大的北大教员,由于他的思想实际上从未过期,过去如此,如今如此,将来也必将如此。

说多了,扯回来,无论怎样,我我的是但愿真刀真枪地再次强化本身的技术实力与技术理解。而且但愿同组的小伙伴们也能彻底以实战的心态面对此次集体协做,而不是只是为了完成课程甚至只是应付苦差事。这样不管对本身,仍是对组员,都是更好的。