《构建之法》——第一次作业

这个作业属于哪个课程 课程的链接
这个作业要求在哪里 作业要求的链接
我在这个课程的目标是 可以对软件工程有更深入的理解,在团队合作中,学会如何与队友沟通并提升技术
作业正文 个人博客首页
1.建立博客并介绍自己
  自我介绍:平时喜欢听歌(古风),和室友打打篮球,和朋友一起去影院,虽然朋友也不是特别多。个人不擅长人际交际,可能更多喜欢自己一个人呆着。虽然在这样的一个时代,与人交际是很重要的一点,特别是以后出社会,不过车到山前必有路,到时候再说吧。
2.阅读与思考
 (1)回想一下你初入大学时对你所在专业的畅想
  1.1当初你是如何做出选择你所在专业的决定的?
   当初自己报志愿的时候,个人是比较倾向于计算机相关的专业,但是在父母的强烈要求之下,一二志愿没能如愿以偿的报到,但是录取结果对于我来说还是比较幸运了——软件工程。这个结果我自己还是比较满意的,因为当时报的时候,根本没想过会被这方面的专业录取。我初中的时候,喜欢捣鼓电脑,当时了解了一下“贵族”语言——c语言,不过当时没有更深一层的了解。
  1.2你认为过去一(两)年中接触到的课程是否符合你对你自己所在专业的期待,为什么?
   我自己可能更偏向于网络攻防,在大二的时候接触了Linux操作系统,对这种纯命令式、高效率的操作方式产生了很大的兴趣,所以一般在课下都是去钻研那方面的知识。对于这两年的课程,倒是很符合“软件工程”这门专业的,但是就我个人而言,没有满足我个人的期待。
  1.3你觉得你所在的专业是你喜欢的领域吗,它是你擅长的领域吗?
   最初刚刚进大学的时候学C的时候,还挺喜欢的,但是后来慢慢的了解到了更多的知识之后,就转移了自己的兴趣。我所擅长的领域偏向服务器方面吧。
  1.4将来你会选择从事和你专业相关的工作吗?是的话给出你想去的城市、公司和岗位,否的话给出原因
   可能不会,也说不准。我更偏向于从事运维方面的工作吧,兴趣是学习知识最大的动力,所以我觉得选择工作的话,应该选择自己比较感兴趣的方向,当然这是理想情况下,结合实际的话,也就说不准了。想去的城市:就在成都吧,因为这边离家里比较近,可以经常回家看看父母。公司的话,可能每个从事IT这个行业的人,都有那种渴望进入BAT、华为工作的欲望吧,如果自己实力允许,我会去,岗位的话:运维工程师是我理想中的,当然,到时候具体是什么不得而知啦。
 (2)对照前人们走过的路和描述未来发展,现在的你
​  2.1自我感觉你已经具备的专业知识、技能、能力有哪些?已经写过的代码量是多少?描述你做的最复杂的项目/作业。
   到现在我们学过的有很多,计算机系统基础、数据结构、java、c#、软件设计模式、程序设计基础、面向对象程序设计等等,课下我自己了解过的有python、spring框架、ssm框架、分布式、dubbox、服务器的集群分布等等,虽然了解过这么多,但是自己的但代码量是真的很少,这也是我最大的一个短板,可能这也是我和那些大佬们的差距吧,所以为了加强自己的代码编写能力以及代码规范,现在我写代码是以PEP8规范,每天强制自己敲一些代码。我做过的最复杂的作业,spring-boot框架+dubbox框架+Redis集群分布+Solr集群分布+Nginx反向代理(因为服务器不够的原因,采用了伪集群的方式,但是与真实的部署步骤是一样的)。
  2.2离成为一个合格的本科毕业生,在专业知识、技能、能力上还差距哪些?
   我还需要了解:数据库原理及其应用,计算机网络基础、java中的各种常用的框架、并发编程,了解代码编写规范以及如何提高自己代码的可复用性和可维护性,最重要的一点是:不仅仅要学习这些知识还要将这些知识进行融汇贯通,总结前辈踩过的坑,避免自己重走他们走过的路,做到对这些知识精通。
 (3)目前是一个人生选择的十字路口,考研、工作、考公、出国,不同的选择在大三就有不同的努力方向。而无论考研还是工作的每条路径,也有许多不同的分支
  3.1对照以上你阅读的前人们的经历,你的选择是什么?
   我的选择是考研,大一刚刚进校园,我是没有考研这个打算的,当时想法很简单,毕业了就去工作,这样也不用给家里增加额外的经济负担,还有一点经济来源。但是到了大二,我发现不考研真的不行了,为什么?现在很多的大学生核心竞争力不够,换句话说,就凭这我们在大学本科学的知识是根本不够和别人去竞争的,当然我说的大多数人,依旧有少数人还是很厉害的。本科中的大多数人学习知识都停留在应付考试上面,没有真正的去理解为什么要学习这个以及学的知识的应用。考研的话,可以跟着自己的导师接触到一些项目,将自己学习的知识应用于自己走的项目中,正如那句话说的“实践出真知”,通过实践可以让我们融会贯通。
  3.2在这种选择下,你认为你相比其他同学来说有何优势,有何劣势?
优势:对于不善于人际交际的我来说,读书可能更适合我一些,因为不需要和太多人的打交道,备考的时候也基本是一个人自己的努力,虽然也需要咨询别人什么的,但我觉得比社会上的人际关系要简单、单纯的多。其次现在每年本科毕业生数量是几百万,而每年空出来的岗位并没有这么多,所以这时候就需要自己更有价值,更有竞争力,一份更高的学历,我觉得会在一定程度上给自己加分。
  3.3针对你的选择,你给自己的大三设定的规划安排是什么?
   目前的规划安排:开始为明年的考研做准备,了解考研的各种信息,确定自己以后的研究方向,学习java虚拟机、python爬虫、Linux服务器相关方面的知识。
  3.4你对于实现自己的梦想已经做了或者计划做什么样的准备?
   可能大一大二的我比较贪玩,大三会先慢慢改掉以前的一些不好的习惯,为考研做好充足的准备,毕竟机会只留给有准备的人。
3.提有质量的问题
问题一
  书中第四章 两人合作(P79),作者提到了:结对编程以及为什么要结对编程。但是在后文作者也说了,代码是有复审,为此还有一个复审员,既然复审员会进行复审,那么在编程中的问题也会被发现,所以结对编程,用两个人不是有点浪费资源吗?虽然结对编程是为了高速度中完成任务,任务有较高的技术要求,任务失败的代价也很高,但一个公司总是会有很厉害的人吧?可以安排技术大拿去完成这项工作,那么另外一个人的资源不久节省出来,可以安排另外的工作了吗?
问题二
  书中第五章 团队和流程(P95),作者提到了一种团队模式叫做官僚模式,就是几个人报告给一个小头目,几个小头目报告给中头目,依次而上。我觉得这个官僚模式不应该和其他的模式并列在一起排放,因为在其他的模式中例如作者提出的主治医师模式、明星模式、社区模式等等,其实这样的团队模式,在进行开发的时候,依旧是层层上报的,普通的程序员向小组长报告,小组长向项目经理报告,依次而上。所以我是不赞同作者将官僚模式和其他的模式并列排放。
问题三
  书中第五章 团队和流程(P93),“一些软件项目在秘密状态下进行……这种模式的好处是:团队内部有极大的自由,较高的热情,没有外界的干扰”,这是书中的原话,对于秘密团队的好处我只赞同最后一点,其他的两点不是秘密团队模式所特有的好处,或者说并不是团队不是秘密团队团队内部就没有极大的自由以及较高的热情,如果按照作者的思路,其他的团队模式下,团队内部只有极小的自由,较低的热情?举个例子,社区模式中,都是一些志愿者参与的,每个人参与自己感兴趣的项目,那么他们也是有着极大的自由,和极高的热情吧?不然为何没有报酬,他们依旧愿意参加呢?
问题四
  书上第十六章,这一章,作者讲述关于创新的迷思和如何去判断决定对于创新的影响程度,但没有说我们该如何去创新?要依靠灵光乍现?还是要依靠现在的数据分析?就像在本章中作者提到到的魔方的创新,大牛、二柱等等他们的创新是怎么来的?而我们又改如何去培养自己的这样的创新的思维?我觉得应该善于大胆假设,要敢想、会想,不要被思维固化,跳出思维的局限待待事物,同时还要培养科学思维,面对同一问题,发散思维,以不同的角度去思考,而且培养创新意识是一个过程,不是可以速成的,也只能慢慢的来。
问题五
  第四章两人合作中,提到了复审员和结对编程,复审员后无疑问,对代码进行复审,我的疑问是:结对编程还需要复审吗?毕竟两个结对编程,其中一个我觉得就可以履行复审员的职责,虽然我们需要对代码不断地复审,但是经过结对编程的程序还需要额外的人来进行复审,那么结对编程中的某一个人,岂不是没用咯?
4.了解和调查源程序版本管理工具
Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。[百度][1]
优点:
 适合分布式开发,强调个体。
 公共服务器压力和数据量都不会太大。
 速度快、灵活。
 任意两个开发者之间可以很容易的解决冲突。
 离线工作。
缺点:
 资料少(起码中文资料很少)。
 学习周期相对而言比较长。
 不符合常规思维。
 代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。
GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名GitHub。[百度][2]
优点:
 可以托管各种git库,并提供一个web界面
 每一份复制出的库都可以独立使用,任何两个库之间的不一致之处都可以进行合并
 用户可以十分轻易地找到海量的开源代码
缺点:
 资料少,学习成本比较大,学习周期比较长,要求人员素质比较高
 不符合常规思维
 代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息
 不支持中文,图形界面支持差,使用难度大。不易推广
SVN[CSDN][3]
SVN的优点:
 采用集中式,易于管理,保证安全性
 管理方便,逻辑明确,理念符合常规思维
 代码的一致性高
 适合人数不多的项目开发
 允许一个文件有任意多的可命名属性,会关注所有的文件类型
 支持二进制文件,更容易处理大文件
 支持空目录
 对中文支持好,操作简单,使用没有难度,美工人员,产品人员,测试人员,实施人员都可轻松上手。使用界面统一,功能完善,操作方便
SVN的缺点:
 服务器压力太大,数据库容量暴增
 必须连接在服务器上,否则基本不能工作、提交、对比、还原等
 不适合开源开发。
[1]:https://baike.baidu.com/item/GIT/12647237?fr=aladdin#1
[2]:https://baike.baidu.com/item/GitHub
[3]:https://blog.csdn.net/weixin_40783315/article/details/84981875

posted on 2019-09-09 20:46  大漠丶孤影  阅读(199)  评论(1编辑  收藏  举报

导航