
在IT部门工作很酷,但通往行业的道路可能与父母或学校的老师所描述的完全不同。 在劳务交流中,他们正在寻找移动开发人员,开发人员,后退者和前端招标者,但是这些专业在古典大学的专业名单中在哪里?
我们正在发布一系列文章,其中将通过人们的经验详细描述每个职业。 第一个问题讨论Python开发人员。 Artem Sukharenko和Danila Lobanov讲述了他们的故事。 他们最近进入该行业,但设法在其他领域积累了经验。 专家是
Geekbrains的Python系主任 Alexei Petrenko。
我们讨论了培训之前您需要了解的知识,优劣的语言,难学的知识以及重点关注的知识; 哪些专业和金钱可以保证您具备该语言知识,如何为首次面试做准备等等。
为什么要学习Python
Artem Sukharenko在
SibGIU的自动化和信息学系学习。 他的专长是工程学,但与编程无关。 毕业后,Artyom在ZSMK工厂工作,这是俄罗斯最大的冶金工厂之一。
他说:“令我震惊的是,一切都太糟糕了,一辆破旧的苏联电力驱动器,没有现代化,真的不需要专家。” 在工厂的很长一段时间里,他没有停下来,而是继续与电工一起工作。 他长大后成为Sibirtelecom的首席工程师,然后从西伯利亚搬到莫斯科,并在商业数据中心工作,在那里他负责基础架构。

有时暗含编程。 Artem尝试与微控制器合作,做一些更复杂的事情,但始终依靠雇主和客户的失败-他们并不需要它。 正如Artem所说,有足够的基本知识,仅在前15分钟就很有趣,而且不需要特殊技能。
“也许我没有去过那里,但是我没有为自己找到发展。 五年制大学-只是为了扭转局面。 真令人失望。”
曾经,一位同事给Artyom提出了一个想法,即不打算为电工学习编程,而是要成为开发人员。 他开始读书,尝试不同的任务,但不敢改变职业。 “我的愿望已经酝酿了很长时间。 首先,他们被禁止改变抵押贷款,金融问题,个人恐惧的职业。”
36岁的Artyom上了Python开发人员课程。
Web开发已成为许多对技术专业感兴趣的人的克朗代克。 Python是进入该行业的最受欢迎的编程语言之一。 它以其简单性和多功能性吸引。
“了解Python,您可以做很多事情-从简单的脚本到数据分析和构建神经网络。 但是,具体地说,Python的开发是Web服务器的后端,Internet的隐藏部分的开发是普通用户所看不到的。 Geekbrains的Python系主任Alexei Petrenko说:“服务器及其逻辑,与数据库的交互作用。
“我认为这是首选语言。 它具有简单的语法。 他宽恕了开发人员的小失误。 Python的入门门槛很低,很容易学习它的编程基础。 它拥有大量的读者和广泛的库,以及来自世界各地的开发人员制作的许多外部库。 因此,它成为适合任何事物的语言。”
“尽管Python已被推广为适用于所有事物的语言,但实际上它只有两个应用领域:各种数据科学,机器学习和其他数学以及Web开发。 在这方面,他让我有些失望,”前系统管理员Danila Lobanov说道,他最近成为Python开发人员。

“我喜欢Python,因为它可以完成任何工作。 他有一个针对移动应用程序的库,对于桌面而言,您可以在其中编写服务器的自动化脚本,还可以使用Web应用程序。 但是实际上,仅要求Web开发人员无需精通数学即可工作。 没有人在上面编写桌面应用程序,更不用说移动应用程序了。 还有其他专门为此任务创建的语言。”
达妮拉(Danila)大约在18岁时才相对较晚地熟悉计算机。 他拒绝接受高等教育,几乎立即就去担任系统管理员。 他从最基本的任务开始,然后继续研究Linux和编程。
“我曾尝试学习C,PHP,Java等其他语言,但并没有停止-我开始并退出了。 我什至无法编写最简单的脚本。 当我上C课程时,我能够阅读代码,但无法编写。 他们给了我一个任务,我看着它,却不知道该怎么做。 老师在附近坐下,一行一行地写着,进行解释,我明白这正是我要做的。 但是他们给了我类似的任务,我又陷入了昏迷。”
经过失败的尝试,Danila长时间放弃了编程。 他担任系统管理员大约十年。 当他感到管理不再给人们带来欢乐时,他决定给发展再一次机会。
“对于新手来说,最好先理解语法,” Alexei Petrenko相信,“只有这样,您才应该考虑要进一步发展的地方。 您研究得越多,您就越会从语法转向库,设计模式,单个模式。”
Danila之所以选择Python是因为该语言被认为很容易。 他说:“语法实际上很简单,如何用英语写文本。 首先,我自己在YouTube上的视频材料上学习了文章,并在pythontutor.ru上解决了问题。 但是后来我意识到Internet上的资源仅仅是基础知识和基础知识。 任何人和任何地方都可以使用它们,并且不会帮助您彻底学习编程。 我意识到,我们必须寻找只有系统地提供相同的课程,然后才能使我更进一步。”
开始培训之前需要了解的内容
在认真投入语言学习之前,Alexei Petrenko建议您提前进行查找-您是否喜欢编程。 “我建议您尝试编写一些程序,免费上课。 在开始培训之前,最好先了解什么是变量以及如何添加两个变量。
为了使课程不会变得毫无用处,只有一件事会有所帮助-练习。 如果您只是看和听,将什么也没有。 对于新手来说,甚至可以重写老师在屏幕上显示的代码。 重写并考虑其工作方式。
上课的最低要求是每周四个小时。 每周两天,持续两个小时。 但是我建议每天花一个小时编写自己的代码。 最主要的是不要全神贯注地进行编程,以免发生魔术骚动。 当您连续三天学习所有内容时,就会在脑海中喝稀饭。
入门可能很容易,但困难等待着您
阿尔乔姆在下午继续担任电工,晚上尽管疲倦,但仍开始学习课程。 “像所有幼稚的人一样,我对课程充满了期待。 我来的并不完全是零。 行李中有几本书,甚至还有一些简单的网站,包括PHP(我承认这真有意思)。 我一直在等待大脑训练我参加课程,因此我将成为魔术师。 事实证明是不同的-有些人只知道更多一点。”

Artyom喜欢这些课程,但并非一切顺利。 当时的程序是新的,根据他的印象有点磨合和混乱。 学生们谈论了有争议的问题,给出了反馈,并且在旅途中纠正了这些缺陷。 其中一位老师是如此虚弱,以至于他被要求罢免。 但是,正如阿尔特姆(Artem)回忆的那样,其余的都非常强大。
但是,达尼拉(Danila)的一切都变得更加艰难。 经过几次入门课程后,他停止跟上该程序,并多次离开以重复下一个程序。
“每个人,包括Geekbrains在内,都认识到Python程序中的2级和3级是大学中最困难的课程。 太多的信息在很短的时间内就完成了非常大的作业。 许多只吸收了一部分材料。 我本人两次被转移到下一个流。 我们要求简化程序,问如何进行,我建议将两门课程分为三门。 其中一些已得到考虑,现在正在实施。”
与最初学习C的尝试不同,Danila继续前进。 他不了解的东西变成了他不了解的东西,怎么也无法理解。 但是,仅靠填充教科书就无法克服这一问题。 正如Danila所说,编程和语言技能是完全不同的两件事。
“教学编程也非常困难。 在每个人看来,既然一个人可以编写程序,那意味着他可以教书。 事实并非如此。 当思维被重建,并且您了解很多事情时,您将不记得不了解的感觉了。”
亚历克斯警告说,Python只是一开始就很简单。 经过简单的学习后,您将不得不努力掌握更重要的方面-库和框架。 “如果我们将编程语言与存储库进行比较,那么例如C语言就是海洋。 您从悬崖上跳了很深,然后游泳或下沉。 Python语言是一片干净的沙滩,您可以走很远,从容地游泳,如果您知道自己要继续前进,那么在美丽的沙滩后面会有一个巨大的空洞,其深度可与C和Java相提并论。”
“使用Python进行异步编程是一个绝招,” Artem回忆说。 “我们以某种方式从表面上进行了研究,然后甚至在面试时,当被问到这个问题时,我都觉得自己在游泳。
设计模式也不可能突然采用。 我已经阅读了三段摘录,特别是读过这本书,但最后我仍然没有信心。 持续一个月的课程,掌握这些课程通常是不现实的。”
Danila回忆起select模块是最困难的:“所有三个线程都记住了select的痛苦。 有一个这样的模块,他一次没有直接给我太多钱。 现在对我来说很简单-现在我不明白您怎么也听不懂。”

“ Python的基本配置包含大约70个函数和数十个保留字,但即使是很酷的程序员也不一定会全部使用它们。 也就是说,要学习一百个单词并理解它们的作用,您可以花一到三个星期,如果您想积极地工作,” Alexey说。
“新手程序员编写的程序也可以工作。 但是他们只写一次代码-他们读了十遍。 一段时间后,另一个人尝试阅读该程序时,就会出现困难。
为了将来与团队合作并向其他人展示代码,您需要了解公认的样式标准。 在Python中,它们称为Peps。 我建议在学习语法的同时阅读Pep8。 这是使用Python编写的程序员的协议。 它建议如何正确编写以及如何编写错误。
几年前,Python中发生了分裂。 有Python 2.7,然后发布了版本3,第二个版本仍在使用,但仅在较旧的公司中用于维护遗留代码。 如果您在这样的公司工作,那么您将必须学习Python 2,但我建议您学习第三个版本。 所有现代项目和第三方库都是为此编写的。”
如何通过第一次面试
Artem和Danila以完全不同的方式完成了课程。 经过几次尝试,达妮拉决定不完成学业,因为他没有找到与最后几门课程的老师相互理解的东西,但找到了工作。 Artyom和其他同学已经在培训期间,在一家初创公司中提出了一个培训项目,该项目开始带来了真正的收入。
“该项目称为GoLiving。 就像AirBnb一样,唯一的想法就是:在美国,有些人经常在不同的城市工作一段时间。 他们可以在彼此之间用有保证的保险交换住房,以确保您不会返回被毁的公寓。 现在我不知道这种资源已经走了多远;资金似乎已经暂停。 但是后来我们甚至有了投资者。”

达妮拉(Danila)在课程培训期间,六个月没有工作。 他专门辞职学习,但由于频繁的转学,学习时间更长,而这次留出的钱也即将用完。 离开课程后,Danila甚至没有时间开始学习Django-最受欢迎的Web开发框架。
“在除夕,我写了一封信给我家隔壁的一家公司。 我去了他们的网站,看到了一个后端开发人员的工作,并给他们写了一封信。 我说我想和你一起工作,尽管我学习了,但是我知道一点。 我很感兴趣,并且会不断发展。 他们叫我面试。”
“我在Geekbrains的经验表明,有些学生在完成一年制课程之前就找到了工作,” Alexey说。 “雇主希望看到在服务器开发人员中使用语法的基本能力,了解站点如何工作,后端如何工作以及同一个Django越来越受欢迎。 我还要在此添加团队合作和数据库知识,因为任何站点的任何后端都与信息存储密不可分。

每个月大约有200个python开发人员空缺在My Circle上开放,您可以查看最新的空缺并订阅有关新空缺的新闻通讯。
在面试中,最主要的是不要保持沉默。 如果您被赋予无法立即解决的任务,那么您只需要大声地进行推理,展示您的想法以及解决方案的能力。
如果第一次面试不成功,最重要的是不要灰心。 进行两次或三次采访时,您会发现问题开始重复。 然后,您将选择从哪里获得它,因为有一天,您将通过三个采访无处不在。”
在采访中,达妮拉(Danila)感到惊讶的是,他没有被问到任何技术问题:“他们没有完成任何任务-他们只是在谈论我的学习方式和兴趣。 结果,他们提供了工作,我同意了。”
阿列克谢(Alexei)认为,对这些公司要格外小心。 除了一般性的问题,还应该有编写代码的任务。 即使用铅笔在纸上,这也是正常的。 但是,如果您去与程序员进行面试,而没有收到有关编程的任何问题,那么您要么被一个不称职的人面试,要么您将做一些完全非编程的事情。 必须检查程序员的编程。”
“我认为不问技术问题是正确的方法,”达尼拉说。 “在Python社区中非常有名的格里高里·彼得罗夫(Grigory Petrov)也说,编程技能(硬技能)总是可以加紧的。 最主要的是要就生活观达成共识,以使彼此合作愉快。 我同意他的观点。
当然,编程技能很重要。 但是现在我可以处理课程中没有讲授的内容。 他们向我展示了他们已经在工作,然后我自己弄清楚了,阅读了文档,文章,并查看了示例。 我更关心提供“正常”测试项目的公司。 您看起来并认为-这真的是一项测试,还是我现在是自由职业者?”
“我经历的采访使我的大脑融化了,” Artem回忆道。 “当我下车时,状态就好像我要进行自动驾驶仪一样-我的想法继续嗡嗡作响。”
它是这样的:有两个eychars和两个技巧。 一位参与网络工作的Python专家和全栈专家-我也在这里尝试过。 第二个问题-从问题来看-是一个完美的大脑。 他有那么强大的口头,真是太棒了!
首先是日常问题,所有这些都是“您如何看待自己,感觉如何”。 然后,他拿走了一个完整的堆栈,根据Django的说法,我一直在追逐我。 他直接在纸上画了一些例子,并问了他们。 不复杂,但带有子标记。
然后脑叔抓住了我。 他深入研究了Matan,询问了算法,并且由于该公司使用安全性和加密技术,因此他也带我穿越了它。 但是我一点都不坚强,因此我还是一个五岁的孩子。 总的来说,它主要依靠加密算法,但仍采用算法,但并没有太多。
老实说,我什至没想到我会被打回。 尽管如此-收到了报价。 再过几天就会有第一个工作日。”
什么钱值得指望
人们使用IT不仅是灵魂的呼唤。 这是俄罗斯一些薪水增长最快的行业。 有时,程序员的薪水与普通职业相比,在莫斯科和各地区的薪水有所不同。 但是,阿尔泰姆(Artem)和达妮拉(Danila)都没有从事这一行业以谋取财富。 而且,他们还没有找到它。
“即使在莫斯科担任起初职位,程序员也能得到40到5万,甚至更少。 在2万左右的大三学生中也很常见。 众所周知,这不是一项高薪工作。 是的,当您升入高级职位时,薪水可以超过200-300,000。 但是哪里没有这样的薪水呢? 最近,一家出租车公司显示了收入最高的出租车司机的收入。 有230、24万。

按资格划分的Python开发人员的薪资图表显示,6月份的中位数接近60,000卢布 ,而中间的人已经平均收到100,000卢布以上 。 但是高年级学生和领先学生的中位数之间的差异非常小-分别为151,000卢布和167,000卢布 。
绘制图表时,使用了“我的圈子” 薪水计算器中的数据。
也许在编程中,要比其他许多领域更容易达到高于平均水平的水平。 但是对我而言,这根本不是主要的事情。 我对创建程序很感兴趣。”
“工资取决于地区,” Aleksey说,“作为初学者,某人将以4万定居,有人可以立即获得10万。 看着如何证明自己。 如果您证明自己不仅可以编写代码,而且可以理解体系结构,则可以勾勒出整个项目方案,所有模块,服务以及它们之间的连接。”
总体而言,Artem从事开发工作的薪资低于其工程师的薪水。 “在电工中,我担任总工程师,薪水非常好。 我离开是因为我想要发展。 在编程中,您可以无限地发展。”
尽管在编程方面,技巧(初级,中级,签名者)是最清晰和可理解的等级之一,但它仍然是相对的,并且由于其标准的模糊而不断引发争论。 本着“您在X Signor公司,但您不会加入Y公司和初级公司”或“直到我工作了十年-而不是Signor”的精神进行争议。
“您可以在学习年中升至中级水平。 例如,极客学院有必修课和选修课。 为了诚实起见,所有这些都必须完整完成-我已经晋升为中级。 也就是说,事实证明,主程序的学习时间为一年,而并行课程的学习时间为六个月,“阿列克西认为”,而Signor是一个经验丰富的人。 这是一个了解不同框架,能够扩展任务,了解他们需要什么资源的人。 一个不发明自行车的人。 根据我自己的经验,谁了解工作的各个方面和细微差别。
如果一个工作三年的人称自己为签名人-为什么不这样做。 这一切都取决于公司,志向和技能。 如果一个人有天赋和目标,那么我会相信的。
GeekBrains的Python系主任的完整访谈-初学者如何以及为何学习语言