10x 程序员工作法
郑晔
火币网首席架构师,前 ThoughtWorks 首席咨询师 ,TGO 鲲鹏会会员
52720 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 61 讲
思考框架 (1讲)
10x 程序员工作法
15
15
1.0x
00:00/00:00
登录|注册

05 | 持续集成:集成本身就是写代码的一个环节

你好,我是郑晔。
上一讲我们探讨了需求的“完成”,你现在知道如何去界定一个需求是否算做完了,这要看它是不是能够满足验收标准,如果没有验收标准,就要先制定验收标准。这一点,对于每一个程序员来说都至关重要。
在今天这一讲中,我们假设需求的验收标准已经制定清楚,接下来作为一个优秀的程序员,你就要撸起袖子准备开始写代码了。
不过在这里,我要问你一个问题:“是不是写完代码,工作就算完成了呢?”你或许会疑惑,难道不是这样吗?那我再问你:“代码是技术团队的交付物吗?”
你是不是发现什么不对劲了。没有人需要这堆文本,人们真正需要的是一个可运行的软件。写代码是程序员的职责,但我们更有义务交付一个可运行的软件。
交付一个可运行的软件,通常不是靠程序员个体奋战就能完成的,它是开发团队协作的结果。我们大多数人都工作在一个团队中,那我们写的代码是不是能够自然而然地就和其他人的代码配合到一起呢?显然没那么简单。
如果想将每个程序员编写的代码很好地组合在一起,我们就必须做一件事:集成。
但是集成这件事情,该谁做,该怎么做呢?我不知道你有没有思考过这个问题。在开始这个话题之前,我先给你讲个故事。

集成之“灾”

2009 年,我在一个大公司做咨询。对接合作的部门里有很多个小组,正在共同研发一个项目。他们工作流程是,先开发一个月,等到开发阶段告一段落,大项目经理再把各个小组最精锐成员调到一起开始集成。对他们来说,集成是一件大事,难度很大,所以要聚集精英来做。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《10x 程序员工作法》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(55)

  • 最新
  • 精选
  • Scott
    曾经参与过一个项目,中美印三地开发,开发测试产品加起来可能过百吧。当时,我们中国团队做过一个这样的工具,每次在git-review上提交/更新review时,自动构建一个当前branch是最新版,打上review的patch,然后构建,跑UT,UT覆盖率在95%再向下走。 做到这一步,其实不算什么,但是已经超过国内80%的同行水平了。然后我们还会构建一个虚拟机镜像安装这个build,安装好了在专门的虚拟测试网络上启起来,利用自动测试工具跑一些基本的case,比如登陆啊,基本的操作啊,这一系列跑完,才可以正式的让人review。 这个项目因为一些方向性和市场的问题,一年多就失败了,项目组解散。但是集成水平,的确是我经历过的最高的。

    作者回复: 确实做得不错!项目失败和实践之间是不能划等号的,不能因为项目失败就否认实践的优秀。

    5
    76
  • 捞鱼的搬砖奇
    关于代码提交的问题,举例子是公司要求每日提交,如果一个功能没做好也要提交?还是说只要没有编译问题,即使未完成也得提交?

    作者回复: 好问题,你对提交的理解说明任务分解做得不够,不能小步提交,这是在任务分解模块要讲的内容,敬请期待。

    2
    23
  • 虢國技醬
    打卡: 目前我们团队借助git-flow,以git的分支 feature、release、hotfix和里程碑tag进行持续集成和构建; release 出发测试环境构建、tag出发生产环境部署

    作者回复: 我最喜欢的分支模型是,没有feature分支的git flow。

    4
    19
  • pyhhou
    公司一部分人在美国这边做开发,另一部分在台湾做开发,每到集成,想到的头疼的问题第一个就是时差问题,一般的流程就是他们那边发现了问题邮件发给我们,我们看一下感觉好像不是这边的问题,给些解释和建议又邮件抛回去,感觉这种情况可能需要就是一方的负责人得牺牲一下自己的私人时间,积极开会沟通?持续集成必须合作的所有teams都同意,或是都有这样的意识才行,不然光靠一方的努力感觉弄不起来,不知老师如何看?

    作者回复: 不仅仅是持续集成,任何涉及到协作的实践都需要协作相关方的共同配合才可能有效落地。 如果大家都觉得工作起来很辛苦,其中肯定有不对的地方,需要坐下来,一起商量解决方案。我在专栏中给大家提供的就是你坐下来可以提出的建议,比如,持续集成,验收标准等等。

    2
    11
  • 张简祺瑞
    持续集成不是很普通的事?

    作者回复: 你有这种感觉,说明你所在的公司做得不错,但行业中还有大量需要提高的公司。

    2
    10
  • zhengfc
    老师,您好;最近在做流程方面的重新梳理和实践,发现有个问题:比如产品那边起初是5个功能上线,后来由于某些原因或者市场原因临时砍掉一个一个功能,而这功能按持续集成每日构建的思路代码肯定是合掉了,这就产生代码回退和重新集成的问题,这个痛点有什么好的方案吗

    作者回复: 在“任务分解”模块的答疑中,我介绍了 Feature Toggle,你可以了解一下。 这里面的关键点在于,你的代码模块需要划分清楚,这样无论是使用 Feature Toggle,还是调整代码,都有足够的空间去操作。

    5
  • 猿工匠
    开发完成的定义:集成为可运行的软件 开发模式:持续集成,尽早构建 git 版本工具,Jenkins 持续构建

    作者回复: 很好的总结

    4
  • Jerry Wu
    老师,对于集成,我基本没有认识,这方面有体系化的课程吗? 我一直在小公司工作,是非常原始的状态,没什么协同可言。我作为后端工程师,要包揽大部分工作,确认需求、写代码、测试、上线、维护。遇上紧急的项目,就感到压力山大。 之前试过分摊工作给其他人,但最终的代码却漏洞百出,反而拖慢了进度。团队也一直做不大,像是个小作坊。 看完这节课,我在想,持续集成说不定能提高团队的协作,扩大团队规模。 老师,您能给些建议吗?

    作者回复: 你可以先看看总复习中关于最佳实践的一节,从中把专栏里关于持续集成的内容找出来,一起读一下,形成一个完整的认识。 极客时间里也有持续交付的专栏,可以去了解,网上也有非常多的相关文章可以去看一下。

    3
  • 春之绿野
    有一次为了改进我们的代码,新拉了个分支出来,在开发的过程中,新的功能要在新老两个分支上做两遍,最后合并的时候还要梳理一遍有没有只做在老的分支上的功能,还有个稍微大点的功能是国外的同事开发在老的分支上的,合并过来,太痛苦了

    作者回复: 我一直认为,大分支就是给自己找麻烦。后面还有关于分支的讨论。

    3
  • 彭薄
    我们公司是单独一个在现在教育网站,只有UI、后端和我一个前端,后端包揽了大部分事情,我每次写代码是Git下拉代码,然后修改,修改后上传,都结束后合并到主分支,通知后端上线。请问老师这算是每日构建持续集成吗?如果不算我们公司这种情况应该怎么样才算?

    作者回复: 这种情况是最原始的开发状态,什么都没有。

    2
    3
收起评论
显示
设置
留言
55
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部