第一次阅读和准备作业
这个作业属于哪个课程 | <课程的链接>
这个作业的要求在哪里 | <作业要求的链接>
我在这个课程的目标是 | <从这门课程中了解到软工与计科专业的不同、对自己未来的发展方向有更加清楚的了解以及借鉴前辈经验,找到更加适合自己的计算机学习方法>
这个作业在哪个具体方面帮助我实现目标 | <对IT行业更好的认知、多浏览前辈发表的博客形成自己对计算机行业的了解体系>
一丶 My Blog Introduce
--My blog address
--Self introduction
我是来自计算机科学与技术2018级的姚志昆,在完成这次软件工程基础第一次作业的时候,发现是十分吃力的。不仅仅在于代码量上,更在于对基础编程软件的陌生,比如正在使用的Visual Studio Code,当初高考填报志愿时,6个志愿中5个计科方面的,但却去了土木工程,仅仅靠在大一下期转专业过来之后学习的知识来完成这次作业也是十分困难的,其中原因有种种,我将会在之后一一讲述。都是晃眼就从高考完到了如今的大二了,小一年的对编程知识的学习也让我对编程从最开始的些许畏惧,到了现在的有些感兴趣。上大学前,唯一的兴趣就是篮球和打打游戏了。高二才开始打球的我,渐渐迷上了欧文,虽然高中压力逐渐增大,但是依旧挤着时间去打球,比如二晚下课的15分钟,提升自己的控球技术。等上了大学之后,想要在大学中接触新鲜事物的我,也逐渐对羽毛球、网球等运动感兴趣了,正所谓“身体是革命的本钱”,这会对我们以后的工作也打下一定的基础。
二丶 Reading & Thinking 1.当初是如何做出选择现在专业的决定的?
高考填报志愿的时候,6个志愿中有5个是计科院的,但是我却去了第六个志愿——土木工程。虽然对土木工程也有一定的兴趣,但是在大一下唯一的转专业机会下,我毅然而然的来到了一心向往的计科院,触摸我以前所向往且似乎“高深莫测”的编程。
打游戏也可以算是我对计算机开始感兴趣的开始,因为以前家里电脑不怎么样,运行很卡,动画显示效果也差,打游戏卡成PPT,就自己网上百度怎么在在显卡配置无法改变的基础上,提升电脑的动画显示效果。有个游戏叫做“Minecraft”——我的世界的沙盒游戏,里面需要配置的东西就是Java,而这款游戏也是由它编写的。
为了更好的了解其原理,我终究还是来到了现在的专业,努力成为一个优秀的IT构架师。
2.过去一年是否符合专业期待,为什么?
从转专业到现在,时间只有小半年,计算机科学与技术让我感受到了编程的快感,虽然都是些小程序的或者小游戏,但是每当自己的程序"no error,no warning"成功跑起来的时候,成就感与喜悦感都覆盖了我。即使编译的时候出现了错误,而检查错误的时候心里有点堵,但是每每当问题成功解决的时候,喜悦感也是油然而生的。
因此再过去的小半年里,我觉得是符合我的专业期待的,虽然最开始转专业时填报的一志愿是软件工程,但是来到计科专业,也依旧让我渐渐愿意主动去学习专业知识,爱上了这个专业。 3.你觉得你所在的专业是你喜欢的领域吗,它是你擅长的领域吗?
由上题可知,我对这个专业算是我喜欢的领域。但是也仅仅是喜欢,离擅长这个领域要走的路还很长很长,我现在的编程水平与知识水平也不过是在芸芸IT人中目前最基础的那一层。想要达到擅长这个水平,我依旧需要自己主动学习培养计划之外的东西,培养独属于自己的程序库。 4.将来你会选择从事和你专业相关的工作吗?是的话给出你想去的城市、公司和岗位,否的话给出原因。
既然是转专业选择了一个更加难以掌握的专业,那我将来肯定会从事与我专业相匹配的工作。虽然不是地地道道的成都人,但是三岁就开始在成都生活的我,最想去的城市依旧是这个城市——成都。而如今成都也是新一流城市之首,我觉得留在这个从小长到大的城市是非常不错的一个选择。而我以后的发展方向却不是很确定,感觉自己依旧对IT行业的细分不太了解,姑且发展方向为java工程师或者web前端工程师吧,公司的话我更偏向于游戏公司,虽然据了解游戏公司熬夜做项目是家常便饭,但是兴趣在此,目前国内比较大的就是腾讯和网易了,腾讯旗下的游戏自然不用多说,而网易的《大话西游》等网游也风靡一时。如果只是本科毕业,大学还有三年,先学好这三年,一步一步的想这几大游戏公司靠近吧。
5.自我感觉你已经具备的专业知识、技能、能力有哪些?已经写过的代码量是多少?描述你做的最复杂的项目/作业。
我自我感觉虽然培养计划里面该有的都有,但是自己掌握的却是一些皮毛,比如数据结构与算法,虽然已经教学过,但是自己对他的吸收却只有百分之二三十,而达到熟练运用于掌握还有很长的路要走。根据我们的培养方案,我们要学习:数据结构、编译原理、操作系统、汇编语言、计算机原理、计算机系统结构、离散数学、概率论、计算机网络、数据库、单片机、算法设计、数理统计、高级语言程序设计、面向对象程序设计。自己自学了Python的基础语法,但是也只是基础。因此自己的专业知识当然是不够的,写过不超过五千行代码,写过最多的代码也仅仅只是贪吃蛇,当时刚刚转专业过来,什么都还不会,C语言和C语言实践课一起上,真的难度太大了,结构体、单链表又在书的后面,可以说当时为了写出这个贪吃蛇做了很大很大的努力。 6.离成为一个合格的本科毕业生,在专业知识、技能、能力上还差距哪些?
在专业知识方面,就按照计算机科学与技术这一系来说,和培养方案上的基础课程相对比,自己可以说什么都不会,依旧需要自我主动学习。在技能方面,相比于一个合格的本科毕业生,我要在"人为交往,年龄,阅历"等方面继续提高,而在大学中,我想培养出"稳重的性格出来,褪去以前的浮躁",这才算一名合格的毕业生。
7.对照以上你阅读的前人们的经历,你的选择是什么?
最让我感触最深的一篇文章是《对程序员职业的一些建议》,单单看名字当然是没有办法知道他到底讲的是什么,但是在其中,却让我更深刻的认识到了三热情、能力和选择三者间的关系。
一是兴趣能让你开始让你执着,但只有喜爱才会投入热情,只有投入热情才可能会出成绩。我的兴趣就是从电脑游戏中迸发出来的,为了搞清楚其中的原理,我来到了计算机科学与技术这个专业。喜爱都是渐渐培养的,作为一个数学不是很好,理综却相对有优势的学生来说,我对计算机知识最开始是虽然感兴趣,却是有些畏惧的,因为觉得它十分深奥,而我认为,接下来三年时间里,我就要将其化为对计算机编程能力提升的执着,进而转化为喜爱,投入热情,因为喜爱而投入热情,终究会转为成绩,带来成就感。
二是兴趣和热情只能让你很执着,但并不一定能让你走好这条路,只有你的能力和你的强项才能让你走好这条路。有了兴趣和热情之后,只是做到了基础条件,想要在这条路上越走越远,那么你就要注意自己的学习方法进而提高自己的学习效率依旧编程效率。IT作为一个快速更替的行业,知识体系都是日新月异的,不能停止对新知识的学习,并选择一个方向做到深入掌握,做到一个公司没有人做到,只有你一个人才能做到,让其成为你的强项,才能让你更被重视,才能做到不被淘汰。
三是你的职位,薪水,只不过是你能力和经历的附属品。当你的能力、阅历十分突出的时候,公司需要你的能力,那么你提出的薪资要求、福利要求都将不会成为问题。因此提升自己的能力才是最关键的,在学习的过程中,不要一味的为了薪水二区做事,而是为了提升自我而去做去学。
8.在这种选择下,你认为你相比其他同学来说有何优势,有何劣势?
对我而言,我认为我的优势是如果我想要做一件事,那我就会一定用尽全力将其做好。劣势方面的话,我认为最影响我的就是懒惰,相比于大一上册,如果有假期就是和室友出去开黑,出去玩,而不是主动学习。虽然转专业过后和以前相比已经有了改观,但是懒惰不是一朝一夕可以改变的,希望在大学三年改掉这个习惯,主动去找事情做,而不是让事情找上门。 9.针对你的选择,你给自己的大三设定的规划安排是什么?
转专业后,因为学计算机的人数太多太多了,我对考研的愿望越来越强烈,我局的对于大三设定的规划可以提前一些,比如从现在开始每天就开始背诵考研词汇,好好准备考研。每当学校有招聘单位或公司来校招聘时,虽然不是招聘我们年级,但是依旧可以去看看想去的岗位需要些什么,提前准备好,不会使自己到时候那么迷茫。 10.你对于实现自己的梦想已经做了或者计划做什么样的准备?
因为大一错过了加入团队的机会,现在我的计划就是加入一个团队,在其中努力学习,争取在比赛中得到名次,为考研增加自己的筹码。其次,提前为英语考研做准备,先把词汇量提上来,虽然四六级都过了,但是分数却不是很拔尖,也把四六级分数刷一刷。
三丶Questions raised after reading
Q1 如果进入一个团队,如何好好定位自己,和谐融入其中,并在其学到自己想学的东西?
Q1 来自于自己的思考
A1 当你刚刚进入一个团队,你的身份是一个新人,自我介绍,让团队队员都熟悉你是必然的,无论这个团队的核心项目是不是你想学习的,只要你加入了团队,都要以谦虚的态度请教他人,既然是一个团队,那么这个团队一定有属于它的学习氛围,作为一个新人,一定要积极调整自己,去适应环境,而不是让环境去适应自己。团队中,要使自己有发言权,那就必须自己有能力,没有能力的人,提出的意见也是没有说服力的。对于团队,也需要投入热情,对团队目标做了承诺,就一定要做到。
Q2 领导力到底是什么?
Q2 来自于《现代软件工程-构建之法》P379 领导力
A2领导力分为很多种,有“单一项目中的领导”—— Leadership in a project、也有“思想上的领导”——Thought leadership、还有“技术上的领先和指导”——Technical leadership。不同的领域(思想或行为)有不同的领导力的标准,而领导力有四大要素——设定目标——知人善任——带领团队成长——绩效管理.
Q3 结对编程有什么用?
Q3 来自于《现代软件工程-构建之法》P79 两人合作
在结对编程模式下,一对程序员肩并肩、平等地、互补的进行开发工作。他们并排坐在一台电脑前,面对一个显示器,使用同一个键盘、同一个鼠标一起工作。一起分析,一起设计,一起写测试用例,一起编码,一起做单元测试,一起做集成测试,一起写文档。使得他们在高速度中完成任务,但是任务有较高的技术要求,任务失败的代价也很高。单独一个人设计、实现软件的过程中不免要饭这样那样的错误。在结对编程中,因为有随时的复审和交流,程序各方面的质量取决于一对程序员中各方面水平较高的哪一位。这样,程序中的错误就会少得多,程序的初始质量也会高很多,这样会省下很多以后的修改、测试的时间。使得两人合作解决问题的能力更强,相互激励,互相讲解从而受到激励,努力提高自己的水平,提出更多的创意。
Q4 如何避免软件工程师的思维误区?
Q4 来自于《现代软件工程-构建之法》P48 软件工程师的思维误区
思维误区主要由三个方面,一是分析麻痹,一种极端情况是想弄清楚所有细节、所有依赖关系之后再动手,心理上过于悲观,不想修复问题,出了问题都赖在相关问题上。分析太多,却不想动手,因此,我认为要适当分析问题之后,努力迈出第一步,然后再将一步一步编写代码,不要急于求成。其次是过早优化,软件的软字就在于它的可塑性,一个复杂的软件似乎很多模块都可以变得更好,一个工程师在写程序的时候,经常容易在某个局部问题上陷进去,花大量时间对其优化。无视这个模块对全局的重要性。因此过早的优化是不可取的,要在大框架无错误正常运行的条件下才开始优化。再者是过早扩大化和泛化,在写一个程序的时候,需要某个函数可以处理整数类型和字符串类型的信息,因此有的程序员就会提前将其类型抽象出来,但是太好高骛远了。
Q5 如何正确的计划和估计?
Q5 来自于《现代软件工程-构建之法》P169 计划和估计
想要做到合理的计划和估计,那就一定要在目标、估计和决心三者间做到一个平衡。软件项目的延迟在行业中比比皆是,在估计之前,我们可以考虑前任的经验,另外一个方法是快速原型法——用一两个先锋去探路。其次,也要对产品的因素,平台的因素,人员的因素,项目的因素四者都考虑到。而在计划中,我们可以分而治之,提高人员能力的利用效率,因此我们可以把大型项目化整为零,做到团队中每个人都可以同时工作,将其化为一个个子节点,最后再归为根节点。
四丶Source program version management tools
1.GitHub
参考百度文库
优势主要有以下七点:
1、GitHub 只支持 Git 格式的版本库托管,而不像其他开源项目托管平台还对CVS、SVN、Hg 等格式的版本库进行托管。GitHub 的哲学很简单,既然 Git 是最好的版本控制系统之一(对于很多喜欢 Git 和 GitHub 的人没有之一),没有必要为兼顾其他版本控制系统而牺牲 Git 某些独有特性。因此没有支持其他版本控制系统的历史负担,是 GitHub 成功的要素之一。
2、GitHub 对 Git 版本库提供了完整的协议支持,支持 HTTP 智能协议、Git-daemon、SSH 协议。
3、GitHub 提供在线编辑文件的功能,不熟悉 Git 的用户也可以直接通过浏览器修改版本库里的文件。
4、将社交网络引入项目托管平台是 GitHub 的创举。用户可以关注项目、关注其他用户进而了解项目和开发者动态。
5、项目的 Fork 和 Pull Request 构成 GitHub 最独具一格的工作模式。对提交代码的逐行评注及 Pull Request 构成 GitHub 特色的代码审核。
6、GitHub 通过私有版本库托管、面向企业的版本库托管和项目管理平台、人员招聘等付费服务获得了商业上的成功,这种成功使得 GitHub 不必以页面中嵌入广告的方式维持运营,最大的受益者还是用户。
7、GitHub 网站采用 Ruby on Rails 架构,在 Web 设计中运用了大量的JavaScript、AJAX、HTML5 等技术,支持对使用 Markdown 等标记语言的内容进行渲染和显示等。关注细节使得 GitHub 成为了项目托管领域的后起之秀。
劣势
1.使用Jekyll模板系统,相当于静态页发布,适合博客,文档介绍等。动态程序的部分相当局限,比如没有评论,不过还好我们有解决方案。
2.基于Git,很多东西需要动手,不像Wordpress有强大的后台。
2.Microsoft TFS
优点
1.由数据库存储源码——性能高
2.与开发工具无缝集成——简便
3.源码管理无存储限制——可靠
4.代码分支结构可视化管理
5.有误删除恢复保护
6.内置BUG管理工具、提高开发效率
7.管理项目生命周期测试用例
8.根据项目完成情况自动编译测试源码
缺点
1.搭建、维护tfs比较复杂。
2.硬件要求比较高。
3.Apple XCode
参考百度文库
优点
1、苹果公司向开发人员提供的集成开发环境(非开源),用于开发Mac OS X,iOS的应用程序。
2、不管是使用C、C++、Objective-C或Java编写程序,在Apple Script里编写脚本,还是试图从另一个奇妙的工具中转移编码, Xcode 编译速度极快。每次操作都很快速和轻松。
3、苹果公司为用户提供了全套免费的Cocos程序开发工具(Xcode),和Mac OS X一起发行,在苹果公司官方的网站下载。
缺点
1.报错难以辨别出错地方。
来源:https://www.cnblogs.com/pythonzk/p/11486517.html