译者 | 赵青窕
审校 | 孙淑娟
富有创造力的人(包括我自己)通常对自己所做的事情非常有激情,没有什么比我们自己做更让人欣喜的事了。然而,在创业的世界里,这种心态有时是有害的,特别是在与新的商业伙伴或客户合作时。
我把培养产品开发技术的最好方法归结为一个简单的规则:混合(Hybridization)。混合包括产品开发的各个方面,并且囊括了个人层面和公司层面,从最开始的想法,人员组建到开发能力和业务增长。
这个概念已经提出并且运用了很多年了,事实证明混合方法对现代企业来说是至关重要的。
根据我个人的经验,我将要讨论:混合产品开发技术是如何提升可持续性,并提高效率的。
1.混合软件产品开发到底是什么?
混合软件产品开发是一种开发软件产品的新方法,它结合了两种不同模型的优点——传统的瀑布模型和敏捷模型。
典型的瀑布模型有着连续的阶段,例如需求收集、分析、设计、实现、测试和部署。当需求很清晰并且项目范围不会发生变化时,这个模型将会工作得很好。
在敏捷模型中,会有多个执行周期(称为迭代)来适应需求或范围的变更。
在混合开发模型中,您可以在单个项目中结合使用瀑布方法和敏捷方法来达到最优的结果。
例如,您可以在项目的开发阶段使用敏捷方法,而在其他阶段使用瀑布方法。或者你可以对产品的某些部分使用基于迭代的敏捷方法,而对其他部分使用瀑布方法。
2.混合产品开发的优点
混合方法结合了瀑布方法的计划阶段和敏捷方法的迭代方法。当采用这种方法时,你会有一个明确的工作计划,与此同时,你又有足够的灵活性来适应客户的需求变化。具体优点如下:
- 使您能够在多个维度中工作
- 创建更有效的流程
- 缩短开发周期
- 降低成本和风险
- 产品可以快速上市
- 更多颠覆性的方法
3.采用混合方法来
进行产品开发的4个原因
(1)混合模型加快了软件开发的进度
混合模式是把更多快速且有效率的方法添加到软件开发的各个阶段。它旨在解决传统软件开发模型可能出现的问题,因此,它是开发创新产品的更好选择。
在敏捷环境中,用户的需求会被分解成许多小的模块,然后进行开发。这些模块被分组在2或3个阶段。所有这些阶段均是由内部团队开发并由QA进行测试的。产品负责人必须在每个模块完成并发布之前确认并进行批准,从而确保一切都按计划进行,客户最终会得到他想要的产品。
(2)新特性带来的产品差异化可以更快更容易地推向市场
软件开发是一个迭代过程,不同的团队可以同时在同一个产品上工作。终端用户可以实时更新、添加新特性,并及时修复bug,而无需等待重要版本的发布。这意味着,新特性带来的产品差异化可以比以往更快更容易地推向市场,这对小型企业来说非常重要。
它还意味着,在产品准备好之前,没有任何理由阻止发布产品。在过去,软件是较为昂贵,且难以发布的,所以公司只能等到产品比较“完美”时再发布,除此之外也别无他法。但是现在,我们没有理由不根据用户的反馈,及早地进行版本的发布并进行版本的迭代操作。
(3)降低总拥有成本
对于大多数IT组织来说,云服务提供商的运营成本远远低于在传统数据中心运行工作负载的成本。除此之外,云服务还可以减少或者消除资本支出。
无论您选择哪种云模型(公共、私有或混合),如果您订阅的是软件即时服务(Software-as-a-Service, SaaS)或基础结构即服务(Infrastructure-as-a-Service, IaaS),TCO都将有所降低。
即使您将应用程序托管在私有云的服务器上,您也可能因高效的操作而显著的节省成本。
(4)更灵活:对自定义代码的依赖更少
我们都有过这样的经历:项目进行到一半,客户想要添加一个需要定制化插件的功能。除了同该插件相关的主题外,其余部分几乎不用改动。但当他们因对设计不满意,想更换主题时,因为定制化的插件只兼容你为他们构建的主题,你不想更换主题。在这种情况下,最好的解决方案几乎总是重构代码,使自定义功能存在于其插件中。这样,你就可以继续完善你的主题,而不用担心破坏其他任何东西。
如果您想要更大的灵活性,依赖更少的定制化代码,那么这种方法是比较有用的。您可以为特定的功能构建插件,然后在许多项目中重复使用,而不是每次都必须重写它们。
4.如何应对混合产品开发所面对的挑战
(1)创造一种支持凝聚力和集思广益的文化
如果你害怕失控或担心自己的想法得不到认可,那么你将不会成功。你需要创造一种鼓励开放和尊重彼此的文化,在这种文化中,人们可以轻松地分享自己的想法。
这里有一些方法可以确保你的混合创新方法走向成功:
- 承担风险。即使第一次您感到担忧或者失败,也要相信您的团队可以从失败中总结经验。
- 让你的过程变得有趣。如果头脑风暴会议变得更有强制性而不是具有创造性的思维,那么没有人会喜欢它(即使他们保持清醒)。
- 工作时尝试适当的休息,这是一种建立员工间信任,并鼓励他们愉快的分享他们的观点和想法的方法,而并非是在感受到来自绩效考核或者其他形式的管理压力的情况下。
(2)注重过程,特别是对于大型项目
构建一个新产品、新功能或新流程是一个令人生畏的过程。面对如此多的风险,最重要的是有一个指导标准来帮助我们确保完成特定的工作。
同样重要的是要记住,这个指导标准 (或过程)不是固定不变的,而是可以根据项目适当调整的。会有许多不同的指南,但它们的本质都是一样的:如果我们使用一个可靠的流程,它可以有效地帮助我们避免潜在的陷阱,如破坏范围扩大,更容易获得队友的支持。
(3)混合产品开发有利于将团队凝聚在一起
混合产品开发的关键是将内部团队和远程团队有效的组合在一起。
正如我们在本文中所讨论的,拥有一个内部团队是有一些明显好处的。然而,如果你知道自己需要什么,以及如何正确管理远程团队,将会比以往任何时候更容易招聘异地办公的人员。在这两种方法之间找到平衡,你就可以为每个职位雇佣专业人才,并且不管这些人才身处何地,均可以让他们参与到公司的项目中。
创新就是找到做事的新方法。
(4)敏捷开发团队确保产品快速上市
混合方法应该包括与敏捷团队合作。
下面是一些使用敏捷开发团队带来好处的例子:
- 因为敏捷团队是在传统的公司层次结构之外运作的,所以他们不会被那些会阻碍内部项目快速发展的约束所束缚。
- 敏捷团队习惯于一起工作,并且拥有快速开发软件的流程。
下面是一些你在使用敏捷团队时可能会遇到的挑战:
- 股东或者投资方很难理解该如何把需求和团队的工作流程,迭代周期进行融合。
- 对于外部组织来说,让他们放弃对项目的一些控制,并相信敏捷团队会有效地处理事情,这本身可能就是一个挑战。
(5) 混合团队可能需要以不同于以往所有内部团队的方式进行管理
我们学到的一些重要经验是:
- 不要试图控制过程。这样做只会降低效率,同时也会让你的同事降低积极性。
- 提供一个框架,但是允许你的团队按照他们认为合适的方式来解释它。建议你提供一些指导,但不要过于规定性,以免限制他们的创造力。
- 一定要解释你想要达到的目标——即使别人不了解你所在的领域,他们仍然可以通过分享其他领域或行业的经验来激发新的想法。
(6)用户是关于哪个项目值得进行的最佳信息来源
你应该倾听用户的意见。他们可以给你快速的反馈,告诉你他们喜欢什么和不喜欢什么,帮助你决定哪些项目值得继续,哪些应该放弃或重做。与用户进行远程协作是快速有效地分析用户反馈的好方法(特别是通过视频会议)。
用户是关于哪个项目值得进行的最佳信息来源。如果一个项目没有被你的客户使用,那将不太可能提供任何有用的信息——所以在向任何给定的项目投入太多资源之前,理解如何改善用户体验是很重要的。
让员工能够方便地向您提供他们每天使用的工具。除了实施正式的反馈计划,你还可以这样说:“你对改进我们的产品有什么想法?”或“您希望添加或删除哪些功能?”,可以根据你的组织习惯使用的沟通工具建立一个匿名的Slack通道或电子邮件地址,创造一种文化,在这种文化中,任何人都可以不加评判地发表自己的意见。
(7)找到将开放式创新与其他方法相结合的方法如众包
寻找与其他拥有互补技能、资源和能力的公司合作的机会。这通常比在内部完成整个项目更有效。
建立项目,这样你就可以与另一家公司协同工作,甚至只是与一个客户或供应商进行合作。你会从他们的见解中受益,如果他们参与并提出了建设性的意见,他们会更加尽力地促成这个项目。
不要认为你的公司最适合在内部解决所有问题——想办法让外部合作伙伴尽早参与到这个过程中来,帮助你制定解决方案,而不是你的团队自己可能提出的解决方案。不要害怕寻求帮助!
(8)新产品、创新和想法需要从大脑中的构思尽快的落实并交付到用户手中
当你推出一个新产品、创新或想法时,尽快进入市场对你的成功是至关重要的。混合产品开发就可以帮助我们。
混合产品开发是一种结合内部开发和外部开发的方法。近年来,它变得越来越受欢迎,因为它使组织能够利用他们所需的特定专业知识,而成本只是招聘新全职员工的一小部分。
虽然混合产品开发可以用于广泛的项目和计划,但它最大的好处可能是,它为公司配备了正确的工具,以比以往任何时候都更快的速度推出新产品和进行创新。
5.结论
决定哪种策略最适合您的需求取决于您和您的公司文化。如果一个公司有一个以工程为中心的产品开发方法,那么混合方法可能会更好。初创公司可以从这样的创新技术中获益良多。
此外,物联网趋势还处于萌芽阶段,可能需要企业采用敏捷方法,因为他们对软件的更新及该领域内的技术变化均有依赖。
原文链接:https://dzone.com/articles/right-way-to-hybridize-your-product-development-technique
译者介绍
赵青窕,51CTO社区编辑,从事多年驱动开发。研究兴趣包含安全OS和网络安全领域,发表过网络相关专利。