似乎每隔一个月就会有人在吹捧软件开发中的新奇事物或必备的软件开发人员技能。 Flutter.io,MongoDB Atlas,Apache Mesos…这些技术都是什么? 他们真的有必要在2019年学习吗?
答案是……这取决于。 但是,尽管在少数几个角色中使用此类技术的经验可能至关重要,但您还应该首先学习其他一些基本技能。
今天的文章涵盖了技术语言,前端和后端(加上全栈),应用程序开发人员,机器学习,方法学等方面的主要知识。 它配备了所有最好的技术,可以在2019年取得成功。
为了获得更好的见解,我们还与三位专家进行了交谈,讨论了软件开发人员在当今快节奏的环境中需要哪些基本技能: Peter Hanselmann ,在线支付提供商Bambora的解决方案架构师, Cheng Lou ,房地产经纪人查找器平台OpenAgent的前端工程师,按需零工工作平台Airtasker的高级数据工程师Daniel Deng和全球货币交易平台OFX的高级软件工程师Bharadwaj Sampath ,酒店交易平台HotelsCombined.com的工程主管Roneel Muhammad 。
在2019年找到最佳的技术编程语言就像看到软件开发人员的大部分工作都在哪里一样简单。 您会注意到Lou的建议-“ C#,Java,Node,C ++和Ruby ”-一次又一次出现。 这些成熟的编程语言是可以建立的坚实基础。
穆罕默德还指出,“这取决于您所吸引的领域以及您是否热衷于初创企业,中小型企业或企业。”
另一种好的通用语言是Python 。 Hanselmann说:“ 像Python这样的语言也是所有开发人员都可以在其工具箱中使用的一种好语言,因为它不仅广受欢迎而且是一种非常有用的通用工具语言。 即使您不是用Python编写生产代码,也可能对编写脚本或测试代码很有用。 ”
前端开发还是后端? 好吧,前端开发就是要从UX的角度清晰地展示软件,并要有设计,美术和技巧的帮助。 由于大量的软件都是基于Web的,因此对前端开发技能的需求不会很快消失。 那么,2019年的前端开发人员需要哪些技能?
Lou建议“ 对 JavaScript 和 HTML5 / SCSS 有扎实的理解 。 了解 JavaScript ES6,PHP,Python,SQL,NodeJS也很有帮助 。 JavaScript框架在2018年很流行,例如 React 和 Angular 。 ”这是涵盖前端开发的强大技术准则。
从后端的角度来看前端编程与后端编程又如何呢? 后端开发人员在服务器端工作,进行数据库操作,业务逻辑,API魔术等。 对于这些操作,后端开发人员应该了解一种或两种以上的技术语言 ,以及用于后端运行JavaScript的SQL和Node.js ,并牢牢掌握软件编排和DevOps。
说Hanselmann“ 迁移到云环境有望继续,因此在获得至少一个这样的生态系统,例如 AWS或Azure的 经验 , 正在成为一个必须具备的。 同样, 使用Terraform之类的工具 来了解如何将 基础结构作为代码 来执行 也是一项有用的技能。 ”
真正的全栈开发人员实际上存在吗? 对于那些努力在履历表中添加“全栈”一词的人,假设您对前端和后端开发都足够了解,可以在整个系统中划分逻辑,实施计划和构建整个东西。
是的,您需要在前端开发和后端开发中都提到的技能!
Deng还强调需要了解与每种Web编程语言配对的正确框架: “对于Web开发人员,您有很多选择,通常人们倾向于根据团队能力,市场候选人来选择一种语言和框架。 Ruby / Rails,Python / Django,Java / Springboot,Go / Gin,Elixir / Phoenix将是不错的选择,因为在市场上找到具有相关技能的人相对容易。
全职开发人员的薪水通常可以反映出将自己称为真正的全职开发人员所需的知识深度(例如,巨大的$$$$),但是潜在的雇主可能会对您抱有很高的期望。
当然,还有领域的另一面。 随着移动应用的持续增长, iOS和Android都对应用程序开发人员有所需求。
Hanselmann在移动开发方面提出了可靠的建议:“ 对移动开发感兴趣的人应该精通 iOS的Swift ,对于 Android来说 , Java 仍然占主导地位,但 Kotlin 的受欢迎程度正在增加。 邓表示同意: “对于android开发人员来说,显然Java / Kotlin将是他们的首选,而Swift对于iOS开发人员是首选。”
混合应用程序开发也很流行,诸如Xamarin和Ionic之类的框架被用于跨平台。 然后是基于浏览器技术的渐进式Web应用程序 ,它们可能很快就会成为跨平台应用程序的新潮流。
机器学习的基础是数据科学和统计学。 如果您想进行机器学习编程,那么这些领域的一些背景知识就是一个很好的开始。
至于技术用途? 汉塞尔曼说:“ 数据科学家必须 熟悉 R编程语言 ,而对于机器学习而言, Python 是最常用的语言。 ”
Workopolis还强调了机器学习框架TensorFlow是学习机器学习的优秀技术。
开发人员不仅需要语言和框架技能。 此外,它是对软件工程过程的全面了解。 Lou解释说,这涉及“ 开发策略和方法,构建过程,构建工具,程序包管理器,部署,持续集成,发布管理,单元测试,版本控制,设计软件。 ”
Hanselmann还强调了持续集成和持续交付是软件工程中的一个关键学习领域:“ 当今,所有开发人员都应熟悉 CI / CD进行持续交付 。 具备 Bamboo或Jenkins 等工具的能力 ,并且 Octopus 对于持续集成和部署非常有价值。 ”
《简单程序员》将详细介绍这些基本技能 ,因此请阅读。
软件开发人员以解决问题为核心而闻名。 您喜欢看到棘手的情况并尝试通过剖析问题空间的多个步骤来找到最佳结果吗?
Sampath认为解决问题的技能对于任何开发人员都是必不可少的:“目前,任何人都可以轻松学习编程,但只有少数成功。 这是因为他们缺乏以务实的方式解决问题的技能。 解决问题是无法教授的,但可以通过经验和应用来学习。”
Lou也谈到了这些品质:“ 强大的解决问题的能力和分析思维将使您受益匪浅。 通常会遇到从未遇到过的新场景。 成功的唯一途径是解决问题。 ”
当然,这只是表面。 Hanselmann说,磨练您的软技能 ,尤其是“ 适应能力,沟通能力和团队合作能力 ”非常重要。 如今, 敏捷在许多工作场所都很普遍。 Deng强调,您应该对“测试驱动开发的学科,对即弃代码的价值的理解,域驱动设计的概念”有深刻的了解。 如果你想追求一个网络安全专家的职业生涯 ,也有一定的技巧,你要调查,如密实度 ,如果你想工作blockchain。
作为软件开发人员,学习的范围很多,但是添加到弓上的字符串越多,您在各个领域的知识越深入,您就越会成为猎头而不是求职者,甚至在求职者中澳大利亚50家最热门的科技公司 。
在Martec上发布的原始文章: https ://www.themartec.com/insidelook/essential-software-developer-skills
From: https://hackernoon.com/essential-software-developer-skills-technologies-languages-for-2019-ce34fd1760b7