过去了5年了,现在再来回顾当初做的持续集成实践似乎有些晚了,我的确脱离开发太久了。
暴经历:
09年公司刚开使推行持续集成时,我作为刚接触IPD流程不久的小白,对持续集成一无所知;同时作为组内的急先锋匆匆忙忙就上阵了。等到10年底持续集成即将在全公司推广的时候,我却离开了,可谓虎头蛇尾。
==============================
这里谈不足,主要是回顾持续集成实践一年多的时间里,我所做的工作的不足。
公司所用CI工具是CruiseControl的二次开发版本,基于ant做build。而此时我们的java 项目还是依赖于eclipse的手工归档(这里不得不吐槽:先编译成class,手工统计更改的 java 类,再手工把对应的class用rar拖入上一版的jar包,土到家了)。
首先要面临的问题:如何自动打包归档。
当时还是太保守了,本着线上安全大于一切的原则,将之前的手工操作,用shell+ant来代替。 因为项目不是处于时刻能发布的状态,给后面的集成测试环境自动部署带来不小麻烦。 当时实际应该协调测试部进行全量测试后,一次性的解决“随时可发布”问题,一个人搞,在协调工作和沟通工作没有做到位。
接下来是代码规范和bug清零:findbug清零,checkstyle检查和pmd的圈复杂度。
由于自动UT的缺失,在bug清零和降低圈复杂度上推进很困难,原因就在于:无法确定修改代码的正确性,pmd的圈复杂度始终降不下来。
最困难的是UT:代码覆盖率
除新代码的UT用例外,还要补充老代码的UT,还要不影响项目进度。大大增加了开发人员的工作量,在合作团队里造成一些抵触。还有老代码很少考虑测试性,与DB ,第三方耦合过紧。当时相当于放弃了UT测试(不再测试方法),而直接针对业务流程的正确性做UT。 这样的好处是少量的测试代码能显注的提高代码覆盖率,但却失去了UT的本义。当时是有些急功近利了(CI报告好看)。
当时的感觉是“一个人在战斗”,与公司其它CI负责人的交流很少。自已的沟通能力不足是一方面,另一方面公司缺少这种跨部门交流的氛围。我觉得应该是考核导向的原因,持续集成各项指标达标以后,关注CI的精力大大减少了。虽然QA保持每月对CI报告进行通报,但稳定的CI报告下面究竟隐藏着多少问题呢?
与持续集成相符相成的敏捷开发,在我看来一直都流于开晨会这种形式,无法真正敏捷起来(缺少持续集成的保护),很失败。抛开缺少敏捷基因的原因,我觉得和项目环境关系很大。
首先电信项目,是传统的甲方乙方这种的IT外包项目。项目从实施到开发都没有敏捷的动力:客户追求的是稳定,项目组追求的是低成本。对于只增加工作量,不增加效益的工作天生就是抵触的。这种抵触情绪会传遍整个项目组,本身外包团队就缺少技术氛围,这下使得团队更加的拒绝变化。这一特点在回到河南(客户第一线)来以后更是明显:成员(包括我)本能的通过裁剪开发流程(丢弃开发规范)来适应快速变化,而不是提高开发效率,基本上和一些小公司作坊式的开发一样,没有规范,没有文档,更没有持续集成,客户也习惯了这种方式。 使刚从总部回来的我,有些不适应。
相关推荐
接下来,系统集成实践中的几点重要心得: 1. **CI(持续集成)与过程及敏捷开发**:CI是敏捷编程中的关键实践,确保每个迭代的交付件都经过完整集成和测试,以保证质量。CI的引入改变了开发流程,要求开发人员频繁...
徐毅在演讲中也提到了如何扩大影响力,比如鼓励开放式沟通、建设专业的团队、推动持续集成和ATDD等实践,并成为社区的积极分子。这些都是敏捷教练可以采取的步骤,来推动敏捷在组织内的传播和实践。 10. 知识共享和...
综上所述,半导体行业正经历着从集成电路到集成系统的转型,这一转型不仅需要技术创新,更需要产业链各环节的紧密协作和工程师素质的全面提升。蒋尚义的观点为我们提供了一个清晰的发展方向和行动指南,让我们能够更...
在与同学们的比较中,我看到了自己在实践操作上的不足,也感受到了他们持续学习的热情。这段经历促使我认识到,实践是检验真理的唯一标准,我必须不断实践,将理论知识转化为实际技能。 实习经历如同一面镜子,照见...
在现代社会,软件工程不仅是技术的实现,更是一个多元化、全方位的职业角色,它要求从业者的技能...我相信,通过不断的学习和实践,每位软件工程师都能实现自身技术与职业素养的全面发展,为公司的持续发展贡献力量。
随着社会经济的快速发展和科技水平的不断提升,医疗行业也在经历着前所未有的变革。信息化技术作为推动医疗行业进步的重要力量,正逐渐从传统的集成平台向大数据应用的广阔领域跃迁。《2018 医院信息化建设报告-从...
同时,我也重点关注了持续集成和自动化测试的实践,通过引入Jenkins、GitLab CI等工具,使得项目的质量得到保障,开发流程更为高效和流畅。 项目管理是软件工程中不可或缺的一部分,而在管理过程中,有效的测量和...
- **持续集成/持续部署(CI/CD)**:自动化软件构建、测试和部署过程。 - **维护策略**: - 纠正性维护:修复已发现的问题。 - 完善性维护:增加新功能或改进现有功能。 - 预防性维护:改进软件结构,提高未来可...
3. **成功销售人员的三个境界**:从业余到专业,成功的销售人员需经历从理解基本技能到熟练运用,再到掌握复杂策略的转变。 4. **八大核心销售技能**: - **基本拜访步骤**:预习、检查分销、劝说销售、收款、助销...
本课程设计个人工作总结,旨在回顾和总结在过去的实践教学环节中所获得的宝贵经验,以及对个人综合素质的提升进行反思。 在课程设计的过程中,首先对学生进行系统性训练的是文档撰写和项目管理的能力。通过为期10天...
我学习了如何编写脚本,执行回归测试,并通过持续集成工具如Jenkins实现自动化测试流程。 五、缺陷管理与跟踪 当发现软件缺陷时,我们会使用Bugzilla或Jira等工具记录、分类和追踪。了解如何准确描述问题,设置...
展望未来,我计划在接下来的时间里继续深化SpringSecurity的集成工作,并致力于OA系统的开发。同时,我也希望继续维持xx家政网络服务中心的稳定运行,并计划拓展更多地区的服务中心。我还将持续关注新技术动态,不断...
然而,日语课成了我的难题,语言天赋的缺乏和记忆力的不足使我在日语学习上遭遇挑战,但我仍然尽力去学习,特别是喜欢日语教师的授课风格。 随着培训的结束,我们进入了项目实施阶段,包括需求分析、概要设计、具体...
在过去的几年中,我与多家初创公司合作,我亲身经历并亲眼目睹了实践(或缺乏实践)如何影响团队的情感幸福感。 因此,本着乔尔·斯波斯基(Joel Spolsky)测试的精神,我提出了自己的高度认可的清单,以建立...
刘雄昌首先进行了自我介绍,回顾了自己的职业经历,他从一名普通的发布工程师,到担任天猫双11狂欢夜的技术架构师,积累了丰富的经验。正是这些经验使他成为了此次天猫DevOps转型的核心人物。 转型的开始是从组建一...
我学会了使用Git进行版本控制,以及Jenkins进行持续集成,这些工具对于软件开发的效率提升有着显著作用。 在实习期间,我还接触了数据分析和机器学习。使用Python的Pandas库处理数据,运用Matplotlib和Seaborn进行...