程序员摆烂新姿势:低代码开发竟让我1人干翻10人团队!
为了让大家更直观地感受低代码开发的强大威力,我们来看一个真实的案例。这是一个企业级的项目,目标是开发一个功能全面的客户关系管理系统(CRM)。该系统需要涵盖客户信息管理、销售流程管理、市场营销活动管理、数据分析等多个模块,以满足企业日益增长的业务需求。在这个项目中,传统开发团队由 10 人组成,包括项目经理、产品经理、前端开发工程师、后端开发工程师、测试工程师等。他们有着丰富的开发经验,熟练掌握各
目录
引言:低代码,码农的新 “摆烂” 姿势?
在程序员的江湖里,一直流传着这样的传说:“一个人干翻一个团队”。但在过去,这可能只是武侠小说里的桥段,或者是天才程序员的神话。然而,在科技飞速发展的今天,低代码开发的出现,似乎让这个传说照进了现实,成为了程序员们全新的 “摆烂” 姿势 。
曾经,我们为了完成一个项目,日夜颠倒、披星戴月,和代码死磕到底。一个小功能的实现,可能就要耗费几天的时间,更别提那些复杂的系统了,动辄需要一个庞大的团队,花费数月甚至数年的时间才能完成。但现在,低代码开发就像一个神奇的 “外挂”,让程序员们仿佛拥有了超能力,能够轻松应对各种开发任务,甚至一个人就能顶得上过去一个 10 人团队 。这到底是怎么做到的呢?低代码开发真的有这么神奇吗?接下来,就让我们一起揭开低代码开发的神秘面纱,看看它是如何颠覆传统开发模式,让程序员实现 “躺平式” 开发的 。
传统开发之痛:程序员的 “加班噩梦”
在低代码开发出现之前,传统开发模式就像是一座沉重的大山,压得程序员们喘不过气来 。那时候,开发一个项目,就如同一场漫长而艰辛的马拉松,每一个环节都充满了挑战和困难。
需求分析阶段,程序员们需要与客户、产品经理等多方进行沟通,试图理解他们的需求。然而,客户的需求往往是模糊的、多变的,就像天上的云朵,难以捉摸。程序员们需要花费大量的时间和精力,去梳理、去挖掘、去澄清这些需求,生怕遗漏了任何一个细节 。这就好比在黑暗中摸索,寻找那一丝光明,过程充满了不确定性和焦虑。
设计阶段同样不轻松,程序员们需要根据需求分析的结果,设计出系统的架构、模块、接口等。这需要他们具备深厚的技术功底和丰富的经验,能够在众多的技术方案中选择最合适的那一个 。一个好的设计就像是一座坚固的大厦的蓝图,它决定了系统的稳定性、可扩展性和性能。然而,设计过程中往往会遇到各种难题,比如如何平衡系统的复杂性和可维护性,如何提高系统的性能和响应速度等等 。这些问题就像一道道关卡,考验着程序员们的智慧和能力。
编码阶段则是一场与代码的持久战。程序员们需要一行行地编写代码,将设计方案转化为实际的程序。这是一个极其繁琐和枯燥的过程,需要高度的专注和耐心 。而且,代码中往往会隐藏着各种 bug,就像隐藏在黑暗中的敌人,随时可能跳出来给你致命一击。程序员们需要花费大量的时间去调试、去修复这些 bug,有时候一个小小的 bug 可能会耗费几天甚至几周的时间才能找到并解决 。这不仅考验着程序员们的技术水平,也考验着他们的心理素质。
测试阶段同样是一个漫长而痛苦的过程。测试人员会对程序进行各种测试,包括单元测试、集成测试、系统测试、验收测试等等 。一旦发现问题,就需要程序员们进行修改和优化。这就像是一个循环往复的过程,不断地发现问题、解决问题,让程序员们疲惫不堪。而且,有时候为了赶项目进度,测试阶段可能会被压缩,导致一些潜在的问题没有被及时发现,为后续的使用埋下了隐患 。
除了这些繁琐的流程,传统开发模式还面临着技术更新换代快、项目周期紧张、团队协作困难等问题 。程序员们需要不断地学习新的技术和知识,以适应项目的需求。同时,为了按时完成项目,他们往往需要加班加点,甚至熬夜通宵 。长时间的加班和高压力,不仅影响了程序员们的身体健康,也影响了他们的工作效率和生活质量 。很多程序员都陷入了一种 “加班 - 疲惫 - 效率低下 - 继续加班” 的恶性循环中,无法自拔。
在这样的背景下,低代码开发的出现,就像是一道曙光,照亮了程序员们前行的道路 。它能否真的成为程序员们摆脱困境的 “救星” 呢?让我们继续往下看 。
低代码开发:打破常规的新力量
低代码是什么
低代码,从名字就能看出它的与众不同。简单来说,低代码开发是一种通过少量代码或可视化操作进行应用开发的方式 。在传统开发模式中,我们需要一行行地编写大量代码,就像用一块一块的砖头去建造一座房子,过程繁琐且耗时 。而低代码开发则像是搭建积木,开发者只需通过可视化的界面,拖拽各种预制的组件和模块,就能快速搭建出应用的基本框架 。比如,想要创建一个简单的用户注册登录功能,在传统开发中,可能需要编写几十行甚至上百行代码来实现页面布局、数据验证、数据库交互等功能 。但在低代码开发平台上,我们只需从组件库中拖出 “用户注册表单” 和 “登录按钮” 等组件,进行简单的配置,就能轻松实现这个功能,代码量可能只有几行甚至一行都不用写 。
低代码开发平台通常提供了丰富的组件库,涵盖了各种常见的功能模块,如表单、报表、图表、数据验证、用户权限管理等 。这些组件就像是一个个 “万能零件”,开发者可以根据自己的需求进行自由组合和配置,大大减少了重复开发的工作量 。同时,低代码平台还支持通过编写少量代码来实现一些个性化的功能,以满足特殊的业务需求 。这种将可视化操作与少量代码相结合的方式,既降低了开发的难度,又保留了一定的灵活性和扩展性 。
低代码的核心优势
低代码开发之所以能够吸引众多开发者和企业的关注,其核心优势是关键。
首先,低代码开发能大幅提高开发效率。就像前面提到的,通过可视化拖拽和配置,原本需要数周甚至数月才能完成的项目,现在可能只需要几天或几周就能交付 。这是因为低代码平台将许多常用的功能和业务逻辑进行了封装,开发者无需从头开始编写代码,只需专注于业务需求的实现 。比如,开发一个企业内部的管理系统,使用低代码平台,开发者可以快速搭建出用户管理、权限控制、数据报表等模块,然后将这些模块进行整合,就能快速完成系统的开发 。据相关研究表明,使用低代码开发平台,应用开发的速度可以提高 5 - 10 倍甚至更多 。这就好比从骑自行车变成了开汽车,速度的提升是显而易见的 。
其次,低代码开发能有效降低成本。在传统开发模式下,企业需要招聘大量的专业开发人员,这些人员不仅需要具备扎实的编程技能,还需要熟悉各种开发框架和工具 。这意味着企业需要支付较高的人力成本 。而低代码开发降低了对专业开发人员的依赖,一些非技术人员经过简单培训后,也能参与到应用开发中来 。这样一来,企业可以减少开发团队的规模,从而降低人力成本 。同时,由于开发效率的提高,项目的周期缩短,也减少了项目的时间成本和沟通成本 。比如,一个原本需要 10 人团队花费 6 个月完成的项目,使用低代码开发后,可能只需要 3 - 5 人团队,花费 2 - 3 个月就能完成,成本大幅降低 。
再者,低代码开发降低了技术门槛。在过去,应用开发是专业程序员的 “专属领地”,普通人很难涉足 。但低代码开发的出现,打破了这一壁垒 。它通过可视化的操作界面和简单易懂的配置方式,让非技术人员也能轻松上手 。比如,业务人员可以根据自己对业务的理解,使用低代码平台快速开发出满足业务需求的应用程序,而无需依赖技术团队 。这不仅提高了业务人员的工作自主性,也促进了业务与技术的融合 。就像现在很多企业的销售部门、市场部门等,都可以利用低代码平台开发一些简单的应用,如客户关系管理系统、市场活动管理系统等,以满足自身的业务需求 。
此外,低代码开发还具有良好的灵活性和可扩展性 。低代码平台通常支持与其他系统进行集成,如企业现有的 ERP、CRM 等系统 。通过集成,企业可以实现数据的共享和业务流程的自动化,提高企业的整体运营效率 。同时,低代码平台也支持对应用进行二次开发和扩展,当企业的业务需求发生变化时,开发者可以快速对应用进行调整和优化 。例如,企业在使用低代码平台开发的客户关系管理系统中,发现需要增加一个新的功能模块,如客户数据分析模块 。开发者可以通过低代码平台,快速添加相关的组件和代码,实现这个功能的扩展 。
实战案例:1 人如何干翻 10 人团队
案例背景介绍
为了让大家更直观地感受低代码开发的强大威力,我们来看一个真实的案例 。这是一个企业级的项目,目标是开发一个功能全面的客户关系管理系统(CRM) 。该系统需要涵盖客户信息管理、销售流程管理、市场营销活动管理、数据分析等多个模块,以满足企业日益增长的业务需求 。
在这个项目中,传统开发团队由 10 人组成,包括项目经理、产品经理、前端开发工程师、后端开发工程师、测试工程师等 。他们有着丰富的开发经验,熟练掌握各种传统开发技术和工具 。而低代码开发者这边,只有小李一人 。小李是一名年轻的程序员,接触低代码开发不久,但对新技术充满热情,勇于尝试 。
传统开发团队的困境
传统开发团队在项目开始后,就陷入了重重困境 。需求分析阶段,由于客户的业务复杂,需求不断变化,产品经理和客户沟通了多次,也难以完全确定最终的需求 。这导致需求文档反复修改,耗费了大量的时间和精力 。
设计阶段,团队成员对于系统架构的选择产生了分歧,经过多次讨论和论证,才最终确定下来 。但这也导致设计阶段的进度延迟,影响了整个项目的进度 。
编码阶段,更是一场噩梦 。前端开发工程师和后端开发工程师需要频繁地进行接口对接,由于沟通不畅和接口定义不清晰,导致对接过程中出现了很多问题 。一个简单的功能,可能需要前端和后端反复修改代码才能实现 。而且,代码的编写量巨大,团队成员每天都需要加班到很晚,才能勉强跟上进度 。
测试阶段,问题也接踵而至 。由于前期的开发过程中积累了很多问题,导致测试过程中发现了大量的 bug 。测试工程师和开发工程师之间不断地进行沟通和反馈,但是问题的修复速度很慢 。有时候,一个 bug 修复后,又会引发新的问题,导致项目陷入了一种恶性循环 。
此外,团队内部的沟通成本也非常高 。10 个人的团队,每天都需要花费大量的时间进行会议沟通、文档编写和同步进度 。这不仅占用了大量的工作时间,还容易出现信息传递不准确的情况 。
低代码开发者的逆袭
小李在接到这个项目后,决定使用低代码开发平台来完成 。他首先对项目需求进行了详细的分析,然后在低代码开发平台上选择了适合的模板和组件 。通过可视化的拖拽操作,他快速搭建出了系统的基本框架,包括用户界面、数据模型和业务逻辑 。
在搭建用户界面时,小李从组件库中拖出了各种表单、按钮、图表等组件,然后根据需求进行了布局和样式调整 。整个过程非常简单,就像搭积木一样,小李很快就完成了用户界面的设计 。
在建立数据模型时,小李使用低代码平台提供的数据建模工具,定义了数据表、字段、关系和数据源 。通过简单的配置,他就完成了数据模型的设计,并且能够轻松地与现有数据源进行集成 。
设置业务逻辑时,小李使用低代码平台的规则引擎和工作流设计器,定义了系统的各种业务规则和流程 。例如,在销售流程管理模块中,他设置了订单创建、审批、发货等流程,并且能够自动发送通知和提醒 。通过简单的配置,他就实现了复杂的业务逻辑,而且代码量非常少 。
在集成数据方面,低代码平台提供了丰富的连接器和 API,小李可以轻松地将系统连接到企业现有的数据源、API 或第三方服务,实现数据的共享和交互 。
在完成开发后,小李使用低代码平台的测试工具,对系统进行了全面的测试 。由于低代码平台生成的代码质量较高,而且在开发过程中就进行了实时的调试和验证,所以测试过程中只发现了少量的问题,小李很快就完成了修复 。
最后,小李将系统部署到了云端服务器上,整个项目的开发周期只用了短短几周的时间 。
对比结果展示
我们来对比一下传统开发团队和小李使用低代码开发的结果 。在开发时间上,传统开发团队花费了数月的时间才完成项目,而小李使用低代码开发只用了几周的时间,开发效率提高了数倍 。
在成本方面,传统开发团队需要支付 10 个人的工资和相关费用,成本非常高 。而小李一个人完成了项目,只需要支付他个人的工资和低代码开发平台的使用费用,成本大幅降低 。
在项目质量方面,传统开发团队由于开发过程中积累了很多问题,导致项目质量不高,后期需要花费大量的时间和精力进行维护和修复 。而小李使用低代码开发,生成的代码质量较高,系统的稳定性和可维护性都很好 。而且,由于低代码平台提供了丰富的组件和模板,系统的功能更加完善,用户体验也更好 。
通过这个案例,我们可以清晰地看到低代码开发的优势 。它不仅能够提高开发效率、降低成本,还能够提升项目质量,让程序员们在轻松完成项目的同时,也能享受到开发的乐趣 。
低代码开发对程序员的影响
工作模式的转变
低代码开发的出现,彻底改变了程序员的工作模式。在传统开发模式下,程序员就像是辛勤的工匠,需要一砖一瓦地搭建软件大厦,大部分时间都耗费在繁琐的编码工作上 。而低代码开发则赋予了程序员 “魔法师” 的能力,他们只需通过可视化界面,像搭积木一样拖拽组件、配置参数,就能快速构建出应用程序的基本框架 。这就好比从手工制作汽车零件,转变为使用先进的自动化生产线进行组装,大大减少了重复编码的工作量 。
例如,在开发一个电商系统时,传统开发模式下,程序员需要花费大量时间编写用户注册登录、商品展示、购物车管理、订单处理等功能的代码 。而使用低代码开发平台,程序员可以直接从组件库中拖拽出相应的组件,进行简单的配置,就能快速实现这些功能 。原本需要数周才能完成的工作,现在可能只需要几天甚至更短的时间 。这样一来,程序员就有更多的时间和精力去关注业务逻辑和系统架构,从单纯的代码编写者转变为系统的设计师和架构师 。他们可以深入研究业务需求,优化系统架构,提高系统的性能和稳定性,为企业提供更具价值的解决方案 。
技能需求的变化
在低代码时代,程序员的技能需求也发生了显著的变化 。除了传统的编程技能外,他们还需要掌握一些新的技能 。
首先,对低代码平台的熟练掌握是必不可少的 。不同的低代码平台有不同的特点和功能,程序员需要了解各种平台的优势和适用场景,选择最适合项目需求的平台 。同时,他们还需要熟练掌握平台的操作方法,能够灵活运用平台提供的各种组件和工具,实现复杂的业务功能 。例如,一些低代码平台提供了强大的工作流设计器,程序员需要掌握如何使用它来设计和管理业务流程,实现自动化的业务处理 。
其次,数据分析能力也变得越来越重要 。随着大数据时代的到来,数据已经成为企业决策的重要依据 。程序员需要具备一定的数据分析能力,能够从大量的数据中提取有价值的信息,为业务决策提供支持 。在低代码开发中,程序员可以利用平台提供的数据分析工具,对系统产生的数据进行分析和挖掘,帮助企业发现潜在的问题和机会 。例如,通过分析用户行为数据,优化产品的用户体验;通过分析销售数据,制定更有效的营销策略等 。
此外,沟通协作能力和业务理解能力也不容忽视 。在低代码开发项目中,程序员需要与业务人员、产品经理、设计师等多方面进行紧密的沟通和协作 。他们需要能够理解业务需求,将业务语言转化为技术实现,同时也要能够向非技术人员解释技术方案,确保各方对项目目标和实现方式达成共识 。良好的沟通协作能力和业务理解能力,能够提高项目的开发效率和质量,减少误解和冲突 。
职业发展的机遇
低代码开发的兴起,为程序员的职业发展带来了新的机遇 。
一方面,程序员可以参与到更具创新性的项目中 。由于低代码开发大大缩短了项目的开发周期,企业可以更快地将新的想法和概念转化为实际的应用程序 。这使得程序员有机会参与到一些前沿的项目中,如人工智能应用开发、物联网解决方案设计等 。这些项目通常具有较高的技术含量和创新性,能够让程序员接触到最新的技术和理念,提升自己的技术水平和创新能力 。例如,在开发一个智能家居控制系统时,程序员可以利用低代码平台,快速搭建出系统的基本框架,然后结合人工智能技术,实现设备的智能控制和场景联动,为用户带来全新的体验 。
另一方面,低代码开发也提升了程序员自身的价值 。在传统开发模式下,程序员的价值主要体现在代码编写能力上 。而在低代码时代,程序员的价值更多地体现在对业务的理解、系统架构的设计以及解决复杂问题的能力上 。能够熟练运用低代码平台,为企业提供高效、优质解决方案的程序员,将受到企业的高度重视和青睐 。他们可以在企业中担任更重要的角色,如技术专家、架构师、项目经理等,获得更高的薪资和职业发展空间 。例如,一名掌握低代码开发技术的程序员,能够在短时间内为企业开发出一款实用的客户关系管理系统,帮助企业提高客户满意度和销售业绩,他的价值将得到企业的充分认可,也为自己的职业发展打下了坚实的基础 。
低代码开发的未来趋势
技术发展方向
低代码开发技术的未来充满了无限的可能性,其发展方向主要体现在与其他前沿技术的深度融合上。
与人工智能(AI)的融合将是一个重要趋势。AI 技术能够为低代码开发平台注入更强大的智能能力 。例如,通过自然语言处理技术,开发者可以使用自然语言描述需求,低代码平台自动生成相应的代码和应用逻辑 。这将进一步降低开发的门槛,使非技术人员能够更轻松地参与到应用开发中来 。同时,AI 还可以实现智能代码补全、代码优化和错误检测等功能,提高开发效率和代码质量 。比如,当开发者在低代码平台上进行操作时,AI 可以根据上下文和历史数据,自动推荐合适的组件和配置选项,帮助开发者快速完成开发任务 。此外,利用 AI 的数据分析和预测能力,低代码开发平台可以为企业提供更精准的业务洞察和决策支持 。例如,通过对大量业务数据的分析,平台可以预测业务趋势,为企业制定战略提供依据 。
与物联网(IoT)的结合也将开辟新的应用场景 。随着物联网设备的广泛普及,低代码开发可以帮助企业快速构建连接和管理这些设备的应用程序 。通过低代码平台,企业可以轻松实现对物联网设备的数据采集、监控和控制 。例如,在智能家居领域,用户可以使用低代码开发平台创建自己的智能家居控制应用,实现对各种智能设备的远程控制和自动化管理 。在工业领域,低代码开发可以用于构建工业物联网应用,实现生产设备的实时监控、故障预警和远程维护等功能 ,提高生产效率和设备的可靠性 。
另外,随着云计算技术的不断发展,低代码开发平台将更加依赖云计算的强大计算能力和存储能力 。基于云的低代码开发平台可以实现随时随地的开发和部署,方便企业进行团队协作和项目管理 。同时,云计算还可以提供弹性的资源配置,根据企业的需求动态调整计算和存储资源,降低企业的成本 。例如,企业在使用低代码开发平台进行大型项目开发时,云计算可以提供足够的计算资源,保证开发过程的流畅性 。在项目上线后,云计算又可以根据实际的访问量,动态调整服务器资源,确保应用的性能和稳定性 。
市场应用前景
低代码开发在不同行业的应用前景十分广阔,有望成为推动各行业数字化转型的重要力量 。
在制造业中,低代码开发可以帮助企业实现生产流程的数字化和自动化 。通过构建生产管理系统、设备监控系统和供应链管理系统等应用程序,企业可以实时掌握生产进度、设备状态和库存信息,优化生产流程,提高生产效率和产品质量 。例如,某制造企业使用低代码开发平台,快速搭建了一套生产管理系统,实现了生产订单的在线管理、生产进度的实时跟踪和质量检测的自动化,大大提高了企业的生产效率和管理水平 。
在金融行业,低代码开发可以用于开发金融业务应用、风险管理系统和客户服务系统等 。金融机构可以利用低代码平台快速响应市场变化,推出新的金融产品和服务,提高客户满意度 。同时,低代码开发还可以加强金融机构的风险管理能力,通过实时监控和分析市场数据,及时发现和应对风险 。比如,某银行使用低代码开发平台,开发了一款智能风控系统,通过对客户数据和交易行为的分析,实现了风险的实时预警和评估,有效降低了银行的风险 。
在医疗行业,低代码开发可以助力医疗信息化建设 。医院可以利用低代码平台开发电子病历系统、医疗设备管理系统和患者预约系统等应用,提高医疗服务的效率和质量 。例如,某医院使用低代码开发平台,开发了一套电子病历系统,实现了患者病历的数字化管理和共享,方便医生随时查看患者的病历信息,提高了诊断的准确性和效率 。
低代码开发的出现,对整个软件开发行业也将产生深远的影响 。它将改变软件开发的模式和流程,使得软件开发更加高效、灵活和普及 。低代码开发平台将成为软件开发的重要工具,推动软件开发从传统的手工编码向可视化、自动化的方向发展 。同时,低代码开发也将促进软件开发行业的分工和协作,专业的低代码开发人员和业务人员将共同参与到应用开发中来,形成更加高效的开发团队 。此外,低代码开发还将催生新的商业模式和市场需求,为软件开发行业带来新的发展机遇 。例如,一些低代码开发平台提供商将提供更加丰富的服务和解决方案,帮助企业更好地应用低代码开发技术 。同时,也会出现一些专门从事低代码开发的服务公司,为企业提供定制化的开发服务 。
总结与展望
回顾低代码的优势
低代码开发就像是软件开发领域的一场革命,它以其独特的优势,为程序员们开辟了一条全新的道路 。通过可视化的操作和少量的代码编写,低代码开发大大提高了开发效率,让程序员们能够在更短的时间内完成更多的项目 。它就像一把神奇的钥匙,打开了高效开发的大门,让程序员们从繁琐的编码工作中解放出来,有更多的时间和精力去发挥自己的创造力 。
同时,低代码开发也降低了技术门槛,使得更多非技术人员能够参与到应用开发中来 。这不仅促进了业务与技术的融合,也为企业带来了更多的创新活力 。在低代码的世界里,没有专业与非专业的严格界限,只要有想法,就可以通过低代码平台将其转化为实际的应用 。这种开放和包容的特性,让低代码开发成为了推动企业数字化转型的重要力量 。
此外,低代码开发还能有效降低成本,无论是人力成本、时间成本还是沟通成本,都得到了显著的降低 。这对于企业来说,无疑是一个巨大的吸引力 。在当今竞争激烈的市场环境下,企业需要不断降低成本,提高效率,以保持竞争力 。低代码开发正好满足了企业的这一需求,为企业的发展提供了有力的支持 。
从实际案例中,我们也能清晰地看到低代码开发的强大威力 。一个人就能干翻 10 人团队,这不再是天方夜谭,而是真实发生的事情 。低代码开发让程序员们实现了从 “打工仔” 到 “超级英雄” 的转变,让他们在项目开发中能够轻松应对各种挑战,创造出令人惊叹的成果 。
鼓励尝试低代码开发
对于广大程序员和 IT 从业者来说,低代码开发是一个不可忽视的发展趋势 。它不仅是一种新的开发方式,更是一种新的思维方式和工作模式 。我们应该积极拥抱低代码开发,勇敢地尝试这一新技术 。
在尝试的过程中,我们可能会遇到一些困难和挑战,比如对低代码平台的不熟悉、对新技能的学习压力等 。但这些都是暂时的,只要我们保持学习的热情和积极的心态,不断探索和实践,就一定能够克服这些困难 。每一次的尝试都是一次成长的机会,每一次的挑战都是一次提升自己的契机 。通过学习和使用低代码开发,我们可以拓宽自己的技术视野,提升自己的综合能力,为自己的职业发展打下更坚实的基础 。
低代码开发的未来充满了无限的可能性 。它将继续与其他前沿技术融合,为我们带来更多创新的应用和解决方案 。让我们携手共进,在低代码开发的道路上,不断探索,不断创新,共同书写软件开发的新篇章 。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)