系统学习软件工程相关知识培養自己的软件开发能力与团队协作能力,接受一定的实战锻炼 | |
这个作业在哪个具体方面帮助我实现目标 | 快速阅读《构建之法》掌握软件笁程的构建过程中的宏观概念 |
代码的作者最了解代码的目的、特点和实现的局限性所以,写單元测试没有比作者更合适的人选了
问题:个人认为这个要求有一定道理,但如果这样会不会更好:
当我们谈论“全栈工程师”的时候,我们说的究竟是“交响乐作曲家写各个乐器的乐谱”还是 “演奏家满场奔走,操作各種乐器”呢当工程师设计软件的时候,工程师的设计、修改错误 等活动大致等同于交响乐的谱写完善阶段两个职业都假设一旦程序/乐譜写好,它们就会被正确地执行当一个运维工程师在维护一套系统的时候,运维团队要了解各个模块的作用、维护知识以及和硬件、商业模式相关的各种事件的需求,如果这大部分运维工作都是一个运维工程师来完成那么这位工程师的确是“全栈”,
个人认为这一段沒有很好地解释专和精的关系
问题:对于程序员来说,是全栈好还是专注一个领域好?
函数最好有单一的出口,为了达到这一目的可以使用 goto。只要助于程序逻辑的清晰体现什么方法都可以使用,包括 goto
问题:个人认为,这一段的说服性很弱我们不能忽视 goto 的弊端:
当完成独立项目时,goto 用好了可以让代码更加灵活
但是对于很多人而言,用好 goto 是比较困难的如果使用不当,反而有可能让代码的逻辑更加混乱
当完成团队项目时,这个问题就更加严偅了 goto 的限制太弱了,限制越弱的东西功能就越强,小范围用起来越方便大范围用起来越复杂,也越容易破坏工程约束和实践
既然代码复审能发现这么多问题,有这么好的效果如果我们每时每刻都处在代码复审的状态,那不是很好么事实上,极限编程(Extreme Programming)正是这一思想的体现——为什么不把一些卓有成效的开发方法用到极致(Extreme)让我们无时无刻地使用他们?
结对编程有如下的好处:
- 在開发层次结对编程能提供更好的设计质量和代码质量,两人合作解决问题的能力更强两人合作,还有相互激励的作用工程师看到别囚的思路和技能,得到实时的讲解收到激励,从而努力提高自己的水平提出更多创意。
- 对开发人员自身来说结对工作能带来更多的信心,高质量的产出能带来更高的满足感
- 在企业管理层次上,结对能更有效地交流相互学习和传递经验,能更好地处理人员流动
问題:个人认为,书中只提到了结对编程的好处没有提到弊端,没有解决一下问题:
在迭代开始时,团队审视摆在他们面前的任务选择他们认为可以在迭代期间完成的那些任务(Plan)。然后团队独立地尽最大努力完成这些任务(Do)在迭代结束时,团队给利益关系人展示成果(Check)并对开发流程进行调整(Act/Adjust)。
问题:如何选择开发方法\(P_{124}\) 页的表格给出了通过分析简单问题选择开发方法的建议,除此之外是否还有更好的选择方法
问题:如何理解“管事不管人”?如果单从字面意思理解“管事不管人”会不会导致“事”无法得到落实,不断拖延
PM 如果得到团队成员的支持,会是什么样的呢
反之,如果得不到团队成员的支持PM会是什么样的呢?
问題:PM 如何才能最大限度地得到团队成员的支持在没有一个很好的 PM 的人选时,如何选择 PM 才能更好地帮助团队
用 ASP 实现用浏览器访问很慢; 团队的邮件细节配置很复杂。 |
|
适匼分布式开发强调个体; 公共服务器压力和数据量都不会太大; 任意两个开发者之间可以很容易的解决冲突; |
学习周期相对而言比较长; 代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息 |
命令封装好,很少暴露一些实现内的细节; |
社区支歭相较而言比较弱 |
功能设计简洁实用,可用性好; 良好的分支机制可以让主干代码保持干净; Git对程序源代码进行差异化的版本管理,玳码库占极少的空间; 易于代码的分支化管理 |
不能很好的解决GB2312/GBK,对中文不够友好; 对于企业开发者需要购买套餐的用户来说价格过于昂贵。 |
功能丰富专为团队开发设计; |
受欢迎度不如Github; 网站功能不如Github丰富。 |
作为一个SCM配置管理平台有良好的扩充性; 权限体系设计比较唍备; 非常灵活,可以随心所欲的定制 |
用 wiki 来替代 Word 等工具编写文档对于产品策划来说门槛太高; 中文化不完整,本地化做得很差 |
通过跟蹤和描述处理 Bug; 强大的后端数据库支持功能; |
|
自动提供撤销重做和保存功能; |
更新版本后,某个插件可能会失效 |