软件技术 调研报告 范文篇1
为了创建我院高职 教育 的特色和品牌,为了培养高质量的实用性人才,为了更深入地了解软件技术专业的人才需求状况,掌握各企事业单位所需要的人才规格结构、学历层次,以便为我校专业设置、人才培养、办学模式的调整提供可靠依据,我院、系曾多次组织系教学负责人、有关教师,就软件技术专业社会需求问题分赴沿海、长沙等城市考察。考察期间,考察团一方面向当地教育局、人事局、人才交流中心了解人才需求信息,另一方面了解我院 毕业 生就业情况,分发和投放我院毕业生推荐材料1000余份。调查反馈信息如下:
一、 软件技术专业社会需求现状
信息产业部调查显示,中国的IT产业在过去5年经历了平均年28%的增长速度,是同期国家GDP增长速度的三倍。目前国家对软件人才的需求已达20万,这个需求将以每年20%左右的速度增长。而目前中国的高校每年有仅5万名IT专业毕业生,预计毕业生数量的增幅每年也仅在7-8%左右。因此未来5年合格软件人才的需求将远大于供给。到2005年,我国的软件与信息服务业国内市场销售额要达到2500亿元市场目标,从业人员规模上要形成80万人开发人员队伍。然而现有的统计调查显示,我国国内企业现有软件技术开发人员大约只有20万人,要达到2005年80万人的规模,至少需要补充60万的人才缺口。
二、 企业对现有软件人才的需求情况
通过调查我们发现,计算机类岗位的招聘条件正日益苛刻。如调查中,长沙市高新技术产业开发区的几家大型的独资企业和中外合资企业,从要求应聘者具备“实战,此外,由于计算机专业的广泛性,计算机行业的任何一项产品和成果均非个人能独自完成。因此从调查中可以看出,很多用人单
位将应聘者是否具备与他人合作的潜质作为考察标准之一。正如许多企业负责人在调查报告中所填写的那样,作为一位在企业从事计算机方面工作的人员首先要具备的素质为:有创新性,对现有技术的掌握,工作范围内专业问题的熟练处理,合作精神。
三、 毕业生对学院教学情况的反馈情况
1、毕业生对学生知识结构的意见和希望
调查中,毕业生对学院这一调查活动的开展表示了欢迎和全力支持,他们普遍认为学生的知识结构主要由基础知识、英语应用能力、专业业务处理能力三部分组成。
2、毕业生对实践能力的要求
调查表明,毕业生刚走上工作岗位时普遍感觉自己的动手能力差,都有一个感觉会做却做不好的阶段,自己有种眼高手低的感觉。他们认为学院的教学实训、毕业实习、毕业设计等教学环节对于提高学生的实践动手能力起着举足轻重的作用。
四、 总结
综上所述, “软件技术专业在中国是一个新事物,很多人还在观望,关键是要办好”。有些专家就此谈到,“一些软件企业反映,计算机应届毕业生不能适应实际工作的要求,因此他们不愿招应届毕业生而愿招有几年工作 经验 的。如果职业技术学院软件技术的毕业生也不能适应实际工作的要求,还需要工作几年才能适应,那么它的意义就不大了。所以现在比追求学生数量更重要的是切实把这个专业办好,办好了,软件企业愿意要它的毕业生,报考自然会踊跃了。”千秋基业,教育为本。在21世纪,信息系全体师生充满信心,决心以和“”重要思想为指导,全面贯彻党的教育方针,与时俱进,从为学生着想出发,为把我系建设成专业特色明显、学科优势突出的名系、大系,为社会培养出更多有用的人才而奋斗。
信息工程系计算机软件教研室 2004年8月
软件技术调研报告范文篇2
为了更好地制定2014年软件技术专业培养方案,在2014年三月我们对软件技术专业进行了市场调研,主要调研了北方软件、软博科技、日易科技等软件企业,现将调研结果总结如下:
一、调研的目的
此次进行调研的主要目的是了解软件行业的人才需求目标,能力要求以及行业的工作过程,以此来修改人才培养方案和进行课程建设。
二、调研的主要方式
1、要想了解企业对人才的要求,最好的方式我认为就是看招聘启示, 一个企业的硬性需求都写在招聘启示中了。所以我首先上网查询本行业相关的大型企业的招聘要求,了解行业所需的前沿知识。
2、由于计算机学科的特殊性,知识体系翻新速度非常快,了解整个行业的发展动态有助于我们制定我们的人才培养方案和课程建设,所以我又在网上查找行业的最新动态以确定我进行企业调研的方向。
3、利用自己的人际关系,与已经就业的学生进行聊天交流,借此向其了解有关本专业的专业计划的问题,了解企业中的工作流程。
三、调研的主要内容
1、软件行业的发展现状
近年来,我国软件和信息技术服务业发展迅速,但产业规模和
实力还不能满足国民经济和社会发展需要,依然存在一些制约产业发展的突出问题,具体表现在:缺乏具有全球领先地位的大企业,产业整体上处于价值链的中低端产业创新体系不健全,核心技术缺乏产业链协同效应尚未充分发挥,亟待建立龙头企业带动、中小企业支
撑的产业发展格局人才结构矛盾突出,高层次、复合型、领军型人才依然缺乏以市场为导向、政产学研用结合的支撑体系有待完善,产业可持续发展能力亟需提升。
十二五时期,伴随信息通信技术的迅速发展和应用的不断深化,软件与网络深度耦合,软件与硬件、应用和服务紧密融合,软件和信息技术服务业加快向网络化、服务化、体系化和融合化方向演进。产业技术创新加速, 商业模式 变革方兴未艾,新兴应用层出不穷,将推动产业融合发展和转型升级。
自2000年以来我国软件业持续高速发展,2000-2012年我国软件产业收入增长44倍,年均复合增长率约为37%。而近10年,全球软件产业的平均增长率约在7%左右。
2013年1-8月,我国软件业实现利润2126亿元,同比增长25.5%,高出1-7月和去年同期0.4和10.3个百分点。从业人员数量和工资总额增长14.2%和18.2%,保持稳定增长态势。
1-8月,西部地区完成软件业务收入2107亿元,同比增长28.5%,高出全国水平4.4个百分点,其中重庆、陕西保持30%以上增长。中部地区完成软件业务收入742亿元,同比增长25.2%,增速高于去年同期10.8个百分点。东部和东北地区分别完成软件业务收入14550和2018亿元,同比增长23.3%和24.7%,增速低于去年同期3.1和0.9个百分点。
中商情报网发布《2013-2018年中国软件行业市场深度调查及投资战略研究报告》显示,目前全国软件业务收入排名前20位的城市,占据全行业近九成的业务收入,其中北京、上海、南京、济南等11个软件名城及创建城市,占全国软件收入的65%。软件产业也已成为这些城市的战略支柱产业。 2、软件行业的人才需求状况
我国软件业持续保持20%的增长速度,每年的软件人才需求缺口是40~100万人次。国家十大产业振兴规划中的电子信息产业和物流产业与软件行业紧密相关,电子信息产业的三大任务都包括了软件产业。软件技术专业毕业的学生满足了社会需求,具有广阔就业前景。该专业毕业生适合在IT领域、软件公司、各类企业和政府机关、科研单位从事软件开发、软件测试、网页设计、数据库维护、客户端编程等工作。
3、重庆地区的软件企业现状
重庆的地理位置非常优越,重庆直辖后的大规模中央直接投资和财政转移支付直接带动了经济起飞,但是今后的重庆还必须依靠制造业的发展,没有大规模的制造业支持和一定规模的劳动密集型产业,是不可能实现城市化和现代化的。在支持制造业发展的同时也非常注重环境保护,而软件行业是个低耗高能的产业,政府决策必定会竭力支持。目前有金算盘软件、惠普软件、南华中天等知名软件公司。
4、岗位(岗位群)调查
1)、Java程序员
职位描述:
1、WEB应用程序代码编写
2、模块代码测试及优化
3、编写单元测试文档。
岗位要求:
1、精通java基础,及常用java设计模式,深入理解MVC编程模式,了解UML相关知识。
2、掌握struts、spring、hibernate等主流java开源框架技术。
3、熟练掌握WEB应用程序设计相关的jsp、javascript、aja_、css、html等技术。
4、熟悉DB2、ORCALE、MS SQL SERVER数据库其中一种
5、有较强的新技术学习能力,和良好的沟通能力和理解能力。
2).net程序员
职位描述:
1.精通ASP.NET(C#)开发,熟悉.NET多层开发和MVC结构。
2. 熟悉SQLserver,MySql数据库,具有SQLServer或MySql数据库设计和开发经验熟练处理DB的存储过程,函数,作业等等。
3.熟练掌握HTML、CSS、JavaScript、Aja_。
4.项目开发中至少使用过一种源代码管理工具,如VSS、SVN等。
5. 有良好的技术文档、开发文档习惯,具有规范化,标准化的代码编写习惯。
6.具有良好的沟通能力,以及学习和团队合作的能力。
7. 思维清晰敏捷,逻辑分析能力强,做事认真、细致、有责任心,能够承担一定工作压力。
3)java程序员 专业能力要求:
1.熟悉J2EE规范,能应用多种开源框架,能做框架源码分析
2.熟练使用Eclipse、MyEclipse等IDE开发工具
3.熟悉SQL Server、MySQL数据库
4.具有良好的文档编写能力,能按要求完成项目所需文档的编写
5.熟练B/S系统开发的相关技术,如HTML、SML、JavaScript、aja_等
6.熟悉使用struts2、spring、Hibernate、JQuery、E_tJS等框架
4).net软件开发工程师
岗位要求:
1、具有一年以上.NET团队开发经验,具有.NET企业框架下多层结构及分布式系统开发经验
2、熟练.NET下的C/S、B/S系统开发,熟悉.NET框架类库,如WCF, WinForms, ASP.NET,ADO.NET等
3、熟练SQL Server数据库,并能熟练编写存储过程、触发器
4、熟悉Web Service、_ML、JavaScript 、AJA_、CSS等WEB相关技术
5、熟悉ASP.NET MVC、多浏览器兼容开发、手机应用开发、短彩信网关开发者优先
6、良好的工作心态,积极的工作态度,良好的沟通能力、团队合作精神善于学习拥有解决问题的能力
7、有良好的书面和口头表达能力。
5)Java软件开发工程师
任职资格:
1、熟悉J2EE开发,精通SSH等常用框架,对当前主流架构有深刻理解
2、 精通JAVA精通B/S系统开发的相关技术,如HTML、_ML、javascript、aja_等
3、.熟练使用Eclipse 、MyEclipse等IDE开发工具
4、熟练应用Tomcat、websphere等Web容器
5、熟悉oracle、sql server或mysql数据库
6、 熟悉android、ios系统的应用开发者优先
7、具有良好的文档编写能力,能按要求完成项目所需文档的编写
8、具有系统需求分析和设计能力,能快速理解业务需求并进行相关逻辑设计
9、具有较强的学习能力和独立解决问题的能力,具有良好的团队合作精神,良好的沟通能力,工作责任心强,能承受一定的工作压力。
6)java技术支持工程师
知识技能:
1、具备牢固的JAVA基础,熟悉J2EE开发,具备一定的开源框架使用经验
2、熟悉ORACLE等关系型数据库。
综合素质:
1、具备良好自我总结和学习能力
2、具备良好的团队合作精神
3、具备良好的沟通能力。
7)java实施工程师
职位描述:
1、有一定开发基础,掌握ORACLE、Mysql等数据库系统和相关编程工作
2、熟悉J2EE架构和相关的JAVA开发技术
3、了解国家电网实施工作,有相应的测试经验
4、具有团队合作精神,善于沟通交流,理解能力强
5、工作认真、敬业、严守职业操守
8)软件测试工程师 1、任职资格
(1)、熟悉软件测试基础知识,掌握主要软件测试 方法 和测试工具
(2)、业务理解能力强,能编写高质量的测试用例
2、工作职责
(1)、主要从事公司软件项目的测试工作,保证项目质量
(2)、编制测试计划、测试方案、测试用例、测试报告
(3)、组织实施软件性能测试、集成测试、功能测试
四、调研结论
1专业设置的正确性
国家和西部三地政府的政策和资源超常规地向软件及信息服务产业倾斜,营造了良好的产业发展环境,强力推动并持续保障当地软件及信息服务产业发挥后发优势,实现软件及信息服务产业的跨越式发展。本地企业信息化需求,催生软件企业发展与软件人才需求的增长提供良好市场空间。西部地区人力条件,又为软件和服务外包产业的壮大提供了可靠的智力保障。
2专业方向布局的正确性
目前本专业设置了Java、.net、对日外包对应了市场上的主要需求。而C++方向由于全国相关专业本科均开设了该方向课程,已经有了很丰富的积淀,同时由于C语言对算法的要求较高,不适合专科生学习后去与本科生岗位竞争,所以本专业没有设置该方向。同时,由于软件行业均对一年以上工作经验的人员需求超过了应届毕业生需求的5~10倍,本专业在课程体系的设置上着重考虑了学生的经验的积累,本专业毕业的学生均能具有接近1年开发经验的能力。
2014年3月28日
软件技术调研报告范文篇3
2008年是沈阳职业技术学院突飞猛进的一年,这一年学院取得的可喜成绩有目共睹。作为一只高职高专行业的生力军,我们的目标是将我们的学院办实、办强。2009年是我们继往开来的崭新年,为了使我们的学院更好的与企业接轨,使我们申办的专业成为社会紧缺型人才培养的摇篮,使我们培养的学生成为社会有用的人才,我们利用寒假时间系统的对于沈阳各软件技术相关企业进行调研,通过我们对于东软、沈阳华嵘联德科技发展有限公司、沈阳亿之行科技发展有限公司、沈阳网达科技有限公司、沈阳嘉通科技有限公司等十几家IT企业采用走访、电话采访、网络沟通等多种途径的调研,我们在专业课程设置、发展方向等方面取得了一定得收获。现将此次调研的情况做如下分析总结:
一、职业教育计算机专业现状分析:
由于现在世界上计算机应用已经朝着多元化发展,特别是 网络技术 与计算机软硬件技术飞速发展,推动着经济全球化的进程。而当前我们很多职业学校计算机应用专业的设置和 教学方法 ,与计算机的发展及社会对计算机专业人才的需求不相适应,,在当前的形势下显得过于单薄和简陋,毕业的学生除了在一些计算机应用水平较低的行业和机关外,已经无法适应飞速发展的信息社会对计算机专业人才专业化、高技能、高素质的需求。
据统计表明,职业教育计算机软件技术相关专业的毕业生,大部分(80%以上)从事计算机销售与技术支持、数据录入、办公文秘等岗
位的工作,在计算机应用与软件人才链中处于较低端位置。在软件开发、游戏软件制作、网络编程等岗位上工作的职业学校毕业生相对较少,而实际上这些岗位非常需要高职毕业生,高职毕业生在这里具有很大的就业的空间。
??因此,我们有理由认为,随着计算机的普及,社会不仅需要掌握计算机基础知识,具有操作和维护计算机系统的人才,更加需要掌握一定的计算机组成原理、计算机网络等知识,具备软件开发、手机游戏制作、网络游戏制作等能力的软件专业高等专业人才。
二、制定调研目的:
此次进行调研的主要目的是通过对高职高专计算机专业发展现状分析,进一步掌握软件行业的人才需求目标、能力要求以及行业的工作过程,以此来修改我院的人才培养方案和进行课程建设。
三、针对软件技术(软件测试)专业调研内容:
沈阳的软件测试行业是近两年软件的新兴行业,过去只是由开发人员对于软件进行测试,现在许多软件公司已经单独的开设了软件测试行业,作为高职院校的软件测试专业,我们培养的学生的岗位群主要为:
1、软件测试技术人员:入门级测试职位。主要负责建立测试硬件和软件配置,执行简单的测试脚本或者自动化测试,利用beta站点分离和再现软件缺陷。
2、软件测试员或者软件测试工程师:编写自己的测试用例和测试程序,并参与设计和 说明书 审查,编写简单的测试自动化或者测试工具,在执行白盒测试时与程序员密切合作。
3、软件测试工具开发师或软件测试开发工程师:主要执行白盒测试,能够开发测试工具或执行白盒测试。
4、软件测试负责人:负责软件项目主要部分的测试,为负责范围制定测试计划,监督其他测试员执行测试,重点收集产品的度量信息并向管理部门呈报。
5、软件测试经理:监督整个项目甚至多个项目的测试,和项目经理、开发经理一起制定精度、优先级和目标为项目提供合适的测试资源---人员换、设备、场地等,为小组测试制定基调和策略。
四、软件技术专业的行业调研反馈的意见:
(一)针对学生基本素质调研情况反馈:
1、用人单位方面:
计算机的软硬件更新都比较快,用人单位并不要求学生学得特别多,而是基础比较牢固,很多用人单位反映学生基础较差,体现在工作中简单的数据计算都不能完成。这可能与在职业学校这三年学习中语数外这三门基础课基础打得不牢有关。另外,计算机中一些最常见的简单的故障也不能排除,硬件方面知识太少,最基本的系统安装与维护都不懂。这与部分专业没有开设计算机安装与维护这门课有关。还有就是学生没有养成良好的用机操作习惯,如有单位反映有些刚参加工作的毕业生经常一边吃零食,一边操作计算机。其次,用人单位反映有条件的学校可以把培养目标定得高一些,尽量培养一些水平达初级程序员和程序员的实用型人才。
2、学生方面:
学生认为应该随着市场的发展和计算机的发展,随时调整课程的设置,计算机的教育不能拘泥于形式,旧的落后的课程应随时舍弃,
新增一些实用性强的课程,尤其是网络游戏制作、手机软件开发等方面的课程。根据学生基础和兴趣增设一些类似提高班的课程。其次就是调整学校的培养目标和提高教师水平,尤其是教师有责任心。另外是完善电脑机房的设备和管理。
(二)、企业对于软件测试专业人员所需具备的能力要求: 为了满足社会对软件测试人才的需求,为了使软件测试方向的教育积极应对计算机市场的挑战,软件测试方向的人才应具备以下能力:
1、软件开发能力:作为软件测试人员,需要在测试过程中清楚了解软件的开发流程,并且掌握一定开发语言。
2、计算机组装及维护能力:某些测试过程中需要使用不同的计算机硬件、软件,并且在测试试过程中需要干净的系统,软件测试人员需要根据需要自己组装并进行相应的维护。
3、数据库操作能力:现代许多软件都是前台与后台数据库相连,软件测试人员需要了解基本的数据库理论。
4、网站开发能力:目前大多数软件都是网站形式显示,具备网站开发能力能够更好的对软件进行测试。
5、软件测试能力:作为软件测试人员必须具备的能力。
(三)软件测试专业开设课程
针对软件测试人员所应具备的能力,应该开设以下课程:
计算机基础、c语言程序设计、c++程序设计、java程序设计、计算机组装与维护、数据库原理、数据库语言(Oracle/SQL)、网站设计、ASP程序设计语言、软件测试基础、软件测试技术、自动化测试技术、软件测试顶岗实习。
五、本地区用人单位调研论证:
通过对本地企业的调查表明,本专业毕业的学生虽大部分从事计算机相关专业工作,但是以销售和技术支持等性质的工作较多。原因有如下几方面:
1、软件测试专业现为新兴行业,在沈阳专门从事该性质的IT企业较少。因从业规模较小,故多数本专业毕业生无法学有所用。
2、软件技术专业中手机软件开发专业毕业生从业较难。原因是专门从事手机软件开发的行业多数集中在北京和上海,沈阳相对较少。故本专业毕业生实习实训的企业较少,学生缺乏一定得实际项目开发能力。
3、目前软件开发中需求较多的为游戏软件开发人员。由于网络的普及和兴起,网络游戏成为亿万网民热衷的业余休闲项目,故专业的网络游戏软件开发制作人员成为紧缺人才。
六、高等职业学校发展的思考
国家对职业教育相当重视,要求职业教育要在新形势下取得更大发展。那么高等职业学校计算机专业的发展应该如何走呢?
首先,我们应该借全国职业教育工作会议的东风,与时俱进,修炼内功,形成质量强专业,要用终身教育的思想深化对职业教育本质特征的认识,丰富职业教育的内涵。这一点应该从教师做起,针对目前存在的问题,教师应该严格要求自己,不断学习,加强业务培训,提高教师自身的教学和实践能力,加强学校与企业间的人员和技术交流。
第二,高等职业学校要合理设置专业和安排课程的开设,要加强学生基础课程的教学,根据终身教育的思想,学生以后也要终身学习,那么他们就必须在当前年龄段打好基础。这里主要是指加强语文、数学和英语的教学。对于专业课程的安排可以考虑采用必修和选修的形式,计算机操作基础(包括Windows、Office等)、计算机安装与维护、 网络基础知识 和C语言这些作为专业基础课程,是必修的课程,其余作为专业选修课,但规定每个学生至少得选多少门。同时对一些基础相对较好的学生提高培养目标,如定位达初级程序员的水平。
所以,从当前形势看,高等职业学校的计算机软件技术专业设置和课程开设必须合理,紧密与社会企事业相联系,培养固定企业需要的专业计算机类人才同时根据发展不断调整,才会使高职教育符合社会发展并且大有所为的。
计算机系:冯书晶 2009-2-27
软件技术调研报告范文相关 文章 :
★ 软件技术调研报告范文
★ 软件技术调研报告范文(2)
★ 计算机调研报告范文3篇
★ it市场调研报告范文3篇
★ 计算机调查报告范文3篇
★ 产品市场调查报告范文精选5篇
★ it市场调查报告范文3篇
★ 3000字的调研报告范文
★ 软件工程实践报告范文3篇精选
★ erp调研报告范文(3)
简介: 什么是低代码?我们为什么需要低代码?低代码会让程序员失业吗?本文总结了低代码领域的基本概念、核心价值与行业现状,带你全面了解低代码。
什么是低代码
“Low-Code”是什么?如果你是第一次听说,没准也会跟我当年从老板口中听到这个词后的内心戏一样:啥?“Low-Code”?“Code”是指代码我知道,但这个“Low”字是啥意思?不会是老板发现我最近赶工写的代码很丑很“Low”吧... 想多了,老板怎么可能亲自review代码呢。那难道是指,“Low-level programming”里的“Low”?老板终于发现让我等编程奇才整天堆Java业务代码太浪费,要派我去闭关写一个高性能C语言网络库... 显然也不是,老板哪能有这技术情怀呢。那到底是什么意思?作为一名搜商比情商还高的程序员,能问Google的绝不会问老板。于是我一顿操作后,不假思索地点开了第一条搜索结果:Low-code development platform。
Wikipedia定义
从Wiki的这段定义中,我们可以提炼出几个关键信息:
• 低代码开发平台(LCDP)本身也是一种软件,它为开发者提供了一个创建应用软件的开发环境。看到“开发环境”几个字是不是很亲切?对于程序员而言,低代码开发平台的性质与IDEA、VS等代码IDE(集成开发环境)几乎一样,都是服务于开发者的生产力工具。
• 与传统代码IDE不同的是,低代码开发平台提供的是更高维和易用的可视化IDE。大多数情况下,开发者并不需要使用传统的手写代码方式进行编程,而是可以通过图形化拖拽、参数配置等更高效的方式完成开发工作。
Forrester定义
顺着Wiki的描述还能发现,原来“Low-Code”一词早在2014年就由Forrester提出了,它对低代码开发平台的始祖级定义是这样的:
请点击输入图片描述
相比Wiki的版本,这个定义更偏向于阐明低代码所带来的核心价值:
• 低代码开发平台能够实现业务应用的快速交付。也就是说,不只是像传统开发平台一样“能”开发应用而已,低代码开发平台的重点是开发应用更“快”。更重要的是,这个快的程度是颠覆性的:根据Forrester在2016年的调研,大部分公司反馈低代码平台帮助他们把开发效率提升了5-10倍。而且我们有理由相信,随着低代码技术、产品和行业的不断成熟,这个提升倍数还能继续上涨。
• 低代码开发平台能够降低业务应用的开发成本。一方面,低代码开发在软件全生命周期流程上的投入都要更低(代码编写更少、环境设置和部署成本也更简单);另一方面,低代码开发还显著降低了开发人员的使用门槛,非专业开发者经过简单的IT基础培训就能快速上岗,既能充分调动和利用企业现有的各方面人力资源,也能大幅降低对昂贵专业开发者资源的依赖。
低代码核心能力
基于上述的定义和分析,不难总结出如下这3条低代码开发平台的核心能力:
请点击输入图片描述
• 全栈可视化编程:可视化包含两层含义,一个是编辑时支持的点选、拖拽和配置操作,另一个是编辑完成后所及即所得(WYSIWYG)的预览效果。传统代码IDE也支持部分可视化能力(如早年Visual Studio的MFC/WPF),但低代码更强调的是全栈、端到端的可视化编程,覆盖一个完整应用开发所涉及的各个技术层面(界面/数据/逻辑)。
• 全生命周期管理:作为一站式的应用开发平台,低代码支持应用的完整生命周期管理,即从设计阶段开始(有些平台还支持更前置的项目与需求管理),历经开发、构建、测试和部署,一直到上线后的各种运维(e.g. 监控报警、应用上下线)和运营(e.g. 数据报表、用户反馈)。
• 低代码扩展能力:使用低代码开发时,大部分情况下仍离不开代码,因此平台必须能支持在必要时通过少量的代码对应用各层次进行灵活扩展,比如添加自定义组件、修改主题CSS样式、定制逻辑流动作等。一些可能的需求场景包括:UI样式定制、遗留代码复用、专用的加密算法、非标系统集成。
不只是少写代码
回到最初那个直击心灵的小白问题:Low-Code中的“Low”,到底是啥意思?答案已经显而易见:既不是指抽象程度很低(相反,低代码开发方式的抽象程度要比传统编程语言高一个level),也不是指代码很low(也相反,低代码所生成的代码一般都经过精心维护和反复测试,整体质量强于大部分手写代码),而是单纯的“少写代码” —— 只在少数需要的情况下才手写代码,其他大部分时候都能用可视化等非代码方式解决。
再往深一点儿看,低代码不只是少写代码而已:代码写得少,bug也就越少(正所谓“少做少错”),因此开发环节的两大支柱性工作“赶需求”和“修bug”就都少了;要测的代码少了,那么测试用例也可以少写不少;除了开发阶段以外,平台还覆盖了后续的应用构建、部署和管理,因此运维操作也更少了(Low-Code → Low-Ops)。
然而,少并不是最终目的:如果单纯只是想达到少的效果,砍需求减人力、降低质量要求也是一样的。低代码背后的哲学,是少即是多(Less is More),或者更准确说是多快好省(Do More with Less) —— 能力更多、上线更快、质量更好,成本还更省,深刻践行了阿里“既要,又要,还要”的价值观精髓。
请点击输入图片描述
平台的职责与挑战
上面说的是低代码给开发者提供的能力与吸引力,那么作为服务的提供方与应用的承载者,低代码开发平台自身应该承担怎样的职责,其中又会遇到多大的挑战?是否就一定要如阿里云所主张的那样,“把复杂留给自己,把简单留给别人”?虽然这句话听起来很深明大义,但不知道大家有没有想过,为什么我们一定要抱着复杂不放,平白无故给自己找事?就不能直接干掉复杂,也给咱阿里云自己的员工留点简单吗?是工作太容易就体现不出来KPI价值了,还是家里的饭菜不如公司的夜宵香?
冥思苦想许久后,我从热力学第一定律中找到了答案:开发一个应用的总复杂度是恒定的,只能转移而不可能凭空消失。要想让开发者做的更少,安心享受简单的快乐,那么平台方就得做的更多,默默承担尽可能多的复杂度。就像一个满身腱子肉的杂技男演员,四平八稳地托举着在高处旋转与跳跃的女搭档;上面的人显得越轻盈越毫不费力,下面的人就得越稳重越用尽全力。当然,不是说上面的女演员就很轻松没压力,只是他们各自的分工不同,所承担的复杂度也不一样。
根据《人月神话》作者Fred Brooks的划分,软件开发的复杂度可以划分为本质复杂度(Essential complexity )和偶然复杂度(Accidental complexity)。前者是解决问题时固有的最小复杂度,跟你用什么样的工具、经验是否丰富、架构好不好等都无关,而后者就是除此之外在实际开发过程中引入的复杂度。通常来说,本质复杂度与业务要解决的特定问题域强相关,因此这里我把它称为更好理解的“业务复杂度”;这部分复杂度不是任何开发方法或工具能解决的,包括低代码。而偶然复杂度一般与开发阶段的技术细节强相关,因此我也相应把它称为“技术复杂度”;而这一部分复杂度,恰好就是低代码所擅长且适合解决的。
为开发者尽可能屏蔽底层技术细节、减少不必要的技术复杂度,并支撑其更好地应对业务复杂度(满足灵活通用的业务场景需求),这是身为一个低代码开发平台所应该尽到的核心职责。
请点击输入图片描述
在尽到上述职责的同时,低代码开发平台作为一个面向开发者的产品,还需要致力于为开发者提供简单直观的极致开发体验。这背后除了巨大的工作量,还得能在“强大”和“易用”这两个很难两全其美的矛盾点之间,努力找到一个符合自己产品定位与目标客户需求的平衡点 —— 这也许是设计一个通用低代码开发平台所面临的最大挑战。
三、低代码相关概念对比
纯代码(Pro-Code / Custom-Code)
“纯代码”可能算是我杜撰的一个词,更常见的说法是专业代码(Pro-Code)或定制代码(Custom-Code);但意思都一样,就是指传统的以代码为中心(Code-Centric)的开发模式。之所以我选择用“纯代码”,是因为如果用“专业代码”会显得似乎低代码就不专业了一样,而用“定制代码”又容易让人误解成低代码无法支持定制的自定义代码。
当然,更准确的称谓我认为是“高代码”(与低代码恰好对应,只是名字太难听,被我嫌弃了...),因为即便是使用传统的代码IDE,有些开发工作也支持(甚至更适合)以非代码方式完成,比如:iOS端开发时使用的SwiftUI界面设计器、服务端开发数据库应用时使用的PowerDesigner建模工具。不过这部分可视化工作在传统开发模式下只是起辅助作用,最后通常也是生成开发者可直接修改的代码;开发者仍然是以代码为中心来开展主要工作。
低代码与纯代码之间的关系,其实跟视频和文章之间很像:
低代码就像是现代的“视频”,大部分内容都由直观易理解、表达能力强的图片组成,因此更容易被大众所接受。但与此同时,视频也不是死板得只能有图片,完全可以添加少量文字(如字幕、标注)来弥补图片表达不够精确的问题。BTW,关于“图”和“文字”之间的辩证关系,可以进一步参考《架构制图:工具与方法论》[1]这篇文章中的相关描述。
纯代码则更像是传统的“文章”,虽然很久以来都一直是信息传播的唯一媒介,但自从视频技术诞生以及相应软硬件基础设施的普及以来,便逐渐开始被抢走了风头。如今,视频已成为大部分人获取信息的主要渠道(从电视电影到B站抖音),而经常读书读文章的人却越来越少。但不可否认的是,文章依然有它存在的意义和受众(不然我也不会费这劲敲这么多字了),即使“市场份额”一直在被挤压,但永远会有它立足的空间。
请点击输入图片描述
如果按上面这种类比关系推导,低代码未来也会遵循与视频类似的发展轨迹,超越纯代码成为主流开发模式。Gartner的预测也表达了相同的观点:到2024年,所有应用程序开发活动当中的65%将通过低代码的方式完成,同时75%的大型企业将使用至少四种低代码开发工具进行应用开发。
但同样地,就像是视频永远无法取代文章一样,低代码也永远无法彻底取代纯代码开发方式。未来低代码和纯代码方式将以互补的形态长期共存,各自在其所适合的业务场景中发光发热。在后面的“低代码业务场景”章节,会详细列出哪些场景在现阶段更适合用低代码模式开发。
零代码(Zero-Code / No-Code)
从分类的完备性角度来看,有“纯代码”自然也应该有完全相反的“零代码”(也称为“无代码”)。零代码就是完全不需要写代码的应用开发平台,但这并不代表零代码就比低代码更高级和先进,它只是做了一个更极端的选择而已:彻底拥抱简单的图形可视化,完全消灭复杂的文本代码。选择背后的原因是,零代码开发平台期望能尽可能降低应用开发门槛,让人人都能成为开发者(注意:开发 ≠ 写代码),包括完全不懂代码的业务分析师、用户运营,甚至是产品经理(不懂装懂可不算懂)。
即便是专业开发者,在技术分工越来越精细的趋势下(前端/后端/算法/SRE/数据分析..),也很难招到一个能独立开发和维护整套复杂应用的全栈工程师。但零代码可以改变这一切:无论是Java和JavaScript傻傻分不清楚的技术小白,还是精通深度学习但没时间学习Web开发的算法大牛,都可以通过零代码实现自己的技术梦或全栈梦。“改变世界的idea已有,就差一个程序员了”,这句玩笑话或许真的可以成真;哦不,甚至都用不着程序员,有idea的人自己就能上。
请点击输入图片描述
当然,所有选择都要付出代价,零代码也不例外。完全抛弃代码的代价,就是平台能力与灵活性受限:
• 一方面,可视化编辑器的表达能力远不及图灵完备的通用编程语言,不引入代码根本没法实现灵活的定制与扩展(当然,理论上也可以做成Scrach/Blockly那样的图形编程语言,但那样不过是换一种形式在手写代码而已)。
• 另一方面,由于目标受众是非专业开发人员,平台能支持的操作会更趋于“傻瓜化”(e.g. 页面只支持大块业务组件的简单堆叠,不支持细粒度原子组件和灵活的CSS布局定义),同时也只会透出相对“亲民化”的模型和概念(e.g. 使用“表格”表示数据,而不是用“数据库”),无法支撑强大专业的底层开发原语和编程理念。
请点击输入图片描述
虽然零代码与狭义上的低代码有着上述明显差异,但从广义上来说,零代码可以当作低代码的一个子集。Gartner在其相关调研报告中,就是将“No Code”划在了范围更广的低代码应用平台“LCAP”(Low-Code Application Platform)中。而当前市面上很多通用的低代码开发平台,也都兼具一定程度的零代码能力;比如低代码领域领头羊Mendix,既提供了简单易用的零代码Web IDE - Mendix Studio,也包括一个功能更强大的低代码桌面IDE - Mendix Studio Pro。
HpaPaaS(高生产力应用PaaS)
上文提到,“Low-Code”一词是拜Forrester所赐。作为同样是国际知名调研机构(a.k.a 造词小能手)的Gartner,显然不会轻易在这场可能决定低代码领域江湖地位的新概念作词大赛中认输,于是也于2017年发明了“HpaPaaS”(High-productivity application Platform as a Service)这个听上去更高大上的缩写词。
按照Gartner的定义,HpaPaaS是一种支持声明式、模型驱动设计和一键部署的平台,提供了云上的快速应用开发(RAD)、部署和运行特性;这显然与低代码的定义如出一辙。但事实证明,名字起得太专业并不见得是好事,“HpaPaas”最终还是败给了起源更早、更接地气也更顺口的“Low-Code”:从2019年开始,Gartner在其相关调研报告中也开始全面采用“Low-Code”一词(如LCAP),亲手为“HpaPaaS”打上了 @deprecated 印记。
请点击输入图片描述
图源:What’s the difference between SaaS / IaaS / PaaS / aPaaS / HpaPaaS?
值得补充的是,“HpaPaaS“这个词也并非横空出世,而是传承自更早之前Gartner提出的“aPaaS”,它俩之间的关系是:HpaPaaS只是aPaaS的一个子类;除了HpaPaaS这种通过低代码实现的高生产力应用开发平台以外,aPaaS还包括面向纯代码的传统应用开发平台(High-control aPaaS,即可控度更高的纯代码开发方式)。
不值得但就想八卦一下的是,“aPaaS”这个词也非凭空捏造,而是与云计算的兴起渊源颇深。相信各位云道中人都已猜到,aPaaS与IaaS/PaaS/SaaS这些云计算远古概念是一脉相承的:aPaaS介于PaaS和SaaS之间,相比PaaS提供的服务更偏应用,但又不像SaaS一样提供现成的软件服务(更详细的说明可参考配图来源文章)。
四、为什么需要低代码
低代码是什么可能并没那么重要,毕竟在这个信息爆炸的世界,永远不缺少新奇而又短命的事物。大部分所谓的新技术都只是昙花一现:出现了,被看到了;大部分人“哦”了一声,已阅但表示不感兴趣;小部分人惊叹于它的奇思妙想,激动地点了个赞后,回过头来该用什么还是什么。真正决定新技术是否能转化为新生产力的,永远不是技术本身有多么优秀和华丽,而是它是否真的被需要,即:为什么需要低代码?如果用不同的主语填充上面这个问句(冷知识:这叫做“延迟主语初始化”),可以更全面地看待这个问题:
为什么「市场」需要低代码?
在这个大爷大妈都满嘴“互联网+”和“数字化转型”的时代,企业越来越需要通过应用(App)来改善企业内部的信息流转、强化与客户之间的触点连接。然而,诞生还不太久的IT信息时代,也正面临着与我国社会主义初级阶段类似的供需关系矛盾:落后的软件开发生产力跟不上人民日益增长的业务需求。
请点击输入图片描述
Gartner预测,到2021年应用开发需求的市场增长将至少超过企业IT交付能力的5倍。面对如此巨大的IT缺口,如果没有一种革命性的“新生产力”体系,很难想象仅凭现有传统技术体系的发展延续就能彻底解决问题。而低代码技术正是带着这样的使命而降临,期望通过以下几个方面彻底革新应用开发生产力,拯救差一点就要迈入水深火热的IT世界:
提效降本 &质量保障
虽然软件行业一直在高速发展,新的语言、框架和工具层出不穷,但作为从业者我们不得不承认:软件开发仍处于手工作坊阶段,效率低、人力成本高、质量不可控。项目延期交付已成为行业常态,而瓶颈几乎总是开发人员(对机器能解决的问题都不是问题);优秀的开发人才永远是稀缺资源,还贼贵;软件质量缺陷始终无法收敛,线上故障频发资损不断。
相比而言,传统制造业经过几百年工业革命的发展,大部分早已摆脱了对“人”的强依赖:从原料输入到制品输出,中间是各种精密仪器和自动化流水线的稳定支撑,真正实现生产的标准化和规模化。虽然信息化号称是人类的第三次工业革命,但以软件行业目前的状况,远远还没到达成熟的“工业化”阶段。
所以,亲爱的程序员朋友,当你与前端联调了一上午接口,又与产品撕逼了一下午需求,再与自己的bug抗争了一整晚,好不容易遁入梦乡又被一连串报警短信吵醒时,是否有抬头对着星空憧憬过:“I have a dream... that one day,软件开发也能像工业制品一样,批量流水化生产,稳定高效没烦恼。” 事到如今,不管你有没有意识到,这个憧憬正在慢慢变成现实。
请点击输入图片描述
是的,低代码正在将应用软件开发过程工业化:每个低代码开发平台都是一个技术密集型的应用工厂,所有项目相关人员都在同一条产线内紧密协作。开发主力不再是熟知for循环一百种写法的技术Geek,而是一群心怀想法业务sense十足的应用Maker。借助应用工厂中各种成熟的基础设施、现成的标准零件、自动化的装配流水线,开发者只需要专注于最核心的业务价值即可。即便是碰到非标需求,也可以随时自己动手,用最灵活的手工定制(代码)方式来解决各种边角问题。
扩大应用开发劳动力
通过让大部分开发工作可以仅通过简单的拖拽与配置完成,低代码(包括零代码)显著降低了使用者门槛,让企业能够充分利用前面所提到的平民开发者资源。部分纯零代码需求场景下,低代码还能让业务人员实现自助式(self-service)应用交付,既解决了传统IT交付模式下的任务堆积(backlog)问题,避免稀缺的专业开发资源被大量简单、重复性的应用开发需求所侵占,也能让业务人员真正按自己的想法去实现应用,摆脱交由他人开发时不可避免的桎梏。
请点击输入图片描述
至此,应用开发能力不再是少数专业开发者的专利和特权,且今后所需要的技能门槛与拥有成本也会越来越低,真正实现所谓的“技术民主化”(democratization of technology)。
加强开发过程的沟通协作
多方调查结果显示,软件项目失败的最主要原因之一就是缺乏沟通(poor communication)。传统开发模式下,业务、产品、设计、开发、测试与运维人员各司其职,且各有一套领域内的工具和语言,长久以来很容易形成一个个“竖井”(silos),让跨职能的沟通变得困难而低效。这也是为什么当前热门的敏捷开发和DevOps都在强调沟通(前者是协同Biz与Dev,而后者是协同Dev和Ops),而经典的DDD领域驱动设计也主张通过“统一语言”来减少业务与技术人员之间的沟通不一致。
请点击输入图片描述
有了低代码后,这一状况将得到根本改善:上述各角色都可以在同一个低代码开发平台上紧密协作(甚至可以是同一个人),这种全新的协作模式不仅打破了职能竖井,还能通过统一的可视化语言和单一的应用表示(页面/数据/逻辑),轻松对齐项目各方对应用形态和项目进度的理解,实现更终极的敏捷开发模式,以及在传统DevOps基础之上更进一步的BizDevOps[2]。
统一开发平台下的聚合效应
低代码尝试将所有与应用开发相关活动都收敛到同一个平台(one platform)上后,将会产生更多方面的聚合效应与规模收益:
• 人员聚合:除了上一点所提到的各职能角色紧密协作以外,人员聚合到统一的低代码开发平台进行作业后,还能促进整个项目流程的标准化、规范化和统一化。
• 应用聚合:一方面,新应用的架构设计、资产复用、相互调用变得更容易;另一方面,各应用的数据都天然互通,同时平台外数据也能通过集成能力进行打通,彻底消除企业的数据孤岛问题。
• 生态聚合:当低代码开发平台聚合了足够多的开发者和应用后,将形成一个巨大的、连接一切、有无限想象力的生态体系,彻底放飞低代码的价值。
虽然零代码确实是设计给非专业开发者用的,但其所能支撑的业务场景确实有限,无法真正革新传统开发模式,替代那些仍需专业开发者参与的复杂业务场景。而狭义上的低代码却有潜力做到这一点,因为它天生就是为专业开发者而量身定制的。Gartner最近的一项调研报告显示,“66%的低代码开发平台用户都是企业IT部门的专业开发者”。这充分说明了,专业开发者比平民开发者更需要低代码。
屏幕前一批穿格子衬衫的同学要发问了:“低代码都不怎么写代码了,怎么能算是为我们程序员服务呢?”。虽然程序员讨厌重复自己,但重要的事情还是得多说一遍:开发 ≠ 写代码。1万年前蹲在洞穴里的原始人,在用小石子画远古图腾;100年前坐在书桌前的徐志摩,在用钢笔给林徽因写情书;而今天趴在屏幕前的很多人,相信都已经开始用上手写板或iPad涂涂写写了。千百年来,人类使用的工具一直在演进,但所从事活动的本质并没有多大改变。无论是用小石子还是小鼠标,写作绘画的本质都是创造与表达,最终作品的好坏并不取决于当时你手中拿着什么;同样地,应用开发的本质是想法和逻辑,最终价值的高低也不取决你实现时是用的纯代码还是低代码。
而相比纯代码而言,低代码极有可能成为更好的下一代生产力工具:
减少不必要的工作量
可视化拖拽与参数配置的极简开发模式,结合模型驱动的代码自动生成机制,可以消灭绝大部分繁琐和重复的boilerplate代码;一站式的部署和运维管理平台,无需自己搭建CI/CD流水线、申请环境资源、配置监控报警;一次搭建同时生成、构建和发布多端应用,免去人工同步维护多个功能重复的端应用;开箱即用的组件库、模板库、主题库、连接器等,让最大化软件复用成为可能。总而言之,低代码能够让专业开发者更专注于创新性、有价值、有区分度的工作,而不是把宝贵开发时间都耗费在上面那些不必要的非业务核心工作上。
强大的平台能力支撑
虽然上面列的技术支撑性工作并不直接产生业务价值,但却会直接影响业务的性能、成本、稳定性、安全性、可持续发展能力等。有远见的企业,绝不允许牺牲这些重要指标,来换取短暂的业务加速。低代码开发平台深知这一点,因此在简化和屏蔽底层技术细节的同时,也会尽可能把自己所cover的部分做到最好(至少能和纯代码开发方式一样好),包括但不限于:
现代化的技术架构和实现:现代化的低代码开发平台,在支撑用户应用时所选择的技术架构与实现方案,也会是现代化且符合业界最佳实践的,例如,前端基于主流的HTML5/CSS3标准和React框架,后端基于成熟的Java语言、SpringBoot框架和MySQL数据库,部署环境基于云原生的Docker镜像、CI/CD流水线、K8s集群和Service Mesh技术(相关知识可参考《正确入门Service Mesh:起源、发展和现状》)。
零成本的技术升级和维护:低代码的高维抽象开发方式,让应用的核心业务逻辑与底层技术细节解耦。开发者在大部分情况下都不需要关心底层技术选型,同时也无需亲自跟进这些技术的版本升级与漏洞修复,免费享受与时俱进的技术红利和应用安全性提升。即便遇到某些底层技术或工具需要进行更换(比如不再维护的开源项目),开发者也完全不必感知;技术迁移再费劲再难搞,平台自己努力就行,对开发者来说只要服务一直在线,岁月就依然静好;事后可能还会惊喜地发现,应用访问突然就变得更快了,仿佛冥冥中自有天助,感激上苍和低代码。
一体化生态能力复用
复用(Reuse)是提升软件开发效率和工程质量的最有效途径。传统的代码开发模式下,开发者可以通过提取公共类/函数、引用共享库、调用外部API服务、沉淀代码片段和模板等方式实现复用。在低代码的世界里,平台也可以提供对应的多层次多粒度复用手段,比如页面组件库、逻辑函数库、应用模板库等。
但更重要的是,低代码平台还可以充分发挥其一体化的生态优势,提供强用的可复用能力(资产)的发现、集成与共享体系:以页面组件为例,你可以直接用系统组件,也可以在平台自带的组件市场上搜索和引用更合适的组件,还可以自己用代码开发一个自定义组件并发布到市场中。平台的生态体系越大,积累的可复用能力就越多,应用的开发成本也会越低。
相比而言,虽然传统代码世界整体生态更庞大和深厚,但由于各类技术不互通、缺乏统一平台与市场、代码集成成本高等原因,一直以来都没有形成有类似规模潜力的生态能力复用体系,导致重复造轮子和低水平重复建设的现象司空见惯,还美名为“新基建”。
说到这里,另一批裹着冲锋衣头顶锃亮的同学也忍不住了:“万一低代码真的发展起来了,是不是就不需要那么多程序员了啊?上有老下有小的,同是码农身,相煎何太急!”。低代码虽然是一场应用开发生产力革命,但并不会革掉程序员的饭碗。它去掉的只是难懂的编程语法、繁琐的技术细节和一切可自动化的重复性工作,并没有也无法去掉应用开发最核心的东西:严谨的业务逻辑、巧妙的算法设计、良好的工程风格等。对于真正的程序员,即使剥去他一层又一层的编程语言和工具熟练度技能外壳,最终剩下的仍然是一个有价值的硬核开发者。
当然,如果你坚持要用纯粹的写代码方式来改变世界,也不至于失业。要么,你可以选择那些低代码暂时不太适用的领域,比如底层系统驱动、3D游戏引擎、火箭发射程序;或者,你也可以选择去写低代码中那一部分不可或缺的自定义代码扩展,为平民开发者提供高质量的积木。最后,你也完全可以选择为低代码平台本身的底层代码添砖加瓦。