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

《构建之法》第一次作业

作业详情:

作业链接

我在这个课程的目标

(1)解决下面几个问题:

  1. 什么是软件工程?
  2. 软件开发流程是怎样进行的?
  3. 如何进行软件测试,为什么要进行测试?
  4. 团队怎样有效的协同开发一个项目?

(2)自我提升

这个作业在哪个具体方面帮助我实现目标

通过大量阅读了解课程内容和实现自我定位

1.建立博客并介绍自己

我是一名来自软工卓越班的不愿透露姓名的小菜鸟,喜欢看电影、健身、学习,平时话不算多,做事认真负责,喜欢思考、钻研问题,缺点是不喜欢记录,目标是进大厂,现在主要学习前端

2.阅读与思考

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

  • 当初你是如何做出选择你所在专业的决定的?
    从小和计算机接触的比较多吧,可以说在计算机方面也比较擅长,其实最初的目标是想考军校的,由于某种原因还是选择了计算机

  • 你认为过去一(两)年中接触到的课程是否符合你对你自己所在专业的期待,为什么?
    虽然有一些不(lang)太(fei)喜(shi)欢(jian)的课程,但大多数专业课还是符合自己期待的

  • 你觉得你所在的专业是你喜欢的领域吗,它是你擅长的领域吗?
    擅长不敢说,但肯定是喜欢的,大一大二基本都是靠着兴趣自学,做了一些有趣的东西,开始的时候沉迷于软件逆向,因为破解一些实(you)用(xi)工(wai)具(gua)感觉非常有成就感,然后我也写过挂课脚本,为了FQ做微信小程序,目前累计用户有4000+吧,也玩过爬虫,虽然有些见不了光,但给自己带来的满足感是极大的

  • 将来你会选择从事和你专业相关的工作吗?是的话给出你想去的城市、公司和岗位,否的话给出原因
    答案是肯定的,毕竟除了干这行我也就适合搬砖了(我搬砖贼强),公司的话靠沿海的比较好,阿里腾讯啊什么的,那里风大,凉快

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

  • 自我感觉你已经具备的专业知识、技能、能力有哪些?已经写过的代码量是多少?描述你做的最复杂的项目/作业。
    具备一些软工的基本素养c语言、算法、数据结构、独立思考、解决问题题的能力,技能方面前端的有 html5/css3、 js、 react、webpack...,后端有nodejs,springboot...,代码量的话我数不清,反正也不少,目前做过两个较复杂的项目,一个开源的商城后台管理系统react+springboot,还有一个帮老师做的一个外包修井系统,我主要负责前端开发

  • 离成为一个合格的本科毕业生,在专业知识、技能、能力上还差距哪些?
    我认为一个合格的毕业生应该具备专业竞争力,最起码能找的到工作,以我现在的水平,准备一下面试应该能找一个一般点的工作,但对我我这种对软件事业有较高追求的还应该具备系统分析、底层探究、工程构建的能力,希望这门课会对我有所帮助

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

  • 对照以上你阅读的前人们的经历,你的选择是什么?
    毫无疑问,工作

  • 在这种选择下,你认为你相比其他同学来说有何优势,有何劣势?
    优势:我身体好,能熬夜 劣势:我头发可能掉得比较快..

  • 针对你的选择,你给自己的大三设定的规划安排是什么?
    整项目、搭基础、备面试

  • 你对于实现自己的梦想已经做了或者计划做什么样的准备?
    准备了一些有用的书籍:《颈椎病康复指南》、《腰椎间盘突出日常护理》、《如何让头发重生》..

3.提有质量的问题

  • 书中讲了好多与测试有关的问题,测试需要花费大量时间并且需要专门的人负责,我的问题是为什么不让软件开发人员完成测试呢,这样既节约了时间又节约了人力

  • 书中将全栈工程师比作“街头卖艺的单人乐队”,并将全栈描述为“啥都不精通”,对此我不大认同,我认为现在企业需要的更多是‘’T‘’型人才,而不是“ | ”型,比如前端工程师必须懂点后端,后端工程师必须懂点前端,这样前后端才能高质量地协同开发

  • 书中将软件开发流程时提到渐进式交付的流程,方法是先快速开发一个可用版本,然后在此基础上不断迭代,但是通常一个软件的各个组成部分是相互依赖的,如果不考虑整体只开发部分功能的话,后面迭代的时候很可能会改动之前做好的模块,这样不符合软件设计的开闭性,我想问如何快速开发一个版本同时又能保证软件的可迭代性呢?

  • git协同多(上百人)开发的基本流程是什么?

  • 书中说到过早优化是一切罪恶的根源,一个好的软件工程师在开发时首先会对整个系统架构有一定了解,开发时就想出最优方案,相反低级程序员拿到项目就忙着开发,后面出现一堆问题,只好返工,我觉得开发时在可控范围内的优化是有必要的

4.了解和调查源程序版本管理工具

git

  • 优点:
  1. 适合分布式开发,强调个体;

  2. 公共的服务器压力和数量都不会太大;

  3. 速度快, 成熟的架构,开发灵活;

  4. 任意两个开发者之间可以很容易的解决冲突;

  5. 离线工作,管理代码成本低,不需要依赖服务器;

  6. 部署方便。基本上下个命令就可以用;

  7. 良好的分支机制,可以让主干代码保持干净。

  • 缺点:
  1. 资料少,学习成本比较大,学习周期比较长,要求人员素质比较高;
  2. 不符合常规思维;
  3. 代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。

github

GitHub是一个基于网站和云的服务,可以帮助开发人员存储和管理他们的代码,以及跟踪和控制对代码的更改。

svn

  • 优点:
  1. 采用集中式,易于管理,保证安全性;

  2. 管理方便,逻辑明确,理念符合常规思维;

  3. 代码的一致性高;

  4. 适合人数不多的项目开发;

  5. 允许一个文件有任意多的可命名属性,会关注所有的文件类型;

  6. 支持二进制文件,更容易处理大文件;

  7. 支持空目录。

  • 缺点:
  1. 服务器压力太大,数据库容量暴增;

  2. 必须连接在服务器上,否则基本不能工作、提交、对比、还原等;

  3. 不适合开源开发。

posted @ 2019-09-11 18:47  humblezx  阅读(179)  评论(1编辑  收藏  举报