4–5 лет опыта программиста-самоучки

Я оглядываюсь назад на последние несколько дней. Я считаю, что прошло 5 лет с тех пор, как я начал кодить. Но я не могу найти точную дату. Я разрываюсь с марта 2015 года по март 2016 года.

Я знаю, мне следует заглянуть в Google Диск или Gmail, чтобы найти первые электронные письма или документы, с которых я начал, или даже проверить Pluralsight, Udemy или Sololearn для первых записей. Но на самом деле я никогда не выходил в Интернет, когда начинал учиться программировать. Мне потребовалось около шести месяцев, чтобы быть достаточно уверенным, чтобы начать присоединяться к таким платформам, как Sololearn, и я никогда не использовал Udemy, Pluralsight или любую другую обучающую платформу. У меня был двоюродный брат, получивший степень в области информационных технологий и вернувшийся из Германии, где он проработал некоторое время, который помог мне с ресурсами (видеоуроки Баки Робертса и книга по Java от Deitel и Deitel), которые я изучал самостоятельно. Впечатляет, правда? Вы тоже можете это сделать. Самый большой привет величайшему человеку, которого я знаю: Юлиусу Амегадзи, который также является консультантом по программному обеспечению. (Вы можете связаться с ним в LinkedIn) Спасибо, сэр!

Итак, я занимаюсь программированием примерно четыре или пять лет, и я оглядываюсь назад. Чего я добился за эти годы? Что я сделал не так? Что я сделал правильно? Что привело к тому, что все стало так, как было?

Чего я достиг за эти годы?

Справа сверху:

  • Я научился кодировать на Java, Python, HTML, CSS, JavaScript, Node Js, C ++, Typescript, Angular, Android, управлять версиями с помощью Git, а также научился использовать некоторые базовые и расширенные инструменты и концепции в Photoshop. Я могу настраивать, управлять и устанавливать ОС Windows, ОС Linux (даже установку ArchLinux) и настраивать виртуальные системы в облаке.
  • Я был достаточно уверен в себе, чтобы изменить свою университетскую программу после первого года обучения с аквакультуры и управления водными ресурсами на информатику, зная, что это вернет меня на один год в школу.
  • Я смогла найти работу стажера в стартапе во время летних каникул 2019 года. Привет Гудра Инк. Гудра-Студии.
  • Я также смог завершить несколько проектов в партнерстве с некоторыми хорошими людьми (привет Кваку Просперу Иезекиилю и моему собственному наставнику Джулсу), за которые мне заплатили.
  • Я участвовал в двух хакатонах и одном мероприятии, которое было похоже на хакатон. В произвольном порядке, хакатон Hacklab Foundation (The Hacklab Foundation) в Университете науки и технологий Кваме Нкрума, Кумаси, Гана, Facebook Hack a Project в Mest Incubator в Аккре и Goldman Sachs 2020 Africa Recruiting, Гана, Отель Кемпински в Аккре. К сожалению, я не выиграл ни одного хакатона, и меня не взяли на работу в Goldman Sachs Recruiting. Фактически, в Goldman Sachs меня бросили сразу после первого этапа.
  • Я создал мобильное приложение для Android с нуля и сотрудничал над еще одним (KaraAgro AI), когда работал в Gudra Studios в качестве стажера. Но я также работал над пятью другими приложениями для Android с несколькими разными людьми. Многие из них не представляли собой ничего достойного того, чтобы делиться.
  • Наконец, я приобрел достаточно чувства собственного достоинства, чтобы начать делиться своими знаниями и опытом с людьми на Medium.

Что я сделал не так?

  • Я не собирался изучать один язык программирования.
  • Я не структурировал свое обучение. Я не использовал стек (внешний стек, внутренний стек, облачный стек и т. Д.). Фактически, когда я начал учиться писать программы на Java, я мог писать только мобильные приложения для Android. Когда я понял, что достаточно узнал о Java для этого, я переключился на изучение Android. Но в то время у меня был медленный компьютер, и если вы знаете студию Android, то наверняка знаете, что он требует много компьютерной памяти, которой у меня не было. Из-за этого я переключил Python. Я немного изучил Python, а затем заинтересовался операционными системами Linux. Поэтому я остановил Python, отформатировал свой ноутбук и установил Ubuntu. Но это было слишком тяжело для моей системы и сильно отставало. Итак, я перешел на Fedora (другой дистрибутив / вариант Linux). Затем перейдем к Kubuntu, Peppermint, Kali Linux и т. Д.
  • Оттуда я перешел на Angular JS, как он тогда назывался. Но мне было трудно понять Angular JS, поэтому я остановился.
  • Затем я перешел на Node Js. Но я понял, что мне нужно создать веб-страницы для сервера, которые я буду писать на Node Js.
  • Итак, я начал с HTML, CSS и JavaScript, а также с PHP.
  • Затем я захотел создавать игры, потому что я люблю игры. Итак, я начал изучать C ++, чтобы иметь полный контроль над оборудованием в моих играх.
  • Но я снова понял, что мне нужен openGL. А изучение OpenGL привело к появлению такого количества сложных концепций, что я вообще не мог развиваться. Итак, я остановился, а затем вернулся к Java и Интернету. Затем я встретил Проспера Иезекииля (упомянутого выше), который познакомил меня с полной веб-разработкой, где я изучил JQuery .
  • Наконец, я вернулся к Angular, где я нашел свой дом!
  • Я не начал изучать структуры данных достаточно рано, и без структур данных я не мог правильно решать алгоритмы.
  • Одна из причин, по которой я не выигрывал ни один из хакатонов и не был принят на работу на мероприятие Goldman Sachs, заключалась в том, что я недостаточно серьезно относился к этому. Я считал, что если вы достаточно хороши в своем деле, вас будут узнавать, даже если вы не приложите много усилий. Но это просто неправильно.
  • Когда я начал писать код, я смотрел на это как на хобби, а не как на работу или занятие. Даже сегодня для меня это все еще хобби. Если бы я не уставал и не болел пальцами и руками из-за того, что слишком много печатал, я бы не взял выходной.
  • Я не использовал Интернет в полной мере. Я учился по книгам. Я не предоставлял себе неограниченный доступ к быстрому интернету, что делало невозможным тестирование и изучение некоторых вещей. Например, я не мог создать произвольное количество проектов в Android Studio, потому что для каждого из них потребовалась бы новая сборка Gradle, что означало подключение к Интернету. Кроме того, было невозможно научиться использовать сервисы облачной платформы Google, такие как GCP Storage, потому что для хранения данных в облаке требуется подключение к Интернету.
  • Наконец, я не чувствовал себя достаточно уверенно, чтобы обратиться и подать заявление о приеме на работу.

Что я сделал правильно?

Я много работал!

Почему все сложилось так, как было?

Если связать воедино то, что я сделал неправильно, и то, что я сделал правильно, вы поймете, почему все обернулось именно так. Когда вы рассматриваете программирование как просто хобби, вы будете прыгать на любую новую вещь, которую найдете, получать удовольствие от этого, а затем переходить к следующему. Но вы не узнаете всех подробностей. Это не сделает вас плохим программистом, но вы не сможете работать. Компании не нанимают любителей - они нанимают людей, ориентированных на карьеру, которые знают изнутри язык программирования, систему или программное обеспечение и могут выполнить поставку в кратчайшие сроки. Они не ищут людей, которые имеют представление о том, что может делать Java, но которым нужно переполнить стек, прежде чем они смогут это сделать.

Компании также ищут сотрудников, соответствующих их стекам. Для компании, для которой я создал свой самый большой проект, я использовал MEAN Stack (MongoDB, Express Js, Angular и Node Js). Если мы хотим нанять кого-то, кто поможет нам поддерживать приложение для этой компании, мы будем искать людей, которые знают все компоненты этого стека, а не людей, которые могут кодировать в одном из компонентов.

Любитель на эту должность не подошел бы. Почему? Потому что они не знают стека. Чтобы узнать это, они должны увидеть красоту каждого из этих компонентов и изучить их для удовольствия. Но они не увидели бы красоты в использовании базы данных MongoDB, если бы не изучали стек.

И это подводит меня к одному главному совету для всей этой истории:

Независимо от того, как вы хотите выучить код, структурированный, с планом или как любитель, перепрыгивающий с одного языка на другой, сделайте все возможное, чтобы узнать обо всех стеках, используемых компаниями, а затем выберите один учиться.

Стек - это набор языков программирования, которые можно собрать вместе для создания полноценного программного обеспечения. Например, люди комбинируют PHP, MySQL, HTML, CSS и JavaScript для создания веб-сайтов - это их стек. Некоторые компании используют непопулярные языки программирования, такие как, например, Haskell, вместе с другими языками для создания своих бизнес-сайтов и т. Д. - это их стек.

Изучите стек, а не язык программирования

Я добавлю еще кое-что: составьте план обучения. Если вы не составите план, вы пожалеете об этом.

Это не значит, что я сожалею о том, как поступил во время программирования. Эта статья на Medium возможна только из-за того, как я все сделал.

Но мне было грустно, что меня не приняли на работу в Goldman Sachs, а также разочаровало то, что я не прошел второй этап моей заявки на стажировку в Google. Я делал ошибки, и я не хочу, чтобы вы делали те же самые.

Итак: составьте план, структурируйте свое обучение, почувствуйте себя уверенно, применив работу, на которую, по вашему мнению, вы подходите, и, что наиболее важно, изучите стек, а не только язык программирования.