Task1:注册个人博客账号

我的博客园地址:https://www.cnblogs.com/jmugt/

Task2:注册码云账号

我的码云地址:https://gitee.com/GTAlluka

Task3:通读《构建之法》后提出问题

豆瓣地址:https://book.douban.com/annotation/61352244/

阅读本书较为仓促,提出的问题可能比较浅显,也可能答案就在书中而被我忽略,见谅。

问题一:在一个项目、一个程序比较复杂的情况下,如何高效率的进行 程序理解

本书第一张概论(第3页),提到一个名词——程序理解(Program Comprehension)。

软件团队的人员也会流动,新的成员要尽快读懂已有的程序,了解程序的设计,这叫做程序理解。

这个问题是我在暑期实习时体会到的。在接受前团队成员留下的一个较为复杂的项目时,需要从多角度理解项目内容,例如系统业务流程、各模块功能、实现功能的代码等。需要理解的内容不仅仅是代码部分,往往需要从产品原型开始理解。在代码风格不同,注释比较少的情况下,如何高效率地完成程序理解呢?

问题二:初级软件工程师成长,掌握的领域和方面越多越好?还是精通某一方面比较好?

初级软件工程师如何成长呢?我认为有下面几种成长。

  1. 积累软件开发相关的知识,提升技术技能(如对具体技术的掌握,动手能力)。例如:对java、c/c++、c#的掌握,诊断/提高效能的技术,对设备驱动程序(Device Driver)、内核调试器(Kernel Debugger)的掌握;对于某一开发平台的掌握。
  2. 积累问题领域的知识和经验.......

从第一点来看,对于一个软件工程师来说,掌握的语言越多越好。我个人从多方获取到的经验,主要有以下两种观点:

  1. 作为一名后端开发,需要掌握尽可能多的语言。
  2. 一招鲜吃遍天,学习编程重要的是精通某一门语言。

我认为,初学编程时,应当先精通一门语言,着重学习编程思想、数据结构、算法等。等打下一定基础后再学习其他语言,扩展自己的语言库。我想听听,老师是如何看待上面两种观点?

问题三:团队模式中,技术管理这一角色的定位?

在第五章 团队和流程中,举例提到了以下几种软件团队模式(书本p97-101)

  1. 主治医师模式
  2. 明星模式
  3. 社区模式
    ......
  4. 交响乐团模式
    ......
  5. 功能团队模式

我曾在tiny老师的文章中了解到了技术管理这一角色。技术管理首先应当熟知甚至精通软件开发的技术和流程,其次但非常重要的是,他是一位管理者,有能力联结团队中掌握不同技术的人,能够安排合理有效的任务。在邹老师的这本书中,我认为和技术管理比较相似的角色是交响乐团模式中的指挥,但这一模式趋于稳定,各部件都比较成熟,沟通交流全看指挥,各部件交流较少。但就我了解到的情况来说,新生团队也是非常需要技术管理的,然而新生团队不够成熟,需要更多的交流,不能只靠技术管理一人进行安排,从这一角度来说,技术管理又不同于交响乐团指挥。同样的,技术管理也不同于第九章介绍到的项目经理。我个人更倾向于,在功能团队模式中,增加一个技术管理的角色,熟知开发流程和技术,能够合理安排各部分的任务,同时促进各功能模块的相互沟通交流,这样无论是在大的成熟的团队,或是在新生团队中,都能够适用。我想请教一下老师或是助教,如何看待技术管理这一角色?与书中的哪一模式中的角色更接近?

问题四: 关于优化

我对于程序性能优化比较感兴趣,但本书对于优化的内容似乎提及不多。粗略阅读之下,只在第三章的软件工程师误区中提到了过早优化的弊端。考虑到优化内容在本书的比重,我认为,性能优化不影响一个工程的全局开发,在开发阶段,最重要的是把功能实现,将一个项目的全貌展现出来。但我仍然有以下疑问:优化在软件工程中处于什么样的地位?应当在什么阶段进行优化?

问题五:好的用户体验和产品质量是如何产生冲突的?

本书第十二章 p269页中提到

好的用户体验是所有人都想要的,如果它和产品质量有冲突,怎么办

但我对这句话着实难以理解,高质量的产品无疑具有较高的性能和很少的bug,这是对用户体验的一个提升。同时,用户体验也可以作为一个产品质量的评测标准之一。这两者之间我看不出有什么矛盾的地方。就书中举例来说:

对于不需要太高精度的检查,能否牺牲一些成像质量,换取用户的良好体验呢?

这一句话转换了场景,也就是说,在“不需太高精度的检查”这一境况下,需求改变了,即高精度性能在此需求下溢出了,溢出的性能对机器运转来说是一种浪费也是负担,那么将其转换成用户体验,从这一角度来说,并不能说是牺牲了质量换区用户体验,而是质量与用户体验的双重提高。所以我想就这个角度,听听老师的见解。

Task4:Git基本操作练习

完成以下基本要求

  1. 将https://gitee.com/happyfaye/SoftwareEngineering仓库fork到自己的账号下
  2. 将远程仓库clone至本地仓库
  3. 在本地仓库添加学号姓名.txt(例如:201621123000happy.txt),并提交至远程仓库
  4. 在本地修改该文本内容并再次提交
  5. 给出提交历史信息截图

具体实验步骤以及截图

暑期电脑系统重装,git相关配置全部丢失,趁此机会重新复习一遍git 的配置

1. git 基本配置 以及 ssh 链接

1.1 git基本命令

配置user.name 以及 user.email;自动生成ssh公钥,因为第一次配置没有截图,所以这一次提示是否覆盖。具体内容如图

1.2 ssh配置相关

为什么要配置ssh呢?我也不是很清楚。对我而言,ssh连接的最大用途,就是不用重复输入远程仓库的用户和密码。
根据生成的公钥文件地址找到相应文件,复制ssh公钥

打开我的码云,在个人设置中,找到ssh公钥配置,粘贴ssh公钥

添加完成

验证(成功)

2. fork到自己的仓库下

这里忘记截图了,都是在页面赏操作,直接po一个完成以后的图吧。

3. 创建本地仓库以及clone远程仓库

创建本地仓库

clone远程仓库

4.本地添加文件,并提交到远程仓库

本地仓库新建文件及内容

提交文件到本地仓库

push到远程仓库

修改本地文件

再次提交

5. 两次提交的历史记录

 posted on 2018-09-10 02:53  高天0.0  阅读(416)  评论(7编辑  收藏  举报