2020ASE第一次课程作业—期望与笃信

前言

​ 这篇博客的主题是:期望与笃信。借这一次写期望与笃信博客的机会,也简短地进行一次自我反思与自我剖析,反思一下过去,总结一下现在,展望一下未来。

​ 首先我想谈一下我选高等软件工程这门课的心路历程以及我写这篇博客的心态变化;我本科院校在南开,并不是北航本校升学,所以在我上第一次课之前,我了解高等软件工程这门课的途径是学长学姐和身边同学对这门课的评价。我听到了两种声音:

  • 第一种是:高软必选!!!这是一门能够真正能让自己有质的提升的“硬课”;
  • 第二种就是:这门课只有三个学分,上这门课的时间精力投入不亚于十个学分的课程,高软不值得;

​ 这两种声音在我脑海中交织缠绕,我一时间不知道如何抉择。这让我开始反思我本科期间的经历,修过与高等软件工程这门课相关类似的课程:企业实习、面向对象分析与设计、软件工程、企业应用开发。按理说,我应该对软件工程或者说对工程这个概念有很深的理解才对,但是实际情况并不是,我这方面的基础知识,我对软件工程的理解依旧是一地鸡毛;因为我犯了一个致命的错误,选课完成课程项目永远是以学分为导向、以高分为导向,而真正忽略了在这个过程中应该去掌握理解的地方。所以在研究生阶段,我给自己定下的一个小目标就是,行为决定以自我提升为导向,所以高软值得!

​ 看了一些同学的博客,被同学们坦诚认真的态度所打动。以前的我,对待老师的作业,一般会掩饰自己的真实情况,交一份看起来尽善尽美的作业上去,永远做不到对自己完全坦诚,这样是极其不好的;老师疲于备课,学生疲于应付,二者在相对平静的表象下都无法得到自我价值的真正实现。现在我深刻地转变了我的看法:我首对我自己的发展,自我能力提升负责,其次才是对老师的作业任务负责;同样的,我认为,老师首先应该对学生的发展负责,其次才是对教育体制负责。

​ 可能以上谈的一些与课程内容关系并不大,视野也比较小,仅仅局限与我本身,并没有放眼整个软件工程行业,但是这是我当前最真切的看法,如有不同的看法,也请各位批准指正。

课程期望

对于这个问题,我想拆解成三个小问题来回答。

状态A:我现在怎么样?

本科软件工程专业科班出身,有过网站后端开发、微信小程序全栈开发、移动应用开发相关经历,也修习过软件工程相关课程;但是现在有一个新项目摆在我面前的时候,也许不会有第一次接触的恐惧,但是在面对相关的代码细节、技术要领这些问题上,我和从头开始似乎也并没有质的区别。

所以这里我要问自己个问题,不管是导师还是业界大厂,都十分看重项目经历,那么一次项目经历,带给自己的提升是什么?自己在每次参与到项目中的时候,应该注意什么?

  • 我认为最重要的一点就是团队协作,一个团队以什么模式运行,用什么工具协作,以什么方式沟通,团队整体的知识技术以什么方式更迭,怎样做到成本最小化收益最大化;
  • 其次就是技术积累,只要不是完全相同的项目,接触的时候必然会遇到新的知识,新的技术;一方面互联网产业技术更迭很快,需要我们具有快速学习的能力,另一方面新习得的技术如何内化为我们自己的技能,除了频繁的练习,那我认为有效的一种方式是归纳总结输出,形成自己的技术文档库。
  • 最后但是同样重要的一点是,分析实际情况,抽象为可计算可拆解模型的建模能力也是关键的一点。

以上是我目前视角下能够看到的方面,当然很多问题我现阶段还无法解答;从以上三个方面来评价我之前的项目经历的话,我从之前的项目经历中得到的收获应该是相对很小了。

状态B:今后我想成为什么样?

对照以上分析,在项目能力上我希望能够得到如下发展:

  • 团队协作流畅,不管是作为队长还是队员,都能很好地把控项目节奏,掌握协作工具,高效沟通交流;
  • 技术能力强,技术种类广,学习能力强,迭代周期短,擅长快速学习和归纳总结;
  • 能够抓住实际问题的主要矛盾和次要矛盾,将之抽象建模,并可实现为性能较健壮的系统。

在这门课上我期待收获到什么?

  1. 对软件工程更高维度或者更深层次的认识与理解。之前一直觉得自己就像一个无情的搬砖机器,并没有在项目中注入自己的东西;同时以往关注的点可能只是这块功能是否能够实现,除此之外更多的还要考虑这个健壮性和运行效率,一个鸡肋功能占据极大资源的情况是不可取的。

  2. 重拾从事软工行业的自信。由于个人因素和2020年疫情的影响,我距离上一次项目经历已经隔了很久,自认为自己的代码能力是相对偏弱的,且由于计算机行业的兴起,学习和从事互联网行业的门槛降低,带来的是竞争压力的加剧,如何培养提升自己的核心竞争力,在互联网浪潮中站稳脚跟是亟待解决的问题。

  3. 自我知识体系的重塑。很多内容之前也曾了解过,不过现在也印象不深,更像是一团乱麻,面对问题时,也不能有效地理出头绪,这就需要在这门课学习的同时,对过去的知识结构进行重新的整理与归纳。

  4. 更高的代码能力。不管是搭架子还是实现某个具体功能,我目前来说,是很不熟练的,这次课程的课下练习时间也是一个训练的机会。

    之前一直听过这种说法,代码能力一般分为这么几层:

    • 第一层,起心立志,学习和记忆基础知识;

    • 第二层,识别基本语法,掌握一些通用成熟的固定技巧和常规表达式;

    • 第三层,读懂代码,能看懂代码,能根据需求实现功能。但具体原理不是太清楚,不太清楚的意思是:不知道怎么用好,怎么用不好,存在什么隐患,有哪些亮点。写出的每一句代码,未必有理由,修修改改能得到正确的输出结果或实现相应的功能。有一定的可复制的方法或流程,去完成相似的事情;

    • 第四层,有意识地写代码,能模仿写代码,写出的每一句代码,都有理由,自问自答可以解释上一级别不确定的问题,并形成一家之言;

    • 第五层,无意识地写代码,能明白地写代码,不停的自我否定,自我重建,达到优雅的境界。

    自认为还处于第三层上下,有很大的提升空间。

  5. 更完备的文档能力,这是一个以前忽视的点,没有花气力培养过这方面的能力;逐渐发现文档能力的重要性甚至不亚于代码能力;

  6. 团队合作能力,团队合作经验的积累,团队配合方式的探索。

以上列举次序从个人考虑到团队,与重要性无关。

提的比较抽象,没有将收获目标落实的某一种具体的技术上,但却是离不开各种具体的技术。

我之项目观

在回答取得项目成功的关键因素这个问题前,有必要考虑一下什么样的项目才是好的项目这个问题。

什么样的项目是好的项目或者说是成功的项目?

  • 具有实用价值,可以实现相应功能解决一些问题,或者说研究价值,“有用”,而不是玩具项目
  • 有完备的文档
  • 有完整的贡献管理与维护
  • 甚至有周边项目与盈利生态

那么取得项目成功的关键因素有哪些?

  1. 选题有意义,抽象建模合理
  2. 团队合作顺畅,高效沟通,能把控节奏将项目按进度向前推进
  3. 利其器,根据模型,选择合适的框架和技术进行开发
  4. 集思广益,充分重视代码评审环节,确保提交高质量代码,后续还要对项目进行跟踪维护
  5. 重视文档,从各个过程重视软件文档的撰写,文档也是软件不可或缺的一部分

我的项目计划

项目内容:基于订单的家庭工厂协作系统(需求、设计、实现和测试)

典型的生活日用品制造业往往由一组家庭式工厂协同配合,共同生产和组装,完成最终订单。系统有几个关键功能:下单(接单)、订单分解、订单分配、订单进度追踪、订单完成风险评估、订单完成效果分析等。要求实现基于网页或手机端的系统。场景类似与淘宝网购、美团外卖等。

开发任务:个人负责后端开发

个人计划

由于还在项目前期,暂未涉及到里程碑和工单任务,目前的计划集中在自我知识技能储备提升上:

  • 做好心态建设,确保每周至少10h时间投入,做好随时加班准备
  • 软件工程、UML、设计模式学习巩固
  • python基础语法,django框架的使用
  • 课上认真对待,课下认真开发,互相评审,积极反思

团队计划

  • 积极参与,高频率同步个人与团队间的状态步调
  • 前期分析需求,设计系统,选型出相对合适的框架进行开发
  • 中期开发积极推进进度,和团队成员拆分工单,共同攻克难点
  • 后期积极评审代码,维护代码健壮性与高效性
  • 整个过程中积极完善文档

以上就是我第一次博客的全部内容,可能聊了很多无关的内容,这都是当下的我最真切的想法,希望这门课程结束的时候在回头看,又有新的体会。

posted @ 2020-10-07 18:16  W-_-K  阅读(163)  评论(1编辑  收藏  举报