远程站点上的开发人员-从头到尾

最近,越来越多的人开始梦想着如何呆在家里,在分散的团队中编写有趣的项目,用一杯家用咖啡养猫,并为此赚钱。 实际上,它没有任何问题,成千上万的开发人员以这种方式工作。 但是,这常常开始争辩那些没有足够经验的人,实际上,如果不在办公室获得战斗经验,就不可能获得这样的工作。



不需要遥控器上的Jones


正如Toaster的人喜欢说的,尤其是大多数部门的策展人一样,他们不需要在远程站点上发布任何简报,就像在自由职业者6月获得收入的可能性一样。 确实是。 但是,每个人都知道,总会有一个人去做几乎被认为是不可能的事情。

因此,我的名字叫谢尔盖(Sergey),我是一名企业开发人员,我住在乌苏里斯克市(普里莫尔斯基边疆区,人口20万,在莫斯科工作+7个小时),没有接受过专业教育,也没有在办公室工作一天。 这个故事是关于我如何过这样的生活。

我的目标不是激发来自全省的人们,以便他们都争先恐后地开始在远程站点上找工作。 我想证明我花了很多时间成长为一名开发人员(毫无疑问,如果我所在的城市有“办公室”,我会做得更快)。

大学毕业后


最初,我计划在赌博行业工作,所以放学后我去了“社会文化服务和旅游”,但是第二年俄罗斯联邦颁布了禁止赌博活动的法律。 尽管我住在滨海边疆区,他们应该在2012年之前建造赌场,但所有截止日期都被打破了,实际上,在我被释放之时,什么都没有。 更确切地说,这里有地下赌场,但这些绝对是您绝对不想工作的地方。

结果,我首先在一家大米批发公司找到了一份工作,然后离开了这个地方,成为Internet连接安装程序,然后得到了1C-Franchisee的支持。 大约花了一年半的时间。 就像他们说的那样,在获得大学颁发的红色文凭的手中,所有的门都在您面前打开。

技术支援


一直以来,我一直在寻找更合适的东西,在“我的圈子”的一天,我发现夜间技术支持方面有空缺。 考虑到我的时区,在符拉迪沃斯托克(Vladivostok)上午7点,在莫斯科,该时间为0-00,因此我认为白天几乎可以上夜班。 我回应,交谈并找到了工作。

自然,就这样,左人不会得到支持。 我从学校开始就喜欢建立网站,并为我的dotka团队和当地的游戏俱乐部制作了多个网站。 另外,由于我的学历,我的英语水平很好,这也使我能够为来自澳大利亚,新西兰和美国的客户提供支持。 实际上,我的英语水平很高,而且拥有1C的支持经验。

继续前进


在一次公司代表大会上,我与开发部门的人员进行了交谈,我意识到所讨论的主题不是某种“火箭科学”,我也可以尝试。 另外,正规教育虽然是人道主义的,但是我们仍然具有数学,统计学,经济学,会计和程序设计,因此我并不十分担心公式和数字。

在2014年,到处他们大喊php很烂,python是未来等等(我真是天真和愚蠢!)。 所以我开始向他学习编程。 我是怎么做到的:

1)我下载了Mark Lutz的书籍“ Learning Python”,“ Python编程”。 这些书很难,因为阅读它们非常无聊,但是,它们提供了很好的基础。 如果您选择快速入门或阅读一些有关编程的基础书籍,那么我强烈建议您从第二本开始,以获得必要的基础。 重要的是,不仅要理解“如何”,而且还要理解“为什么”和“为什么”。

读完这些书之后,我决定玩一些游戏,并开始为游戏门户网站(Brablay / GoodGame)编写各种解析器,以收集有关某些主题的统计信息。 尤其是,很高兴看到某些人如何发表评论,尤其是他们的大量评论。

2)然后,我决定做一些更有意义的事情,并在Python中建立一个文章门户。 我读了一本关于Django的书(老实说,我不太了解-信息提供的速度太快且太“真空”)。 因此,我从ITVDN观看了一些有关Django的入门视频,并转到了官方文档。

经过4个月的开发,我习惯了布局,了解如何使用数据库,编写迁移,设置SSL等等。 结果,第二年我花了很多钱在自己的项目上,并为当地的孩子们开发了小型站点(运输船站点,自行车商店,运动营养商店等)。

3)一年后,我对在Django上开发项目感到无聊。 我开始研究在Python上还有什么想法。 我可能阅读了Ozon网站上的所有Python书籍。 从有关Devops的书开始,以计算机视觉和机器学习结束。 这些主题并没有真正激发我的灵感(我现在并没有看到可以立即使用的规模应用价值),但是这些来自未知魔术和“天网”的术语变成了普通公式和应用库。

4)最后,我决定提高我的计算机知识水平,并开始阅读有关C / C ++ / Java /计算机网络/ PostgreSQL / TDD和企业模式的书籍。 坦白地说,当您了解另一项技术的工作原理,它所依赖的内容,所面临的挑战以及如何解决堆栈中的“复杂问题”时,这是一次有趣的体验。

另外,我们可以提到Spring上的书,该书显示了企业应用程序比Django上的“随和”项目复杂得多。

测试和自动化测试


经过三年的支持工作,很遗憾,我无法进入开发部门,但仍有机会在测试部门任职。 到那时,我自由地了解Python并且可以使用Java,因此不同意是愚蠢的。

测试部门对如何开发复杂的系统,团队内部以及彼此之间如何交互有很好的理解。 各种测试环境的配置,任务优先级等。

自然地,这是在发布新版本时通过jenkins进行抽搐测试来自动进行硒测试的方法。

我也喜欢测试设计的主题。 该公司拥有大量的各种测试课程,因此您可以从中学到很多很棒的东西,而这些东西是您从测试设计领域以前从未想到的。 例如,使用成对生成器(http://www.pairwise.org/)设计最少数量的测试用例,以涵盖最多数量的系统变体。 这些是QA-Engineer的工作中很酷的东西,许多开发人员甚至都没有想到。

过渡到发展


在测试部门工作了一年半之后,我达成了一项协议,即如果我在php堆栈上提供了一个可用的原型,我将有机会在开发部门实习。
我花了一个月的时间在PHP上读书。 在Python和Java之后,掌握PHP变得非常容易,尽管有时会出现“为什么不在这里”这样的问题。

我花了三个月的时间来使用Symfony API服务(网络枪口,个人帐户,业务逻辑,邮件通知,pdf生成器,解析复杂的json结构等)。 突然之间,事实证明Symfony是Django和Spring的混合体,因此完全没有理解上的问题。

结果,我展示了我的项目并在开发部门实习,从那里我已经被调到了一个成熟的开发人员。

早期的开发人员


我得到了一位指导老师,他实际上在检查我的代码,并提出了为什么我应该这样做,而不是其他原因。 有时,通话会持续一个半小时至两个小时,这是在对球上的代码进行了详细分析并提出了改进建议时提出的。 实际上,事实证明,我在正确的时间以正确的逻辑做出了决定,但是由于我没有公司发展经验,所以结果变得过于混乱和复杂。 再加上不时有关于Redis / RabbitMQ / Elastic等工作的问题。 但是,主要工作还是在现场进行,以简化代码并使其可测试(当您自己编写代码时,您甚至都不认为其他人将无法阅读它)。 结果,在4个月的时间内,我的代码风格就达到了公司标准。

实际上,当您自己编写代码时,您甚至都没有想过其他人会如何理解它,以及以这种方式表达您的想法是否正确。 团队工作经验很难替代。

全面的经验,以使开发人员可以从头开始在远程站点上工作- 4年9个月。

由于从头开始进行远程工作:


  • 完成一门课程并阅读了一些教程之后,在远程站点上获得开发人员职位的可能性往往为零。
  • 在没有商业开发或任何自己的项目经验的情况下,即使在6月的偏远地区也能应付的可能性趋于为零。
  • 在没有任何建议的情况下,公司会花时间在您身上教些东西的可能性很可能为零。
  • 阅读一些书籍并在远程站点上找到工作后,您获得“大笔钱”的可能性很可能为零。
  • 在他职业生涯的初期就做出决定以放弃办公室并寻找偏僻的场所是一个大废话。
  • 拒绝其他IT职位是愚蠢的,因为您只希望从职业生涯的一开始就成为远程站点上的开发人员。

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


All Articles