速读《构建之法(第三版)》 20199319

本周速读了《构建之法(第三版)》,本书共有十七个章节(如下图所示),介绍了软件工程的方方面面,干货满满。在速读完成后我思考了以下几个问题。

1、目前流行的几种源程序版本管理软件和项目管理软件各有什么优缺点?

  • Microsoft TFS
    微软的团队代码管理服务平台Team Foundation(通常记作“TFS”)是一种为 Microsoft产品提供源代码管理、数据收集、报告和项目跟踪,而为协作软件开发的项目。

    • 优点:TFS功能非常强大。微软对于个人或小团队推出了免费的TFS Express版,功能齐全,主要提供如下功能:源代码管理、工作项跟踪、自动化生成、敏捷任务版。
    • 缺点:搭建、维护TFS比较复杂,硬件要求也比较高。个人用起来一般也就主要用其源码管理功能。
  • Github
    GitHub是基于git实现的代码托管。git可能是目前最好用的版本控制系统了,非常受欢迎。

    • 优点:GitHub可以免费使用,并且快速稳定。 适合分布式开发,强调个体;任意两个开发者之间可以很容易的解决冲突;离线工作,管理代码成本低,不需要依赖服务器;部署方便,基本上下个命令就可以用;良好的分支机制,可以让主干代码保持干净。Git对程序源代码进行差异化的版本管理,代码库占极少的空间。易于代码的分支化管理。
    • 缺点:代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。不支持中文,图形界面支持差,使用难度大。
  • Trac:
    Trac是一个为软件开发项目需要而集成了Wiki和问题跟踪管理系统的应用平台,是一个开源软件应用。

    • 优点:Trac以简单的方式建立了一个软件项目管理的Web应用,以帮助开发人员更好地写出高质量的软件。Trac有良好的扩充性。
    • 缺点:不支持多项目;中文化不完整,不显示中文名,本地化做得不够好;核心功能很少,需要安装很多插件。
  • BUGZILLA:
    Bugzilla 是一个开源的缺陷跟踪系统,它可以管理软件开发中缺陷的提交(new)、修复(resolve)、关闭(close)等整个生命周期。

    • 优点:BUGZILLA不收费,有中文版支持;具有强大的检索功能以及完备的产品分类方案和细致的安全策略;用户界面友好;版本间向下兼容。
    • 缺点:BUGZILLA只能管理缺陷。
  • Apple XCode:
    Xcode是苹果公司向开发人员提供的集成开发环境(非开源),用于开发Mac OS X、iOS的应用程序。

    • 优点: 编译速度极快,操作起来比较快速和轻松; 支持开发人员使用 C、C++、AppleScript 和 Java等多种语言。
    • 缺点:更新版本后,某个插件可能会失效。

2、Coder and Hacker 的区别:

  • Coder:写程序的人
      这种类型的人单纯的只是为了工作、功课、任务而写程序,写程序对他们来说枯燥无味只是获取成绩、金钱的工具,但为了生活,他们继续产出他们的程序码。他们每天的任务只是把事情做到交差了事,他们喜欢简单的任务,最好是一看到就知道要怎么做,最好有开源的程序码可以直接套用,只要他们的程序可以过关。
  • Hacker:有目标而写程序的人
      这种类型的人并不是因为热爱程序本身而开始写程序,他们写程序是为了要达成某些目的。这些人虽然不是天生的程序高手,但是很会用别人写好的套件去兜出一些应用,当有一个好的点子时,他们会去找既有的资源架构,尝试做出原型,并且乐在其中,常常会不眠不休的写程序。他们不会因为一项新产品做起来简单、轻松,工作负担轻而开心 (Coder 会),他们会因为这些东西好用、创新而兴奋不已。

3、 软件开发是一门工程(Engineering), 是一门艺术(Art),还是一门手艺(Craftmanship)?

感觉这是一个各抒己见没有定论的问题。做软件更多是成熟的技术,通用的平台,可控的流程,可预期的结果,从这个角度看本质上是一门工程。但是资深码农经常是以一当十,因为他们在追寻一种工匠精神,经验的积累来自于日复一日不断地读改写思考讨论及领悟,一次次的debug,code review,prototype design等等都在潜移默化地提升着他们思维能力,所以软件开发又像是一门艺术。而对于开发者这又是他们生存的一门手艺。

4、团队模式和团队的开发模式有什么关系?

  • 团队模式是团队内的人如何分工,每个人的职责是什么,软件团队有各种形式,适用于不同的人员和需求。
  • 团队的开发模式是团队如何工作,什么时间应该干什么,一群人在一起做软件开发,总是要有一些方式方法。

这两个应该是相辅相成的,需要思考在项目面前使用哪种团队开发模式,而团队模式更像是一个确定了就一般不会改变的东西,所以需要结合团队内成员的特点来规划确定。

5、如何避免诧异的反应?

当客户对我们的软件不了解的时候我们需要尽量详细的给用户分析说明,而且我们在设计软件的时候也尽量的要考虑用户的感受,从用户的角度去考虑问题。给用户演示一些界面的时候,要说明哪些界面只是示例而已,哪些界面是大家同意的最终设计,总之要尽最大努力达成一致,但是也要从开发的实际情况出发,有事也要对用户说不。

6、如果在团队中有些人经常花很多时间进行“技术研讨”但并没有具体结果或报告,这些人对团队的产品开发和公司的业绩真的有贡献么?

这个问题不能一概而论,要看这些人的技术研讨是否真的是有价值的。如果他在技术研讨中提出的想法给其他人带来了帮助或者激发了新的idea,那么他在无形之中也为团队的产品开发和公司的业绩作出了贡献。如果只是一味的在形式上进行所谓的“技术研讨”,这样不算是作出了贡献。

除此之外还存在两个需要跟大家讨论的问题:

  • 当公司要求你用数据来证明41种蓝色到底哪一种更好,或者为一条边框宽度是3、4或5个像素而争执不休,纷纷表示要拿数据来证明时,你怎么办?
  • 对通用的软件设计思想和软件工程思想的理解这一方面就比较虚,什么是好的软件设计思想?什么是好的软件工程思想?一个工程师开了博客, 转发了很多别人的文章,这算有思想么?另一个工程师坚持做任何设计都要画UML图, 这算有思想么?

原文地址:https://www.cnblogs.com/fanxiaonan/p/11735592.html

时间: 2024-10-08 17:01:36

速读《构建之法(第三版)》 20199319的相关文章

一组阶段小记之读构建之法(三)

这周是本学期中的第10周,我们可以复习期中学习的内容,有些同学或多或少结束了几门选修课程,完成了体育测试 ,大家渐渐应该开始有更多的时间学习构建之法: 前几周我们对于构建之法这本书有了粗略的了解,比如:日后编程的工作,大都是多人合作写软件,那么有好的代码风格相当重要,这本书详细介绍了什么是好的代码风格,这让我有  了改进的方向日后工作,不再是自己写代码玩,而是要最大程度的满足顾客的需求.这本书详细讲述了如何获得顾客真正的需求,在做软件的同时要不断检验是否偏离了需求等等:书上的内容开始渐渐有了深度

阅读《构建之法(第三版)》提出的问题

通过两周的时间,我大致看完了<构建之法>,对此提出以下几点问题: 1.在第二章个人开发流程中对比了大学生和工程师分别完成项目的各个阶段所花时间的占比,得出现象工程师在“需求分析”和“测试”这两方面花的时间明显比大学生高,而在具体编码的时间却更少,从而得出结论:从学生到职业程序员,并不是更加没完没了地写程序——花在写代码的时间反而少了许多. 提出问题:我认为从学生到职业程序员,随着编程能力的提升,职业程序员在写具体代码中能更加轻松的实现,但是大学生由于各项能力的不足,花的时间明显更多.我认为这样

读构建之法 第三章:软件工程师的成长

本章理论和知识点:评价软件工程师水平的主要方法 软件工程把相关的技术和过程统一到一个体系中,叫"软件开发流程",软件开发流程的目的是为了提高软件开发.运营.维护的效率,以及提升用户满意度.软件的可靠性和可维护性. 软件开发流程不光指团队的流程,还包括个人开发流程,因为软件团队是由个人组成的.个人在团队中也有独立的流程.把每个人的工作有序地组织起来,就是团队的流程."有序",并不是"无争论".在大部分成功的软件团队模型中,各个角色有不同意见的冲突在

第五次作业《读构建之法的心得》

<读构建之法的体会> <构建之法>这本书是软件大大神邹欣的作品之一,这本书体现邹欣老师的情怀,很简洁的讲述了软件设计的各个阶段,描述了一个微软软件大神对软件的理解.构建之法对我帮助挺大的,通过构建之法这本书使我对软件的构建很清晰的了解,让我对软件设计更加的清晰的认识,增加了我对软件的认识的兴趣,好了,现在来讲述讲述里面的内容,第一张讲概论:软件等于程序加文档,软件工程是什么,第二章讲 个人技术和流程 单元测试,效能分析工具,个人开发流程第三章讲软件工程师的成长 个人能力的衡量与发展

读构建之法之感

读构建之法之感,为什么迟迟没有发构建之法这本书的观后感,是因为想要细细的看,为什么老师这么要求我们这么做,为什么要刻意的去发微博,原因都在构建之法的这本书中.构建之法这本书和其它的软件工程的书不同,构建之法这本书讲的清晰有趣,容易理解,不像其它的软件工程的书籍,写的那么的枯燥和乏味,构建之法的每章都有很大的联系,让人逐渐的去深刻的理解.通过构建之法理解并懂得什么是软件工程,软件工程是系统的,有序的,可量化的方法应用到软件的开发,运营和维护中去.希望通过自己的努力以及软件工程的课能够让自己有一个小

构建之法第三章读书心得

在构建之法第三章中,我们主要学习了个人能力的衡量与发展. 初级软件工程师有以下几个成长阶段:1.积累软件开发相关的知识,提升技术技能. 2.积累问题领域的知识和经验. 3.对通用的软件设计思想和软件工程思想的理解 4.提升职业技能 5.实际成果 软件开发的工作量和质量你的衡量标准:1.项目.任务有多大? 2.花了多少时间? 3.质量如何?交付的代码中有多少缺陷?

对读构建之法后提出的五个问题

读构建之法有以下几点疑惑: 1.如何使自己的开发思维更加敏捷? 2.如何分配好团队里面成员的任务,来达到最好的工作效率? 3.当面临用户的需求和优化后的软件起冲突时,用户的需求一定是最重要的吗?那么用户根本不了解优化的软件的好处,一定强制要求修改怎么办? 4.如何使自己的产品在市场上占有绝对的优势? 5.什么样的软件开发团队要开发什么样的软件才适合敏捷流程?

构建之法-第三周

构建之法第三章-软件工程师的成长 本章主要的理论和知识点是评价软件工程师水平的主要方法.技能的反面以及TSP对个人的要求. 首先,不同的数据能够从不同方面一个展示软件工程师的技术和能力,例如,通过完成时间平均值的比较,两位工程师或许能决出完成效率的高下,但通过比较方差则又能体现出的两位工程师的工作稳定性. 作为一个初级软件工程师,我们可以关注的成长有一下几个方面: 1.积累软件开发相关的知识,提升技术技能: 2.积累问题领域的知识和经验: 3.对通用的软件设计思想和软件工程思想的理解: 4.提升

第五次软件测试作业 读构建之法有感

之前没有什么认真的看完构建之法这本书,最近用了一星期的时间紧赶慢赶的认真的把书看完了,越看越起劲,后悔之前怎么没有早看着一本书,看了邹欣老师写的构建之法,感觉和读其它软件技术方面的书感觉截然不同,邹欣老师的构建之法想要告诉我们的是一种第一线的编程思想,比起平常所学的技术感觉起来更富有实用性,他用了程序员的第一视角来告诉我们软件编程者一思想,从第一章概论的软件工程是什么开始,就给予人一种引人入胜的感觉,给程序员一种深深的代入感,书中不仅有丰富的代码示例,还采用了一种一问一答的方式来解答问题,我想邹

我的第二次(四则运算、构建之法、三个软件)

一.代码的coding地址:https://coding.net/u/xuchunxiao119/p/homework_count/git#user-content-homeworkcount 二.<构建之法>读后问题以及感言: 1. 对于7.3MSF团队模型,7.2.6保持敏捷,预期和适应变化,中的"我们是预期变化,不是期望变化"我们如何让自己的软件处于不断的变化之中?换言之,我们如果推出了一款软件之后,如何给软件预留足够的更新空间,这些空间的具体位置我们如何得知呢? 2