这是对我们全球 Java 社区的成功故事的翻译。Danil 在俄语版课程中学习了 Java,您可以在 CodeGym 上用英语学习该课程。愿它成为您进一步学习的灵感,也许有一天您会想与我们分享您自己的故事 :) 好吧,我想用一些鼓舞人心且易于理解的东西来开始我的故事……但这又一次归结为每个人都在谈论但你从未亲身感受到的典型年龄刻板印象。你好,同事们。我叫丹尼尔。我今年 35 岁,是一名程序员。我职业生涯的背景故事与我国乃至全世界成千上万的人的职业生涯相似。我长大了,参加了派对,并没有想太多。有些东西会引起我的兴趣。我会读一些东西。我以为我明白了什么。然后我在某个地方注册学习。因为我没有被其他地方录取。现在想想,我想成为吗?那时我真的明白我想要什么了吗?我有真正的梦想吗?不只是赚一大笔钱,而是我真正想做的事?!不,当然不。在高中,我的学习方法是随意的。自从我在 6 年级被介绍到一门计算机科学课后,我就一直对计算机情有独钟……甚至对编程感兴趣,想深入了解事物的工作原理。但是现在,这么多年过去了,我当时并没有深入挖掘的欲望,这似乎很奇怪。为了理解、调查和感受......早在 1995 年,我们就在 QBasic 中编程,并梦想在 VGA 模式下发布“我们自己的 Windows 版本”(我们甚至没有亲眼见过):) ,或者我们梦想创造一款电脑游戏,例如命令与征服或当时流行的类似任务的游戏,但以比尔·盖茨为主角。嘘!我们研究了 Pascal,但那里太复杂了…… 我们听说过 C,但无法运行单个程序。我们在第一个 x386s 上学习和玩耍,使用 MS DOS 的黑色窗口,同时举着装满软盘的盒子,并拿 TB 硬盘开玩笑。有这一切,但我没有欲望或理解我可以更深入地研究这一切。说实话,后来的几年里,也有编程给我发泄的机会,甚至赚到一点钱。在我的一生中,我为我的论文编写了 1 个程序,为课程作业编写了一些程序,尽管我从未将这个领域作为我研究的重点 :) 所有这一切都没有沉浸,仅凭纯粹的热情。当然,我现在不想使用该代码:DI 注册了一个土木工程项目并且在学习如何构建东西方面做得很好,但是,幸运的是,我没有收到工作分配。我在找工作时相当被动。结果,我在一家维护区域供热网的公司找到了一份机械师的工作。然后,再次感谢熟人,我找到了一份家庭服务工作,在接下来的 12 年里,我一直很脏。现在我是一名手机维修技师!当然,这不是一件坏事。它似乎提供了不错的收入以及增长空间……但是有些地方不对劲。我开始觉得到处都是业余爱好者。有很多工作和常客,但有些地方不对劲。我有一种感觉,我并不完全理解这一切是如何运作的。同时,我也明白,支付5年的教育费也不会有任何结果。五六年后,我已经厌倦了修手机。如果我没有 不换职业,至少想“自己出门”。但是,当然,这些被动的愿望注定不会实现。几年过去了,我 33 岁了。比我小 10 岁的人可能会说这几乎是老年,但比我大 10 岁的人肯定不同意,就像我不同意 :) 然而,手机维修的无聊和单调促使我参与其中各种创意活动。现在我正在想象一份设计工作,或者最坏的情况是网站开发、3D 建模或视频编辑!幸运的是,我的这种热情确实改变了我的生活。几年来,我参加了一些兼职,并在创意比赛中赢得了一些重要奖项。然后我被聘为一个不同的角色,在当地一家制作公司担任设计师。突然间,改变之风吹进了我的生活,就像著名的蝎子乐队的歌曲一样。很长一段时间以来第一次,通过换工作,我突然觉得如果我愿意,我可以改变任何事情。我意识到,当我的生活没有被拆开某人的电话或与朋友的朋友的朋友的朋友的朋友谈论如何使他们的手机正常工作,或毫无意义地玩坦克世界,或坐在充满恐惧的工作中时一些粗心的举动会迫使我花费本已微薄的薪水来更换损坏的零件,我意识到我可以改变。改变真正做我想做的事。当我开始做设计师时,我发现我不想做设计工作。当然,绘图、设计、网站管理、建模和视频编辑都是有趣的职业。 当我看到“Java 课程”的广告和他们承诺的培训完成后的薪水时,我意识到那是什么:) 是的,当然!我一生梦想成为一名程序员!比我高三四倍的工资,而且是需要思考的工作!一份除了你的大脑之外什么都不会束缚你的工作!那是我一直梦想的,但天啊,有太多我不明白的地方! 我问我老婆,你说,如果我成为程序员呢?他们赚 100-20 万。“当然,”她说,“合二为一。然后我们就搬到巴西去。”但这不是一个月就能完成的事情。需要一年的时间!而且我晚上会很忙!” “好吧,你能做什么?” 事情就这样开始了,但是…… 不知为何,银行没有批准贷款3万来培养一个新近出现在职场上的设计师。而且,事实证明,没有白费:) 正如老乌龟对师傅大师所说的那样,没有意外。我想快速加入程序员行列的愿望可能会不幸地发生。事实上,在教育中,重要的不是你付出了多少,而是你获得的知识。尽管我没有报名昂贵的课程,但我并没有放弃成为一名程序员的愿望。情况有所帮助。平静、安抚的环境使反思和放松成为可能。工资!在接下来的一个月里,我搜索了整个 Internet,寻找成为 Java 程序员的最佳(当然是免费的!)途径。为什么选择Java?因为Java程序员的薪水最高!这就是我的结局代码健身房. 当时它的设计很旧,让人想起曾经深受喜爱的 Futurama 卡通片。我立即被 CodeGym 的 10 个免费关卡和大胆多彩的“技术人员”氛围所吸引。我怀着极大的热情投入到学习中。我想在 10 级之后,如果我同时使用 YouTube 上的免费课程、各种 GeekBrains 网络研讨会和 SoloLearn 应用程序学习,我可能会非常熟练,我的职业生涯肯定会起飞!我记得,我在一周或更短的时间内完成了前 10 个级别。它是如此简单、有趣、困难,同时又令人着迷——我无法用语言表达。当然,我也有一些很深的误解。想象一下,在将近 20 年的时间里,您都非常了解程序是一个从上到下执行的文件,这是一种怎样的感觉…… 然后你会遇到这样一个事实,一个程序根本不是一个文件,而是一个完整的项目,一个项目有很多文件,当你点击“运行”按钮时(在 IntelliJ IDEA 中,这在当时是陌生的时间),您在屏幕上看到的文件不一定是正在运行的文件……这令人痛苦地无法理解。事实上,在网站上的旧讨论层的某个地方,你仍然可以找到我对创作者短视的愤怒和辱骂的评论,他们认为他们的用户可能是全新的并且对这些新事物一无所知-奇特的 IDE =) 所以我很快就完成了 10 个级别,一口气完成。太好了,我几乎立即购买了 1 个月的延期。这对我来说是一次重大的购买。一开始一切都很顺利,但随后的关卡就困难多了。更重要的是,我意识到直到 Level 10 的任务都比较简单,我对“现代编程”的理解仍然不深。一个月过去了,但我并没有取得明显的进步。我可能接近 20 级或类似水平。但是每天我都觉得我没有削减它。我投资了钱,但我无法证明它是合理的。在我的弱点的重压下,我放弃了一两个月的学习。我只是偶尔观看有关该主题的任何有趣视频,而且它们缺乏细节。2017年新年临近。有了它,一份送给所有 CodeGym 学生的大礼 — 比正常价格低 50% 的巨大折扣。自我折磨平息了,梦想继续存在。我支付了订阅费。这不是天文数字,但它是实质性的,必须证明其合理性。元旦假期刚过,我就重新投入工作。我记得一切都很顺利,直到我遇到了一个看似简单的任务,但对于我这样的背景的初学者来说却非常困难。我相信它被称为“餐厅”。它不会屈服于洗涤或擦洗。它不会屈服于长时间的学习或上下跳跃。类和方法在我的脑海中浮现,彼此纠缠在一起,我当然分不清彼此。我可能与它搏斗了一个星期。旧日的恐惧已经在我的脑海中浮现,只有我已经投入的 6,000 卢布才阻止我放弃我已经开始的游戏......然后我的家庭发生了一场巨大的悲剧......巨大而且,一如既往,出乎意料.. . 整整一个星期,我无法专心做任何事情。我什么都不能做,什么也不能想,不能活着……我只是在宇宙的某个地方停下来,然后飞向我们都飞翔的地方……我很高兴,亲爱的读者,你能走到这一步。因为这是我故事中最重要的部分。这就是为什么我现在可以说我活着而不是存在的主要原因。尽管很悲伤,但每一个结束都是一个开始。这是我的开始。我真正的开始。经过一周的麻木和冷漠,我的忧郁被活下去的渴望所取代。一个念头进入了我的脑海。每个父母都希望自己的孩子能活下去。让孩子们在力所能及的情况下生活。这样做,我们的父母就活在我们身上了……当我回到“餐厅”任务时,我突然感到非常轻松。使用实例化类和实现接口的类的类突然看起来就像解开打结的绳索一样简单。你拉一个,看看有什么在动——它就在那里!问题是由于一个错字!:) 推荐大家解开这个“滋补”的结。后来,这个过程变得越来越难,越来越难。但它不再像世界末日或监禁。每个谜题都有解决方案。如果长时间解决不了,我可以把它搁置一旁,然后重新振作起来。然后它就承受不住我了!当然,我与验证者进行了斗争,我的脑袋因这一切的不可理解而沸腾,但一切都开始适应某种结构。好像一切都变了:坚固的花岗岩变成了砂岩。任何一块砂岩都会被磨损——这只是时间问题。又过了四五个月。现在我感觉很坚强。我已经完成了对我的 Java Core 知识的大量测试、脑筋急转弯和大量关于各种编程主题的视频(现在有互联网真是太好了 - 你可以在网上找到一切!)我已经阅读了成功的故事,有些令人鼓舞,有些则不那么令人鼓舞,但它们都很有趣,并拉开了神秘 IT 领域的帷幕。也许我现在也能成功?在某个时候,我真的被所有这些故事弄得头晕目眩。听取了众多建议,我决定去面试。几乎每一个成功的故事都建议在找到你的命运之前至少经历一打。我看了一个知名的求职网站。我不认为在我的伊热夫斯克这个小城市对程序员有很高的需求。但是在看到一个相当有趣的初级开发人员职位列表后,我决定冒险一试。我在简历中注明了适度的薪水要求并申请了该职位。周一(如果我没记错的话,我周五提交了简历),招聘人员开始给我打电话,这让我感到多么惊讶!什么' 更重要的是,他们甚至不是我投递简历的那家公司的。当然,我假设有人可能会发现我的简历并认为它很有趣,但我已经做好了每月最多参加一次面试的心理准备。突如其来的关注把我吓得赶紧把简历藏了起来。但我很好奇,所以我决定参加我设法安排的两次面试。对于第一次面试,我在技术上完全没有准备。成功案例说面试是分阶段的:第一阶段通常只是了解对方,没有测试。尽管如此,我并没有期待成功,并且最重要的是让我的思想做好准备,不要因为拒绝或者可能是困惑的“以你的经验,你怎么敢?!”而感到沮丧。我从未去过任何 IT 公司的办公室。我只看到过谷歌、Facebook 等拥有的“童话建筑”的照片,当然,我没想到会看到这样的东西。在我偏远的树林里,似乎有些受压迫的戴眼镜的家伙坐在木椅上,埋在带有防眩光屏幕保护膜的 CRT 显示器后面。但不是。当然,我在那里没有看到谷歌的辉煌和魅力,但办公室里的桌上足球确实给我留下了深刻的印象。从某种意义上说,它挑战了我之前的整个工作生活,工作时间的长短直接关系到我能拿到多少钱。与 HR 的快速面试,然后是颤抖的手完成的问卷——我还没有准备好接受测试。然后与部门负责人进行了简短的交谈,突然他们给了我一份工作。哦是的!尽管我没有回答所有的问题,但我对 Java 的整体知识还是不错的,所以我很快就得到了一份工作。提供的薪水比我在简历中要求的要多一点。此外,在试用期之后,它将会上升。然后加薪会累积起来,导致工资增长更快!这个诱人的想法让我有点疯狂。但这也让我有了底气。我没有为下一次面试做任何刻意的准备。但成功的故事也告诉我们,我们不能马上接受第一份工作机会。这有一些道理。所以,当然,我没有取消与第二位招聘人员的约会。我带着一份工作机会去了第二次面试。但我为自己在这次采访中的自信感到有些惭愧。最简单的问题,现在对我来说这似乎完全是微不足道的,完全混淆了我的头脑。我被压垮了,筋疲力尽,而且(天哪!)在与潜在客户交谈时甚至混淆了 HTML 和 HTTP!在这样的崩溃和燃烧之后,我不再确定自己是否已准备好成为一名程序员。我去参加第一次面试的公司的人力资源部坚持要求答复,并以书面形式向我发送了录取通知书。他们甚至愿意等我结束一个计划已久的假期回来,但我仍然犹豫不决。毕竟,我仍然必须通知我的新前任老板他的新任前任设计师要离开他,这对我和他来说都是完全出乎意料的。但我还是不能让自己拒绝这个提议。我接受了,并与我的新前任老板谈过,一切都很顺利。这就是我成为一名初级测试自动化工程师的方式。或许有人会说,测试自动化工程师根本不是程序员,他们的工作一定很枯燥。但我必须完全不同意这一点。我自己曾经认为测试人员是不具备成为“成熟”程序员所需条件的程序员。我希望我的同事们看到这些文字并认出我时,不要打我!顺便问一下大家好!事实证明完全不同。当我迈出这门学科的第一步并开始真正开发部分测试框架时,我找到了灵感。我觉得自己是一个不仅喜欢写程序,而且知道其中可能隐藏关键错误的程序员。我了解 CodeGym 的验证器是如何工作的,以及为什么它们看起来并不总是合乎逻辑。我开始意识到编程的许多技术细微差别,与作为初级软件开发人员立即进入 IT 相比,我更顺利地投入了这个新世界。你问我现在能不能成为一个“成熟”的程序员?简单的!但现在我有了更多的选择:我不仅可以根据薪水选择工作,还可以根据团队、情况和项目来选择工作。除了那一刻,一个完全不同的就业世界在我周围展开。就业需要我。它想请我吃饭,招待我,让我放松,同时给我发薪水。最初的六个月就像在梦中一样。我简直不敢相信,几十年来,当我停滞不前地从事原来的工作时,这一切却得到了发展和繁荣。当然,它在等我!对于任何努力到达这里的人 :) 看到我的数十名同事出于某种原因没有做到这一点也很令人惊讶。没有注意到在IT世界享受的所有这些财富,这种迷人的生活就在他们面前。就好像这一切都如此司空见惯,无处不在,以至于没有什么值得注意的。在这个领域,你真的生活,真的工作,真的赚钱。至于你的同事,每个人都会有独特的个性——他们将是知识分子和热情的人。他们中的许多人都很有创意,而且绝对都是好人!我很难在这一小段中表达那种宇宙的感觉。我只是真的希望我的读者会相信,在这个新领域,一切对我来说是如何变得真实和繁荣的。我自己来的,故意的。我在一年内掌握了所有相关技术。我再一次重新评估了我对学习一般编程,尤其是 Java 的态度。招聘人员联系了数十次,这在以前从未发生过!对我来说,生活开始变得令人难以置信的快乐——我从工作中获得了真正的快乐,然后回到家,继续愉快地学习新事物。此时,我已经34岁了。在前几年,我有时会清楚地感觉到自己的大脑正在萎缩。我的记忆力正在下滑。我会忘词。现在我的思想变得严谨和不屈不挠。但这太神奇了!当我开始研究像编程这样广泛的话题时,我的大脑先是收缩,好像被压缩了,但后来似乎逐渐膨胀了。思考变得简单快捷。近年来,如此宏大的想法涌入我的脑海,我不得不怀疑它们是我自己想出来的还是不知不觉地从某个地方捡到的。在我的新工作场所,我立即在一个空地上获得了五十个同事。我承认,起初我很恐慌,因为我试图记住每个人的角色和名字。但是我的大脑已经习惯了快速学习,很快我就知道了每个人的名字和各种其他细节,就像荆棘一样,扎进了我对每个同事的心智模型(是的,OOP 很容易转移到现实生活中,副反之亦然)。直到今天,这一切都让我惊叹不已。凭借我发现难以理解的轻松,我编写了一个大型的完整桌面应用程序(我以前从未完成过一个大型项目),为此我获得了一笔可观的奖金。我突然开始理解设计模式,甚至光看别人的代码就能理解别人的程序。所有那些神秘而神奇的词——Spring、JDBC、Hibernate、Git,SQL 和其他数百种语言——获得了意义并变得清晰。任何编程语言,不仅仅是Java,也不仅仅是语法相似的语言,一下子变得清晰起来。就好像我无法阅读,然后突然间我可以了。我感觉到自己沉浸在新世界中有多深,仿佛我已经扎根于周围的每一个主题。由于我的工作、新知识和我自己的努力,我开始以不同的方式看待一切。我发现如果你付出非常具体和合乎逻辑的努力,实现你的计划并实现你想要的任何事情是多么容易。对我来说,这是我快速转型中最令人惊奇的部分。不是拿到了高薪,也不是实现了儿时的梦想。最令人惊奇的是,这个抱负给了我巨大的力量和信心,让我的生活在各个方面都变得更好。有时我会遇到我的老同事,他们也是很聪明的人。我说,你看,我努力六个月,比你十年得到的还多!来加入我吧!他们说,“不,你在说什么?我没那么聪明。我学不会这一切。” 但我相信人,因为我相信自己,并证明这是可以做到的。我是一个完全普通的人。我做到了,其他普通人什么都能做到!也就是说,说服别人总是比说服别人更难 十年我得到的比你得到的还多!来加入我吧!他们说,“不,你在说什么?我没那么聪明。我学不会这一切。” 但我相信人,因为我相信自己,并证明这是可以做到的。我是一个完全普通的人。我做到了,其他普通人什么都能做到!也就是说,说服别人总是比说服别人更难 十年我得到的比你得到的还多!来加入我吧!他们说,“不,你在说什么?我没那么聪明。我学不会这一切。” 但我相信人,因为我相信自己,并证明这是可以做到的。我是一个完全普通的人。我做到了,其他普通人什么都能做到!也就是说,说服别人总是比说服别人更难自己,自己行动。但我相信你,亲爱的读者。你和我一样,也许比我更好。我可以,如果你愿意,你也可以!在这一点上,我希望没有人因我冗长的介绍而睡着或死去。事实上,我只是想分享我的观察和所有帮助我快速成长的东西,我认为,相当有效。但对我来说,没有情感的建议似乎与生活脱节,与我个人的困难脱节。所以最后,在这里我转向最重要的原则,我相信这些原则将使你的学习尽可能快速和有效(我希望我不要忘记我一直试图传递给我的 Padawans 的任何原则):
- 使用 CodeGym。当然,它有缺点。哪个网站没有?在 CodeGym 上学习并不像其他迷人课程所承诺的那样快速和神奇。但是使用 CodeGym,您将获得最重要的东西,这是其他任何地方都无法获得的东西:您将学习如何理解代码。很多代码。好,否则。回到我学习的时候,课程没有 Java 8 和所有这些闪亮的功能,如 lambda 表达式和流。但是我1.7学的很好。
- 使用大量资源。不要将自己局限于一个来源。我对 CodeGym 赞不绝口,但这里的许多主题都不清楚。有时一个人能理解的特定解释在很大程度上取决于那个人。可能需要读课文,然后读一点 Horstmann,读一点 Eckel,然后灯泡才亮:啊!这就是它的工作原理!或者,也许其中之一对您来说很清楚。顺便说一下,在我看来,Horstmann 比 Eckel 好,而 Bloch 简直无法比拟(原文):)
- 学习 IntelliJ IDEA 组合键。在我看来,这绝对是所有 IDE 中最好的。而且我承认我真的很想念 IDE 在其他程序中的快捷方式。做两件重要的事情:Help -> Keymap reference(打印,对折,装订,然后放在你的桌子上)并在你的代码中更频繁地使用Ctrl+Alt+L =)我特别喜欢重复这个建议给我的同事们。
- 尽快开始使用 Git。这真是一项必备技能。你越早撞上它并了解它,就越好。我推荐使用 IDEA 的内置插件。我计划制作一个详细的视频教程,介绍如何执行所有这些操作。更重要的是,曾经有一家非常大的公司联系过我,他们只是找到了我的 GitHub 个人资料,当时这只是一个使用 CodeGym 解决方案的项目。
- 不要害怕承认你不知道什么。害怕不想知道。正如我之前所写的,类、方法、函数、属性和字段等相对简单的术语在我的大脑中造成了可怕的混乱,但随着时间的推移,一切都变得清晰起来。有时您只是需要时间来消化不清楚的事情。
- 不要害怕犯错误。一旦你犯了一个错误,就改正它,尽量不要重蹈覆辙。唯一真正的错误是无法修复的事情。
- 走。您可能认为您是在浪费时间,但事实并非如此。上下班步行一小时对于吸收新信息非常有效。当然,最好戴上耳塞,沿途聆听以 IT 为主题的有声读物或播客。我无法想象如果我没有听过无与伦比的凯利的“意志力本能:自我控制的工作原理,为什么重要,以及你可以做些什么来获得更多”,我能够如此有目的地学习一些东西麦戈尼格尔在这些散步中。
- 从计算机上多休息一下。就我个人而言,我使用 WorkRave,这是一个让我离开电脑的程序,每 25 分钟就有 5 分钟的休息时间。也许这太频繁了?但是每个人的健康状况都是独一无二的,在某个时候您开始明白自己更看重什么:多花一分钟来完成循环,或者背部、手腕和颈部没有疼痛。顺便说一句,非常流行的番茄钟生产力提升技术正是基于这个时间。
- 经常锻炼。对我来说,出去散步后,很高兴能坐在我的笔记本电脑前,用半小时学习英语,用两个小时学习 CodeGym 任务。遇到不懂的地方,我就看视频,看相关文章,直到明白主题。我特别记得试图理解泛型(当我第一次遇到泛型问题时,我什至不知道它们叫什么)。尽管相信我了解它们是什么以及它们是如何工作的,但一年后我意识到我没有。总的来说,我不相信所有的细微差别都会被许多自称理解的人理解。无论如何,这就是我平日里充满了实现目标的愿望的方式。但我发现很难计划我的周末,不得不不断地推动自己前进。当然,这段时间我一直在向家人借钱,几乎没有和他们相处过,但现在我已经收回了这些费用。我的晚上充满了家庭时光,我什至有时间写点东西发布到 CodeGym =)
- 不要否定自己研究相关难懂技术的乐趣。统一语言?HTML?XML?CSS?路径?专家?托管?码头工人?TCP?CPU如何加数?是的!谢谢你,先生,我可以再吃一个吗?:)
GO TO FULL VERSION