个人第1次作业:阅读与准备作业

格式描述 :

这个作业属于哪个课程 课程的链接
这个作业的要求在哪里 作业要求的链接
我在这个课程的目标是 希望能了解软件开发原理和团队项目开发经验; 学会团队合作,共同完成任务;强化自己的编程能力
这个作业在哪个具体方面帮助我实现目标 这个博客作业能让我熟悉使用博客和反思自身所存在的问题,认清自己;在老师的讲解下能明白《构建之法》中的知识原理;项目作业能够很好地锻炼自己的能力。
个人博客 我的博客

1. 介绍自己

大家好,我是一个学习了两年软件工程专业的学生,喜欢编程、玩游戏、听歌和乒乓球。闪光点的话,不像其他大佬那么厉害,出众,我绞尽了脑汁,认为我的闪光点可能就是比较会说话,跟人也是自来熟(不知道这是不是闪光点哈哈哈),本人性格开朗、稳重、有活力,待人热情、真诚;我也不是特别聪明的孩子,从小都是听着“别人家的孩子”的故事成长过来的,所以对那些学霸都很敬佩;还喜欢和同学一起玩游戏,但会把自己作业或者任务完成了再玩,我的初中老师给我的毕业评语就是我是一个非常脚踏实地的人,不会拖拖拉拉的。大三了嘛,我也不能浑浑噩噩了,该定下目标去努力了,希望能够加油!
很喜欢国漫《镇魂街》里的一句话:

人各有命,上天注定。有人天生为王,有人落草为寇。脚下的路,如果不是你自己的选择,那么旅程的终点在哪,也没人知道。你会走到哪,会遇到谁,都不一定。

2.阅读与思考

1.回想一下你初入大学时对你所在专业的畅想

1.1当初你是如何做出选择你所在专业的决定的?

  • 我当初是基于对电脑游戏的热爱(说来惭愧hhh),然后拿着一大本志愿填报资料一头雾水,再在网上搜索了一下未来专业的走向,综合各大网络消息,认定计算机互联网非常吃香,我当时想学了计算机知识在很多领域都会有用处,所以它的就业前景比其他专业要高,而且我本人对其也挺感兴趣的,所以就选择了它。

1.2你认为过去一(两)年中接触到的课程是否符合你对你自己所在专业的期待,为什么?

  • 我觉得非常符合,大一时以C语言打基础,再循环渐进学习软件原理等,逐渐形成对计算机框架体系概念,毕竟学校里的老师们都教了许多年了,他们肯定考虑得更加周到,排课也会更适合学生。不过在学习过程中,接触得越多,你会发现不会的更多,学到的是多么的浅薄,所以这就要求我们在课后自己要主动学习更多的新知识。

1.3你觉得你所在的专业是你喜欢的领域吗,它是你擅长的领域吗?

  • 喜欢倒是挺喜欢的,从开校时编写的第一个Hello World程序运行成功,我就对其感到喜爱,想想当时还挺有成就感的,但擅长嘛,说实话就不擅长了。每学会一个新的知识点,解决一个bug,我都很开心,但其实在计算机这个领域里要学的知识非常的多,而且每天计算机技术都在日新月异地发展,所以学习永无止境。

1.4将来你会选择从事和你专业相关的工作吗?是的话给出你想去的城市、公司和岗位,否的话给出原因?

  • 我应该会的,但如果实在不尽人意,也会考虑其他的工作,毕竟要恰饭的嘛。我的话就在成都周围吧,我也不想离家太远,但如果条件够好,技术够硬,我也会去北上广深这些大城市试一试。我比较倾向于
    前端开发,用html5,css3,JS,JQuery来进行页面设计或客户端等。

2.对照前人们走过的路和描述未来发展,现在的你

2.1自我感觉你已经具备的专业知识、技能、能力有哪些?已经写过的代码量是多少?描述你做的最复杂的项目/作业。

  • 这个问题。。。感觉我的话只能说会C语言,C#,了解Java和MySql,会用html,CSS和JavaScript来设计网页。代码量的话,不怎么清楚,至少几千上万了吧。我做过最复杂的项目,目前来说就是今年暑假的项目作业吧,用Spring MVC和MyBatis框架,再用Java,CSS,JavaScript,HTML等编程语言,以及其他服务语言技术,构建一个基于Intellij IDEA,使用MySql作为数据库环境,使用谷歌浏览器作为网页开发,可以在Windows操作系统平台运行的酒店管理系统。

2.2离成为一个合格的本科毕业生,在专业知识、技能、能力上还差距哪些?

  • 我认为一个合格的毕业生,应具备1良好的编码能力、2自觉的规范意识和团队精神、3认识和运用数据库的能力、4较强的英语阅读和写作能力、5具有软件工程的概念、6求知欲和进取心。我的话现在编码能力和运用数据库的能力还不太强,了解一点软件工程的概念,英语上还有点欠缺,专业知识储备上也有缺陷,但我会尽量去弥补和强化自己的能力。此外,虽然老师给我们发过项目作业,但项目实战经验真的很少,还要多多积累。

3目前是一个人生选择的十字路口,考研、工作、考公、出国,不同的选择在大三就有不同的努力方向。而无论考研还是工作的每条路径,也有许多不同的分支。

3.1对照以上你阅读的前人们的经历,你的选择是什么?

  • 通过阅读了各位前辈的经历,才深深认识到他们的勤奋和努力,以及自己的不足之处。其实这个问题今年暑假我和家里人聊过,最后还是决定考研,因为有一点就业压力,还有希望能更加充实自己,多学点知识,希望能跟着到时多做点项目,积攒经验。

3.2在这种选择下,你认为你相比其他同学来说有何优势,有何劣势?

  • 选择了考研这条路就要耐得住寂寞,禁得起诱惑,扛得起考验。我的话,还是能够收回躁动的心,静下来学习的,忍受得住高强度长时间的复习备考;劣势的话,我认为不能举一反三,俗话可能就是脑子不够灵光吧,记一个东西要花点时间,灵活地运用的话就更要花点时间了。

3.3针对你的选择,你给自己的大三设定的规划安排是什么?

  • 首先当然是确保自己的学科不挂科,然后抽空学一点Linux操作系统知识和web前端CSS中的Bootstrap开发框架,以及做一些算法题,再制定一下考研复习表。

3.4你对于实现自己的梦想已经做了或者计划做什么样的准备?

  • 我己经搜集了一些考研的资料,也听了一些学长学姐的学习建议,今年准备多多储备一些专业知识。

3.提有质量的问题

问题一
在3.2章软件工程师的思维区P48中,分析麻痹;不分主次,想解决所有依赖问题;多早优化;过早泛化;这些都是软件编程时可能出现的问题,但我们新生“软件工程师”对此该如何良好地处理呢?比如:分析麻痹这种极端情况就是想要弄清所有细节和依赖关系之后再开动,心理上过于悲观,不想修复问题,出了问题都依赖在相关问题上,说白了就是畏手畏脚,不敢马上下手做;而不分主次,想解决所有依赖问题和上面的分析麻痹所存在的心理问题恰恰相反,这是心理太过于积极,最后忘了自己的最终方向。那我们编码时该怎样去做,才能尽可能避免陷入这种极端,导致影响到软件进度呢?
问题二
在读4.5结对编程时,在P79页读到了上文的内容,作者说“在结对编程时,因为有随时的复审和交流,程序各方面的质量将取决于一对程序员中各方面水平较高的一位”,也就是说在编程过程中是由水平较高的程序员作为领导者。但是这样的话,是否会出现水平较高的人长时间的掌控着编码,而水平较低的程序员自己就没有做什么核心编码任务这种情况呢?那么到项目结束时,较低的水平的人却没有能够得到较好的锻炼以及能力的提升。那么在编程起初我们应该要怎么样分配工作才能够保证即有质有量地完成编程任务,又能够让两个人都能够都参与到代码编程当中得到锻炼呢?
问题三
在第7章中讲了开发人员和测试人员会产生一种对立的情绪,这种对立的情绪短时间内能刺激成员的工作热情,而长远的话会有害的。在现实中,如果开发人员和测试人员产生了对立的情绪,我们应该如何调解?两者互相挑刺,本质上都是在帮助公司的软件项目在找问题、解决问题,那我们可不可以找到一个方法即能刺激提升员工的工作热情,又能消除之间的矛盾呢?
问题四
在11.5.5小强地狱(Bug Hell)中,认为让Bug多的队员专心修复Bug,不要开发新功能。是为了避免"小强"成为一个大怪物,不能一味赶进度,不管小bug,那在质量、进度、成本三者之间如何更好地去权衡呢?还有让Bug多的队员只修复Bug,再给他后面的项目任务,他是否跟得上呢呢?这样效率更加低下,大大影响进度,既然他自己Bug都很多,那我们可不可以先安排专员和他一起把Bug修复了?然后再一起发布任务,使得更有效率。
问题五
在16.2创新的时机中,邹欣老师在书上提到了一个黄金点游戏,贡献了心得:赢者通吃、螳臂当车、只先一步,强调了成功在于时机上,一个崭新的技术,推出时机太早,可能也会被时代给淹没,那么该怎样把握得好时机呢?还有如何在软件工程中将实践和技术结合来帮助创新呢?

4.了解和调查源程序版本管理工具

  • GIT


优点
(1).开源免费,让系统得到更好的进化,免费则吸引了更大的用户群体,形成一个良性循环。
(2).分布式系统,可以让用户有更大的主动性和发挥空间,对服务器依赖降低到最低限度。
(3).速度快体积小,复制黏贴占用空间大,而Git采用快照方式,创建和切换分支速度非常快。
(4).可以离线工作。
缺点
(1).模式上比SVN更加复杂。
(2).不符合常规思维。
(3).代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。

  • GitHub


优点
(1).适合分布式开发,强调个体。
(2).公共的服务器压力和数量都不会太大。
(3).速度快, 成熟的架构,开发灵活。
(4).任意两个开发者之间可以很容易的解决冲突。
(5).离线工作,管理代码成本低,不需要依赖服务器。
(6).部署方便。基本上下个命令就可以用。
(7).良好的分支机制,可以让主干代码保持干净。
(8).Git对程序源代码进行差异化的版本管理,代码库占极少的空间。易于代码的分支化管理。
缺点
(1).资料少,学习成本比较大,学习周期比较长,要求人员素质比较高。
(2).不符合常规思维。
(3).代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。
(4).不支持中文,图形界面支持差,使用难度大。不易推广。

  • Microsoft TFS


优点
(1).是对敏捷,msf,cmmi等项目、过程管理、过程改善的支持。任务版上能将需求、项目进度一览无余,对于小团队而言,比甘特图更有用。
缺点
(1).能应用起来的团队、公司的数量极少,多数真正用起来,也就是源代码管理这部分,这也仅仅是占TFS极小部分功能。

  • Trac

优点
(1).非常灵活,可以随心所欲控制可以和SVN集成。
缺点
(1).功能不是很强大。

  • Bugzilla


优点
(1).免费,有中文版支持。
(2).Bugzilla可以适应多种情况。
(3).出色的安全性以保护机密性。
(4).提高生产率。
(5).BugZilla的定制功能的确更强,能满足更多用户差异化的需求。
缺点
(1).BUGZILLA只能管理缺陷。
(2).BugZilla的界面几乎可以说惨不忍睹。

  • Apple XCode

优点
(1).编译速度极快,每次操作都很快速和轻松。
(2).自动提供撤消、重做和保存功能,无需编写任何编码。
(3).Xcode 能够和 Mac OS X 里众多其它的工具协作。
(4).拥有海量的内存,Xcode 将赋予你创建诸如计算和渲染引擎应用程序的能力,这些应用程序使用64位内存定址。
缺点
(1).更新版本后,某个插件可能会失效。

参考文献

GitHub和Subversion的使用以及优缺点
上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些, 各有什么优缺点?
————————————————
让你的指尖跳跃出一行行代码精灵,希望对你有所帮助。

本文版权归作者和博客园共有,欢迎转载,转载请附上原文出处链接及本声明。
posted @ 2019-09-11 01:00  翻斗街扛把子胡图图  阅读(312)  评论(4编辑  收藏  举报