过去十年,软件需求急剧增加,同时,新冠疫情的出现推动了企业快速发展,远程工作及客户交互领域采用新技术,这些举措都进一步加速了这一趋势。
这就要求公司开发客制化软件及应用程序,不论公司规模如何——而这是一项非常具有挑战性的任务,其中包含多项问题,需要程序员同时担任多种角色。能否成功开发高度客制化软件及应用程序不仅取决于程序员的技术技能,还取决于“软技能”,例如同理心和沟通能力。
Gadget Software 的创始人哈里布伦戴奇(Harry Brundage)表明,从技术角度来看,开发客制化软件及应用程序的程序员需要同时适应前端(面向用户的界面)和后端(逻辑和数据流)开发。
从求职的角度来看,对候选人来说,熟悉最新框架可以增加面试成功几率。“从软技能的角度来看,程序员必须善于沟通,”布伦戴奇(Brundage)说。“他们需要能够与客户面谈,验证假设,并清楚地传达可交付成果,避免出现差错。”
程序员还需要优秀的作品集,帮助他们在激烈的竞争市场中脱颖而出。“许多决策者非常看重现有客户及推荐,从而建立信任及可信度,”布伦戴奇(Brundage)补充道。“对于程序员来说,更新作品集以及能够证明其掌握的技能的推荐信非常重要。”
优秀的程序员不仅具备技术能力:项目管理和沟通技巧是为客户成功开发客制化应用程序所需的另外两大技巧。
# 基础设施(Infrastructure) #
Appfire 产品工程主管史蒂芬克林(Steven Kling)表示,用于客制化开发的平台即服务 (PaaS) 一直落后于基础设施即服务 (SaaS)。但随着PaaS开发框架不断完善,云端自定义开发已经达到了一个拐点。
基础设施即代码(IaC)解决方案,如Terraform和AWS云开发工具包(CDK),现在甚至为小型自定义程序员商店提供使用流行编程语言表达完整 SaaS 基础设施服务。
“许多主流云服务提供商正在使用自己的平台,去创建自己的开发框架, 这些框架帮助中小型公司更方便且经济的为其开发软件和程序,”克林(KLing)说。“因为公司现在能够在不中断自定义解决方案的情况下转移其程序,因此这些平台具备自我强化的效果,能够加速软件及程序从本地端转移至云端的速度。”
了解上述 AWS CDK 和 Terraform 等框架非常重要,同时还需要深入了解部署和维护 SaaS 后端所需的各项服务。Kling 指出,围绕 IaC 架构的新学科正在发展,主要集中在无服务器和 Kubernetes 等技能集。中级和初级应用程序程序员需要熟悉 MEAN 和 MERN(及其底层语言)等全栈框架(及其底层语言),以及 JavaScript 和 NoSQL 文档数据库等概念。
同时还要了解Webpack等难度更大的支持工具及Jest等测试框架,对于深入了解这些工具的人来说,这一点会成为加分项。Kling 说:“令我感到惊讶的是,现在有很多优秀的内容及学习管理系统 (LMS),可供不同水平的学习者免费使用。”“AWS、Azure 和 Google Cloud 等顶级供应商也提供了非常好的学习和认证路径。”
对于那些正在找工作的人,Kling 会推荐 Udemy 这样的网站。Udemy包含的课程种类很多,且具备一定深度。“令人惊讶的是,稳固的基础技能非常重要,”他补充道。“在候选人收到offer之前,我们会对他们进行简单的技能评估,这已经成为行业的标准做法。我亲自参与设计评估,其中特意加入了一些 JS、Java 本地和基本概念问题,以及有关 React、Node、ExpressJS 和 J2EE 等当代框架问题。”
许多候选人非常了解其中的概念知识,但不了解底层语言及其概念。“而我们可以根据此类标准判断候选人是否合格。”Kling继续说道。
# 安全技能非常重要 #
NTT Application Security 首席营收官 David Gerry 指出,在过去两年中,各行业、各规模公司内部对数字化转型的需求都在猛增。
David说:“在当今经济环境下,公司必须采用在线运营模式。”“这导致许多公司在没有适当的安全测试下大规模部署应用程序,以支持新型混合工作模式或全程远程工作模式。”
David表示,到 2022 年,我们可以期待强大的数字转型所带来的影响,DevOps 社区的增长速度比以往任何时候都快,这也将导致掌握安全技能的自定义应用程序程序员的需求量达到巅峰。
“对于自定义应用程序程序员,产品管理、设计、业务分析、性能测试等技能非常重要,”David指出。“然而,在当今不稳定的环境中,最关键的技能要么是可以融入开发过程的安全知识基础,要么是将这些需求传达给安全团队的能力。”
随着应用程序暴露的漏洞数量不断增加,对于负责为特定公司开发自定义软件和应用程序的程序员来说,扎实掌握自动化和安全性是关键。“开发人员承担的责任更多,承受的压力也更大,同时还需要快速且无缝开发性能最佳的系统。”David说道。“如果你是一名程序员,从应用程序的开发到生产,你需要全程负责。然而,此过程中的某些部分可能超出了你当前的技能组合范围。”
David建议,程序员应继续坚持接受必要的培训和教育,培养自己在开发和安全方面的技能,帮助他们在工作中成为团队不可或缺的一部分。
“负责客制化应用程序的程序员应该询问潜在雇主他们是否有减轻安全测试压力以及寻找潜在暴露点的资源和工具,这样自己就能够保持创新所需的创作自由,”David补充道。
作者:Nathan Eddy