20200910-2 博客作业(第一周)

作业要求参见:https://edu.cnblogs.com/campus/nenu/2020Fall/homework/11183

1.建博客(1分)

在 cnblogs.com (博客园)建账号(1分)。账号地址:https://home.cnblogs.com/u/zhangwenyan/  

2.博客作业(10分)

(1)回想一下你曾经对计算机专业的畅想 

当初你是如何做出选择计算机专业的决定的?
你认为过去接触到的课程是否符合你对计算机专业的期待,为什么?
你觉得计算机是你喜欢的领域吗,它是你擅长的领域吗?

在高考填报志愿期间,按照顺序一共填写了六个意向专业,第一个是数学专业,最后一个是计算机专业,受分数限制最后调剂到了计算机专业。之所以将计算机专业作为一个选择,是因为当时认为计算机是学习的一门工具,可以借助这个工具学到更多知识,掌握更多的实操技能,另外在网上也简单查找了计算机科学与技术专业的相关介绍,产生了一些学习兴趣,因此有考虑这个专业。

过去所学课程超过了我对计算机专业最开始的期待,因为进入大学后,我才发现原来计算机专业涉及的知识很多,从硬件到操作系统到软件到编程...远远不是自己最初的浅显理解,同时这个领域更新发展很快,需要不断地学习掌握新的知识。在学习一段时间后,发现上课所学课程虽锻炼了一定的操作技能、编程技能,但远远不够,课下仍需要加强练习。如果想更深入地了解课程、专业,则需要自己课下自主去学习相关知识。

计算机准确来说是我感兴趣的领域,还没有达到喜欢程度,目前不是擅长的领域。感兴趣是因为这个领域发展前景很好,可以通过学习这个领域的相关知识去解决一些实际问题,并且其它领域的研究和发展也离不开计算机科学与技术这门学科的支撑,它巨大的发展潜力吸引着我想继续深入研究计算机这个领域,也希望未来能有一天能够运用所学去贡献自己的一份小小的力量。之所以没有达到喜欢程度,是因为目前我认为自己没有真正入门,在感兴趣的基础上自主、探索学习的还不够,没有达到喜欢、甚至痴迷的程度。我想这也是计算机不是自己所擅长领域的原因,但是相信在研究生阶段我会通过努力去使自己更加专业。随后我需要去思考方向在哪里,如何做,实践,调整,再实践。

(2)考取研究生,对照前人们走过的路和描述未来发展,现在的你自我感觉你已经具备的专业知识、技能、能力有哪些?离成为一个合格的计算机学生,在专业知识、技能、能力上还差距哪些?

目前我已具备的专业知识:计算机专业基础知识,具备技能:基础编程能力、一定的实践能力,具备能力:一定的新知识学习能力。

离成为一个合格的计算机学生的差距:扎实的计算机专业理论知识、较强的实践技能、快速学习新知识的能力、多种编程语言的熟练掌握、项目开发经验、良好的专业习惯等。

(3)每天都是一个人生选择的十字路口,学术研究、工程项目、社会实践 (?) ,不同的选择有不同的努力方向。对照以上你阅读的前人们的经历,你的选择是什么?在这种选择下,你认为你相比其他同学来说有何优势,有何劣势?针对你的选择,你给自己的本学期的规划是什么?

我目前的选择是学术研究,这也是我读研的目的所在,希望能深入了解这个领域,而不仅仅是入门,之所以选择专硕是期望在学习研究理论的基础上能提升自己的实践能力。

我认为自己相比其他同学来说优势有以下几点:

  • 在完成任务过程中如果遇到问题,不会轻易退缩,会主动想办法去解决问题,比如:查阅资料、请教老师、同学等。
  • 在团队项目中有很强的团队合作意识,以完成任务为第一位,不会计较个人得失。
  • 喜欢总结,并进行一定的思考、加工,最后转化为自己的知识。
  • 始终保持学习的热情。
  • 喜欢与他人交流、探讨。

劣势有以下几点:

  • 未能做到快速学习新事物。
  • 动手实践能力较弱。
  • 编程能力偏弱。  
  • 合理安排时间方面有所欠缺。

本学期的规划:

  • 认真听课,保质保量地完成相应学习任务,并且有所收获。
  • 看专业文献(自主+老师推荐)尤其英文文献,并有相应笔记,掌握一些科研工具。
  • 学习python编程语言,做一些实践练习,做到基本语法掌握的程度。
  • 定期和老师反馈学习情况,经常反思不足并改进。
  • 学习英语(专业),提升口语及听力。
  • 进行学期末总结。

(4)你对这门课的期待是什么?你打算平均每周拿出多少个小时用在这门课上?

对这门课的期待有:

  • 学完课程能有一定的工程师素养。
  • 对教材知识有更深的理解。
  • 通过结对编程提升合作交流能力、实践能力。
  • 完成任务效率有更大的提高。
  • 有自己的收获。

我打算前期平均每周至少拿出12个小时在这门课程上,希望随着学习的深入,后期能不断提高自己的效率,做到短时间内高质量完成学习任务,同时可以有更多的收获。

 3.博客作业(10分)

通读《构建之法》,发布随笔1篇,要求列出5个问题,可以是读后不理解的,或者读后反对的。要有观点、有证据或分析。字数不是直接的考核标准,但是要求长到能把观点表述清楚。

问题1:“单元测试过后,机器状态保持不变。”这个标题和其之后的一段解释内容不匹配。

我看了《构建之法》这本书的第2章内容第26页的这些文字(“单元测试过后,机器状态保持不变。这样就可以不断地运行单元测试,如果单元测试创建了...这样就可以保证单元测试不受以前单元测试实例的干扰。”)

产生这个疑问(“单元测试过后,机器状态保持不变。”这个标题和其之后的一段解释内容不匹配)

根据疑问进行了查阅和分析:

第一,先确定“单元测试过后,机器状态保持不变。”这句话是否正确,因此在百度上搜索“单元测试后的机器状态?”得到的相关结果中有“单元测试过后,机器状态保持不变。”,也有 “单元测试过后,机器状态应该保持不变。”如下图所示:

但是我发现写“单元测试过后,机器状态保持不变。”的文章的标题是:怎样才算是一个好的单元测试?或如何做好的单元测试(UT)?

第二,我看到一篇标题为“Golang 单元测试框架 gocheck 使用介绍”的文章中写道:

“临时文件的使用

采用临时文件方法,满足单元测试要读写文件需求。

对于测试的过程中我们经常要用到前期的大批量的读写文件操作,但是大量的数据文件可能会导致测试完成后服务器状态改变,为了遵循”单元测试过后,机器状态保持不变”的原则,我们需要在单元测试结束后自动清理掉单元测试运行中用到和产生的大量临时文件存储的数据。gocheck 可以创建一个临时目录,在测试结束时自动删除它,省去了手动清理的步骤。

文章链接参见:https://zhuanlan.zhihu.com/p/45570168?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io

第三,结合书中此标题的上下文内容,作者在表达一个内容即好的单元测试的标准,列出了九条标准,其它标准的标题中基本都有这样的词:“应该”、“必须”、“要”。而标题其后的对应内容都是在解释标题的为什么或这样做的效果或不这样做的后果。

所以我得出结论:单独看“单元测试过后,机器状态保持不变。”这句话是错误的,准确讲机器状态可能会改变,也可能会不变。但是作为“怎样才算一个好的单元测试?”的回答的其中一点是可以的。因此,为了避免让读者产生误解、疑惑以及结合作者所想要表达的内容来看,我认为可以将《构建之法》书中26页的标题“单元测试过后,机器状态保持不变。”修改为“单元测试过后,机器状态应该保持不变。”。

问题2:在书中第45页的“初级软件工程师如何成长呢?”这个问题所列的第三点成长“对通用的软件设计思想和软件工程思想的理解”,作者为什么只在其后提出了一系列问题,而没有阐述通用的软件设计思想和软件工程思想?

我看了书中第3章第45页的这些文字 (那么,初级软件工程师如何成长呢?我认为有下面几种成长...行胜于言,这些实际的工作成果,是最重要的评价标准。),产生这个问题 (所列的第三点成长“对通用的软件设计思想和软件工程思想的理解”,作者为什么只在其后提出了一系列问题,而没有阐述通用的软件设计思想和软件工程思想?)。 我猜想只提问题作者是为了引起读者兴趣、思考,但是只提问而没有给出相关的回答,部分读者可能会仅进行思考而不去查找问题相关回答,则读后效果可能不理想,同时因为其他几点成长都有相关的举例介绍(如有对需要积累的软件开发知识、问题领域的知识经验、职业相关技能、实际成果的举例或介绍),所以我认为还是应该阐述一下通用的软件设计思想和软件工程思想。我查阅了资料,得到以下结果:

关于软件工程思想,要想了解清楚需要知道以下几点:

  • 软件工程的本质:不同抽象层次之间的映射与转换。
  • 软件工程所关注的目标
  • 软件开发中的多角色
  • 软件工程=最佳实践
  • 软件工程的四个核心理论概念

文章链接参见:https://wenku.baidu.com/view/e13231a3ef06eff9aef8941ea76e58fafbb045d9.html

软件设计的基本思想是:将软件设计成由相对独立且具有单一功能的模块组成的结构,分为概要设计和详细设计两个阶段。

问题3:接问题2,到底什么是好的软件设计思想和软件工程思想,好的标准是怎样的?

我看了书中第3章第45页的这些文字 (3.对通用的软件设计思想和软件工程思想的理解。...这算有思想么?),产生这个问题 (到底什么是好的软件设计思想和软件工程思想,好的标准是怎样的?)。由此,我进行了思考并查阅了资料,得到以下结果:

关于软件设计,原则有以下几点:

  • 设计对于分析模型应该是可跟踪的:软件的模块可能被映射到多个需求上。 
  • 设计结构应该尽可能的模拟实际问题。
  • 设计应该表现出一致性。 
  • 不要把设计当成编写代码。
  • 在创建设计时就应该能够评估质量。 
  • 评审设计以减少语义性的错误。
  • 设计应该模块化,将软件逻辑地划分为元素或子系统,并包含数据、体系结构、接口和构件的清晰表示。

关于软件工程思想,则找到一篇文章,其中提到他所推崇的软件工程思想是:敏捷开发。

  •  什么是敏捷开发:

敏捷绝非某一种特定的开发方法,它只是一种应对快速变化的需求的一种软件开发能力。敏捷本身只包含了《敏捷软件开发宣言》和《敏捷软件的十二条原则》两份文档。敏捷相信,只要符合这两份文档的开发方法,就能让开发团队拥有应对快速变化需求的能力,这样的开发方法都叫做敏捷开发方法。

  • 最流行的敏捷开发方式是什么:

敏捷开发的方法有很多:ASD、AUP、DSDM、XP、FDD、Kanban、RAD、Scrum。目前国内最流行的应属Scrum。

Scrum本意是指橄榄球运动中的“带球过人”,它可以解决非常复杂的项目,并且能高效并创造性地交付高价值的产品。Scrum包含3个角色、3个工件、5个价值观、5个事件。

相比其他敏捷方法,Scrum既不简单又不复杂。它有完善的指南,可以按照指南,轻易在团队内推广尝试。但想要实践好Scrum,又需要很好的技巧。

问题4:为什么要敏捷?为什么要敏捷开发?

在书中第六章提到了敏捷流程,再次吸引我的注意。在问题3中通过查阅资料我已经了解了什么是敏捷开发,最流行的敏捷开发方式有哪些。但是产生了新的疑问(为什么要敏捷?为什么要敏捷开发?)通过查阅资料,了解到其实没有人喜欢敏捷,但似乎不得不敏捷。就像没有人喜欢工作,但必须工作一样。其实是市场环境所导致,今天的市场向我们提出了三个问题:

  • 如何做出真正满足用户需求的产品?

绝大多数人是无法一次性做出真正满足用户需求的产品。我们无法预测未来,必须通过一次次的测试,去寻找用户需要的产品是什么?想要更快地获得好的产品,必须迅速将产品推向市场,快速试验,避免走弯路。

  • 如何满足不断变化的用户需求?

今天所有的事情都在快速变化,用户的需求也在变化。可能我们正在全力开发的一些功能,当它们上线的时候,用户已经不再需要了。我们只能选择根据需求去变化。

  • 如何同时满足不同层次用户的需求?

过去我们的产品会遵循产品生命周期,早期追求新奇的尝鲜者,中期普通大众,后期落后者。今天,产品的生命周期变化非常地快,我们可能会同时面对尝鲜者、普通大众、落后者,不同的用户类型的需求是不一样的,你如何满足他们?我们必须快速响应。今天的市场向所有的从业者提出了一个要求:拥有应对快速变化的需求的软件开发能力。而敏捷就是赋予团队应对快速变化的需求的软件开发能力的方法,这是敏捷流行的原因。

问题5:我们要怎么做,才能创新?

我看了书中第十六章内容,其中在看到第354页“16.1.8迷思之八:创新者就是冒险家”这部分内容时,产生这个问题(我们要怎么做,才能创新?),我进行了一些思考,创新对我来说,一直比较难,我分析了几点原因:

  • 所在领域理论知识掌握不扎实,缺乏大量实践。
  • 独立、深度思考比较少。
  • 思维受限,眼界较窄。

今后应该争对具体的原因去改变。而关于这节提到“创新人士的关键特点不是喜欢冒险,也不是躲避风险,而是从错误中恢复并继续努力,就像文言文说的“屡败屡战”。”我有自己的观点:我认为创新人士首先要继承已有所研究内容的大量知识,才能将思维提升到另一个高度。其次要找到能突破的方向,方向正确,坚持下去才有结果。

4.博客作业(10分)

(1)很多人有不为大家所知的本事,而这个能力可以超过周围90%的人。比如课堂中教师提到,如果表现得不像高度近视,如何伪装得不像脸盲,能做40个俯卧撑。当然,也可能是篮球、足球、钢琴、ACM、演讲。

请给出你超出朋侪的特殊技能,并告诉我们,你如何通过何种努力、花了多久获得这样的成就。

我认真思考了一遍,目前没有发掘出一些特殊技能。原因是:没有认真寻找自己的一个兴趣爱好并培养、坚持下去。想法虽不少,真正付出实践的却不多。以后应该怎么做:积极寻找自己的兴趣爱好/想要学习的/计划改变的(寻找方法锻炼较强的记忆力、逻辑思维能力;多读书并写笔记)

与你的特殊技术类似的,你还有一棵计算机专业以外的同学不具备的技术树。如果跨专业,请不要借口自己原本是某某专业的,因此基础不好,你是计算机系的研究生。

(2)请给出你当前的技能树与技术偏好,列举目前你已经具备了哪些专业知识和能力。请参照邹欣老师给出的工程师水平要求列表https://www.cnblogs.com/xinz/p/3852177.html,包括不限于这些,逐点给出自己具备的能力,这些能力将帮助你在接下来课程中的小组项目里做出贡献(并得到分数)。请提供具体的数据来辅助证明掌握的技能, 例如“学了 C语言”是不够的,还应提供“交过8次实验作业,最长的代码达到200多行,最难的是多线程那个实验……”。确保技能是具体的且可衡量的,请搜索 SMART Specific Measurable Achievable Realistic Timely 。

目前具备的专业知识和能力:

  • 语言:学过C、C++、Java、HTML等,代码量最长约:200多行。
  • 工具:使用过Eclipse、DEV、Dreamweaver8、code::blocks、visual studio。
  • 理论素养:
    • 数学:学过高等数学、线性代数、离散数学、概率论与数理统计。
    • 专业课:数据结构、计算机组成原理、计算机网络、操作系统、程序设计基础、面向对象程序设计、Java程序设计、算法分析与设计等。通过学习Java程序设计课程,在完成毕业论文系统实现过程中运用了Java语言,工具是MyEclipse。对课本所学知识有了新的理解,深刻体会到学会理论知识和动手实践是两回事,在此过程中有向同学请教相关技术问题。

5.博客作业 (10分)

采访本课程往届同学(含外校和毕业生,以《构建之法》作为教材的。不含刚好你熟悉的一位软件工程专家)。 现代软件工程这门课已经上了好几年了,以前有很多学生做过团队项目(说不定包括本校的学生),请你们找一个以前的团队采访一下:

  • 当时的项目有多少用户,给用户多少价值? 现在还有人用吗?
  • 这个项目能否给我们团队继续开发,源代码/文档还有么?
  • 项目开发有什么经验和教训
  • 对学好软件工程有什么建议

我采访的是上一届的学姐,她们组做的是一个给老年人使用的社交软件,项目当时有二三十个人左右,给用户的价值主要是可以给老年人带来一些方便,现在还有人使用,但是用户量比较少。这个项目可以继续开发,源代码在博客园上可以找到。项目开发的经验和教训是一定要一开始确定好目标人群和使用功能,对于后续的时间安排和任务分配都很重要。学好软件工程的建议:可能一开始写代码会比较难,但是还是要坚持下来,通过这门课收获了很多的知识和技能。

 6.博客作业 (5分)

以下统计精确到一百行。

你目前的代码量是多少?

你认为优秀的和一般的计算机专业学生,(根据你的理想选择以下两问中的一个)为了有资格入职软件公司/互联网公司,需要多少代码量?从事高校教学科研工作呢?

你计划在本课程结束时,完成多少代码量?这些代码量分布在整个学期中,每周应完成多少代码量?

目前我的代码量是200行-300行,我认为优秀的计算机专业学生如果从事高校教学科研工作需要有大约2万+的代码量,普通的计算机专业学生需要大约1万+的代码量。

我计划在本课程结束时完成3千+代码量,这些代码量分布在整个学期中,每周应完成200多行代码量。

7.阅读材料,写心得(10分)

以下两篇博客必读,并务必写一些心得:

(1)你为何要来上课并且认真参与 [http://www.scalerstalk.com/816-attention]

(2)你在大学中体验到了哪种师生关系 [http://www.cnblogs.com/xinz/archive/2011/05/16/2048044.html]

 心得1:看完此篇博客我对自己进行了反思,做的好的一点是大学期间多数课我都有认真听讲,也取得了良好的成绩,但是也有做的不好的地方,比如某一科也在课堂上没有认真听讲,随波逐流,而我给自己找的理由是老师声音太小,课堂纪律不好,影响听课,其实是自己没有自控力,没有聚焦到老师所讲的内容上。专注力是我一直都要提升的,不管做什么事情都需要专注力,这是我今后继续努力的一个方向。此外,不仅上课要认真听讲同时课下还需要梳理一遍,构建自己的框架体系,这样才能转变为自己的知识,才会更加深刻。

心得2:首先回想了一下自己在大学中体验到的师生关系:和老师基本是在课上以及课间进行过短暂的交流,虽然交流不多,但是确实是想要通过老师的一些回答,获得一些帮助,可以解决自己的一些困惑。老师很热情地答疑解惑,给出他的建议。关于这一点我很感谢,感谢老师耐心解答。印象最深刻地是在上课期间老师除了讲授一些课本知识,还会语重心长地和我们说一些道理,需要注意的,需要学习的,希望给学生一些启发。从眼神里可以看出对学生的担心与期待,然而我们当时可能没有几个人能够认真听进去老师的话,还在课堂上嬉嬉闹闹,现在想来是有点可惜。通过读这篇博客,我有一些新的感悟,好的师生关系应该是教练和学员的关系。我们应该尊重和感谢对自己经常批评、严格要求的老师。老师会将自己多年积累的经验传授给我们,让我们少走一些弯路,我们应该虚心听取。另外,学习一定要自己有足够的热情,主动学习(有效)并认真对待老师布置的任务,及时反馈学习情况,和老师积极沟通。

posted @ 2020-09-15 19:04  zwh12  阅读(192)  评论(0编辑  收藏  举报