移动开发人员发展图

每天我们都会遇到“ 6月”,“中级”,“高级”的概念,但是我们对于开发人员在不同的成长阶段应该拥有的知识的想法却有所不同。 缺乏清晰的发展计划以及对下一步工作的不了解通常会导致挫败感和工作变更。



AppsCast的家伙与Pandao项目的移动负责人Alexander Cherny@AlexChernyy )一起试图找出问题,并从他进入该行业并担任领导职位起就绘制自己的移动开发人员发展地图。 在猫的底下是面试琼斯的技巧,在哪里找到好的开发人员,为初学者找工作的建议,琼斯,中级和老年人之间的主要区别以及各级沟通技巧的重要性。

丹尼尔·波波夫(Daniil Popov) :今天,我们的客人是Pandao项目Mail.ru的Alexander Cherny。 告诉我们更多有关您的信息。

亚历山大·切尔尼(Alexander Cherny) :嗨。 我领导Pandao项目的移动开发团队,该项目致力于电子商务。 现在有六个人在工作,这一切都是我一个人开始的。

我以C和Assembler程序员的身份开始了我的职业生涯,然后以iOS开发人员的身份进入移动开发。 第一个因素是寻求进一步发展道路的个人动力。 然后有两种选择:金融领域的Java或刚刚开始出现的移动开发。 我在找到来自这两个领域的人员方面都做得很出色,听取了他们的建议和想法。 第二个因素是随机的:笔记本电脑死了,在一位朋友的建议下,我买了一部二手MacBook。

丹尼尔·波波夫(Daniil Popov) :事实证明您已经从一个简单的开发人员转到了部门主管?

亚历山大·切尔尼(Alexander Cherny) :路径是线性的。 最初,我是一名iOS开发人员,后来又有了一个队友,然后是我自己的小型iOS开发团队,后来又有了一个更大的分布式团队。 在某个时候,已经过渡到所有移动开发的领导地位。

进入移动开发


丹尼尔·波波夫(Daniil Popov) :根据您的经验,让我们更详细地讨论此路径,并从初级职位开始。 您对加入团队的新手专家有什么期望? 来自外部的人如何进入移动开发人员的职业?

亚历山大·切尔尼(Alexander Cherny) :最酷的方法是淘汰所有公司定期组织第一批移动开发学校。 这些公司按团队中每位前辈的数量分配固定数量的傻瓜数,因此他们从这些学校中选拔一两个。 没有更多的六月可以同时消化,或者根本没有足够的空缺。

但是其余部分通常并不比课程组织者采取的措施差。 我给我的团队打了一个初级开发人员,他向我一起学习的下一个团队推荐了一个人。

阿列克谢·库德里亚夫采夫(Alexei Kudryavtsev) :事实证明,参加课程的人可以是普通的琼斯,并且能够充分成长吗? 在我看来,那里的许多人都有动力快速经历所有事情,以便尽快开始赚钱,但实际上他们一无所知。

亚历山大·切尔尼(Alexander Cherny) :还有一个质量指标-这是在整个课程周期中必须强制选择的教育课程和控制点。 这意味着该毕业生至少具有到最后的意志力,以及耐心的老师来训练他。

绅士的六月套装


丹尼尔·波波夫(Daniil Popov) :大三学生应该从硬和软技能中了解三件事?

亚历山大·切尔尼(Alexander Cherny)必须具备一定的技巧,您必须了解所选平台的语言, 如果可能的话 ,您应该知道平台SDK。 了解架构对我而言并不重要,因为如果您没有遇到架构要解决的问题,我将不知道如何理解架构。

有趣的是,从六月开始听到“为什么选择Android或iOS?”这个问题的答案。

在软技能方面,我想看到每个人的基本沟通技巧,因为不仅是说话困难的dzhuns。 当初级开发人员进入团队时,在出现问题时发出信号的能力很重要。 他们这么年轻的许多罪恶,认为如果他们不能做某事,那么这就是故事的结局。

丹尼尔·波波夫(Daniil Popov) :如何独立地理解自己的水平:您已经成熟到6月,中级还是高级?

亚历山大·切尔尼(Alexander Cherny) :该级别是相对于开发人员当前所在的团队衡量的。

丹尼尔·波波夫(Daniil Popov) :事实证明,在一个团队中,您可以担任大四,而在另一个团队中,您可以担任高中?

亚历山大·切尔尼(Alexander Cherny) :是的,在这里客观性受到损害,因为他们开始要求专家的能力,而专家的能力尚不完全清楚。 例如,他们要求您跳三米,但您不知道如何跳。 通常,跳跳不是您的事,没人能解释为什么客户端服务器应用程序中根本不需要跳跳。 不跳? 所以-不是高级。

阿列克谢·库德里亚夫采夫(Alexei Kudryavtsev) :琼斯经常来找工作,因为他们已经很出色了,但同时又拥有不同的技能。 面试还有什么其他困难?

亚历山大·切尔尼(Alexander Cherny) :最大的问题是从头开始进行评估,因为关于六月的情况一无所知:没有人可以写书和征求建议,也没有完成的项目。

GitHub上的实时存储库对此进行了很好的处理,即使它只是一个综合项目,并且编写了一项半活动。

如果为此活动编写了一份半测试-做得好,并且有某种体系结构的外观-您需要参加。 这样的事情我很喜欢。 我还有一个主观且难以评估的标准-这是好奇心

总结一下,以下是六月的建议:

  • 了解语言,了解语言的所有基本结构,而不仅仅是重复他们在视频中看到的内容;
  • 没有人期望对SDK有深入的了解,因为更新经常发布,而我本人也已停止关注它们,但是您需要了解生命周期级别的知识;
  • 了解您的动机并自觉进入该行业。

Alexei Kudryavtsev :6月的时候,在我看来,要对所有Apple扩展坞运行的语言有基本的了解,就必须了解每个类和所有功能。 您认为数据库中包含什么?

亚历山大·切尔尼(Alexander Cherny) :这是该语言的基本语法,可立即突出显示IDE,这是“如何使用数组/列表”,“如何使用字典/映射”系列的主要集合。 通过UI,基本知识是在编写至少一个测试项目时形成的。

在中间成长


Daniil Popov :如何从初中跳到中级? 如何立即了解专家已迈出下一步?

亚历山大·切尔尼(Alexander Cherny) :当然,一夜之间,我不明白。 分类的问题就是问题。 假设您满足一组条件,但是其中一个条件没有满足,您就无法正式进入下一个级别。 我对这种方法持保留态度,尤其是在小型团队中。

同时,有明确的标准是不可回避的。 例如,设定目标的级别和您为此承担的责任。 从六月开始,您什么都不会期望。 他将阅读任务,以清楚地写出其领导者负责的内容,而最大的任务是就晦涩难懂的地方提出问题。 如果他评估有限的案例,您不会期望他思考会发生什么,以为解决方案思考新的代码范式。 中线开始越过这条线。

丹尼尔·波波夫(Daniil Popov) :除了初中生以外,您还增加了哪些技能?

亚历山大·切尔尼(Alexander Cherny) :您应该对所写内容和操作方法有一定的体系结构和优先级的理解。

初级开发人员的特征之一是,对于他来说,编写代码的事实是很有价值的。 对于中间,代码是次要的,它要解决的任务才是最重要的。

在将开发人员划分为6月,中级和高级的过程中,通过严格的步骤序列无法实现可视化的增长。 在产品管理中,有MVP三角形-最低可行的产品。 MVP是一条不平行于底线而是从底线到三角形顶部绘制的线。 在这样的方案中,您总是了解所有事情,中级人员可以比初级人员做得更多,并且从理论上说,参议员应该通过能力来封闭整个三角形。

考虑标准不是通过“知道/不知道”,而是通过“我了解的程度”。 大三学生可以知道其存在,中级学生可以知道内部是什么,而大四学生可以知道它是为什么被发明的。

Daniil Popov :中级人士应该了解计算机科学吗? 数据结构,算法,哈希集合?

亚历山大·切尔尼(Alexander Cherny) :是的,如果不了解同一系列的作品,就很难解决一个实际的问题,因此,绝对可以提出这样的中间要求。

Alexei Kudryavtsev :您提到了能力三角,那么其中包括什么?

亚历山大·切尔尼(Alexander Cherny) :在简化的硬技能中,有语言,平台和体系结构。 如果您看得更深入,则应使用Daniel的公式,并将其分解为计算机科学和软件工程。

Alexei Kudryavtsev :工程师并不总是需要技能,但可能有用的技能是什么:调试,加密,性能?

亚历山大·切尔尼(Alexander Cherny) :所有工程师都应该对使用收费的能力感兴趣。 大三学生可能无法使用所有工具,但从中间开始,我希望好奇的程度与入口月份的6月相同。 我确信在某个时候他会厌倦单击IDE中的按钮,并且他将开始学习键盘快捷键。 它会启动应用程序工具,而不是四处搜索内存泄漏。

丹尼尔·波波夫(Daniil Popov) :中间人应该对相关领域感兴趣并扩大视野吗?

亚历山大·切尔尼(Alexander Cherny) :我是为了发展视野和博学。 如果一个人表现出这种好奇心-这对年长者是一个很好的载体。 他回答问题“为什么存在?”的能力有所不同。 如果中间人正在编写应用程序的最简单的类,每个人都指的是客户端-服务器,但没有意识到为什么https不能捕获流量,并且在安装Charles时一切正常,那么这很侮辱。 但是,对于初中生,我会自己解释。

总的来说,中间是最不幸的。 这是一个太长且无法预测的增长区,目前尚不清楚它是否会持续很长时间。

相同的dzhuns更为简单:在一个有足够团队的项目中持续工作,您到中间的成长将需要一年到两年半的时间,而不再需要更多。

丹尼尔·波波夫(Daniil Popov) :中级软技能呢?

亚历山大·切尔尼(Alexander Cherny) :Middle不应再害怕谈论问题并能够采用某个功能并自行开发,也许还不了解其与其他功能的交互作用。 例如,一项任务带着设计师的照片飞走,并简要描述了需要完成的工作。 基于这些介绍性中间知识,我必须说出可能存在的问题,例如,系统中没有某个元素,并且必须长时间进行。 对于收到的任务,这是一种自我检查机制。 即使在这一点上,也增加了估计期限的技能。

丹尼尔·波波夫(Daniil Popov) :沟通如何? 没有他们,任务就无法制定和评估吗?

亚历山大·切尔尼(Alexander Cherny) :是的,您需要能够与感兴趣的各方进行对话。 不要使链变得复杂,直接问设计师,去另一个平台的开发者,看看您是否以相同的方式理解任务。

丹尼尔·波波夫(Daniil Popov) :中间人最不知道什么?

亚历山大·切尔尼(Alexander Cherny) :在最奇妙的地方,很多人不知所措。 由于对迭代器是一个对象的误解,或者是通过表示字符串是数组还是列表的问题,导致多少中间人死亡。

我试图检查的不是知识水平,甚至不是推理,而是对推理的反应。 例如,我告诉您存在三种不同的情况,并且编译器的行为不同。 一个人可以消除这种情况,另一个人可以说他从来没有考虑过,但是他手里拿着一台笔记本电脑,就可以在IDE中重现这种情况,以便调试器显示出它们之间的区别。

恭喜,您是先生!


丹尼尔·波波夫(Daniil Popov) :应该将哪些技能添加到中级技能中,以便您可以称自己为大四?

亚历山大·切尔尼( Alexander Cherny) :雪茄在做什么? 他了解整个开发活动将给业务带来什么好处,因此他定义了整个项目的技术文化,在这里您需要经验,对业务的理解以及承担风险的能力。 大四学生理解“我有一个视频冻结,但我希望它顺利退出”这一级别的问题。 究竟将如何完成并不重要。

高级-技术专长的保证人。 他们带着一个问题和渴望去采取一套特定行动的愿望去找他。

从中间开始,我等待着了解虚拟机的存在,并且它的存在是出于某种原因,从主那里-如何有效地使用它。

Alexei Kudryavtsev :逆向工程方面的知识如何?

亚历山大·切尔尼(Alexander Cherny) :任何人都可以扭转。 不要害怕这样做-这是中高级的边界。 您需要了解数据和资源的存储位置-没什么了不起的。

中年人的一个有趣特征是他的前辈与众不同,他总是说自己已经准备好完成任务,但并不总是了解背后的原因以及后果。

为了区分级别,您可以添加使用库。 如果解决问题,Junior会拖动任何库。 Middle拖累了,但认为我们需要查看项目中是否存在类似的解决方案。 年长者写他的自行车在GitHub上放星星。

您可以默默地拖动库并假定它已解决了问题。 您可以看一下它,发现只需要一小块就可以拿走。 您可以拖动整个库,因为截止日期已到,但是请创建适当的问题以便以后修复。 问题的关键在于对拉动的理解水平。

丹尼尔·波波夫(Daniil Popov) :高级不仅应该正确选择库,还应该了解它们,它们也可能有问题。 不像中间式样,它可以用try-catch覆盖一切,而高级式样则可以分叉,修复并提出拉拔请求。

亚历山大·切尔尼(Alexander Cherny) :添加图书馆时,主人对后果承担全部责任。 Middle将把责任拖到图书馆本身或其开发人员身上,并将责任转移给图书馆本身或开发商。

接下来要去哪里?


丹尼尔·波波夫(Daniil Popov)君主制之后还有生命吗? 我看到以下选项:主管,部门主管,CTO或项目管理。

Alexei Kudryavtsev :技术发展如何:技术专长,主要原则或什至改变方向?

亚历山大·切尔尼(Alexander Cherny) :所有选择都有其各自的后果。 是的,您可以担任管理职位,但可以留在技术环境中-这绝对不是发展的停滞。

丹尼尔·波波夫(Daniil Popov) :我感到艰苦的技能非常依赖于您所工作的公司及其形象。

亚历山大·切尔尼(Alexander Cherny) :影响。 像Facebook这样的大型杂货公司拥有数千名技术人员。 所有这些公司在技术解决方案的选择上都非常有限-有一个经过批准的堆栈,整个基础架构团队和一个架构委员会来为每个人制定决策。 在这种情况下,工程师成为公司锁定的开发人员,他不得不使用公司的范例。 随着时间的流逝,它对于公司变得越来越有价值,但事实并非从外部可以感知到这一价值。

丹尼尔·波波夫(Daniil Popov) :如果我想从事公司产品不常见的技能该怎么办?

亚历山大·切尔尼(Alexander Cherny) :首先,我问这个想法的来源。 有时人们带着奇怪的欲望而无法解释他们的本性。 如果开发人员可以证明其合理性,那么您需要进一步研究该想法如何适合产品。 它很可能仍会派上用场。

单独进行此过程很重要。 事实证明,这并不是一个人现在可以做的最好的事情。

丹尼尔·波波夫(Daniil Popov) :您说过,您考虑过划分为6月,中级和高级模糊。 那需要吗?

亚历山大·切尔尼(Alexander Cherney) :当团队很小并且每个人都知道一切时,您可以没有捷径。 在大型公司中,必须毕业以遵守劳工法典才能转移薪水。

开发人员开发卡


Alexei Kudryavtsev :开发人员如何确定增长点?

亚历山大·切尔尼(Alexander Cherny) :我认为员工应该从事某种职业,因为不可能光顾所有人。 如果某人想要寻找东西,那么正确的请求就是平台名称和开发人员路线图。 您可以找到一堆思维导图,其中包含详细的信息,以什么顺序以及要开发什么。

Daniil Popov :在准备发布时,我们查看了iOS开发人员的开发图。 研究了整个领域之后,似乎有太多事情发生了,工程师将变得对俄罗斯市场上90%的公司都不合格。

亚历山大·切尔尼(Alexander Cherny) :没有人检查知识的深度。 例如,我查看了地图并看到了“核心位置”框架,但没有具体说明它到底需要什么:例如了解它的存在或了解底层知识,例如哪些协处理器能够在后台产生更多的能源效率。

该路线图只是一张调查地图,您可以在入口处的标牌背景下查看并分析您已经访问并拍摄过的哪个城市。 同时,路线图不是线性的,您不需要知道上一个路线就可以转到下一个路线,您可以随时随地移动到所需位置。

Alexei Kudryavtsev :路线图并不总是有用的,因为它们通常与工作中所需要的不一致,并且它们并不总是涵盖您“游泳”的事情。 如何创建个人路线图?

亚历山大·切尔尼( Alexander Cherny) :Hackerrank最近对雇主现在想要开发商提供的东西进行了研究 。 无论团队规模大小,首先是解决问题的能力-雇主希望工程师能就如何解决特定问题以及以何种成本提供明确的答复。

Alexei Kudryavtsev :您如何看待个人开发卡,描述了胜任力,由团队领导,评估了结果并确定了下一步需要做什么?

亚历山大·切尔尼(Alexander Cherny) :双方都有时间这样做真是太好了。 在所有有关发展的对话中,都有一个烦人的事情:在某个时候,员工知道这里没有发展的余地,并且为了发展的希望而换工作。 认知扭曲的产生-随着环境的变化,您不再考虑真正的发展,所有的力量都在一个新的地方去适应。

Alexei Kudryavtsev :那么,为了发展而值得改变工作吗?

亚历山大·切尔尼(Alexander Cherny) :如果雇主稳定并且允许解决技术问题,并且开发团队没有变化,则不会。 我不希望开发人员更换工作来解决一些个人问题。 我总是在面试中问这个人,该人采取了什么行动来解决导致他被解雇的问题。

顺便说一下,开发主管和开发人员的其他管理职位存在问题。 上面的人并不多,这个企业的上层人士认为您是一个自给自足的人,他不仅应帮助解决员工的问题,而且还应独自解决困难。 不知道这是否是正确的方法。

丹尼尔·波波夫(Daniil Popov) :除了技术性问题,您在面试中还问什么?

Alexander Cherny :最近,我一直在使用我们团队过去项目中的案例。 对我而言,重要的是要了解一个人对各种情况的反应。 例如,两个开发人员对视图模型的角色和责任的理解不同。 你是第三位。 , . , . -, , . ?

, , , 30 , soft skill .

: : soft hard?

: , . hard skill. - — . . . soft skill , 65% 35%.

, , soft skill . , Saint AppsConf 2019 . Introductory- , General- . , — 16 .

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


All Articles