第一次做业-《构建之法》

这个做业属于哪一个课程 课程的连接
这个做业的要求在哪 做业要求的连接
我在这个课程的目标是 了解什么是软件,掌握整个软件开发流程。 了解系统各方面的需求和设计,对未来软件开发奠基基础。认识到团队合做的重要性。
这个做业在哪一个具体方面帮助我实现目标 了解什么是软件设计,懂得什么是团队合做
做业正文... 做业正文
其余参考文献... 参考文献
个人博客 个人博客

做业正文

1.自我介绍

我是一名阳光自信的男孩,在技术上并非特别的厉害,可是在运动方面仍是小有天赋。平时爱打篮球、羽毛球以及听听音乐。篮球不只能缓解学习上的压力,还能加强身体素质。篮球也要懂得团队合做,学习上也不例外,这也是我喜欢它的缘由。在技术方面上的学习从未间断,可是总以为记忆力远不如之前,记过东西过不了多久就会忘记。因此不能只看还要过手,多锻炼本身的动手能力。我我的以为代码是一种很奇妙的事物,从而深深地吸引了我。css

2.阅读和思考

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

  • 当初你是如何作出选择你所在专业的决定的?html

    本身对计算机方面有必定的兴趣吧,以及考虑到这个专业未来好就业的前景。同时本身高考的分数也恰好上学校的分数线,可是填的第一个专业不是软件工程而是电气自动化,幸亏没被录上。今后也就入坑了,可是本身也没后悔,仍是在坚持本身喜欢的东西。前端

  • 你认为过去一(两)年中接触到的课程是否符合你对你本身所在专业的期待,为何?java

    转眼过去了两年时间,大学生活来到了最关键的一年。前面两年所接触的课程在我看来都很实用,数据结构的重要性不言而喻,软件设计模式、计算机系统基础等等都很nice。其余公共课程也不错,好比高数、现代、几率等等,(我我的比较喜欢数学),这些课对咱们学习专业课知识都有大大的帮助。我以为课程开的都很好,学得话仍是得靠本身自身的努力,课上讲的是基础,课后是本身去巩固基础以及提高能力的。目前阶段大部分开设的就是都业课,我以为这些课都挺有意思的,值得咱们去学习和钻研。linux

  • 你以为你所在的专业是你喜欢的领域吗,它是你擅长的领域吗?git

    是我喜欢的专业,我我的以为代码真的很神奇,个人兴趣驱使我选择了软件工程。对于目前来讲本身技术能力还比较薄弱,还得多加练习。相信本身会从rookie逆袭成为master。程序员

  • 未来你会选择从事和你专业相关的工做吗?是的话给出你想去的城市、公司和岗位,否的话给出缘由angularjs

    固然会选择从事与专业相关的工做。本身仍是愿意在成都发展,公司的话大公司(阿里、腾讯)最好不过了,可是仍是得靠本身的努力才行。岗位的话但愿能作到全栈工程师,(如今来讲仍是太遥远),可是目标定在这,本身一步一个脚印向着这个目标奋斗。github

2.2 对照前人们走过的路和描述将来发展,如今的你

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

    基础的C语言,学过C#,java,html,css,以及ssm框架,前端框架angularjs,bootstrap。数据库知道一点点,项目部署到服务器的一些配置熟悉。目前代码量大概有4000+吧,作的最复杂的项目是今年暑假的一个分布式电商平台系统。对整个项目的开发流程熟悉了许多,以及项目的部署我作了大部分,也学习了很多有关linux系统的知识。

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

    我我的以为离合格还差得多,专业知识方面虽然学的多,可是目前也遗忘了很多,仍是有所欠缺。技能方面的话仍是不行,看代码还行,一过手就困难重重,因此平时还得多练练,基础的也要多练练。同时作项目的话,能够看着网上的教程跟着作,这样跟着学不只记住了知识点,手也跟着敲了遍代码,同时也熟悉了项目是如何开发的。

2.3目前是一我的生选择的十字路口,考研、工做、考公、出国,不一样的选择在大三就有不一样的努力方向。而不管考研仍是工做的每条路径,也有许多不一样的分支。

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

    我更偏向于就业,我想的是提早去社会上锻炼锻炼本身,多积累积累经验。虽然目前的本身专业知识和技能方面都不太强,可是还有一年的时间,在专业知识和技能方面多下点功夫,相信本身能作到的。

  • 在这种选择下,你认为你相比其余同窗来讲有何优点,有何劣势?

    我我的以为是一把双刃剑,都有优点和劣势。优点:先就业无非就是先提早适应社会,接触更多的人、适应不一样的环境。劣势:与考研的相比,学位可能较低,学术研究能力差一些。

  • 针对你的选择,你给本身的大三设定的规划安排是什么?

    英语最好不能落下,毕竟对之后仍是帮助挺大的。专业知识和技能知识必定要认真的学,多了解一些新的技术,框架也要多学几个,要把整个软件开发的过程熟悉透彻。多练一些项目,增长本身的代码量,了解一些底层的知识。

  • 你对于实现本身的梦想已经作了或者计划作什么样的准备?

    可能作到了50%吧,本身知识虽然了解了挺多,可是深度方面没有深刻的学习下去,说实话仍是太菜,本身没有严格要求本身,浪费了太多宝贵时光。接下来的时间,要合理规划本身的时间,把本身的时间安排的比较充裕,课上好好学,课后巩固本身的技术和专业知识,挺好的!

3.提出问题

  • 问题1

    我看到第四章的结对编程,百度了一下什么是结对编程。书上81页说到结对编程是一个相互督促的过程,每一个人的一举一动都在别人的视线以内,全部的想法都要受到对方的评价。 当一个程序员处于流模式(Flow),另外一个在一旁学习(Learning)——若另外一个程序员时不时地打断他,并要求对一些基本的但与挑战性问题没有直接关系的事情作出解释,那么他很难专一于解决挑战性的问题。-引用自(何时该采用结对编程)由于两人的能力不同,相互督促的话起到的做用并不大,同时每一个人的想法不同,有些人就不肯意接受别人评价,碍于所谓的面子。因此我以为结对编程不只双方性格要合得来,还要虚心接受别人的意见。那结对编程是利大于弊,仍是弊大于利呢? 我感受仍是利要多点,俗话说“三个臭皮匠,顶个诸葛亮”,团队合做比单打独斗更好一些。

  • 问题2

    书中第六章的敏捷流程, 知道了什么是敏捷流程以及敏捷流程的问题和解法。
    咱们怎样能作到敏捷开发?如何提前的交付软件达不到客户的需求?项目人员流动过大,新员工太多如何解决?书上提到时时总结如何提升团队效率,若是时不时的开会讨论的话,会严重影响工做效率,咱们怎样制定一份完美的计划来把团队效率和平常工做作得更加完美呢?

  • 问题3

    第七章的MSF原则,什么是MSF原则?怎样把信息作到完美的共享和保密?如何与队员有效的沟通,把信息更加准确的传达给其余人?如何避免在软甲开发过程在所遇到的缺陷?当软件成功开发出来,要与客户交互时,如何把软件的功能详细的给客户表达出来?同时遇到问题时,以及与客户沟通是咱们开发人员比不可少的一项基本技能。

  • 问题4

    第八章的需求分析,什么是需求分析?咱们不能盲目的作需求分析,这是软件生存周期中一个重要的环节,咱们要知道用户的需求是什么?当用户需求发生改变时咱们要如何应对?若是软件都开始到了编码阶段,用户的需求又发生了改变,咱们该怎么作?咱们是否是要从头再来一遍需求分析?若是是采用瀑布模型来开发,开发到一半时客户需求改变,那你是否是心态爆炸,因此咱们该采用哪一个开发模式来开发软件?怎样应对多变的需求来作好需求分析与设计呢?

  • 问题5

    第九章的项目经理,如何作到一个优秀的PM?是按照书上所说的作,就能够领导一个项目团队了吗,能让员工真正地服你吗?我以为并非这样,一个优秀的PM不只要有专业的领导力,还要有出众的管理能力,必定的专业能力;还要懂得体贴员工,有责任心,自我约束能力强。

  • 问题6

    第十一章的软件设计与实现,书中223页提到了软件是怎么解决这些需求的?现实世界中的实体和属性在软件系统中是怎么表现和交换信息的?,以及224页的两个相似的问题,只是问法不一样,解决方法相同。咱们在软件的设计和实现的过程当中,怎样才能构建一个与客户所要求的软件相似的模型呢?咱们不只要把需求分析透彻,还要创建多个模型相互比较,选择最优的那个。创建的模型就是把用户的需求所描绘了进去,在仿照模型去编写软件,这样就能够解决用户的需求。在开发过程当中,模型出现问题,是否得从新建模,仍是在原有基础上加以改进?

  • 问题7

    第十六章IT行业的创新,什么是创新?咱们必定要盲从吗,别人创新咱们就跟着一块儿创新?如何抓准合适的时机进行创新?都说有了新的就忘了旧的,我看确实是这样。有好的想法确实不错,可是如何把好的想法实施起来?这才是创新的难点。俗话说早起的鸟儿有虫吃,但书中提到每每领导者都不是先行者,这是为何呢?假若有好的想法,如何去实施而后作到技术上的创新呢?

4.版本管理工具

(1)Git

特色:分布式相比于集中式的最大区别在于开发者能够提交到本地,每一个开发者经过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。

  • 优势:适合分布式开发,强调个体。
    公共服务器压力和数据量都不会太大。
    速度快、灵活。
    任意两个开发者之间能够很容易的解决冲突。
    离线工做。
  • 缺点:
    资料少。
    学习周期相对而言比较长。
    不符合常规思惟。
    代码保密性差,一旦开发者把整个库克隆下来就能够彻底公开全部代码和版本信息。

(2)Microsoft TFS

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

(3)GitHub

基本功能:GitHub能够托管各类git库,并提供一个web界面

  • 优势:完整的支持Markdown语言,并且支持Emoji表情。GitHub提供Git存储库服务,基于web,容许你使用Git的源代码管理功能,或者其特性。功能设计简洁实用上手很快,可用性好,已有不少至关质量的各种项目和优秀开发者在上面。
  • 缺点:国内访问速度太慢,常常出现connect time-out。基于git,学习曲线陡峭,企业大规模用git根本不现实。

(3)SVN

  • 优势:没必要担忧有什么数据损失。SVN在速度运行方面有很大提高。SVN安全性高,实现了系统和控制两方面的结合。
  • 缺点:服务器管理复杂。强迫使用者即时处理冲突,而后才能提交。致使代码不能即时提交。提交、更新、浏览历史的速度都很慢。

(4)Trac

  • 优势:很是灵活,能够为所欲为控制能够和SVN集成
  • 缺点:功能不是很强大

(5)Bugzilla

  • 优势:免费,有中文版支持
  • 缺点:快速搜索结果不许确。只能管理缺陷。

(6)Apple XCode

  • 优势:编译速度极快,每次操做都很快速和轻松。自动提供撤消、重作和保存功能,无需编写任何编码
  • 缺点:更新版本后,某个插件可能会失效。

5.但愿

  • 不忘初心
  • 脚踏实地
  • 借鉴他人经验,逐步完善本身
  • 严格自律

参考文献

相关文章
相关标签/搜索