“我可以告诉您所有iOS开发人员的共同痛苦”-针对程序员的10个问题,第2期



您似乎喜欢试用版 。 而且我们仍然相信,不喜欢相机镜头的人和IT明星一样有趣。 甚至更多,因为他们谈论的是实际问题及其解决方案。 本周,我们向谦虚地站在Yandex.Maps for iOS背后的人问了10个问题。


来自莫斯科的Nikolai Likhogrud( likhogrud )。 从HTML和Basic九年级开始。 然后,他独立学习C#,进入VMK莫斯科国立大学,然后加入了Any Void团队。 他与Any Void一起移居到Yandex;在过去的2.5年中,他一直担任iOS的Yandex.Maps开发小组的团队负责人。

1.向我们介绍您已实现的功能以及您引以为傲的功能。


-在这里有必要将团队功能和我的个人功能区分开。 从个人的角度-最令人难忘的是,一年半前,我两次加快了该应用程序的启动时间。 然后他告诉了他的同事。 我发掘了iOS中未曾描述的某些功能。 由于存在一个问题,Swift会提取许多动态库。 对于每个人,您都需要在开始时检查签名-它会放慢速度。 他做了有益的工作-确实影响了用户的生活。 我什至在莫比乌斯(Mobius)讲话

至于团队开发,Maps是一个庞大的项目,具有许多不同的功能。 我可能再也看不到了。 如果您坐下来理解,那么我可以展示很多甚至都不知道的东西-很多东西! 在几乎每个新版本中,我们都在做一些很棒的新事情,我为此感到骄傲。 现在,我们尝试引入“地图”,而不是历史上建立的搜索和路由方案,而是更多地谈论您所处的位置。 我们称其为城市向导。 通常,不再参考信息,而是认知,娱乐。 还有一个非常酷的功能-卡中的增强现实。 我们很快就做到了:一切都马上出现,一切都腾飞了。 我们在其他团队之前就成功地在iOS 11的发布上进行了管理。 很高兴。

假人漂浮在内娃身上,没什么异常

2.现在-关于最激烈的fakap。


法卡普是。 那是我刚开始切换到Maps的开始:该项目不熟悉,以前的团队完全分散了,没有人来检查我。 在一个版本中,我使用了zadosil地理编码器服务器,因为我忘记添加一张支票。 在应用程序中进行了一些操作之后,对于用户位置的每次更新,都向服务器发送了一个请求,该请求返回了有关用户位置的数据。 这样的地理位置变化可以是每秒10次。 考虑到我们有多少用户,即使每百分之一或千分之一的用户执行了这些操作,我们在服务器上的负担也很大。

在我的团队框架之外,这一刻变得引人注目。 人们来说:好吧,你在做什么! 但是,顺便说一句,它正常地解决了-他们抬起服务器来应付负载。 很快就发现了该错误,并迅速对其进行了修复,然后发布了更新。 在AppStore中进行真正的审核大约需要一周时间。 现在,这变得更加容易。 当时我更生气:怎么可能,刚开始工作! 但是每个人都明白一切:这个项目很大,我一个人在那里,没有人告诉我...

3.描述您的工作空间:从椅子和显示器到编程环境和您喜欢的实用程序。


“他们也给了我一把椅子和一张桌子。” 上面装有Thunderbolt显示器和一台笔记本电脑。 还有无线键盘和鼠标,因此您只能与显示器一起使用。



桌子上到处都是纸,上面写着我所有的想法和计划。 对于各种各样的Trello和Dapulse,我没有参加。 当我开始的时候,还没有所有这些东西,总的来说,纸张还是有点熟悉。 当然,我仍然在笔记本电脑上做笔记,但是那样写然后划掉就更好了。 随着时间的流逝,桌子上通常会堆积很多东西,但最近我将它们移除了。 乐高仍然站着-舒适。 总的来说,我认为我的住所很舒适。 当我看着同事的桌子时,一无所有-显示器和笔记本电脑-在我看来,我将无法做到。

4.您根据什么原则选择工作? 堆栈,产品,生活条件,金钱?


-我可能会回答“ 如果我选择...”的问题。 确实,事实上,我从未改变工作。 我已经成长为Yandex了-我已经工作了五年多。 现在我有一个好的位置,团队,职责和许多计划。

因此,如果我选择了,我可能会在命令中执行。 也就是说,事先认识我将与之共事的人。 而且,如果您了解它们,那么通常,您就会知道您将开发哪种产品。 如果一个人不从事垃圾处理,那么您可以确定他的项目很好。 在社区中,重要的是:您是知名的,而您-其他人。 这样就不会出现让您归零的地方,进入未知世界的情况。 毕竟,甚至任务也取决于人。 如果新员工发送失败,他可能很快会变得不感兴趣。

另一个重要的货币问题。 但是,这里的一切似乎都是正负。 我进行了很多采访,我知道他们在其他公司提供多少。

5.您要纠正哪些技术和语言?


-我可以告诉您所有iOS开发人员的共同痛苦。 在Swift中,编译器未优化,开发环境未最终确定。 在我们的项目中,有40万行代码,一切都变慢了。 索引变慢,打开文件变慢,打开项目变慢。 编译需要很长时间,这非常耗费资源。

甚至我们的工作也取决于Xcode长时间编译的内容。 它与Objective-C兼容,但与Swift兼容。 如果他正常执行此操作,则不必将应用程序分解为模块-我们必须对其进行投资。 现在,我们正在测试项目中而不是主要应用程序中进行更多开发。 然后,我们将测试项目放到主要项目中。 尽管这最终使整个项目受益,但是学习如何以这种方式工作还是要付出一些代价的。

6.在大学,会议,枢纽中,从别人的经验中学到什么更好? 还有别的地方吗


-最有效的是当您遇到特定问题并正在寻找解决方案时。 “从经验中学习”-我真的不明白这意味着什么。 但是“在哪里寻找问题的解决方案”是可以理解的。 在哪里找到它。 您只需将其塞入Google,然后看看它对您说了什么。

而且通过某种方式的会议证明,我什至不采纳别人的经验,去那里,但是分享我自己的经验。 在管理大型项目中已经有一些使很多人感兴趣的经验。 可以说只有像我们这样的应用程序,这就是为什么体验以自己的方式独特的原因。 他们问我:他们是如何分成模块的,代码审查的组织方式, CI在这里如何为您服务。

7.如果您拥有无限的资源(时间,金钱,力量,人员),那么您将承担什么项目?


-我有一个很大的小清单:“我想很久了,但是我没有时间”-我想在地图上做的事情。 有一些我想改进的地方。

通常,联系航天工业会很有趣。 一个人在地球之外的想法,宇宙的知识-这让我非常感兴趣。 当朝这个方向取得一些成功时,我会感到高兴。 可能那里没有什么可以在iOS下编写的,但是我的团队管理技能可以派上用场了。 是的,如果有什么主意,至少我会去煮咖啡。

8.您如何放松? 你除了工作还做什么?


-您需要重启-百分之一百。 这种5/2模式是由真正聪明的叔叔发明的。 如果您参与了一个项目,您正在为他着急,为他生病了,那么如果您在周末进行这项工作,那将会很糟糕。 结果,您将失去保险丝,但是相反,需要稳定地维护它,才能工作数月和数年。

在周末,我选择做一些简单的事情:散步,看电视,没什么特别的。 尽管我也许愿意,但根本没有合适的公司。 几次,我和我出去乘皮划艇去Klyazma,真是太好了。 有时会有彩弹射击。 但是,所有这一切都不规则,因为这是能源的积极浪费。 当然,您会得到某种情绪的回报……但是工作五天,然后再游泳两天并在某个地方跑步,然后再工作五天? 而且你的身体已经痛了! 我想我做不到。

我也花时间修理。 小而无尽。 这是一个拥有自己的技术和独特经验的独立世界。 那里很有趣。

9.讲讲3本最喜欢的书-教育,科普和小说。


-我没有制定训练手册。 在工作中,我可以说我没有读过一本书。 在一开始,也许这些都是关于C ++的书。 我记得去过一个儿童营:人们很正常,我有C ++。 结果,我没有真正读任何东西,因为手头没有电脑。 我读过-似乎可以理解,但是如何将其应用于我的任务? 如何获得经验? 我更多是实践者,而不是理论家。 也许我不知道其他人使用的任何有趣的用语,但同时我也能做好我的工作。 我只是通过解决困难的任务而学到的。 我一直只是在Internet上寻找经验和解决方案。

我想对那些专心阅读文学和博客的人说,您阅读和看到的内容并不能保证您可以自己复制它。 一个人一定不能脱离自己的任务,这样阅读总是伴随着练习。

在科学界,我阅读了维基百科,您可以在其中阅读所有内容。 我真的很喜欢历史,可以读到从鲁里克(Rurik)到可怕的伊凡(Ivan),从第一次罗曼诺夫(Romanov)到宫殿政变。 然后不小心跳上了与亚历山大大帝的链接。 我可以坚持2-3个小时。 有关于武器和金属加工技术的有趣文章。 遗憾的是,我无法重现这一点,但是要了解人们以前对这一切的想法-从生奶炉到贝塞麦工艺-很酷。

我一生的小说还不够。 这样的书可能已经取代了电影。 因为,实际上,它们的任务是相似的,但是电影更加紧凑。 尽管我会提到一本书,但它是贡恰洛夫(Goncharov)的《奥布洛莫夫》 长时间阅读后,我感到非常难过。 它似乎甚至哭了。 现在重新阅读它会很有趣。 现在,我可能会认为他需要它,Oblomov。

10.如果AI在您眼前醒来,您会告诉他什么?


-问题是,“意识”是什么意思? 如果只是通过图灵测试,那还不是意识。 但是,如果不详述这些细节,那么我将询问解决任何特定问题的方法。 我仍然是一个练习的人。 “如何使Xcode更快?” :)。

但是您绝对需要从“你好,你好吗?”开始。 “你好吗?”,“你在做什么?” -这些问题的答案可能包含一些反思。 机器如何真正评估其事务和心情? 她现在在做什么?

以前的英雄提出的问题:您在学习过程中最喜欢哪种技术?


-很高兴吗? 我尚未学会如何享受工作和学习。 我学会了冷静地对待他们并表现良好。 例如,iOS SDK并没有引起我太多兴趣,因为它通常很简单。

当我在一个项目中使用机器学习时,这在大学里很有趣。 有趣的是,ML基本上没有什么复杂的东西。 知道了输入参数,您可以或多或少地预测结果。 可能是部分由于这个原因,我没有经历过很多人从AI中获得的快感。 我知道这些全都是算法。

理解具有自动并行化功能的编译器曾经很有趣。 这是一项非常发达的技术,编译器中有很多不同的东西。 他们实际上很聪明,并且做的比您想像的要多得多。 例如,语法树上最复杂的转换。 或者当编译器为特定的硬件和处理器工作时,最复杂的代码生成优化。

很棒的是,现在有了一个开源的LLVM框架,允许您创建自己的编译器。 您可以提出自己的语言! 为此编写一个解析器,该解析器将进行词汇和解析,然后使用现代编译器的功能来获取机器代码。

奖励:向其他开发人员询问任何问题。


-知道自己无法返回时,您会在第一次探险中飞往火星吗?

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


All Articles