20200910-2 博客作业
此作业的要求参见[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2101]
1.建博客(1分)
在 cnblogs.com (博客园)建账号(1分)。
关注 杨贵福(0分)。
加入本班 https://edu.cnblogs.com/campus/nenu/2020Fall。
2.博客作业(10分)
参见 [http://www.cnblogs.com/easteast/p/7403491.html ],阅读其中给出的材料及评论,并回答下面几个问题:
(1)回想一下你曾经对计算机专业的畅想
当初你是如何做出选择计算机专业的决定的?
你认为过去接触到的课程是否符合你对计算机专业的期待,为什么?
你觉得计算机是你喜欢的领域吗,它是你擅长的领域吗?
答:选择计算机专业主要是计算机行业已经深入到我们生活的每个领域,它不单是一个学科,它已经和我们的生活息息相关,所以高考填志愿的时候选择的都是与计算机有关的专业。计算机相关专业的课程大体差不多,除了选修专业会有一些差别。刚开始不够了解,所以只能被动接受学校所设置的课程,后来才对这个专业所学的内容有所了解,除此之外,挑选了自己感兴趣的部分和想了解的部分进行学习。我自己本身是喜欢计算机,所以才选择这一专业,我自己有一定的计算机基础,可能不算擅长,但只会更加擅长。
(2)考取研究生,对照前人们走过的路和描述未来发展,现在的你自我感觉你已经具备的专业知识、技能、能力有哪些?
离成为一个合格的计算机学生,在专业知识、技能、能力上还差距哪些?
答:有一定的计算机理论基础,在大三的时候有项目开发经验,但不是实际应用,还有很多功能或逻辑上的不足需要改进。作为计算机研究生,不论是代码能力,还是对于工程项目整体的思考都有待于加强。能力方面还是要多多刷题,才能让自己不断的在进步。
(3)每天都是一个人生选择的十字路口,学术研究、工程项目、社会实践 (?) ,不同的选择有不同的努力方向。
对照以上你阅读的前人们的经历,你的选择是什么?
在这种选择下,你认为你相比其他同学来说有何优势,有何劣势?
针对你的选择,你给自己的本学期的规划是什么?
答:对照以上前人们的经历,我的选择是工程项目,因为这是自己所感兴趣的地方,同时也会进行理论知识的学习,将理论和实践相结合。
选择工程项目,有项目开发的经历,但还有很多知识没有接触到不了解。
在顺利完成学校课程的基础上努力通过英语六级,刷力扣题,不断补充自己的知识量。
(4)你对这门课的期待是什么?
你打算平均每周拿出多少个小时用在这门课上?
答:首先是收获很大,能够快速掌握一些知识,能够熟悉大型项目的开发。我打算平均每周拿出10个小时用在这门课上。
3.博客作业(10分)
通读《构建之法》,发布随笔1篇,要求列出5个问题,可以是读后不理解的,或者读后反对的。要有观点、有证据或分析。字数不是直接的考核标准,但是要求长到能把观点表述清楚。
问题一:在第九章里,都在讲PM要做开发和测试之外的所有事情, 这就证明PM在一个项目中必不可少,PM不光需要会交流、协作,更应该懂得如何做一个软件以及是否能实现。并且书中有把PM比作的划船的舵手,我觉得PM和开发者像是教练和运动员的关系,许多教练都是运动员出身,教练们不是一开始就会教学,而是自己也亲身经历过训练的过程才有了一套自己的训练方法。而现实中会单独招聘一个无实战经验的“项目经理”。我认为可以让一个能力出色的开发者成为PM或者是作为团队的领导,开发者因为经验更多,实战过每个项目,能知道项目是否可以实现。
问题二:在读测试这一章之前,我就带着疑问来读。为什么要单独有小组来测试?开发者不是更了解自己写的程序?测试起来不是更容易简单上手?并且开发者写代码的时候也会运行自己的程序是否按照他的预期输出。在P295中我找到了答案,“测试人员的代码质量特别高,测试人员是最后一道防线”。这就好比专业的事情交给专业的人来做,因为总不能让开发者没有发现的漏洞让用户找到。我的理解是开发者会带着固有的思维,认为自己写的代码对,所以漏洞也会难找一些。
问题三:在13.3.1这一节中提到了Debug版本以及Release版本,书中提到“如果你的目的是尽快让问题显现,用Debug版本。如果你的目的是尽可能测试用户所看到的软件,则用Release版本”。我认为这两点有相违背的地方,让测试用户看到软件也需要找到问题,也不能因此来掩盖问题。
问题四:有一章内容专门讲敏捷开发,是尽可能交付用户一个核心版本,敏捷开发看起来很万能。在P130中,书中提到“敏捷的方法能帮助你更早地知道你是否能如期完成任务,仅此而已”。但是不是也代表着尽快交付部分功能,会产生许多不必要的思考和代码量。或者是各部分功能之间环环相扣,无法简单的进行拆分。这样的情况还是选择花时间尽快交付一个版本吗?
问题五:在第八章需求分析,P157提到“很多时候用户并不知道自己确切的需求”。在这种时候,他们可能因为技术知识方面的不了解而不能发散思维,也不知道自己想要的是什么。是否可以做出东西来让用户判断此产品是否是自己想要的。比如苹果公司,从来都不是用户对于他们有什么期待而做出产品。而是先做出产品,再让用户知道自己想要的是什么。这样做好像跳过了用户需求分析的步骤。但我觉得这样做有一定的风险。
4.博客作业(10分)
(1)很多人有不为大家所知的本事,而这个能力可以超过周围90%的人。比如课堂中教师提到,如果表现得不像高度近视,如何伪装得不像脸盲,能做40个俯卧撑。当然,也可能是篮球、足球、钢琴、ACM、演讲。
请给出你超出朋侪的特殊技能,并告诉我们,你如何通过何种努力、花了多久获得这样的成就。
与你的特殊技术类似的,你还有一棵计算机专业以外的同学不具备的技术树。如果跨专业,请不要借口自己原本是某某专业的,因此基础不好,你是计算机系的研究生。
答:我比较有耐心,哪怕是做简单重复的工作,相比大多数人,我也能坚持的很久。之前喜欢十字绣,但是因为十字绣细分成一些小格子,一块一块比较细小,需要耗费很多时间才能绣出一小块成果。我之前有连续一段时间每天三四个小时绣十字绣,但最终成果也很让人满意。
(2)请给出你当前的技能树与技术偏好,列举目前你已经具备了哪些专业知识和能力。请参照邹欣老师给出的工程师水平要求列表
答:本科期间用java的时间多一些,偏网站后台。了解简单的前端和一部分后端。使用过MVC设计模式。没有做过实际用户项目的经验。
5.博客作业 (10分)
采访本课程往届同学(含外校和毕业生,以《构建之法》作为教材的。不含刚好你熟悉的一位软件工程专家)。 现代软件工程这门课已经上了好几年了,以前有很多学生做过团队项目(说不定包括本校的学生),请你们找一个以前的团队采访一下:
当时的项目有多少用户,给用户多少价值? 现在还有人用吗?
上千多个用户,带来的收益价值大约在五十万左右,还有人在使用。
项目开发有什么经验和教训
项目开发的经验是技术人员一定要做好自己负责的部分。术业有专攻,不要学的太繁杂最好精通一门语言就够了。
项目开发的教训是要做项目前与客户的沟通,客户的需求是最主要的,沟通不好则可能需要花费更多的人力和时间。
这个项目能否给我们团队继续开发,源代码/文档还有么?
源码及文档还有,但不能转让 。
对学好软件工程有什么建议
在多读相关知识的同时也应该注意实际操作,因为最后软件还是要面向客户,基础知识再好拿不出实际的东西,一切为零。
6.博客作业 (5分)
以下统计精确到一百行。
你目前的代码量是多少?
答:3000行左右
你认为优秀的和一般的计算机专业学生,(根据你的理想选择以下两问中的一个)为了有资格入职软件公司/互联网公司,需要多少代码量?从事高校教学科研工作呢?
答:我选择的是入职软件公司/互联网公司,这需要每天写代码保持自己的手感,以至于不会生疏甚至忘记如何使用某个知识点。
可能每天都要有“有效”的代码,一个项目大概需要更多最后可能会达到15000左右。
你计划在本课程结束时,完成多少代码量?这些代码量分布在整个学期中,每周应完成多少代码量?
答:小题目平均30行左右,但是背后却有无数练习时产生的代码,每周300行。本学期结束,大概有5000行代码量。但最重要的还是要吃透代码中的各种逻辑,学习其中的思维以及知识。
7.阅读材料,写心得(10分)
以下两篇博客必读,并务必写一些心得:
(1)你为何要来上课并且认真参与 [http://www.scalerstalk.com/816-attention]
答:没有来这节课之前就听过有同学评价这门课“酸爽”,但还是怀着忐忑的心情来了,果然可学习的东西很多。
认真听课也是我们作为学生的天职,课堂上跟上老师的节奏,梳理思路,从发散到收回。老师的经验有很多,可以把知识打碎了再重组,一点一点将知识讲透。
(2)你在大学中体验到了哪种师生关系 [http://www.cnblogs.com/xinz/archive/2011/05/16/2048044.html]
答:大学中体验的更多像是狱警和犯人的关系,但是我最喜欢的还是健身教练和健身学员的关系,它是完美的师生关系,更像是因材施教,不死板,同学听课听的津津有味,老师也讲的开心。