《构建之法》个人第一次作业

这个作业属于哪个课程 课程的链接
这个作业要求在哪里 作业要求的链接
我在这个课程的目标是 正如书名,希望能略懂《构建之法》,运用其精美的内涵丰富自己的程序人生
这个作业在哪个具体方面帮助我实现目标 本次作业从开始使用博客,让我认识到写博客对程序员的学习至关重要,以及应用书中的构建美妙,尤其是后面的“敏捷流程”的内涵,使得我受益匪浅。
我的博客主页 https://home.cnblogs.com/u/etron/
其他参考文献 百度搜索引擎,其他人优秀博客,菜鸟教程

一、自我介绍

我是谁呢?

很难通过一两句话展示一个人的灵魂。

因为自我展现给别人的东西和别人理解的,

都将随着各自的感官在自己的心灵加上滤镜。

所以只需要简单地介绍下我这里的滤镜:

  • 身份:年满20,软件工程专业,大三学生
  • 目标:希望取得与时间付出对等的工作
  • 兴趣:爱读书,不求上至天文,下至地理,但求做事有自己的思考,了解足够的历史
  • 优势技能:无,人外有人,天外有天
  • 爱好:一切能让自己开心的事

二、阅读与思考

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

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

    A:在哥哥的人生经验上,为我提出建议后,我下定决定做出的选择。

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

    A:不符合。原因在于自身没有更加认真对待某些学科,导致现在欠下了一些学习帐需要去弥补,比如设计模式。

  • Q:你觉得你所在的专业是你喜欢的领域吗?它是你擅长的领域吗?

    A:不能直接说是我喜欢的,只能说不是我所讨厌的,所有我不讨厌的都是我喜欢的。擅不擅长都没有意义,目前的编程都是熟能生巧。

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

    A:大概率从事计算机相关专业的工作。我想去的城市,公司和岗位现在憧憬都没有意义。城市不够了解,也没有特别讨厌的,公司看到时候是否有人要,岗位看自己的水平。

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

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

    A:已经具备:熟悉C,熟悉C#,熟悉mysql,熟悉javaweb,熟悉数据结构...

    ​ 代码量:未曾统计。低于一百万,高于五千。

    ​ 最复杂项目:自己的博客网站。

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

    A:差得远,最差的是底层知识的学习:数据库,操作系统,计算机网络...

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

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

    A:工作,期待实习的自己,期待步入社会的自己,期待一切未知的事情。

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

    A:我的优势其实也是大家都有的优势,在一件事情上花费足够的时间。

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

    A:课程认真对待,线下多coding。大三有机会就提前去实习。

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

    A:梦想在我看来不用说,只需要去做。理想才需要计划,准备。

三、提有质量的问题

  • 构建之法12.1.2中提到理解别人的处境,心境,动机的能力是同理心,软件团队的设计师和软件工程师也需要同理心。我就在想站在别人的角度去考虑问题这点是很好的,但是作为软件工程师的话如果都从别人的角度去考虑自己软件设计的因素的话需要考虑的角度就会特别多,例如设计者,用户,上层等等,而且每个角度看到的东西又都是截然不同的,这时候我们要怎么做才能更好的兼顾全局?
  • 同时,这样的话会浪费更多的时间去调试,我们又该怎样在规定的工期时间内完成用户的种种需求,这显然是非常非常麻烦的,要做好一个满足全部要求的软件显然是不现实的,我们又该怎么取舍?
  • 12.5中向我们提了一个问题:什么是用户体验什么时候开始考虑用户体验?从不同时间段去考虑用户体验显然会带来不同的问题,那存不存在一个最好的时间点呢?
  • 14.1.1中提到软件质量=程序质量+软件工程质量 软件工程的质量又有三个特性:好,快,便宜。那么假如一个人或者一个团队开发软件的过程中过没法做到这三点,我认为最重要的是好,但想了想,在规定的工期内既然没法做到快,那也很难做到好了,那么对于一个软件开发过程,这三点那一项是相较于其他两项要更占主导位置的呢?
  • 书16章在介绍产品了,其中举了个魔方创新的例子,魔方产业中出现了种种的竞争者,笑到最后的确是那名技术不够硬,产品不够好,出现时间不够长的一位,只因为他做到了客户的需求。那么我就在想,在现实社会中一个产品的营销中也会产生很多很多的竞争者,我们能够支抓住目标用户的需求就可以脱颖而出吗,在这之前不需要磨练出过硬的技术生产出过硬的产品吗?

四、了解和调查源程序版本管理工具

Git:早已听闻git版本控制的大名,得益于课程的需求能够深入开始了解一下。

以下解释来源于菜鸟教程:

Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或大或小的项目。

Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制版本。

Git是常用的版本控制工具CVS,Subersion等不同,它采用了分布式版本库的方式,不必服务器端软件支持。

SVN:

Apache Subversion通常被缩写成SVN,是一个开放源码的版本控制系统,Subversion在2000年由CollabNet Inc开发,现在发展成为Apache软件基金会的一个项目,同样是一个丰富的开放者和用户社区的一部分。SVN相对于的RCS,CVS,采用了分支管理系统,它的设计目标就是取代CVS。互联网上免费的版本控制服务多基于Subversion。

SVN是一个开源的版本控制系统,也就是说Subvserion管理者随时间改变的数据。这些数据放置在一个中央资料档案库(repository)中。这个档案库很像一个普通的文件服务器,不过它会记住每一次文件的变动。这样你就可以把档案恢复到旧的版本,或是浏览文件的变动历史。

CVS:

CVS是一个C/S系统,是一个常用的代码版本控制软件。主要在开源软件管理中使用。与它相类似地代码版本控制软件有subversion。多个开发人员通过一个中心版本控制系统来记录文件版本,从而达到保证文件同步的目的。CVS版本控制系统是一种GNU软件包,主要用于在多人开发环境下的源码的维护。但是由于之前CVS编码的问题,现在大多数软件开发公司都使用SVN替代了CVS。

Git与SVN区别:

Git不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。

Git与SVN区别点:

  • 1、Git 是分布式的,SVN 不是:这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别。
  • 2、Git 把内容按元数据方式存储,而 SVN 是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.cvs 等的文件夹里。
  • 3、Git 分支和 SVN 的分支不同:分支在 SVN 中一点都不特别,其实它就是版本库中的另外一个目录。
  • 4、Git 没有一个全局的版本号,而 SVN 有:目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征。
  • 5、Git 的内容完整性要优于 SVN:Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

posted @ 2019-09-10 15:05  etron  阅读(217)  评论(2编辑  收藏  举报