#低码系列#低代码来了,程序员会失业吗?
先说结论: 因人而异。
会不会失业,取决于你工作的内容、你对新事物的态度、你学习新知识的能力,简而言之,取决于你的认知。
本文主要阐述低代码的概念,介绍目前主流的低代码平台,总结低代码平台的典型特征、存在优势以及未来发展趋势。并站在程序员的角度,分析如何在已经到来的低代码战争中,找到自己的定位,一展所长。
什么是低代码?
低代码(Low-Code)一词最早由Forrester在2014年提出,通过少量代码就可以快速生成应用程序的开发平台。这类平台面向的是IT专家或者平民程序员,以快速交付应用程序为目的,解决传统软件开发模式带来的周期长、成本高等问题。
低代码是一个相对的概念。从字面上看,能减少代码量的开发方式就可以看做是低代码。低代码平台指面向业务开发人员,屏蔽底层技术复杂性,以可视化方式为主,少量代码为辅,用来快速搭建各种应用系统的开发平台。
低代码业内领军者Outsystems有自己对低代码的定义:低代码是一种软件开发方法,可以更快地交付应用程序,并且只需很少的手工编码。低代码平台是一组工具,这些工具可以通过建模和图形界面来可视化应用程序开发。可以使开发人员可以跳过手工编码,从而加快了将应用程序投入生产的过程。
Mendix认为,低代码开发是一种可视化应用开发方法。通过低代码开发,不同经验水平的开发人员能够通过图形用户界面,使用拖放式组件和模型驱动逻辑来创建 Web 和移动应用。
从各个低码平台对低代码的定义,可以看出低代码概念的基础特征:只需少量代码、通过可视化方式开发,相比传统开发模式,周期短,交付快,能够快速搭建应用。
形式各异的低码平台
比较知名的低码平台,国外有Outsystems、Mendix,国内有华为应用魔方、阿里宜搭、简道云、清流等。让我们先来看看这些低代码平台研制的产品的功能有哪些,主要解决什么样的问题。
华为应用魔方
华为应用魔方(AppCube)提供四大能力,帮助开发者高效构建应用。
- 页面编排能力,可以把页面的组件、布局、颜色进行编排;
- 相关数据建模能力,用于保存业务数据;
- 业务逻辑编排能力,基于机器自动执行的、不需要人为干涉的流程,可以高效编排;
- BPM的流程编排的能力,用以解决人为干涉和审批类的流程问题。
对于复杂的企业数字化场景,AppCube提供了全场景的开发能力
- 对于专业软件开发工程师和企业IT人员,可以用低代码开发能力快速开发应用
- 对于业务人员,可以用零代码能力,通过一些拖拽快速构建
- 对于面向专业领域的专业问题,如复杂业务算法,开发者可以使用Java、Python等语言开发,以微服务的方式发布到AppCube低代码平台进行托管和调用
阿里宜搭
宜搭是阿里巴巴自研的低代码应用构建平台,通过可视化拖拽的方式,传统模式下需要2周才能完成开发的应用,用宜搭2小时就能完成。用宜搭搭建应用,你只需要关注业务本身。数据存储、运行环境、服务器、网络安全等,平台为你全部搞定。
宜搭通过高度的抽象,将页面元素封装为基础组件和业务组件,将业务规则、权限等封装为规则配置、公式和可拖拽的流程设计器,通过拖拽以及配置,无需写代码,即可完成符合业务需求的应用系统搭建。
简道云
简道云是一款灵活易用的应用搭建平台,提供丰富的功能模块,如:在线表单,流程,仪表盘,知识库等功能。使用者无需代码基础即可像搭建积木一样,快速搭建出符合需求的个性化管理应用。
清流
轻流认为的无代码开发是一种无需代码基础、适合业务人员、IT开发及其他各类人员使用的、快速构建适应企业各种需求变化的数字化开发平台,用户在几天甚至几个小时内就能完成系统的开发、测试和部署,并能够随时调整或更新。
Outsystems
OutSystems 是低代码市场的长期领导者,OutSystems 的低代码开发平台,让软件开发人员和业务用户通过直观的可视化界面来构建应用程序,而不是传统的编写代码方式。用户可以在开发平台灵活拖动各个图形化控件,以构建业务流程、逻辑和数据模型等所需的功能,必要时还可以添加自己的代码。
Mendix
美国原生代低代码开发厂商,低代码开发平台的全球领导者之一。
Mendix大部分的功能都是优越的,包括其数据建模和管理能力、提供数据库及核心系统的连接组件,可以实现CRM、ERP等独立应用数据的联通。
虽然每个低代码平台的功能形态各不相同,但是我们仍然可以从中得出一些低码平台的通用特征:
低码平台的核心是搭建基础引擎,如:表单引擎,流程引擎,报表引擎,消息引擎,规则引擎等等。
低码平台要具备建设系统基础设施能力,如:组织架构,用户体系,权限管理等。
低码平台都有组件/插件库,基于数据模型,通过可视化的页面操作/配置来构建应用 复杂一点的低码平台,需要拥有集成管理的能力,如:集成现有系统的开发能力,自动对接第三方开放平台等。 低码平台功能越是丰繁复杂,越是需要程序员参与开发对接,深度配合。
程序员的核心竞争力是什么?
复盘能力
复盘能力要求我们在工作完成一段落后,对前期工作的代码和bug进行回顾分析,发现闪光点和不足。
具体而言,如何实现代码复用、局部重构,改善既有的代码;如何避免出现重复的、相似的bug?
复盘能力能够帮助程序员在日常的开发工作中,一点一滴的成长。
系统思维能力
系统性思维要求我们在编程实践中要有方法论,要善于抽象,从整体上去思考问题。
举个例子,当一个项目趋于稳定之后,系统架构和编程范式基本不变了,开发具体功能的代码结构就会变得很相似。那如何来提升编程效率呢?
写个代码生成器或许就是一个不错的思路!
学习新知识的能力
海量的信息在互联网上不分日夜地进行创造、分发,每个人都能自由的获取信息。如何筛选信息,如何辨识信息,是现阶段信息化最大的挑战。
作为信息化的建设者,程序员的自学能力,主动探索未知领域的能力,是非常核心的能力。这一点基本算业界共识了。
解决问题的能力
解决问题的稳准狠是衡量一个程序员是否优秀的重要因素之一,也是资深技术人员真正的价值所在。
程序员如何与低代码相处?
低代码要解决的痛点是,在低代码平台提供核心引擎和业务组件的基础上,快速搭建一套具备基础的业务功能,满足常规需求和日常使用的应用。
对业务人员而言,它确实满足了80%高频重复的基础需求,但仍有20%定制功能、复杂交互、特殊场景等个性化需求,无法通过可视化操作或者通用引擎来解决,必须要程序员介入开发。
另一方面,持续地进行迭代更新是一款软件保持生命力的基本要素。而这往往会造成原本属于二八原则里80%基础需求变成20%的个性化需求。越是复杂的功能迭代,越是离不开程序员。
无代码或许会到来,但去程序员不会发生。然而这并不意味着对程序员毫无影响。恰恰相反,当一个软件工程80%的功能,都可以通过简单的代码逻辑,甚至不需要代码就能实现。
如果不具备核心竞争力,那程序员还是程序员吗?