写点什么

从混乱到完备:我的研发流程之路

作者:SkyFire
  • 2023-03-12
    美国
  • 本文字数:2793 字

    阅读完需:约 9 分钟

第一阶段:快速迭代的自由开发模式

毕业前我曾在一个小工作室实习,那时他们做的产品是类似于淘宝刷单的推广产品。淘宝上的卖家需要推广其产品,因此他们会雇佣淘客来发广告链接,如果有用户通过淘客的链接购买了卖家的产品,淘客就会得到一定比例的佣金。该工作室的目标是开发一个自动化工具来完成这个过程,类似于合法的网络爬虫工具。

在我加入该工作室后,我开始开发这个工具。我一开始使用的是 MFC 进行开发,一切进行得很顺利。但有一天,淘客们登录不上淘宝账户了,发现阿里妈妈的登录页面不再支持 MFC 自带的 web 控件了。为了解决这个问题,我花了两三天的时间用 qt 重写了该工具。

在该工作室开发时,我直接面向客户,客户可以随时提出需求,我随时进行修改,并将修改后的代码通过压缩包发到群里供客户使用。这种快速迭代的开发模式持续了几个月。然而,由于工作室老板未能兑现其承诺,我最终离开了该工作室。

在这个阶段,我的开发需求完全来自于客户,没有中间人。因此,我可以保证开发出来的功能是客户所需的。这也意味着开发人员有很高的自由度,可以自由选择技术和编码风格,无需进行需求分析、概设和详设等步骤,直接进行编码。

第二阶段:不规范的研发流程导致混乱和浪费

毕业后我曾经参与维护一套桌面软件,加入这家软件公司时,发现公司的研发流程非常不规范,这导致了许多问题。开发人员随意使用自己喜欢的 IDE 和工具链,编译工程也错综复杂,各种工具链编译出来的可执行文件混用。更糟糕的是,有些可执行文件甚至已经找不到源码了。

从代码库中拉取代码后,你无法直接编译出可用的应用程序,需要先查看 svn 提交记录,找到最后修改文件的人(如果还在职),口头询问使用的编译器,安装所需的工具链(如果你还没有安装的话),再尝试编译。但即使你成功安装所需的工具链,你还不能保证编译一定能成功。在 VS 项目中,IncludePath 和 LibraryPath 很可能是上一个开发人员电脑的绝对路径,需要修改成相对路径。

即使修改了路径,编译也不能保证成功。因为每个工程的依赖关系不同,比如库链接不对、依赖的动态库有多个版本且使用的工具链不同。问题是还没有版本号,名字也一样,只能靠运气一个个试。有些神奇的工具链问题,如 Visual Studio 2008 没有安装 SP1 会导致一些文件怎么都编译不过,还有 VS 自身的头文件定义有问题,宏定义中多了一些空行。为了能编译通过,我们克服了多少艰难险阻啊!

这些问题的主要原因是研发流程不规范。公司没有制定编码规范或规定使用何种工具链,只要编写的可执行文件可用即可。部分工具代码一直存储在研发人员的个人电脑上,每当有人离职后,个人电脑的硬盘都没有得到清理,以便在找不到工具源代码的情况下尝试运气。这导致了许多不必要的麻烦和浪费时间。

第三阶段:对规范研发流程与提效的重视

在前一家公司工作了三年后,我加入了一家通信软件开发公司。与之前的公司不同,这家公司非常注重研发流程规范和研发效率的提高。在入职后的工作中,我不断努力开发出多个自动化工具和日志分析工具,以期改进和提高公司的研发流程效率,为公司做出贡献。

在新公司中,我深刻地体验到研发流程的规范化和标准化的重要性。每次代码合入都必须经历个人构建、严格的代码评审、单元测试覆盖率、静态检查工具扫描、多级冒烟测试等一系列流程,才能进入主分支。这样的流程可以最大程度地避免代码出现问题,降低了修复成本,大大提高了产品质量和稳定性。

在新公司中,静态检查的重要性也得到了更多的重视。静态检查可以避免运行时出现问题,因为在构建时发现和修复问题,所需的成本更低。因此,在公司的开发过程中,静态检查得到了很大的投入。这样的严格规范流程和工具的使用为研发流程的规范化提供了保障,从而确保代码质量和稳定性,提高了产品的可靠性和用户满意度。

在新公司工作的时间里,我也发现了其他的优点。比如,公司非常注重开发人员的技术培训,定期举办内部技术分享会,让员工们不断地学习和成长。此外,公司内部团队的协作非常高效,每个人都能够在规定的时间内完成自己的任务,并且及时地与其他成员协作,确保整个项目顺利进行。

总结

这三个阶段反映了软件开发过程中规范性的演变。

第一阶段是快速迭代的自由开发模式,是一种较为常见的创业公司和初创企业的软件开发模式。这种模式强调快速迭代,试错和不断迭代。开发人员可以使用自己熟悉的工具和编码风格,以尽快实现产品上线和满足市场需求。这种模式的优势在于快速反馈和快速开发,但也存在一些缺陷,例如代码质量和稳定性难以保证。

第二阶段是不规范的研发流程导致混乱和浪费。这种研发流程的主要特征是不规范,缺乏规范的代码风格和开发流程。每个开发人员使用自己喜欢的工具和编码风格,开发的可执行文件混用,部分工具代码一直存储在研发人员的个人电脑上,没有得到清理。这样的流程容易导致代码质量低下和开发效率低下,浪费了大量时间和精力。

第三阶段是对规范研发流程与提效的重视。这种研发流程强调规范化、标准化和自动化。每个开发人员都遵守相同的编码规范和开发流程,严格的代码评审、单元测试覆盖率、静态检查工具扫描、多级冒烟测试等流程可以最大程度地避免代码出现问题,降低了修复成本。此外,该阶段还注重使用自动化工具和日志分析工具,提高开发效率和产品质量,确保代码质量和稳定性,提高了产品的可靠性和用户满意度。

总的来说,这三个阶段反映了软件开发过程中规范性的演变。从快速迭代到规范化、标准化和自动化,每个阶段都有其优势和不足之处,但是不断地完善和提高规范化的研发流程可以确保代码质量和稳定性,提高产品的可靠性和用户满意度。

规范的研发流程是一个组织内部高效协作的关键。它可以确保产品的质量,减少 bug 的数量,提高开发速度,降低技术债务的累积。而这些好处不仅仅局限于组织内部。规范的研发流程还可以提高客户的满意度,增强产品的市场竞争力。下面我们来详细探讨规范的研发流程的好处。

首先,规范的研发流程可以提高产品的质量。严格的代码评审、单元测试、静态检查和多级冒烟测试等流程可以避免代码中的错误,确保代码的稳定性和可靠性,降低维护和修复的成本。这不仅可以提高团队的开发效率,还可以增强客户对产品的信心,增加产品的市场竞争力。

其次,规范的研发流程可以提高开发速度。当开发人员知道如何遵循规范流程时,他们可以快速地编写代码,而不必花费大量时间解决不必要的问题。此外,自动化工具也可以帮助开发人员在开发周期中减少冗余工作,从而加快整个开发过程。

第三,规范的研发流程可以降低技术债务的累积。当一个组织拥有一个规范的研发流程时,可以在不影响产品质量和开发速度的情况下处理技术债务。这样可以避免技术债务的不断累积,以及在后续阶段可能带来的更大的问题。

总之,规范的研发流程不仅可以提高产品的质量,增加市场竞争力,还可以提高开发速度,降低技术债务的累积。对于任何组织来说,都应该重视规范的研发流程,以确保团队的协作效率和产品的成功。

发布于: 刚刚阅读数: 3
用户头像

SkyFire

关注

这个cpper很懒,什么都没留下 2018-10-13 加入

会一点点cpp的苦逼码农

评论

发布
暂无评论
从混乱到完备:我的研发流程之路_研发流程_SkyFire_InfoQ写作社区