如何找到程序员的第一份工作?

最近,SkyEng的前首席技术官DocDoc的Alexey Parshukov举行了一个网络研讨会“从头开始编程快速入门”,并讨论了学习编程语言的差异,程序员专业的本质,如何获得工作以及雇主是什么。您可以观看该链接上的网络研讨会,并立即阅读其中的文章:)



图片




作为程序员的工作是什么?



程序员的职业具有众所周知的明显优势:



  • 好薪水


从100 tr。按俄罗斯地区划分,莫斯科250-300 tr,国外每万美元起;



  • 灵活可变的时间表


开发人员主要是远程工作。



  • 国际市场需求


这是最简单的移民工作之一。



但是并不是每个人都可以成为开发人员,否则每个人早就应该接受过程序员的重新培训。您始终必须保持在线状态。您不能精通任何一种技术,不能读书,不能上课,不能精通Python,然后从中获得20年的经验。行业和技术发展如此之快,以至于当今相关的方法,框架,编程语言几乎肯定会在4年内完全改变,如果您退出该行业一年,则几乎必须从头开始。



例如,对于学生来说,离开军队是一个很大的问题,因为在离开发展世界的一年中,许多事情都会改变。这不是很关键。您可以赶上足够快的速度,但是在任何情况下,您都需要不断保持趋势线,不断学习,研究现代方法,观察变化和如何变化,然后您将成为一名成功的开发者并赚很多钱。



很少有人谈论的另一缺点是年龄歧视。如果您是一名学生,找工作将很容易。如果您年龄在30-40岁之间,那么任何技术公司都欢迎您。如果您的年龄在40多岁,那将变得更加困难。但是,如果您超过50岁,那么您很可能在任何地方都找不到工作。这值得记住,它存在。



您如何知道作为程序员的工作是否适合您?



在这里,您所接受的教育,职业毕业与否并不重要。最主要的是,您具有坚定的毅力。为什么这个这么重要?



想象一下,您有一个开发人员的任务,例如,在移动应用程序中将按钮从屏幕的左侧移至右侧,以便于用拇指方便地按下它。您坐下并开始执行此任务。您将花费一些时间来了解该应用程序:它在哪里,如何组装。要研究编程并在屏幕上显示此按钮的代码,还需要花费一些时间。更改此代码并告诉编译器或手机将花费很少的时间:“请在左侧而不是右侧显示此按钮。”



但是,此代码很可能不起作用。在接下来的几次尝试中,它将无法正常工作。您将需要阅读大量文档,以了解按钮映射在Android或iOS中的工作方式。我们将不得不尝试10种不同的方法:找到一些工作回合,用拐杖支持所有这些工作,写信给开发人员,查看Android源代码,并且最好在4-5天甚至更晚的时间内显示此按钮。



所有工作都包括以下内容:每天,每项任务。您编写的每一行代码极有可能无法正常工作或无法按照您希望的方式工作,并且没有明显的原因导致其无效。弄清楚那里发生的事情以及如何使此事情完成您想要的事情需要花费大量的时间。



最后的结果,一切正常,应该带给您很多快乐。这是开发人员的主要动力,这使他每天上班去做某事。坚韧不拔的精神不会让你崩溃,拒绝,不会改变主意,不会被咖啡和社交网络分散注意力,而是坐了几个小时,然后思考为什么这个东西不起作用以及如何使它起作用。



有什么样的雇主?



自由职业者



通常,这些都是花费很少的小任务。他们可以足够快地完成。它们在自由职业者交易所中列出。俄罗斯的主要交易所是freelance.ru。主要的国际网站是upwork.com。



交易所适合执行一些带来一些好处的实际任务,例如,赚钱。很简单。没有人会阅读您的简历,检查您是否有真正的经验,是否可以执行此任务。这是开始实践并开始编写程序并从中赚钱的好地方。从理论上讲,有些人一生都在做这件事,在那里赚的钱比雇主还多。



但是也有缺点。最主要的是,这更像是创建自己的公司,而不是像程序员那样工作,因为您花费大量时间查找订单,与客户沟通,有效地调整流程,并且在开发上花费的时间并不多。而且,通常,在交易所要为其执行任务的产品使用相当特定的技术堆栈。例如,许多任务将与Wordpress博客引擎中的更改有关。它很少在产品开发中使用,在公司中很少使用,但是自由职业者将在这个主题上完成一百万个任务:修复一些Landos,移动图片,编写插件。这些经验和这些技术不适用于雇主的工作。由于没有团队,很难在自由职业者身上学到一些东西。没有您与之互动的人,您可以从谁那里学到什么,谁可以测试您的工作并分享经验。因此,自由职业适合入门,但不适用于专业工作。



制片厂/集成商/外包商



这些是完全不同的公司,其活动也非常不同。大小玩家都有,但他们通常各有利弊。



从优点:



  • 大量完全不同的项目


您不会在任何特定的项目例程中入睡。这些是不同的项目,它们在不断变化,您有机会不断学习新知识;



  • 这些公司大多数都有相当清晰的流程。


他们有用于处理文档的算法,内置的开发流程,与客户的互动,与估算工作良好,知道如何计算经济性,因为这是他们的专业活动。



  • 高水平


您可以很好地学习如何从他们那里开发软件。



缺点:



  • 并非所有公司都很棒


顶级公司真的做得很好。他们拥有完美构建的一切,他们有金钱,客户和有趣的项目。但是,许多利基公司的员工人数只有5-10人,没有那么完善的流程,但是在这些公司中,您可以轻松找到工作并学到一些有用的东西。您可以通过与他们合作六个月来学习如何开发软件,然后转到另一家公司从事高薪工作。



  • 自由小


通常,客户知道他的需求。他有设计,他有明确的任务,他经常带有自己的技术。尽管事实上您似乎认为不这样做会更好,但通常不会讨论这些问题。



为了进入这些公司,您需要了解应用程序编程语言。例如PHP,Python,Java,Javascript。



这是开始职业的好地方。



初创公司/小公司



有数百家这样的公司。每天都有十二个新餐厅开放,但其中九个肯定会关闭。尝试在初创公司工作



有很多优点



  • 这是非常令人兴奋和有趣的。
  • 最简单的方法就是赚大钱。


通常,在早期阶段,创始人会积极分享自己的股份,尤其是如果这家初创公司起飞并迅速成长,那么您很快就会成为百万富翁。



  • 项目中没有遗留问题,没有旧的代码会让您想哭
  • 很多自由


您可以选择技术并按自己的方式进行编程。您可以极大地影响产品。



但是也有缺点:



  • 10家公司中有9家关门


他们中的许多人将在第一年关闭而不发布产品。



  • 学习机会薄弱


通常,不是最好的专家来这些公司,那里就不会总有东西要学习。



  • 不可预测性


这些公司的资金流经常不稳定。您可以在这样的公司工作一段时间,并且两个月都不会收到薪水。



实际上,乐趣胜过所有这些弊端。但是去没有经验的这样的公司并不是最好的决定。压力水平将非常高,最有可能的实践知识水平不足以拖累项目。



银行/企业



优点:



  • 稳定性;
  • 好工资;
  • 责任低


没有人会要求您进行回收并为大事负责。任何大型企业都是在一群经理之间分配责任的大师。



缺点:



  • 极低的速度


您可以在不发布功能的情况下将其削减一两年,因为在这段时间内它将失去其相关性。当然,薪水将支付,但是这很令人沮丧。



  • 具体经验


通常,这是某种银行软件。基本上,这是旧代码,使用起来不太愉快,也不太有趣。



  • 在这里改变活动领域将是非常困难的。


首先,因为你会失去工资。在Sberbank中,它们始终高于Yandex。



如果您获得实习,这是一份第一份工作的绝佳选择。在大型公司的实习期间,您可以在短时间内获得许多实用的有用信息:有关软件开发方式,需要使用哪些工具的信息。无论如何,这种经验都是有意义的。



食品公司



优点:



  • 实际技术;
  • 调试过的流程;
  • 专业团队;
  • 高稳定性。


缺点:



  • 要赚大钱很难。
  • 很难找到工作;
  • 大量工具需要处理。


每个公司都有自己的一套工具,这种经验与市场和搬迁到另一个地方并不太相关。



如何选择语言?



这取决于您想做什么以及您想去哪家公司。



例如,PHP是一种非常流行的语言。许多俄罗斯和外国公司(例如Facebook)都使用它。但是学习PHP在Twitter上找工作是没有意义的,因为在那里没有使用它。如果要转到Yandex,则需要学习Python或Java。从PHP到Java的重新学习并非易事。



最好立即为自己确定要工作的2-3家公司。找出它们使用的编程语言并学习它们。或者,从您喜欢的语言开始,然后寻找使用该语言的公司。



有什么样的开发商?



后端



这是在服务器上运行的代码。通常,后端服务器与数据库,外部服务进行通信,并负责业务逻辑。例如,它允许您注册用户,将其保存在数据库中,从他那里注销钱,向他发送一些通知或SMS。



典型语言:PHP或Python,以及不太常见的Ruby。



前端



这就是您访问该站点时看到的。这是布局的一部分。布局通常以HTML标记语言完成,HTML标记语言说明内容如何在页面上显示以及将以哪种颜色显示。此页面的行为方式,动画效果,表单发送位置,错误输入的电话错误将显示给客户端。几乎每个程序员都需要这些知识。几乎没有什么地方不需要处理布局。这种语言非常适合入门,因为无论您走到哪里,到处都有需求。



全栈



这是一位知道如何创建前端和后端的开发人员。仅他一个人就可以在服务器端和客户端都进行归档,使它们一起工作,使项目在没有任何帮助的情况下工作。这是特技飞行。这类开发人员的收入通常会高出一倍半。



移动开发



实际上,这是相同的前端,但是这里使用了不同的语言。深入研究5年前使用的编程语言,例如Objective-C和Java,是没有意义的。现在使用Swift和Kotlin。所有新的应用程序都使用这些语言编写,而旧的应用程序则用它们编写。



游戏开发



这是一个单独的区域。通常,这里使用C ++和特殊库(例如Unity等)。知道如何在Kotlin中制作移动应用程序的开发人员将无法编写游戏,因为使用了完全不同的堆栈,完全不同的技术。



桌面



这是在计算机上本地运行的内容。例如,浏览器,Word等。最常用的是C ++,C#。强大的应用程序用C ++编写。有时,桌面应用程序是用Delphi编写的,因为它更加简单和便宜。



1C



这是俄罗斯最受欢迎的产品。在任何一家俄罗斯公司中都以一种或另一种方式使用它。它的主要缺点是除俄罗斯以外没有其他地方使用。它非常狭窄,很难离开1C,但是有很多职位空缺,他们的薪水很高。



开发运维



他们是设置计算机的系统工程师。现在我们需要很多计算机,产品很复杂。例如,Facebook使用数以万计的服务器,并且为了使它们更易于管理,以便使代码从开发人员的计算机迅速滚动到生产环境并快速传递给用户,需要工程师来进行转换,自动化和自动操作数以万计。服务器。他们使用软件工具来执行此操作。该领域最受欢迎的语言是Python和Bash。任何系统管理员学习python都会使他的薪水至少提高一半至两倍。



AI / ML / BigData /加密货币



通常,这些领域的开发人员使用所有相同的语言。ML和数据分析主要是Python,有时是Java。加密货币使用C ++。这里的特点是需要具备良好的数学知识和对应用工具的深入了解。普通的Python开发人员不太可能在一周内就将其重新训练为AI开发人员,因为需要进行更深入的研究。



如何不选择语言和方向?



  • 不要只关注薪水


根据在Habr上发表的研究,收入最高的语言是Eclipse。这是一种相当时尚,年轻,积极和现代的语言。但是,如果您今天开始教学,会发生什么?现在,hh.ru上只有11个职位空缺。即使您去了一个高薪的地方,这并不意味着几年后它仍然有意义。在这种情况下,您可能无人认领,从一种语言切换到另一种语言是一个相当复杂的故事。



  • 不要选择花哨的,外来的,有限的或濒临灭绝的语言


外来语言(Scala,Eclipse)的空缺很少,而且通常都是有经验的开发人员的空缺。机构/学校通常会提供过时的语言,例如Pascal。它们没有应用程序,市场上也没有需求。由于其局限性,也不值得从1C开始。



  • 不要从困难的语言开始


从C / C ++开始不是一个好主意。互联网上甚至有一个模因:在40天内学习C ++。这是一门难学的语言。您开始花费很多时间才能开始做某事,并在市场上获得赞赏。如果您要从事游戏开发,那么别无选择,您将必须学习C ++。但是,例如,您可以作为Java和Python开发人员加入Yandex。



良好的开始语言



  • HTML / JavaScript


他们很容易学习。如果编程令人愉快并且适合您,它们是最简单的感觉。这些语言的知识将在下面选择的任何领域对您有所帮助;



  • PHP / Python


它们也很容易学习。职位空缺的职位很多。随着时间的流逝,您将可以在更陡峭的位置使用这些知识。您可以在2-3年内从事从初级到高级的开发人员职业,并达到高薪水准;



  • Java / C#


如果您需要在银行或企业公司中从事稳定的高薪工作,那么这些是最好的入门语言。在过去的20年中,Java一直是一种非常流行的语言,并且在未来20年中,它将很可能仍然是市场上最受欢迎的语言。



从哪里开始更容易?



  1. 创建您自己的HTML页面。
  2. 1-2 JavaScript, , .
  3. . «PHP ». .
  4. . .
  5. , . , - , . fill-time .
  6. 拥有理想的工作。最有可能的是,您第一次不会成功。第一份工作通常很愚蠢。但是六个月或一年之后,您已经可以尝试自己喜欢的公司了。或开始您自己的项目。


怎么不做呢?



  • 您不应该从事相关行业:测试或技术。支持


如果您已经在这一领域,那么当然值得尝试发展,但是如果您是律师或刚从大学毕业而又不知道如何建立职业,那么您就无需选择如此艰难而漫长的道路。学习编程,应用工具,并立即寻找程序员的工作。很可能在短时间内完成此操作;



  • 无需在IT公司中谋求职位


例如,在Yandex中担任快递员并不能帮助您在那里找到程序员。



  • 无需在顶级公司任职


最有可能的是,您将无法做第一份工作。您会浪费很多时间。最好从简单的公司开始,在那里您将立即获得薪水,在那里度过半年,然后在拥有实践经验的情况下转到梦想中的公司。



作为开发人员的细微差别



  • 第一份工作不会很久


从长远来看,不值得考虑雇主。平均而言,开发人员每三年会在一家公司之间变动。这是因为许多公司都不知道如何提高员工的薪水,因此提升职业阶梯的最简单方法就是简单地去另一家公司。



  • 搬到莫斯科再往西边走很有意义


即使您发现自己处在偏僻的工作中,也建议朝着发展的方向前进。这样,您将更快地成长。最重要的是,它直接影响工资。该地区与莫斯科的薪水之间的差额约为50%,如果您移居该州,则各州之间的差额会更大。



  • 您不应该选择狭义的专业


在市场上,与狭窄的专家相比,具有广泛技能的程序员的需求量更大。



  • 发展软技能


这将为您提供在公司中进行有效沟通,相互了解的机会。您的专业发展越多,对编程本身的了解就越少,而不是如何有效地在团队中取得成果的知识;



  • 了解你的动力


如果您了解自己的动机,那么您会更容易成长和选择自己喜欢的公司。首先,这可以使您开心。



如何准备面试?



知道什么都没关系。如果您通过20次面试,那么您将被录用为第21名。不管您是程序员,有实践知识还是从未做过。


您可以制作一个空白的简历,将被邀请到不同的公司,进行面试,您将明白自己被问到了,从第20次面试中,您将知道如何回答这些问题。值得从一些您真的不想找到工作的简单公司开始,一个月后开始在那些您真的想找到工作的公司中进行面试。他们很可能会带走您,然后一切都会取决于您。



Juns在面试中问什么?



  • 测试


几乎所有公司都会要求您进行测试,这绝对是必须要做的;



  • 样例代码


最好事先做一些自由职业或一些宠物项目,把它做好,使它看起来漂亮;



  • 准备有关您的经历以及5年后看到自己的人的问题的答案


最好的办法是准备一个美丽而真实的故事,以便使聆听变得有趣。这很重要,因为这些问题可以使您清楚地知道您是否有发展动力,以及通常会花费多少时间。当面试六月的职位时,雇主已经知道您真的不知道如何做,雇主想雇用一个有前途的人,而这些问题只会显示您有多大的前途。



值得学习以下主题的基础知识:



  • 面向对象编程;
  • 数据库。不必学习有关SQL优化的庞大的两卷书,但是有必要知道如何以基本形式进行SQL查询。
  • 设计模式;
  • 版本控制系统(Git)
  • 基本语言能力。例如,如何连接PHP软件包。


有了这些基本知识,您就可以解决一些实际问题。这些问题在5年前是相关的,现在是相关的,在不久的将来也将是相关的。



想更多地了解作为程序员的工作?



订阅我们为期六个月的在线课程“专业:程序员”,了解更多!




All Articles