
似乎每个人都喜欢
试播集 ,而且我们仍然可以确保“幕后”的人们会像我们都认识和喜爱的IT名人一样令人兴奋。 甚至更多,因为他们谈论的是真正的问题和解决方案。 本周,我们向开发iOS版Yandex.Maps的幕后人士问了10个问题。
来自莫斯科的尼古拉·利霍格鲁德( likhogrud )。 从HTML和Basic开始从9年级开始编程。 然后自学C#,毕业于莫斯科国立大学,获得IT学位,然后加入了Any Void团队。 他与他们一起搬到Yandex,在过去的2.5年中,他是Yandex.Maps iOS开发团队的负责人。1.告诉我您部署的一项功能,它会让您感到非常自豪。
-我们需要区分团队特征和我的个人特征。 我记得最多的是1.5年前,我亲自将应用程序的启动时间减半,并告诉了我的同事。 挖掘一些未在任何地方记录的iOS功能。 由于Swift(iOS使用的编程语言)将许多动态库与之一起拖动,因此存在一些问题。 每个图书馆都需要在启动时检查其数字签名,这会减慢一切。 因此,我的工作确实对用户有所帮助。 我什
至在Mobius上发表
了有关此事
的演讲 。
在团队开发方面,“地图”是一个具有许多不同功能的大型项目。 我以前没看过类似的东西。 如果您真的坐下来研究它,我可以展示一些人可能不知道的功能-里面有很多东西! 每个新版本都会做一些非常酷的事情,对此我感到非常自豪。 目前,我们已经完成了用于搜索和路线规划的历史数据的整理,并专注于告诉您所在位置的功能。 我们称其为“城市导游”。 它不是一个有用的工具,而是娱乐性的东西。 最大的功能之一是地图中的增强现实。 我们异常迅速地完成了它:从一开始就非常有效,首先尝试一下。 甚至在其他团队之前也赶在iOS 11发行前的截止日期。 真的很棒。
没什么特别的-沿着河沿滚动的甜甜圈2.现在告诉我你最糟糕的事。
-哦,有一个。 那是一开始的时候,我刚加入Maps团队:对我来说这是一个未知数,以前的团队完全失控了,没有人在那里检查我。 有一次,我不小心对地理编码服务器进行了DDoS处理,因为我忘记在某个地方进行测试了。 用户对应用程序执行操作后,每当其地理位置更新时,电话都会向服务器发送一个请求,服务器会返回有关用户所在位置的数据。 以每秒10次的最大速率。 而且,考虑到我们有多少用户,即使每100位或1000位用户与该功能进行交互,服务器也确实难以应对。
那是离开地图团队的难得一刻,其他团队的人问我:“你做了什么!”。 但是,值得庆幸的是,我们很快就解决了该问题-服务器的恢复时间非常短。 我们找到了较大的修复程序,很快就将其修复,并向Apple发送了修补程序(尽管App Store审核大约需要一周时间)。 现在在这里检测起来要容易得多,而那时我更生自己的气:刚加入团队后,我怎么能这么糟糕呢? 但是每个人都知道该项目很大,因此没有人可以与...进行协商。
3.描述您的工作场所:从办公椅和显示器到首选的开发环境和喜爱的实用程序。
-我没有选择的椅子和桌子:我拿了公司给我的东西。 它上面有一个Thunderbolt显示器和MacBook,以及无线键盘和鼠标,因此我可以将笔记本电脑放在一旁。

桌子上到处都是文件,上面堆满了我的想法和计划。 我仍然不能让自己转向渐进式的东西:Trello或Dapulse,没关系。 当我加入时,一切都没有,我仍然更喜欢纸。 当然,我也在笔记本电脑上记笔记,但是仍然很高兴先写点东西,然后再进行修改。 桌子上还有很多其他东西,我会定期清理。 还有一些乐高积木,以提高舒适度。 我有意识地尝试使工作区像家一样,有时我看着同事的桌子,那里除了笔记本电脑和显示器之外什么也没有,我认为我不能那样生活。
4.您如何选择工作? 堆栈,产品,生活条件,金钱?
-如果问题是“如果我选择...”,我可能会回答。 我基本上还没有换过工作。 我已经在Yandex工作了6年,在其他任何地方都无法想象自己。 我的职位,团队,职责和职业前景都很好。
因此,如果我选择在哪里工作,我可能会首先去看看团队。 在做出这种决定之前,我需要知道将与哪些人一起工作。 如果您了解它们,则可能还知道您将从事的项目。 如果这个人有成就,您可以确定他也有一些很棒的项目。 认识其他人并让其他人认识您很重要。 您无法孤立自己,进入未知世界。 甚至任务也很大程度上取决于人。 如果公司错放了新员工,他将很快变得不感兴趣。
金钱问题也很重要,但是到处都差不多。 我进行了很多采访,并且知道其他公司通常会提供什么。
5.您想在使用的技术和语言中解决什么?
-我可以告诉您每个iOS开发人员的烦恼。 Swift的编译器非常糟糕,没有优化开发环境。 我们40万行的项目滞后于疯狂。 糖蜜索引速度很慢,每个文件打开几分钟,一个项目可以初始化一个小时。 编译并没有更快,而且还消耗了大量的处理能力。
我们的工作取决于Xcode编译内容的速度。 它可以和Objective-C一起工作,但是Swift有点问题。 如果它能更快地工作,我们就不必将项目分成多个模块,而我们必须对其进行投资。 目前,我们在测试项目中而不是主应用程序本身中开发更多内容,然后将其转移。 即使最终为我们的项目取得了成功,但还是花费了金钱和时间来学习这种方式。
6.共享工作经验的最佳地点是哪里?是大学,会议,哈伯吗? 除此之外呢?
-最有效的方法是遇到特定问题并寻求解决方案。 “获得经验”是一个非常宽泛的术语,但是“寻找解决方案”更为合适。 您只需将问题输入Google,然后看看它能为您带来什么。
我通常参加会议不是为了获得经验,而是分享自己的经验。 我在维护大型项目方面有一些经验,并且引起了人们的兴趣。 在俄罗斯,像我们这样的项目非常少,因此我们的经验非常独特。 我被问到如何将应用程序划分为模块,代码审查的样子,
CI的工作方式。
7.给定无限的资源(时间,金钱,人力),您想从事什么项目?
-关于我打算在Google Maps中做什么,我有一长串“想做,没有时间”的清单。 有一些事情需要改进。
但总的来说,我想涉足航天行业。 我着迷于地球之外的一个人探索宇宙的想法。 每当有关于该领域科学进步的新闻时,我都会感到兴奋。 尽管在那里可能不需要iOS开发,但是我可以在某种程度上适应我的团队管理技能。 天哪,如果这个主意是对的,我什至会喝咖啡。
8.您如何放松? 除了工作,您在生活中还会做什么?
-有时每个人都需要“重新启动”。 5 + 2时间表是由一些非常聪明的人发明的。 如果您真的参与了一个项目,对它的成功非常感兴趣,那么您愿意在周末工作,那么它就不会顺利进行。 您将失去火花,如果您想工作数月或数年,应不惜一切代价维护它。
在周末,我通常会做一些简单的事情:走路,看电视,没有什么太极端了。 尽管我可能会喜欢,但没有人可以这样做。 我们的团队几次在维亚兹马河上划独木舟,真是太酷了。 有时我们会进行彩弹射击。 但这不是我们经常去做的事情,因为它会很快耗尽您的精力。 当然,您可以将其交换为情感,但是……工作五天,然后花两天做一些身体密集的事情,然后再工作五天? 我可能不会管理。
我也喜欢花时间恢复我的房子。 有些维修很快完成,有些则永远持续下去。 这是拥有自己的技术和经验的自己的小世界。
9.告诉我您最喜欢的三本书:教育,科普和小说。
-我在教育书籍方面没有积极的经历-我可能没有读过一篇关于我的工作的书。 也许只是在一开始,我就在书本上学习C ++。 我记得去一个儿童户外营,我周围的每个人都有普通的书,我有C ++。 我最后没有读太多东西,因为我没有电脑。 我阅读并基本了解,但现在可以将其全部应用于我的需求吗? 如何获得经验? 我更是一个实践者而不是理论者。 也许我不知道同事经常使用的一些很酷的术语,但至少我知道如何完成任务。 我只是通过解决复杂的问题并在Internet上寻找解决方案来了解这一点的。
对于专注于聪明的博客和文学的人们,我只能说您没有阅读或看到任何保证可以自己复制的内容。 始终牢记目标,并通过练习补充阅读。
维基百科为我取代了流行科学。 我读了所有的东西。 我真的很喜欢历史,可以不时地读到整个俄罗斯的统治血统:从茹尔吉克到可怕的伊凡,从第一次罗曼诺夫到十月革命-然后跳上有关亚历山大大帝的链接。 我可以在这里呆2-3个小时,几乎不会注意到它。 有一些关于武器,锻造和东西的有趣文章。 不幸的是,我无法复制它,但是可以想象人们最初是如何想到这些想法的。
我目前读的小说不多。 他们几乎完全被电影取代。 它们具有相同的目的,但电影却紧凑得多。 但我会提到一本真正让我着迷的书-“ Oblomov”。 这让我感到不安,这是其他书籍所没有的。
10.如果一个AI系统突然在您面前变得有意识,您会对它说些什么?
-首先,我想问:“意识”是什么意思? 如果仅仅意味着通过图灵测试,那还不是良心。 但是,如果我们不讨论细节,我可能会要求它解决一些特定的问题。 毕竟我是一个练习者。 因此,“如何使Xcode更快?”
但是您仍然需要从“嗨,你好吗?”开始。 对此类问题的答案可以告诉我们很多关于人工智能的知识。 机器如何评估自己的心情? 它是做什么的?
上一个客人提出的问题:哪种技术最有趣?
-特别是“有趣”吗? 我还没有学会从学习或工作中获得乐趣。 我学会了冷静地做得很好。 例如,学习iOS SDK并不是很有趣,因为如果您了解基础知识,这相当简单。
我真正开心的地方是大学,在那儿我从事了一个实施机器学习的项目。 令人振奋的是,意识到ML确实没有什么困难。 如果您知道输入参数,则可以在某种程度上准确地预测结果。 也许,这可以解释为什么我不像其他人那样迷恋AI-我知道这只是算法。
另外,与具有自动多线程功能的编译器一起使用时,我很有趣。 这是一项相当发达的技术,它有很多东西要学习。 他们真的很聪明,做的比您想像的要多得多。 例如,极其复杂的语法树转换。 或针对特定的硬件和CPU配置优化代码生成。
我们有一个开放源代码框架
LLVM很酷,因此您可以创建自己的编译器。 您甚至可以使用自己的语言! 为此编写一个语法分析器,进行词法分析和语法分析,然后利用现代编译器的功能将其转换为机器代码。
奖励:向其他开发人员询问任何您喜欢的东西
-知道您不会回来时,您是否会参加第一次飞往火星的载人飞行?