《构建之法》第一次作业

这个作业属于哪个课程 课程链接
这个作业要求在哪里 作业要求的链接
我在这个课程的目标是 学习系统分析与设计的能力,包括开发模型、代码规范等
这个作业在哪个具体方面帮助我实现目标 软件工程专业能力提升
我自己的博客 夏小树的博客园

一、个人的自我介绍

一个爱刷B站和知乎的人,体育爱好羽毛球,不怎么看流行小说(除了《三体》和《龙族》),对日漫还没入坑但元旦想去日本旅个游。仰慕各种大佬,目前在乐程团队“划水”。

二、阅读与思考

1.回想一下你初入大学时你对所在专业的畅想,
  • 当初你是如何做出选择你所在专业的决定的?
    其实我本来是经管院的经济学专业,但是作为一名理工直男看到那一堆要背的东西就头大,转个专业的强烈想法战胜了害怕秃头和找不到女朋友的恐惧,现在感觉遇到一群强者还是很开心的。另外,当时没有什么特别的畅想,因为对这个专业不是很了解,只知道经管院总喜欢找计科院做网站,做APP。

  • 你认为过去一(两)年中接触到的课程是否符合你对你自己所在专业的期待,为什么?
    我是转专业的,C语言自学的,这个入门级的基础就不说了。后来的数学课以及专业课数据结构与算法、离散数学、程序设计范式等课程也使我受益匪浅,打扎实了基础。所以总体来说过去这一年半接触的课程还是很符合我的期待的。

  • 你觉得你所在的专业是你喜欢的领域吗,它是你擅长的领域吗?
    虽然相对软件工程专业,我觉得我更喜欢大数据,不过这也不影响我到底未来往哪个方向走。我觉得本科期间专业之间区分度还不是太大,都是在打基础,不管走哪个方向,都是可以让我们走的更远。

  • 将来你会选择从事和你专业相关的工作吗?是的话给出你想去的城市、公司和岗位,否的话给出原因
    会的,不过应该不会是去做网站、APP了,可能偏向于大数据、通信等(对这两个方向有点好奇)。
    想去的城市包括杭州(有个故人在那里)、成都(喜欢这个城市)或者深圳(听说来了就是深圳人)等,想去的公司那必然是华为了,岗位应该是算法岗。

2.对照前人们走过的路和描述未来发展,现在的你
  • 自我感觉你已经具备的专业知识、技能、能力有哪些?已经写过的代码量是多少?描述你做的最复杂的项目/作业。
    已经具备的专业知识、技能、能力大多还是一些基础能力,比如C\C++和Python基础,数学,数据结构算法和一些机器学习的算法。
    已经写过的代码量不是特别清楚,因为不怎么做工程项目,以前刷的算法题累计倒是有一点代码量。前前后后大概在3~4万吧。
    做过最复杂的项目是一个关于石油的机器学习算法研究。

  • 离成为一个合格的本科毕业生,在专业知识、技能、能力上还差距哪些?
    计算机网络,操作系统,数据库等专业知识目前还没掌握。同时对一些我感兴趣的领域如大数据、通信等知识还不够了解。

3.目前是一个人生选择的十字路口,考研、工作、考公、出国,不同的选择在大三就有不同的努力方向。而无论考研还是工作的每条路径,也有许多不同的分支
  • 对照以上你阅读的前人们的经历,你的选择是什么?
    考研
  • 在这种选择下,你认为你相比其他同学来说有何优势,有何劣势?
    优势:学术层面接触到的要高一些,而且能学到自己最感兴趣的领域知识
    劣势:少工作几年,实战经验未积累
  • 针对你的选择,你给自己的大三设定的规划安排是什么?
    大三上继续学习专业课
    大三下准备考研
  • 你对于实现自己的梦想已经做了或者计划做什么样的准备?
    养好精神,逐步回到正常的作息,减少对电子产品的依赖

三、疑惑问题

  1. 第四章两人合作。书上68页
    提到注释使用的字符应该只用ASCII字符,否则会影响程序的可移植性,这里我不是很懂,一是移植性,二是为何使用ASCII字符。想起之前在使用GBK编码后去其他平台会出现乱码,提倡只使用utf-8字符集,这两者有什么关系或者冲突么?
  2. 第四章两人合作。书上69页
    4.3.2小标题,认为函数最好有单一的出口,为了达到这一目的,可以使用goto语句,可是之前我们接收到的思想是goto语句破坏了程序结构,使程序可读性变差,尽量不要有goto语句。如何权衡?
  3. 第八章需求分析。书上155~156页
    在谈到做用户调研时使用的焦点小组方法,提到讨论者对于他们不熟悉的事物(如全新市场,颠覆式的创新)不能表达有价值的想法,那么该如何做需求调研呢?用类似事物诱导讨论者么,那这又是另一个弱点——讨论者容易受到主持人有意或无意的影响。所以,该如何做呢?
  4. 第六章敏捷流程。书上117页
    提到Scrum Master不是一个官,而是一个没有行政权力的沟通者,还要在团队中做具体的工作,那么这个Scrum Master到底是一个什么样的角色,技术力压众人的大牛么?在团队中是否还需要负什么重要责任呢?
  5. 第十一章软件设计与实现。书上226页
    ERD的小标题似乎有点小问题,ERD应该翻译为“实体联系图”而不是“实体关系图”,已得到数据库原理及应用老师证实。

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

1.Git

Git一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理,是为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
(1)优点:

  • 适合分布式开发,强调个体
  • 公共服务器压力和数据量都不会太大
  • 速度快、灵活
  • 任意两个开发者之间可以很容易的解决冲突
  • 可本地离散使用

(2)缺点

  • 中文文档较少。
  • 项目保密性差
2.SVN

SVN是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。
(1)优点:

  • 管理方便,逻辑明确,操作简单,上手快。
  • 易于管理,集中式服务器更能保证安全性。
  • 代码一致性非常高。
  • 有良好的目录级权限控制系统。

(2)缺点

  • 对服务器性能要求高,数据库体量大。
  • 必须联网,必须连接服务器
  • 不适合开源开发。
  • 分支的管控方式不灵活
3.Github:

Github是一个集成了git的服务。它可以以网页或者客户端的形式,帮助用户把git本地的数据提交到远程的服务器里。同样的服务还有git oschina,git 京东,git csdn。这些服务都是免费的。
(1)优点:

  • 可以互相吸取经验,借鉴别人的代码

(2)缺点:

  • 对中文不够友好
  • 公开代码才免费,建立私人仓库需要交钱
原文地址:https://www.cnblogs.com/xiaxiaoshux/p/11509694.html