作业属于哪个课程 | 课程的链接 |
---|---|
这个作业要求在哪里 | 作业要求的链接 |
我在这个课程的目标是 | 深入理解软件工程的含义和其中运用到的重要思想 |
这个作业在哪个具体方面帮助我实现目标 | 改变以往的学习方式,明晰学习方向 |
个人博客主页 | https://www.cnblogs.com/zxx-xxx/ |
上了这么久的课以来,大概是第一次做到这样的作业,像是记录心情一般,以这样的方式或许可以做到最大程度上没有约束的和大家分享自己对每一个问题的理解。
简单的自我介绍
hello everyone,my name is (这是和室友走在上课路上傻兮兮的对话日常,哈哈哈)一名普通的大三学生
闪光点么,静下心来学习的时候,不管在什么环境下都能自动屏蔽周围专注学习,从小到大,只要想学习了周围的环境声音是不容易影响到我的
初入大学:
对游戏的好奇和对计算机的浅显认识:
对于计算机和游戏的最初认识是来源于我爸,爸爸年轻时十分热衷于玩游戏,小时候爸爸会抱着我一起打游戏,长大后周围的小伙伴也有许多爱好打游戏的,有些甚至谈得上是痴迷,对于他们为什么会对游戏如此的热衷,其实是有些不能理解的,因为不理解所以变得更加好奇,更想要去探索一番,或许和男生选择计算机的理由十分不一样,促使我选择软件工程的另外一个原因是,电影中的计算机大佬们敲代码实在是太帅了哈哈哈~~
不同的软件工程:
大一的专业课c语言编程设计是我第一次真真实实地正式接触到编程,第一个程序hello world敲出来时,内心确实有着一丝小小的成就感,原来代码还能够这样玩,但也有着一丝的疑惑,因为随着深入学习,我发现和我想象中的做游戏并不一样,并不是一开始就教你如何做游戏,不同的编程语言擅长的方向是不一样,想要做出一个好的游戏来,背后需要的技术支持是十分庞大的,但这门专业确确实实吸引到我了
喜欢与专攻:
对于这个专业相比擅长这个词,可能探索更符合我,就像博客B的标题一样,“你是否也觉得自己是科班,但没学懂计算机?”像博客B中提到的那样我也出现了一样的问题,我就像高中学习阶段那样,只是简单地跟着老师走,认为老师所讲的东西便足够了,所以只是学习课堂上老师讲解的知识,却从来没有对书中的问题进行进一步思考,老师不讲的便没有再看过,也没有思考我自己应该还需要学习一些什么东西才能够更好地做出我最开始的目标来。所以对于这个专业是喜欢但不擅长。但现在发现了就得去及时改正。未来还是会从事相关得专业吧,可能会更偏向与做前端设计方面的工作,因为还是不希望这四年所学的就白白浪费掉
现在的我:
一转眼已经大三了,现在比较熟悉的是c语言,javascrip,css,学过了c#,java,,数据结构算法,大一大二对整个项目流程其实不是很清楚,最正式和复杂的一次应该是暑假的Javaweb开发,是对整个开发过程最了解的一次经验了。现在的我距离合格的本科生还有很大的一段距离,专业知识还不够熟悉,在数据库,编程思想上还有着一定的差距,对做一个合格的项目还无法做到独立完成。缺乏实战经验。博客K提到"兴趣和热情只能让你很执着,但并不一定能让你走好这条路,只有你的能力和你的强项才能让你走好这条路。"所以现在的我更重视提高自己的技术和能力。
未来的样貌:
未来的选择其实有很多,当下的我想做的是去考研,觉得自己还有许多的不足,想要再多的一点时间弥补,也想看看自己拼尽全力能做到哪一步,相比于其他同学我的基础会稍微差一些,编程能力也不算强,想通过继续学习来提高自己的竞争力,变得更有优势一些,博客C对我的启发很大,对于学习这件事就应该是踏踏实实的,每一道题都认真的做过,每一行代码都是自己一个一个的敲出来的,看似是笨办法,但对今后的影响却是十分巨大的。看了这些前辈的博客,在大三要好好的抓一抓基础的知识,把基础打牢才能更好地为考研做好准备。机会真的只会留给有准备的人,同时想同步学习前端方面的知识,不想丢下自己真正喜欢的。
思考与问题:
问题1:来源:第16章 16.1.5
在16章迷思之五中提到了姆伯纳斯李一个物理学家却实现了计算机www协议,诺基亚,索尼单放机的例子,这些行业里的创新者常常不是行业中的专家,那为什么会经常出现这样的情况呢,我的理解是这样的:当你在该领域有了一定的专业知识,形成了属于你自己关于这个领域的思考方式,在你的脑海里先入为主了,形成一定的固式思维,那么在思考问题的时候难免多多少少会受到以往实践经历的影响,反而没有了初生牛犊不怕虎的精神,什么都敢去尝试。就像是一张白纸上可以画任何的东西。那么我们作为大学生应该如何做到不受以往经验的影响去以另外的角度思考同样的东西的同时保持专业可行性呢?
问题2 来源:第9章 项目经理
第九章中提到了PM项目经理这个概念,PM主要负责需求沟通等工作,其中最重要的是协调
团队和客户,团队成员之间的沟通交流。那么PM无论是对开发还是测试都不算太懂,他们是如何做到带领大家,让大家跟随他,并且配合他呢?
让我不禁回归到现实中来,无论是社团,还是部门,总是有这样的人,他们的专业能力确实是不算特别出众的,但总是能带领大家,把大家凝聚在一起。这样看来仿佛是一种天赋,作为大学生怎样才能培养这种能力呢?
问题3:来源 第7章
第7章Build to win中提到了Go语言的例子,计算机语言的专家觉得Go语言缺少一些现代语言必不可少的元素,但发明者Rob说到Go语言的发明是为了解决在大规模软件开发的痛点。对于编程语言和软件工程都没有说最好的,只有最合适的。构造出来的软件我们也说的是足够好的,而不是最好的。那么我们应该如何选择最合适的方法呢,又怎么去判断我们选择的是最合适的,如果逐步去试,那么在需要很快开发的时候如何把握时间呢?
问题4:来源第12章第一节
做减法的设计是好设计吗第12章第一节中提到了遥控器的例子,在试用软件的过程中,我们往往会发现实践上用户常常使用的功能就是那几个,那么我们还有必要花大量的时间去开发和维护那些很考究技术能力但并不实用的功能呢,是不是还不如多花时间在用户经常使用的功能上。但这样我们的技术就很难得到拓展。所以做减法的设计是好设计吗?
问题5: 来源第13章软件测试:
在第13章中13.5.1中提到了一个有错不改的例子,是关于excel中判断1900年是闰年的一个bug,但如果修改的话会影响到其他的软件,涉及到很大的工程量。可是在技术上却没有任何问题,那今后遇到了牵扯很大或者几乎没有影响的bug难道就可以不管它了吗?
源代码管理工具:
1.Git:
优点:
免费自由开源
占地面积小
数据完整,速度快,灵活,个人体验好
任意两个开发者之间容易解决冲突
缺点:
代码保密性差
模式上比SVN更加复杂
学习周期长
不符合常规思维
2.Microsoft Azure:
为开发者提供一个平台,帮助开发可运行在云服务器、数据中心、Web和PC上的应用程序。云计算的开发者能使用微软全球数据中心的储存、计算能力和网络基础服务。(来自百度解释)
优点:
消除了许多复杂性
数据和服务安全
支持大量开源软件
缺点:
集成自动化少,需要手动执行许多管理任务
对DevOps方法提供支持少
3.Github:
优点:
对任何项目都能够管理
和他人交流方便
能够跟踪错误
可以直接开始,而不需要设置主机或者DNS
缺点:
学习周期长,需要大量的实践
国内访问速度太慢