敏捷开发解决方案
自十年前以来,当今的软件工程界发生了巨大变化。 软件产品的开发正在加速,并且对快速发布产品的期望每天都在增强。
所有这些进入市场的时间正在悄悄地给开发代码留下时间。 由于这些变化,仅编写代码已不再是一件容易的事。
在本文中,我们将研究软件开发所采取的方向以及引发这一变化的原因。 此外,我们将研究不断变化的格局对于软件开发人员的定义意味着什么。
在这种情况下,事实证明, 敏捷开发是开发人员的宝贵工具。 敏捷开发有潜力使您成为更有效的程序员。 如果使用正确的工具来实施这些流程,则可以节省大量时间,并可以帮助您在Swift提高其期望的市场中变得更加灵活。
了解最终用户
创建基于软件的解决方案已变得相对简单。 人们在为期两天的黑客马拉松中将想法转换为可用的应用程序和服务。 开源和所有这些免费的库使整合起来比以往任何时候都更加容易。
由于有许多人正在为常见问题制定解决方案,因此这使发展中的水域变得有些不安。
除此之外,人们只是期望越来越多的功能,而他们又不想等待一年的时间。 他们只是不需要,因为在一年的时间内,另一家公司将提供具有您所缺少的功能的解决方案。
由于这些不断变化的条件,对于开发人员来说,从纯粹的开发扩展到了解他们的用户以及该解决方案将要运行的市场变得越来越重要。
在企业界(我过去五年的工作空间)中,这被标记为“业务所在”。
要成为最有效的开发人员,您需要真正了解解决方案的用户,无论他们是企业对企业(B2B)设置中的公司员工和/或经理,还是产品的其他最终用户。
救援敏捷
软件开发已从构建大型应用程序转变为创建具有最大附加值的小型且专注的产品和服务,并随着时间的推移对其进行扩展。
如今,软件开发旨在最大程度地满足客户的市场需求。 维基百科将市场适应性定义如下:
“产品/市场契合度意味着拥有可以满足该市场需求的产品处于良好的市场中。”
首次引入敏捷软件方法时,它们向开发人员展示了一种构建产品的新方法,以认识到市场及其需求在不断变化。
敏捷开发涉及团队协作,每个团队都有能力在几周的时间内构建产品最重要的功能(通常这个过程需要两到四周的时间)。 在此期间(称为迭代),将对功能进行澄清,验证,构建和测试。
与更传统的工作方法相比,通过以较小的迭代次数首先构建最重要的事物并提供满足当前市场需求的增值,敏捷开发已证明自己在应对市场变化方面更加强大。
敏捷方法还可以帮助开发人员在最初的sprint中创建最重要的功能和方面,从而创建最低可行产品( MVP )。
用外行的话来说,MVP是一种最佳实践方法,旨在定义功能最少的产品,为用户提供最大的价值。
在项目的第一个冲刺之后,您将获得一个既可以正常工作又可以为用户提供价值的解决方案。 调整MVP以(在技术上或功能上)改善它并添加辅助功能通常是在以下迭代中完成的。
这样,您的核心产品将得到改善,并且可以在很短的时间内得到扩展,从而缩短了产品上市时间,从而降低了您的产品在市场上失去基础的机会。
通过集成早期和频繁的反馈循环,诸如SCRUM之类的敏捷过程可帮助我们关注目标并验证结果是否符合预期。
即使在只编写一行代码之前也是如此。 最好根据可能的最终用户验证您的产品。
用户反馈:比剑强
创建具有大量功能的大型软件产品的日子已经一去不复返了,这些功能最多需要两年才能发布。
使用当今的工具,例如线框编辑器; 互动原型创作者; 以及跟踪您的网站,视频或社交媒体效果的分析解决方案; 获得反馈从未如此简单。
通过进行用户访谈以检查模型,甚至可以在对解决方案进行编码之前就可以评估市场契合度,因此您可以验证自己将专注于最佳实施选择。
您认为对您的用户而言是最佳的解决方案,而您的用户需求通常是两件事。 就像我们需要在实际的移动设备上测试移动项目一样,没有其他替代方法可以与您定位的用户进行交互。
您需要先检查您的想法,启动它们,然后定期对用户反馈做出React。
敏捷开发通过让您专注于较小的部分,并使用您获得的用户反馈作为下一次迭代的输入来支持这一点。
也许90%的用户需要定期使用的某些功能引起了很多批评,而且还有些不足。 或者,当您预期没人会使用该功能时,您可能会得到关于每个人都缺少的功能的反馈。
像SCRUM这样的敏捷过程使您可以计划下一个迭代中的更改,从而着手解决这些问题。 这样,您可以在较短的时间内完善功能并继续使用其他功能。
确实,这是生存的问题。 这是成为Product Hunt的下一个热门产品还是最终成为旧新闻解决方案之间的区别,而该解决方案甚至在互联网上架之前就已经被超越了。
敏捷将使您付出沉重的代价
交付快速和不断缩短的上市时间的压力正在浪费编写代码的时间。
尽管敏捷流程使我们能够在更短的时间内交付价值,但每三周左右发布一次也意味着需要更多的部署时间。
更频繁地测试您的代码。 进一步准备生产基础架构。
更频繁地通知客户更新。 还有……你得到了图片。
从开发机器上的功能程序到实际在生产中启动并从那时开始对其进行更新,涉及很多工作。
整个开发,测试和部署周期的不断增加的频率,对我们开发人员编写健壮且可维护的最佳代码的时间产生了影响。
对我们来说幸运的是,在过去十年中,为开发人员添加了许多武器:
- 有搜索引擎Google,它已成为默认的研究工具,而不是搜索工具。 您可以使用它来查找教程,免费视频和内容,以帮助您掌握开发语言,所有这些库和工具等。
- GitHub提供了大量示例项目,以及有关如何将完整的解决方案和服务集成到您的项目中的易于访问的说明。
- 大型软件公司已经发布和/或在线提供了许多常用服务,并提供了简单的构建基块(看着您,Microsoft Azure,Google Cloud和Amazon Web Services)。
但是即使使用所有这些工具,实际构建代码所需要的有效时间也减少了。
IT World于2013年对443位开发人员进行的一项调查显示,开发人员在实际编码上平均花费的工作时间平均不到其工作时间的一半(每周40小时平均为19.1小时)。
根据调查结果,头脑风暴和协作,会议和处理电子邮件需要十二个小时。 当您需要找出用户想要什么时,只需要时间。 平均而言,不到十个小时就可以使环境保持活动状态并运行测试。
敏捷开发伴随着越来越少的时间和其他任务,几乎不可避免地要集成诸如服务和现有库之类的可用构建块。
它们非常有用,因为利用所有这些可用资源,您不必重新发明轮子。
由于开发环境中的所有这些变化,产品的基础变得越来越重要。
尽管敏捷开发需要更频繁地管理工具和流程,但值得朝着最佳市场契合度和更快的开发周期迈出一步。 也就是说,如果您可以设法将目光仅仅局限于编码部分。
处理您的敏捷开发基础剑取代编码
在为您的产品打下坚实的基础时,不再仅仅是“编码”。
选择正确的堆栈; 使用最好的开发工具; 并建立最佳的构建,集成和发布流程是当今游戏的发展方向。
正如所解释的那样,诸如SCRUM之类的敏捷开发流程通过让团队实现最重要的功能来帮助团队在短时间内创造价值。
此外,SCRUM指出您需要能够提供为迭代设置的作用域的功能版本。 为了做到这一点,您需要使尽可能多的传统开发周期步骤自动化。
通过自动启动单元测试并在代码签入后立即报告结果,您无需花费时间等待这些结果。
如果您设置了一种配置,以便在所有测试都变为绿色后立即更新测试环境,然后通过TestTlight将移动应用程序的测试版本部署到涉众和测试人员的手中,这样您就可以在同一天获得反馈,而无需手动执行所有操作这些动作,您将在这些任务上花费更少的时间和精力-您可以将宝贵的时间用于开发和编码。
我提到的示例都是持续集成(CI)的示例。
您可以在Scrum.org , Scrumguides.org和Scrum Alliance的网站上找到有关SCRUM和敏捷开发的更多信息。 您还可以参加官方课程。 对于开发人员而言,最有趣的是Scrum Master和Professional Scrum Developer认证路径。
Scrum Master专注于帮助人们担当指导SCRUM团队的角色(也可以是同一团队的开发人员); Professional Scrum Developer认证的重点是教会开发人员如何从开发人员的角度优化SCRUM的开发周期。
敏捷领域之外的工具
DevOps是另一个框架(如果可以的话,它是最佳实践),它显示了创建一个开发环境的力量,该环境可以为您工作而不是花时间。
通过使重要变量可配置,并使其他人(而不是开发人员自己)可以管理事情,您将开发资源从不必更新实际上不会影响软件产品的实际业务规则和/或机制的内容中解放出来。
您可以重新控制时间,并最大程度地减少重复繁琐任务的影响,例如仅由于后端IP发生变化而必须将新版本部署到生产中。
云计算已经存在了一段时间。 使用云平台,您基本上可以将所有服务器硬件都抛弃在窗外,并将解决方案托管在在线平台中。
通过将硬件服务器替换为虚拟服务器,您可以在解决方案变得如此流行以至于需要升级时复制(甚至自动!),您的解决方案实际上可以为整个星球服务。
如果您不必担心为解决方案维护自己的基础架构,那么没有可伸缩性和可管理性等优势就无法实现许多解决方案。
流行的云平台包括Microsoft Azure,Amazon Web Services和Google Cloud。 哪种解决方案最适合您,取决于您所构建的项目类型。
显然,如果要使用Visual Studio构建产品并使用C#,Xamarin或其他Microsoft产品,则Azure非常适合。 Android / JAVA开发人员倾向于更多地使用AWS。
确保检查出在线平台提供的构建块的类型以及它们的成本。
阅读有关DevOps的更多信息,以及大型云解决方案如何支持在Amazon Web Services(AWS) , Microsoft Azure和Google Cloud的网站上实施此最佳实践。
如您所见,SCRUM和DevOps是明确的指标,表明项目的坚实基础不仅取决于软件。
如果您希望开发项目尽可能地敏捷和灵活, 并且希望优化可以编写代码的时间,则需要考虑的不仅仅是软件层。
如果要实施SCRUM流程,使用CI自动化开发流程,可以选择适合您的需求并让您的解决方案支持DevOps最佳实践的云平台,那么您就知道自己正在实施一种坏蛋坚实的基础。
换句话说,值得花费精力和时间来创建自动化的开发工作流,并通过选择合适的开发工具和云解决方案来快速轻松地扩展产品。 只有这样,您才能在不费吹灰之力的情况下拿到您的产品。
腾出时间
所有这些在线资源(库,堆栈和工具)以及所有敏捷工作流技术和自动化流程的真正作用是节省您的时间。
通过实现所有这些敏捷方法和工具所获得的时间是一种资源,您可以将其花费在实际上仍然需要编码的几个特定部分上。 通常,这些是实际的业务逻辑部分,非常适合您要解决的问题。
这可能被认为是产品的核心,因为正是这种业务逻辑以及随附的逻辑使您的解决方案与竞争对手的解决方案区分开来。
它可以帮助您腾出时间来增加产品的客户市场适应性。 通过使产品更适合最终用户,您可以降低人们过一段时间后停止使用产品的比率(流失率),并接受一些额外的客户反馈来决定是否以及如何改善产品角度。
当您花费更多的时间来改进解决方案并保持用户满意度时,您将能够在这方面有所发展。
这将帮助您成为一个开发人员,不仅可以做代码,还可以做更多的事情-一个可以理解用户并知道如何改进其产品的开发人员。
你只能花时间一次
本文并不意味着没有更多的Craft.io空间和时间来编写漂亮的代码。
互惠生。 即使是最少量的定制代码,也要确保其平稳运行并以稳定的方式运行,这一点仍然很重要。 在敏捷开发团队的背景下,清晰易懂的代码仍然非常重要。
编写测试以向其他团队成员描述您的功能并检查代码的质量和功能仍然很重要。
这篇文章暗示的是,仅专注于编写代码将不再被削减。
想起来,它从来没有真正做到过。
如今,软件开发的快速通道使人们更加清楚地知道您需要能够快速换档。
并能够重定向产品重点,代码,构建和部署产品的新版本? 好吧,这正是敏捷软件开发人员与DevOps一起喜欢生吃的肉类。
聪明地构建您的软件,并尽可能地自动执行围绕它的每个过程。 然后,您将获得一个流程,使您能够迭代想法,在短时间内实现用户反馈并交付产品。
何时潜入敏捷战ren?
好吧,我们在谈论基础。 定义和实现良好基础的最佳时间是刚开始时 。
自2017年7月起,我开始担任一家名为Proteges的医疗保健初创公司的技术主管。
最初,几乎没有编写任何代码,而重点主要放在定义公司的愿景和战略上。
那是我发现最适合为您的开发过程定义基础的时间。
由于对用户和其他方的书面承诺很少,因此您有时间进行研究并定义所需的开发流程,并查看最适合该类型的面向未来的工具和服务。您需要的开发人员数量。
您要使用SCRUM还是KANBAN来实现功能? 您要使用Microsoft还是Amazon的云结构? 您的主要语言是C#还是JAVA?
所有这些决定将导致您使用一堆将要使用的工具和框架,这将是您建立基础的基础。
即使您在一家拥有各种组织结构,流程和工具选择的大公司中发展,您也可以开始为您的组织定义最佳基础。
查看公司内部的当前状况,这将帮助您定义最佳实践以实现期望的结果。
哪些开发工具最有效,为什么?
大多数使用哪种框架和开发语言,哪些工具最适合呢?
每当有新项目出现时,您都可以检查它并与您的经理讨论如何用您定义的基础实施该项目,从而使该项目获得的结果更接近最终用户的期望,以及如何使用您的基础将导致更好的营销契合度。
这可能需要更多的精力和说服力,但是如果您的经理可以理解长期优势,那将是值得的。
结论
在本文中,我向您概述了现代开发人员的世界如何发生变化。
以前的重点是简单地对软件进行编码,而现在的重点是了解产品的用户。
您已经了解到上市时间短意味着您将变得更加灵活并可以增加营销契合度。
最后但并非最不重要的一点是,我们了解了在为您和您的敏捷团队奠定基础时,如何考虑敏捷开发以及其他现代工具和最佳实践(例如持续集成,DevOps和云计算)成员可以(从字面上)建立。
无论您开发的是哪种产品,市场都需要针对他们所经历的痛苦的有效解决方案。
通过为您的软件以及围绕和遵循开发流程的流程打下坚实的基础,您将增加解决方案受到轰动的机会。
翻译自: https://www.javacodegeeks.com/2017/09/software-solutions-foundations-agile-development.html
敏捷开发解决方案