好的代码不会到达Google

在IT的不同领域工作了很长时间,我和研究团队观察到了成为开发人员的所有可能问题以及短缺的所有原因和后果。 我们感兴趣的是:为什么程序员这么长的时间发展成为高级专家,或者根本不成为一名专家? 双方的不合理期望来自何处? 最重要的是-开发人员在各个级别上应该做什么才能进入高级人员,建筑师,团队负责人和领导者的特权等级?

我们在程序员及其领导者中进行了广泛的研究。 我们收集了对顶尖公司的高级开发人员的要求,发展到这一水平的机会和方法,产生了各种见解和生活技巧,并将其转化为本文。 所有这些都将进一步讨论。
图片

上级, 爱丽丝上级是谁?


对关于hh的职位描述和经理在面对面对话中分享的要求的分析表明,没有确定高层的单一方法。 在一家公司中,这是一个能够自己设计复杂模块的公司;而在另一家公司中,则是可以连接到单个解决方案的改进;而在第三家公司中,这是一家比其他公司更酷的公司。 在公司内部,经理,团队负责人,人力资源和程序员之间的要求也存在很大差异。

结果,开发人员遇到了许多问题:如果没有对需求进行充分的定义,就没有明确的职业道路和发展步骤。 问题:“我现在处于什么水平? 我和他成正比吗? 我需要多少钱才能升级到下一个级别?” -我们到处都能听到。

代替系统开发,必须解决标准任务,等待管理者的注意,学习框架,而不是意识到它们是否会促进职业发展。 我们建议:当您进入公司或现在进入公司时-不仅要了解当前水平的要求,而且要了解尽可能最高的要求。 这样您就可以对发展有一个远景,并可以将其与每个步骤相关联。

程序员的评估-程序员的工作?




您的发展取决于您目前处于哪个阶段。 但是如何评估呢? 这是第二个问题。

从民意测验中获得了一些见解:70%的初级 - 中级程序员尝试自己评估自己。 悖论:被评估者的水平越低,他的想法就越有效。
在初始阶段,没有知识的深度和广度-图像非常有限。 并且这种评估高估了86%的案例中其级别的概念。

我们建议:尽早从“内部”评估方法(您自己的观点,经验)转换为“外部”-自己征求领导者的反馈,攻击最有经验的同事,比较任务和解决方法,去与顶级公司进行面试要求更高,测试基础更好,等等。 经理的评估必须以其他来源的结果为对象,以免陷入公司/部门/项目当前能力和要求的局限。

但是有一个更短的方法。 我们自己为高级专业人员编制了顶级公司的要求清单。 他们发现中高级之间存在严重的滞后。

如果您不知道要去的地方,很可能会发现自己在错误的地方。




我们对要求进行了编译,发现不仅好的代码使初级专家变成了middl 。 在初级阶段,程序员必须掌握所有必要的技术和原则上解决典型问题的能力,学会熟练且快速地编写代码。 在中级开发人员级别,已经需要一种代码文化,更深入,更广泛的思考,独立执行更大的任务以及能够应用各种开发工具的能力。

中高级之间的差异要小得多。 正是在这里,开发人员形成了一个滞后,并非每个人都能自己克服。 这是暗指的一系列技能和个人素质,但没人能清楚地说出:对已开发系统的很大一部分负责,指导,独立制定和提出最佳技术解决方案的能力,沟通技巧等。

那么谁是高级 ? 为了使要求正式化,我们必须尽可能地将Yandex,Luxoft,Mail.Ru Group甚至Google级别的公司在开源中显示的所有内容放在一起。 并在与知名公司的开发经理的对话中验证了此信息。

硬技能

1.代码清洁度;
2.高水平的硬技能:

  • 了解算法和数据结构(这是基础,没有基础就没有了);
  • 了解OOP原理;
  • 了解现代框架(列表越长越好;欢迎定期补货);
  • 了解设计原理,基本体系结构(作为项目标题独立地设计系统/模块,或参与大型系统的设计;最低限度地-考虑到项目的当前体系结构来解决繁重的任务);
  • 对设计模式的了解(及时识别和使用自行车,而不是重新发明轮子;广义上讲,一种语言的团队沟通可以快速找到解决方案或评估同事的决定);
  • 与关系型和NoSQL DBMS交互,建立查询,优化和管理技能方面的经验;
  • 了解测试组织的原理,单元测试的知识,最好是-切换到自动测试而不是手动测试;
  • 拥有至少一个版本控制系统(通常,您需要一个特定的版本控制系统,具体取决于公司的要求)。

软技能和专业视野
那些同样神秘的要求,被程序员自己低估了。 公司管理层和人力资源部门通常采用“团队合作”和“责任”的概念,但它们并未规范其标准或生活形式。 结果,90%的开发人员没有提到这些方面对开发很重要。

  • 了解灵活的开发方法,具有与之合作并使其适应项目具体要求的能力;
  • 指导:在紧急情况下可以接纳初级,初学者,有时甚至是整个团队的能力;
  • 寻找和提供最佳实施的技术,工具,对一组任务进行适当评估的能力;
  • 团队合作能力:制定协议,制定团队决策,保持关系,关注团队成果,追求共同利益;
  • 个人责任级别是在以下方面的责任承担:目标和计划,专业关系,领导能力,职业发展。

通过评估俄罗斯市场上除语言能力水平以外的任何工具的总体匮乏,向我们展示了在所有列出的功能块中进行自我测试能力的想法。 为了满足我们研究项目的需要,我们针对3种语言编写了该测试的试用版,这有助于快速导航至当前水平,并突出了其优缺点。

综上所述,充分利用外部资源进行充分评估非常重要。 为了避免劳动力市场中的经典问题-“开发人员对 公司的现实。” 当开发人员评估他们的技能和价值时,他们比公司准备要高。 他们还希望快速起飞和发展,但在这种情况下这是不会发生的(有关更多详细信息,请参阅下一篇文章)。

PS在本文的初始版本中,我们建议将测试传递给所有人。 但是,我们没想到会有如此大量的受访者涌入。 他们被迫关闭测试,以便能够处理那些留下联系方式的人的最新答案和结果。 请填写测试的耐心:)

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


All Articles