跟着《构建之法》学习软件工程(第一次作业)

跟着《构建之法》重新审视前方的码路

这个作业属于哪个课程 <课程的链接>
这个作业要求在哪里 <作业要求的链接>
我在这个课程的目标是 迎接未来的挑战,从书本和程序过渡到软件
这个作业在哪个具体方面帮助我实现目标 让我重新审视为什么要选择这样一条道路,未来该怎么发展自己
个人博客 https://www.cnblogs.com/isHao/

1. 简单的自我介绍

  以前,作为受过九年义务教育的我不相信星座这一说,自认为,星座是一种“大数据的应用和心理暗示的结果”(哈哈哈,瞎解释一波),通俗的讲就是:把同一星座的人们的性格、爱好等很多方面的数据统一整合后找出共同点,然后得出该星座的特征,在人们去对照时,会潜移默化的暗示,你就是这样的性格、爱好等,从而让人们相信星座。以前,我是不信的。但是后来,有人告诉我,我是双子座,再加上自己看了一些双子座的分析后,真香。双子座就是对我的最好自我介绍。

2.我与软件工程的奇妙缘分

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

  • 当初你是如何做出选择你所在专业的决定的?
      我和软件工程专业有着奇妙的故事。
      与软件工程的相遇,是我自己也没有想到的。因为作为一个大学之前,仅仅把电脑作为娱乐工具,甚至大学最初的专业都不是软件工程的我而言,选择软件工程有奇妙的缘分,也有必要的理由
       缘分在于,自己不喜欢最初的专业,而自己有个很要好的小伙伴是计算机专业的,他便向我推荐了软件工程这一专业。于是我抱着试一试的心态,买了一本C语言的书籍。书中的前言,对于黑客的描写深深的吸引了我。“十步杀一人,千里不留行。事了拂衣去,深藏身与名。”也许,就像《龙族》所言,“每一个男孩心里都有一个中二的梦想。”而黑客这种身份就唤醒了我克服多年的“中二病”。于是,我希望继续学下去。
      必要的理由在于,高中之前,自己有明确而短浅的目标:考大学。毕竟都说到了大学就轻松了!高考后,自己如愿考上了大学,但也迎来了自己的迷茫时期。最为突出的体现在于,大学专业的选择。高考后就在想:自己以后在大学要干什么?要学什么专业?自己认真的回顾了自己短浅的十多年岁月。发现由于“中二病”和典型的双子座的性格特征,自己总是会有很多“奇思妙想”,因此也自认为是一个极富创造力的人。于是我觉得选择一个有创造力的行业,作为自己后半辈子的主要基调。作家,设计师,新技术的科研人员等,看起来是不错的选择。于是我选择了一些专业。但是到了大学后,才认识到自己选择的专业并没有太多的创造力,而新兴的互联网行业却因为层出不穷的创意迅猛发展,于是自己选择转到软件工程这一专业。

  • 你认为过去一(两)年中接触到的课程是否符合你对你自己所在专业的期待,为什么?
      “理想是丰满的,现实是却是骨感的”。就像我曾经对大学那不切实际的幻想一样,我曾经幻想的“事了拂衣去,深藏身与名。”的黑客生涯,还没开始好像就结束了。所学习的内容,有些理论和道理有些枯燥。虽然如此,但她任然有种独特的魅力吸引着我,让我坚持走下去。
      我也相信,这一切都是为了未来的厚积薄发。

  • 你觉得你所在的专业是你喜欢的领域吗,它是你擅长的领域吗?
      有着进入这个专业的这段奇妙的缘分,让我对这个专业更加喜爱。毫无疑问,我热爱她,并愿意长久的继续和她共处。虽然我的编码能力和技术能力很菜。

  • 将来你会选择从事和你专业相关的工作吗?是的话给出你想去的城市、公司和岗位,否的话给出原因
      我肯定会从事和我专业相关的工作。留在成都仿佛是一个不错的选择,毕竟曾经选择大学所在地时,一首《成都》便让我选择留在了这个阴雨的“小城”里。至于公司和岗位则没有很明确的倾向。

3.路漫漫其修远兮

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

  • 自我感觉你已经具备的专业知识、技能、能力有哪些?已经写过的代码量是多少?描述你做的最复杂的项目/作业。
  • 离成为一个合格的本科毕业生,在专业知识、技能、能力上还差距哪些?
      已经具备的专业知识,技能和能力,自己实在难以去度量它们。因为有太多的东西,自己都是浅尝截止。自己的代码量,我想,还十分的少。初略估计,可能也羞于言明。自己做过最复杂的项目或者作业,可能就是自己现在正在每天时刻都在进行的一个老师的项目吧。作为一个大学已经宣告结束的大三老生而言,自己离一名合格的本科生还有着不小的距离。在专业知识,技能,能力上自己还缺乏太多。实在不敢想象,这是一个大约一年半后即将走上工作岗位的人。所以可能自己需要考研,沉积一下。无论如何,都要自己努力,加油!!!

4.吾将上下而求索

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

  • 对照以上你阅读的前人们的经历,你的选择是什么?
  • 在这种选择下,你认为你相比其他同学来说有何优势,有何劣势?
  • 针对你的选择,你给自己的大三设定的规划安排是什么?
  • 你对于实现自己的梦想已经做了或者计划做什么样的准备?

  人生,究其本质,就是一条修筑在岁月上的路,还是得自己一步步走向终点。而自己已经踏上了一条不归路——码路。而在面前即将就会出现新的岔路口。对于我而言,最大的可能性还是考研,其次才是就业。自己认为自己目前的技术和能力对于自己未来的工作还有一段不小的距离。因此,还得继续加油才行。
  自己大三的安排便是“上层建筑,下层建筑,同是进行”。一边提高自己的代码量,一边巩固基础,为将来可能的就业做好准备。
  自己的梦想,随着年龄的增长,已经逐渐变得模糊了。小时候,觉得梦想只要努力就一定能实现。长大后才发现,实现梦想,是要付出代价的。小小的进步、浅薄的努力支撑不起“大大”的梦想。生活驱使着太多人按部就班,而我也许就是其中的一员。努力不够,毅力不够,也就逐渐没法去谈及梦想了。最终,无奈有坦然的接受现实。不过值的庆幸的是,我将从事的事业和我的兴趣有着相似的地方,我依然有着热情和动力继续前进。

5.看完《构建之法》后的一些问题和疑惑

  • 问题一:在第二章的《个人技术和流程》P37页中,提到“学生做的‘大作业’也是无新意,自学软件开发的读者也往往想不出什么有意义的题目来练习……但是在软件工程的课上所做的题目却是非常简陋,没有起到作用。”
    个人见解和疑惑:我认为一个好的软件产品,很大一部分原因在于外部因素的影响和软件运营的商业模式带来的效果。而对于软件工程的学生,很难感受到这种外部环境的影响和具体软件能给用户和市场带来什么样的效果。而且经常出现技术与想法不匹配的情况。所以,在软件工程学科的课题上,如何界定这是一份好的,有意义的软件工程的作业呢?

  • 问题二:在第二章《个人技术和流程》P36页中提到:“PSP的目的是记录工程师如何实现需求的效率,而不是记录顾客对产品的满意程度,工程师有可能会很高效的开发出一个顾客不喜欢的软件……那么这位软件工程师还是一个优秀的工程师么?”
    个人见解与疑惑:在刚看的这里的时候,我认为这里的工程师不是一个优秀的工程师。因为一个无意义无价值的产品,即使技术再高超也是没有意义的。但看完后面的内容,我自己对于以前的观点又有了怀疑。因为在技术要求较高的这一行里,技术是衡量工程师的很有效的标杆,而产品的好坏也与个体工程师没有太大的关联,因此产生了怀疑。而作者又是以一个反问结尾,留下了很大的空间让读者自己去评判,导致自己也对于此处很是疑惑,希望得到更多人的意见。毕竟一千个读者心中有一千个哈姆雷特。

  • 问题三:第四章《两人合作》中的极限编程中有这样一段话:“极限编程对工程师提出了更高的要求。这种要求不关乎技术水平,也不关乎学历水平或工作经验。”
    个人见解与疑惑:在我的理解中,极限编程也是一种团队工作的模式。学历水平不要求自己尚能理解,但为何技术水平和工作经历也没有要求呢?在倘若两个人的技术水平和工作经验相差太大,岂不是变成了“主治医生”的模式了?一个人飞快的编着代码,而另一个人连阅读理解代码逻辑都十分困难,那这种模式仿佛没有进行的意义了。

  • 问题四:第七章《实战中的软件工程》P139页中提到,“MSF在每个里程碑结束时都要做一个‘里程碑的回顾’”。
    个人见解与疑惑:自己曾不止一次在生活中,学习中,网络上看到这样的一句话:我的代码怎么可能有问题,是你的环境有问题吧?会不会用?执拗,狂热,仿佛已经是程序员的标签。而中国人向来有着极其严重的“面子观”,在这种环境下,MSF的自我评判,记录错误,公布错误,这种将其推到所有人的面前的做法在国内的公司有进行下去的可能吗?虽然我们都知道自我批评有好处,发现自身的毛病有益处。

  • 问题五:第十六章《IT行业的创新》中有这样一段描述:“已有的销售团队往往不愿意推广颠覆性的新产品,因为市场没打开,利润率低。”
    个人见解与疑惑:在如今的社会发展下,我认为这句话已经有些绝对和过时了。当然作为一个没有专业经济学知识的我而言,这样的断言有点“黄口小儿的戏言之嫌”。但是现在只有新的产品才能创造出更大的利润。就支付宝而言,它的市场竞争对手是各大银行,它的市场环境是用户的不信任。但最终,支付宝成为了日常生活中使用最频繁的交易系统。因此,颠覆性的新产品销售的难点在于产品是否能够适应未来的发展,是不是用户需要的,而不是在于初期的市场环境

6.主流的源程序版本管理工具调查反馈

  • (1)Git
    简介:Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
    Torvalds 开始着手开发 Git 是为了作为一种过渡方案来替代 BitKe 。

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

  • (2)GitHub
    简介:GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名GitHub。

    优点:不需要虚拟主机,它是可以发布到github page上的,支持本地编写、本地预览,满意后再发布,并且支持markdown语法,github page搜索引擎优化就不需要自己做了,并且github在google上权重肯定相当高,所以优势明显。
    缺点:github较复杂,需要安装不少软件,而且还可能有莫名的错误。
    github和git的区别:git可以认为是一个软件,能够帮你更好的写程序,github则是一个网站,这个网站可以帮助程序员之间互相交流和学习。

  • (3)Microsoft TFS
    简介:(不愧是,微软的软件,界面好看,但是收费劝退。更有趣的是,在百度百科上居然没有Microsoft TFS这个词条,哈哈哈。)
    Microsoft TFS是内部托管的集成软件交付工具可以共享代码,跟踪工作和发布软件。

    优点::与Visual Studio无缝结合,方便开发者进行源代码管理,支持代码审阅与讨论,支持邮件通知,支持Web访问与管理,支持工作项以及BUG等管理,不会上传.NET开发时生成的垃圾文件,自带版本合并以及比较工具,支持数据库版本管理,自带很多管理工具(测试管理器、反馈客户端、界面设计工具等等)。
    缺点:能应用起来的团队、公司的数量极少。(毕竟要钱,哈哈哈)。

  • 结语:这是我写过最长的博客了。在完成作业的同时,也确实好好的回顾了一下自己进入这一专业的缘由,也借此机会粗略的,正式的在“纸上”规划了一下大三以及更长远点的未来。

  • 参考博客:

  • 《目前流行的源程序版本管理软件和项目管理软件都有哪些》https://blog.csdn.net/weixin_34013044/article/details/93799343

  • 《git与github区别与简介》
    https://blog.csdn.net/qq_25352981/article/details/49175197

原文地址:https://www.cnblogs.com/isHao/p/11503401.html