爱沙尼亚IT部门Kotlin和(突然)塔林和赫尔辛基之间的隧道:对安东·凯克斯的采访

最近,在我们的博客上发布了有关Kotlin的非常具体的帖子 :不是很严肃,而是肤浅且出人意料的令人生气。 但是我们很清楚,通过花几天时间研究技术来批评技术是一种不好的举止。 因此,这次我们决定与在1.0版产品上撰写Kotlin的人讨论。



如今,Kotlin这个名字已经很难让人感到惊讶,尤其是在Android开发中。 也许是在2016年初:需求下降了一个数量级,对Google的官方支持仍然无法解决,而在Kotlin上写文章是一种大胆的精神。 安东·凯克斯(Anton Keks)成为了这样的胆小鬼之一,后来他也引起了科特林的极大关注(例如,他在科特林会议上表演了两次)。 因此,我们决定向他询问Kotlin开发人员的生活随着时间的变化。

为了避免起床两次,他们讨论了另一个话题。 安东是爱沙尼亚公司Codeborne的联合创始人,该公司实行极限编程,因此,他们同时了解了爱沙尼亚的IT技术以及如何在爱沙尼亚创建自己的公司。

-您是如何开始使用Kotlin写作的,现在如何使用?
-从1.0版开始于2016年初使用。 我在Kotlin的第一个项目是最安全的:我为日本客户设计的IntelliJ IDEA插件。 之后,我开始将个人项目从Java转移到Kotlin,并尝试将其用于后端。

去年,我们在银行环境中一直在后端使用该语言,我们正在逐步将大型Java项目移至Kotlin。 我们在上面编写微服务,这里有干净的Kotlin。 当您仅在Kotlin上有一个项目时,一切都会变得更加愉快:您无需考虑与Java的互操作性。

-既然您看到了从1.0版本到今天的1.3版本的语言-从开发人员编写它的角度来看,它有什么变化?
-从一开始,我就认为从发行版开始,一切都已经很棒了,并且可以正常工作。 事实并非如此,1.0和1.1之间的第一个差距在许多方面是对门jam的校正,性能的提高等等。 但是版本1.2和1.3是关于新功能的。

例如,稳定在1.3中的协程可以产生很大的变化。 我和他们一起玩耍,感到非常高兴。 但是,在生产中,我们还没有尝试过它们:一切仍然停留在与JDBC驱动程序相关的困难中。 但是在Android的开发中,构建异步模型更加容易,因此Android开发人员最多使用1.3的协程。

而且仍然很有趣:在1.2版中,出现了对多平台项目的实验性支持,因此有可能使用Kotlin / JS在JavaScript中进行编译,并通过Kotlin / Native在本机代码中进行编译。 但是就目前而言,使用JavaScript进行编译对于我来说还是很可怕的,对于Native来说,主要问题是Kotlin的标准库很小。 对于JVM,Kotlin非常依赖于标准Java库。 从理论上讲,在Kotlin / Native中,您可以使用任何本机库,但是随后您失去了“完整的跨平台”,一切都变得分离了。 但是,JetBrains目前正在研究它,跨平台可以拥有美好的未来。 许多人都希望跨平台的iOS / Android应用程序。

-Xamarin和React Native都已经尝试将它们提供给我们...
“他们都有科特林不会面对的问题。” 对于React Native,Xamarin等,该框架需要与OS版本保持同步。 某些东西不断地中断,所有这些框架都跟不上。 当已经发布了新版本的OS,并且您的框架仍然无法工作时,您将处于无法理解的状态,并且您仍然需要做一些事情。 这是最不愉快的时刻。 从这种意义上来说,与Kotlin相比,一切都不同-他们直接使用该语言中的所有标准API和库。

-Kotlin中的一项功能通常显示为“实验性”功能,并在稳定版本之前设法进行了更改。 你喜欢这种方法吗? 如果您使用实验性功能,它们会发生多少变化,您需要重做多少?
-是的,我喜欢。 因为Beta版本和候选发布版1.3中确实存在很多错误(即使在对益智游戏的报告中 ,我也发现了一些与此主题有关的益智游戏),在最终版本中,他们修复了它们,这非常好。

在协程中,有些事情变得有些复杂,但事情变得更加清晰:例如,有必要更明确地向协程传达上下文。 最后,使用Kotlin 1.2编写的带有协程的代码现在根本无法编译。 但是同时,这些变化并不大,因此很难迁移。

-如果我们不是在谈论语言本身,而是在谈论IDE,那么开发的方向在哪里? 以前怎么样,现在怎么样?
-由于JetBrains同时生产语言,编译器和工具,因此在IDE支持方面出现了前所未有的情况。 通常,当一种语言诞生时,最初的采用者最初是在文本编辑器中用这种语言编写的,而没有突出显示等等。 而且对于Kotlin来说,它甚至还没有达到1.0版,因此IDE马上就支持了。

但是,这并不理想,并且随着时间的推移,它会不断改进,每个次要版本都会添加检查。 现在的情况比以前要好得多。 例如,我正在等待修复的此类错误之一:Kotlin中有模板字符串,我想在项目中尝试使用它们而不是另一种模板语言,但是由于IDE中的错误,模板字符串中的变量启动后,高亮显示就中断了在科特林。 现在终于修复了,所以我开始使用它。 目前,我不再有任何不适合的具体内容。

-整个生态系统的发展-社区,对Stack Overflow的响应,框架如何?
-据我所知,社区非常活跃,Slack有很多活动。 堆栈溢出已经足够编写。 也许唯一的问题是,当使用google时,有时某些功能完全不同,因此有些帖子是在1.0版之前编写的。 您必须遵循相关性。

有专门针对Kotlin的框架。 例如,一个非常好的单元测试MockK框架,它是为Kotlin量身定制的,还有很多漂亮的API。 另外,许多Java框架现在也专门用于支持Kotlin,这并不是说必须具有互操作性,而是要增加一些芯片或使使用更加方便。

-当每个人都只关心Android而其他平台已经淡出背景时,Android世界中的流行爆炸并没有导致社区出现偏见?
“我不知怎么一点都不歪斜。” 当然,谷歌决定让Kotlin成为Android的官方语言,这极大地影响了人们对该语言的兴趣,但是在我看来,它不仅使Android受到关注,而且对通用语言也产生了兴趣。 KotlinConf上有很多android开发人员,但是也有很多写服务器应用程序,桌面甚至JS的人:我遇到了真正在客户端和服务器端都使用代码编写的人。 并没有感觉它是“ Android语言”。 尽管Android已成为人们关注的驱动程序,但它仍然是通用语言。

-有了新技术,人们就永远担心“有趣,但是您还不能将其投入生产”,在Android中没有这样的问题,但是在Android之外仍然存在问题。 如果这些担忧与Codeborne有关,那么在您使用Kotlin的时候,发生了什么变化?
-我们主要是自己选择技术,但是经常发生客户也希望参与决策的情况。 目前,当我们将Kotlin带到不同的项目时,没有异议。 发生了什么变化:以前,客户没有听说过有关Kotlin的任何消息,但现在已经在听证会上了。 而现在,如果我们说“我们开始转向科特林”,则不再有任何担心,例如,他会消失。 有Kotlin基金会,JetBrains和其他财务状况良好的公司。 社区支持很棒。 总的来说,绝对有信心Kotlin不会去任何地方。

-现在,许多人已经跳过了语言发展的描述阶段,来到了科特林。 这只能令人羡慕,因为他们已经获得了更成熟的技术,或者没有早期采用者的经验,他们会失去一些重要的东西吗?
-取决于人,这对他来说更有趣。 通过更早地建立联系,一个人可以亲自参与开发,影响形成。 尤其是在1.0版之前,您有时可以与JetBrains团队交谈,影响他们的决定,帮助他们。 现在,该团队仍在求助于社区并考虑了其意见,但与此同时,许多基本决定已经做出并且不会改变。 因此,这完全取决于个人的兴趣。

在我看来,在不再使用技术时就开始使用技术进行开发会有很大帮助:您将时间花在了任务上,而不是在缺陷上。 您的工具正适合您。 我认为现在是时候了,那些不尝试Kotlin的人-现在他们真的很晚了,损失很多。

-现在一切正常,对于Kotlin,您个人缺乏什么?
“也许有两件事。” 未成年人是三元运算符。 显然,由于如果是表达式,则可以简单地使用它,但是您想更熟悉地编写。

更大一点-程序包本地访问。 在我看来,科特林内部更像是一个错误。 他们试图改进Java中的功能,但我认为他们徒劳无功。 在Java中,这或多或少都工作得很好,并且internal仅在编写库而不是常规应用程序时才有用。 而且我想念Java具有的细粒度访问控制。

好吧,我想开发跨平台开发,我已经谈到过。 在那里,您需要使用标准库。 但是也有Ktor框架,现在可以在Kotlin上编写所有内容,这已经成为一个测试床,并且该项目现在正在兴起一些库



-让我们继续问题的第二部分:爱沙尼亚,Codeborne,企业家精神。 首先,有一个无法解决的问题:通常住在塔林的感觉如何?
-也许我不是这个问题的合适人选,因为我是塔林的粉丝,在我看来,这是地球上最好的地方。 一方面,我们拥有欧盟,欧洲货币,欧洲秩序和欧洲纯度。 另一方面,您可以广泛使用俄语(三分之一的人口肯定会说俄语),而且我们在地理位置上非常接近。 来自俄罗斯,乌克兰,白俄罗斯的许多IT专家现在都来找我们-我认为正是出于这些原因。

这个城市不如莫斯科或圣彼得堡大,因此您不必花很多时间在交通上,而且步行通常很方便。 同时,如果您想要多种选择,出国很容易。 而且在价格方面,塔林比英格兰和其他欧洲国家便宜,因此您可以在塔林以相同的薪水负担得起的生活水平要高得多。

在负数中,只有气候。 夏季非常好,冬季非常美丽,下雪了,但是十一月是一个令人沮丧的月份。

-恩,您不习惯最后的彼得斯堡人/莫斯科人。 那么拥有IT的国家呢?
-我们的技术开发水平很高。 与“电子状态”相关的所有事物都在积极开发-直到电子居住计划,您都可以在线成为一个国家的居民,而不必参与其中。 我们理所当然地认为许多其他国家的新在线服务。 出现了创业公司-例如,Skype最初是爱沙尼亚人。 工作也很多。 因此,我想说,IT专家有很多有趣的事情。

-突然听起来:从直觉上讲,这样的IT中心似乎将位于山谷之类的地方,而不是人口少于新西伯利亚的国家。
-嗯,在硅谷,可能只是IT人士,情况可能更糟,房地产价格不切实际,而且生活成本一般。

而且,也许在俄文中几乎没有关于爱沙尼亚的文章,但是如果您看一下国际新闻界,那么会有很多本着“电子国家,世界第一”的精神的文本(这是一个很好的例子 )。 当我参加世界各地的IT会议时,他们对我说:“爱沙尼亚? 哦,那里有这样的IT!”

此外,在塔林附近有赫尔辛基,在赫尔辛基之间乘水一个半小时,或乘直升机十五分钟。 并且正在进行将塔林-赫尔辛基合并为一个欧洲IT枢纽的谈判。 在两个城市之间建立一条隧道是可能的,那么它将是世界上最长的隧道。

-在一个拥有大量大型IT的国家中,它是否主要为外国客户服务?
-是的,这里新兴的任何公司都希望尽快进入国际市场。 内心的人很少。 但是,由于我们身处欧盟,因此我们马上拥有了欧盟市场。 此外,国内市场很小,IT可以在全球发布之前对其进行测试。

-波罗的海国家的思想中有许多俄国人正在合并,所以我们将澄清:关于爱沙尼亚的言论对拉脱维亚和立陶宛有多少影响?
-实际上不是很适用。 有一些交叉点,但是心态不同,对于拉脱维亚人和立陶宛人来说,它更接近东欧。 国家的历史也完全不同。 因此,如果您来塔林,里加和维尔纽斯四处走走,您会感到它们与众不同,而如果您寿命更长,则会有更多差异。

曾几何时,我与拉脱维亚人和立陶宛人一起工作-爱沙尼亚人后来成为IT领域最进步的人,然后他们采纳了拉脱维亚人和立陶宛人,甚至更晚。

-您是爱沙尼亚Codeborne公司的联合创始人之一-首先,请告诉我们。
-我们很小,一共有32个。 所有开发人员,我们都称他们不是“开发人员”,而是“软件工匠”,这是非常重要的区别,因为我们没有分析师,测试人员或产品经理。 我们拥有通用的全栈人员,除了全栈开发外,他们还直接与客户打交道,而无需任何中介机构可以自己设定任务。 因此,效率是许多其他IT公司的许多倍。 我们可以用两到四个人来构建事物,有条件的Sberbank需要成千上万的人。 顺便说一句,我不是在开玩笑,我们就此话题与Sberbank进行了交谈,他们对互动感兴趣。 但是在我看来,从规模上看,像我们的小型企业那样的效率是不可能的。 这就是为什么我们不想增长太多。 公司文化-迅速行动,高效地做少量人,解决大问题,使客户不必等待六个月。 为此,我们使用了极限编程和结对编程。

-这一切极端极端是Codeborne的特定功能,还是爱沙尼亚一般的典型特征? 在另一个国家,您可以吗?
-我们只说爱沙尼亚的aggel很典型,小队很典型。 但是我认为我们与众不同,并且走得更远。 很少有公司会以这样的数量进行配对编程,并且它们是如此以开发人员为中心的。

我认为这可以在任何国家/地区进行,我们没有从头开始提出一个模型-我们专注于多家公司,其中一家在芝加哥。 我们读了一些博客,并且在美国大部分地区,我看到了一种最接近我们的方法。

我认为客户的方法最初有所帮助。 每小时工资在爱沙尼亚很普遍,您可以说您看到了很多小时的工作时间,并且我们将一起找出如何在可用预算下做得更好。 在爱沙尼亚,这种想法不需要出售。 而且,例如在俄罗斯,大多数客户公司还没有为此做好准备,他们想为该项目付费,尽管最终客户通常会发现成本更高。

-在采访开始时,提到了日本客户-这是典型的吗? 当您在国外的客户,甚至那些您要使用哪种语言的客户时,该如何处理?
-关于日本-是的,通常,爱沙尼亚与日本人合作很多,他们作为整个代表团来到这里。

我们几乎用英语与所有客户沟通,仅用俄语与俄语沟通。 他们根本不同意改用英语-也许很多可以,但是很害羞。 因此,我们意识到我们有说俄语的特别有价值的开发人员。

我们与其他国家/地区使用英语进行交流-尽管日语通常不是英语,但是到达爱沙尼亚进行谈判的人通常会说英语。 甚至在爱沙尼亚内部,我们也经常用英语交流,因为在过去的十年中,它非常国际化,尤其是IT。 来自世界各地的许多专家,所以几乎总是证明并非所有参与对话的人都说爱沙尼亚语。 我认为这也是前往爱沙尼亚非常容易的原因-主要是要懂英语,不需要爱沙尼亚语。

-我认为许多开发人员理论上都想创建自己的公司,但他们担心那样的话他们将根本没有时间进行编程,而这种变化会使情况变得更糟。 您在爱沙尼亚创建公司的经历显示了什么?
“我会这么说。” Codeborne大约有9年历史,在此期间,有人离开公司时,通常是为了创建自己的公司。 一方面,这是令人侮辱的,因为我们成长并接受教育的人们;另一方面,令人鼓舞的是,人们相信,Codeborne之后的下一步就是这样。

我想说,创建公司是一个不错的选择,但要做好充分准备,因为大多数时候(尤其是一开始)您将拥有与IT无关的任务。这甚至不是“无休止的讨论”,而是销售,找到第一个客户是很多工作。

这并不适合所有人,因此我建议您自由职业一段时间。在自由职业者的情况下,存在相同的问题-不仅需要发展,而且还需要找到合适的客户。

“对开发人员的另一个恐惧是,“必须管理人员而不是代码。”我是否正确理解您的案例显示“您可以发现自治权,而管理人员却可以分散注意力”?
-是的,我们的结构绝对平坦。我们最初决定摆脱诸如“年度面试”之类的所有事情,因此我们专门寻找的不仅是作为开发人员而且还作为个人发展的人-他们并不需要“一臂之力”。但是我要说的是,现在我必须比开始时做更多的工作,因为最初在我们的核心团队中有10个人,每个人都了解所有内容,但从30个人开始就有所不同。但就目前而言,我们为此付出了很多努力,而是尝试建立一个开放的组织。

-回到“电子状态”:它在创建公司时简化了多少工作?像簿记这样的事情变得容易吗?
-在爱沙尼亚,公司成立时间创下了吉尼斯纪录:大约3分钟。如果您是爱沙尼亚的居民(或电子居民),那么在线创建公司仅需几分钟。完全没有问题。还有会计:我们没有自己的会计师,所以我们购买了这项服务,并且由于爱沙尼亚的税收制度相当简单,因此成本很便宜。

-一切听起来都很好,到最后我还是想找到比平常工作更痛苦的地方。有这样的事吗?
-我个人绝对没有痛苦。好吧,当然,当您是受雇的雇员并且仅参与一个项目时,您可以放松更多。尤其是在Codeborne,因为我们有非工作时间-实际上是非工作时间,所以我们非常严格地向客户解释说,我们不会在晚上和晚上做某事。自然地,创始人(包括我自己)将时间和精力花在其他员工没有的问题上,例如,这样人们就总是忙于某种项目。但这也很有趣。因此,就我个人而言,我不后悔什么都适合我。

本周末,安东Mobius会议上在莫斯科展示了第二套科特林拼图除了他之外,该程序还为移动开发人员带来了很多有趣的东西(例如,报告“ Kotlin,用于编写Android和iOS的通用代码”)。


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


All Articles