为移动开发人员选择哪种服务器语言...

在编写后端之前,您将向移动开发人员说出什么问题了。 最主要的是那里的API应该方便,可理解,灵活。 但是我们不这么认为。

在AppsConf,我们所有人都认为有时我们需要超越移动开发的范围,并在T形模型中增加字母T的含义。 例如,在这里,要比以下语言更深入地了解服务器语言:“我听说Ruby死了。” 稍宽一点-不仅是受欢迎的,还有第二排甚至地下的。

为使您从Introductory曲目的想法中获得启发,我们记录了Nikita Sobolev的访谈。 他们打算谈论编程语言,但事实证明是程序员。 如果您认为只是一个好的开发人员而不是一个Android或iOS开发人员会更好,尤其是如果您不同意这一点,那么请谨慎对待。 星期五是时候争论了。

-您如何看待关于移动技术开发会议(从后端到前端)中从后端到前端的各种技术的完整报告的想法?

Nikia Sobolev是wemake.services的CTO,可重复软件开发过程方法论的作者,ElixirLangMoscow的组织者, 莫斯科Python Conf ++计划委员会的成员,IT会议的常任发言人和代码质量冠军


我认为,这是移动会议的最佳选择。

我真的不喜欢狭窄专家的想法。 我更喜欢T形人的想法,即,一个人精通一件事,但对主题领域的问题有广泛的了解。

不幸的是,在我看来,从这个意义上讲,移动开发人员是一个人。 他们非常依赖供应商这一事实使问题更加复杂。 粗略地说,苹果将关闭-他们将在寒冷中离开。

因此,我非常喜欢介绍性曲目的概念以及邀请会议客人环顾四周,了解其他人的情况,采纳他们的经验并提高自己作为专家的观点这一事实。

-这个想法与其他哪些会议相关?

这么多。 我手头有一个Python示例。 上次我们邀请Go,Elixir和Julia。 今年,我想邀请前端和Haskellist( 顺便说一句,“ 征集论文” 已经开放 )。 由于Python开发人员也不同,因此他们中的许多人都是全栈工作的,这对他们从外部获取知识也很有用。

-您认为移动开发人员已经变得更愿意环顾四周,因为它已经成为专业发展的必要条件,或者一直如此,仅仅是社区已经成熟了吗?

我上次在2010年编写移动应用程序时,很难准确判断。 那时我的主要语言是Java,我学习了Objective-C并为iOS编写了一个应用程序。 我以为我受到了启发,现在我将开始做所有这一切。 但是没有:没有内存管理,没有库,没有依赖项管理,构建系统令人作呕。 从那时起,我就没有仔细研究过这一领域。

现在,我看到了几种趋势,这些趋势自然会吸引移动工作者参加“严肃的编程”。

过去,语言在该领域高度专业化。 Objective-C仅用于Apple开发。 现在,例如,他们正尝试将Swift拖到服务器上并在服务器上做一些事情。 后端和Android的Java是两种不同的语言。 现在Kotlin或多或少都相似。 JavaScript出现在移动应用程序开发领域,这是一种服务器语言,同时也是一种前端语言。

有一个单一的基础设施开始引起人们的兴趣。 如果更早(以我为例,这是2010年),移动开发完全失去了联系,那么现在一切都将有所不同。

而且,和解是双方的。 紧密的平台集成使人们有能力并且需要遵循这种集成。

-但是,如果集成本身交给移动开发人员,他为什么还要了解后端的语言?

对于这个问题,我有一个哲学上的答案。
如果您想成为一名Android开发人员,那么您可能不需要了解后端。 而且,如果您只是想成为一名开发人员,那当然是必要的。
开发人员是用代码解决现实世界中的问题的人。 因此,决策可以发生在任何地方,包括在移动应用程序中,服务器上,前端上。 一个好的开发人员原则上可以使用开发工具解决任何现实问题。

显然,每种工具都有一个入口,实践的积累等等,但是我认为,对一种技术的严格固定会对从事该技术的个人不利。

至少技术已经过时了。 15年前流行的语言现在几乎从未使用过。 不断开发和学习新事物,看着邻居的技能对于任何开发人员都至关重要。 特别地,了解后端很重要,因为后端是整个开发的基础,而今天一切都以某种方式与服务器通信。

此外,可以肯定的是,移动用户对其他发现通用语言更容易的开发人员感到不舒服。 前端和后端仍然比移动应用程序开发人员更接近任何一个。 我的报告将在一定程度上帮助解决人际沟通问题,帮助整合。

您需要了解的深度或肤浅是另一个问题。 尤其是当我们谈论的是一位移动开发人员时,无论怎么说,都需要深入研究他的领域。

我的事实是,您需要积极回顾过去和过去。 研究软件和编程的历史很重要。 如果您不了解这个故事,那么您将彻底改造出于完全客观的原因已经提出并放弃的很多东西。 我领导一个电报频道 ,在这里我共享链接到很酷的开源项目的链接,而又不受语言的束缚,我试图强调重要的想法。

-移动应用程序开发人员是否有足够的一般想法?

首先,这取决于环境。 如果一个人需要直接影响其公司的后端:为他们设置更多正确的任务,参与流程,或者管理这些人,那么您将必须深思熟虑。

但是,如果您只从事移动开发,那么就足以对那里发生的事情,语言,问题和流行的解决方案有一个肤浅的了解。 对于这样的人, 在Saint AppsConf上的报告也已计算出来。 自然,不能在一个报告中提供深入的介绍。

-开发人员还必须具备什么才能成为出色的开发人员?

  • 阅读和理解所读内容的能力。
  • 能够写作,以书面表达您的想法。
  • 口头表达以口头表达这些想法的能力。
  • 听和听别人的能力。
  • 了解主题领域。 开发人员必须了解他在做什么,因为他以技术方式解决了生活问题。
  • 当然,了解这项技术。

在我看来,这些技能已经足够。 其他一切都可以从中推论得出,也可以丢弃。

-所以您认为您需要了解主题领域?

有限,当然,但有必要。 例如,我们同时有3-4个项目,当然,我对它们的理解不是很好,但是我了解我工作的基本概念。 它们如何相互联系,如何影响金钱,支出在哪里,收入在哪里,为什么所有这些对于业务都是必需的。

我也建议其他开发人员。 在我们公司中,我们为他们起草文档,业务如何运作,我们解决了什么问题,为什么不能用手解决这些问题。 有时候,雇用一个人,使他曾经例如浏览过商品目录,会更便宜。 如果我们使流程自动化,则需要了解原因。

-让我们看一个例子。 如果您为面包店编写送货服务,则需要了解送货的工作方式,但不必了解该面包店烘烤的面包的类型吗?

还有一些包子。 因为有些bun头可以存放一个小时,也可以存放两天。 因此,它们的交付将有所不同。

-在您的报告中,您保证同时考虑几种流行语言,第二行的几种语言和地下深层的几种语言。 他们会是什么语言?

我不会采用会议参与者已经知道的那些语言:Kotlin,Java,JavaScript。 如果大多数受众已经熟悉它们,那么谈论它们就没有任何意义。 我决定谈论保证人们不知道的语言,因为移动应用程序根本不向他们写信息。 有很多选择。

我基本上喜欢编程语言。 没有特定的任务。 我喜欢将编程语言作为一种想法。 有人认为:“有这么多问题,可以一次组合起来解决。 让我们为此编写一种语言。” 他将解决特定的问题列表。 而另一种语言将解决其他问题,因为通常无法同时解决所有问题。

我非常喜欢观察每种语言解决的问题以及为什么在实践中可能需要解决这些问题。 语言本身对我来说是一种智力艺术的对象。 大量的人工作,思考,设计,优化。 这非常有趣,因此我遵循许多编程语言。

我为报告选择的那些语言具有几个有趣的特征。 首先,它们是有争议的。 在社区意识中,没有一种语言能最终在所有方面造就良好的语言。

大家都知道Python很慢,但是它仍然是最受欢迎的语言,它在任何地方都被使用。 我将尝试解释为什么使用它。

说到Ruby,人们首先说的是Ruby已经死了。 实际上,Ruby开发人员现在比其他任何语言都更关心体系结构,并从其他语言中实现了大量的想法-功能性,面向对象的知识,并从中获得很多有趣的东西。

如果我们谈论Go,那么Go的适用范围非常狭窄,但是在大肆宣传之后,每个人都开始在上面写。
我在演讲中选择代表的每种语言都有某种冲突。
作为一个好故事中的角色。 冲突的本质是,有些事情运作良好,而有些则行不通。 冲突将是报告的重点。

-您认为您需要为每个任务,项目选择语言吗?

这是一个好主意,但实际上不起作用。 正是我们从哪里开始。 有Android程序员,有Python程序员,当您向他们展示Ruby代码时,都是一样的,只是在个人资料中,他们说:“哦,不,一切都是不可理解的,我不想理解”。

当然,我希望人们变得更加通用,并且能够选择一种工具来完成任务,但是事实证明,人们知道一件事,并且始终使用此工具。

招聘因素也在此处添加。 例如,在我们公司中,我们无法选择TypeScript和Python。 但是,如果我需要雇用Elixir开发人员,我将一生寻找他。 我认识这样的开发人员,但了解的不是很多,因此我无法迅速吸引他们。 因此,您必须降低雄心,并适应市场和客户,根据市场的需求也有限。

-您保证会主观使用几乎10种完全不同的语言。 您真的对它们都熟悉吗,您是否对所有这些都写了一些东西?

每种方式都不同,但是,当然,我至少在某种程度上尝试了所有这些方式。

例如,在Rust上,我编写了开源代码,在pony上,我编写了15行代码,钦佩阅读了教程,现在我想向会议的参与者展示。 这样他们也会受到这个想法的启发。

-显然,在一份报告中,您将无法全面了解每种语言。 人们为什么应该去您的报告而不是Google?

原因是当有生命的人告诉您时,情况就完全不同了。 在某种程度上,报告始终是个节目。 当人们参加演出时,他们不仅会收到内容,还会收到情感。 当您使用google时,您只会获得内容。 如果您对此感兴趣,则可以通过Google进行搜索。 并且,在世人士的讲话格式可以轻松,普遍地获得有趣的知识。

-您的“表演”的主要元素是什么?

有许多种语言,它们都很酷,但是没什么可写的。

有许多流行的语言可以解决您的业务问题:招聘,客户,图书馆。 但是它们全都流行是有原因的。 通常,主要原因是它们非常简单。 它们基于简单的概念,这些概念很容易上手,但是很难继续。

有利基语言,并且已经出现了非常有趣的复杂概念,您可以在这些概念上构建大型可靠的东西:Rust拥有出色的编译器,Elixir拥有绝对可穿透的虚拟机,Haskell拥有其类型系统,等等。 但是,仅由于入门门槛高,它们就无法流行。

想要学习一些东西的大多数开发人员会选择流行的语言并为其编写。 并没有出现为什么还需要其他问题的问题,因为在这些项目所涉及的项目中,不需要任何更复杂的事情。
对于开发人员来说,了解该工具的局限性非常重要。
要了解这种局限性,您需要靠在额头上,解决问题,然后退后一步,从远处看。 只有在从事某项工作多年的人的报告中,这一点才能体现出来。 我对这些人非常了解,我积累了各种案例,并且知道应该在哪里反对。 我可以总结一下我的经验以及其他人的经验。

-在Haskell上写“ Hello world”已经是一件了不起的事,但这还不够吗?

是的,您需要在工作人员社区中沸腾。 要听取他们解决的问题,提出的报告,以便您理解本节。

例如,在Haskellist社区中,进入问题非常严重。 他们仍然无法解决它并使他们的语言对初学者更友好。 从历史上看,Haskell使用完全不同的语法和完全不同的规则,只是为了至少编写一些东西。 即便是经验丰富的开发人员,一开始也会完全不清楚此代码中发生了什么。

问题不仅仅在于函数式编程。 如果您开始熟悉Elixir的功能,它将更加容易。 Elixir的语法与Ruby非常相似。 刚开始,您将看不到它们之间的区别,可以使用与Ruby中相同的方式进行编写。 只有到那时,这才成为功能语言。 直到某个时候您才注意到这一点,然后您会发现自己的其他机会。 您了解实际上它是基于完全不同的原理构建的。 有了这个基础,就可以轻松地切换到不太友好的功能语言。

顺序很重要。

-除了您所说的第二系列的流行语言和语言(至少在某种程度上已经听到)之外,您还将介绍完全未知的语言。 例如,这是什么小马?

Pony是一种开放源代码,面向对象,参与者模型,功能安全的高性能编程语言。 即强类型,内存安全的参与者语言。 他很小,很有趣。

它的开发人员创建了一种语言,您可以在其中创建大量的参与者,就像在Elixir中一样,但是可以保证这些参与者是类型安全的。 这种语言的适用范围仍然是完全无法理解的。 但是我会说他可以打围棋,我会积极支持一切可以打围棋的事情。

-如果所有语言都有缺点和局限性,该怎么办? 怎么办呢?

受苦。 并继续寻找卓越的技术。 这是任何工程师都无法实现的梦想,但是找到卓越的过程是一个伟大的目标。

Saint AppsConf在10天后。 计划委员会选择了35个报告和12个会议,其中每个移动开发人员都将发现有助于解决日常问题以及对其专业和个人发展有用的想法。 我将于10月21日至22日在圣彼得堡见您!

那些想分享经验但由于某种原因尚未成为演讲者的奖励问题。 你经常说话,为什么需要它,什么激励着你?

我有三个目标:

  • 玩得开心,我真的很喜欢会议,这很有趣。
  • 本地-查找开发人员和客户。
  • 全球- 使我们的行业更好 。 我看到很多问题,我想积极影响并从坏中受益。

会议发言人可以通过听众影响整个行业。 他在讲台上可以证明自己的观点并激励人们进行变革。

Source: https://habr.com/ru/post/zh-CN471070/


All Articles