Полгода назад тонул на работе. У меня было много мыслей, и у меня не было времени заниматься своими личными проектами. И я могу сказать вам одно: я всегда полон новых идей, но их реализация требует много времени.
Полгода назад я много говорил с Саби - моим другом, - что он будет заинтересован в изучении мобильного программирования; в то же время мой брат тоже решил, что ему нужна смена карьеры, и он мог представить себя фронтенд-разработчиком. Высшее образование требует много времени, и они часто преподают устаревшие знания о быстро развивающихся технологиях. Кроме того, они оба были заняты своей жизнью, а времени на университеты не было. Им нужно было что-то более быстрое и эффективное.

Так родилась идея: если бы я потратил какое-то время на их обучение, они могли бы помочь мне с моими собственными проектами. Для них это тоже было бы отличной практикой, так как им нужен опыт, и мои проекты наконец-то продвинутся вперед 😃 Настоящая беспроигрышная ситуация. Позвольте мне объяснить, как они превратились из нуля в героев менее чем за полгода.

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

Несмотря на то, что ребята хотели изучить разные технологии, мы начали обучение с помощью общих инструментов: я научил их, как использовать Sublime, как использовать Git (с Sourcetree, а не с консолью, я действительно пытался сосредоточиться на том, чтобы сделать его как можно более простым, но все еще охватывает все) или как использовать Инструменты разработчика Chrome.

Для своего брата - Норби - я написал список всех техник HTML5 и CSS, которые современный интерфейсный разработчик должен знать и использовать ежедневно, но я не углублялся в JavaScript. Использование холста, например, гораздо менее важно, чем возможность проверять формы, отправлять и получать запросы AJAX или использовать плагины, такие как необычные средства выбора даты, или встраивать Google Maps и взаимодействовать с пользовательскими картами. Он изучил основы SEO и научился добавлять на страницу значки или мобильные значки, устанавливать описания и открывать теги графиков, но я не углублялся в CSS flexbox. Он научился использовать бутстрап с его сеткой и адаптивными функциями, я показал ему инструменты, которые могут генерировать градиентные фоны CSS или как встраивать пользовательские шрифты Google, но я не объяснил механизмы, лежащие в основе различных браузерных движков. Он научился обрабатывать события с помощью jQuery, но мы не рассматривали, как обрабатывать события с помощью собственного JavaScript (в любом случае мы почти не коснулись чистого JavaScript) - все, что я показал ему, было действительно полезно, и я верю, что он сможет решать более конкретные проблемы в будущем, найдя ответы в Google или StackOverflow.

С Szabi и React Native процесс был немного другим, в основном потому, что для меня это тоже была новая технология. Мы вместе изучили основы JavaScript, я сел с ним и объяснил концепции классов, объектов, наследования, и мы сразу же посмотрели на реальные примеры - уже в кодах React Native. Мы прошли туториал по React Native и поговорили о различных видео. Когда у него возникали общие вопросы о программировании, я мог помочь, но так я также узнал новую технологию. Мы могли помогать друг другу, потому что были случаи, когда он что-то понимал до меня (например, как связать пакеты в XCode), поэтому совместное обучение было взаимовыгодным для нас обоих.

Практика ведет к совершенству - пока они собирали новые знания, им нужно было набраться опыта. К счастью, оба они начали заниматься самостоятельно и придумали упражнения для себя, но я также хотел воплотить в жизнь некоторые из моих идей, поэтому они тоже практиковались на них. Таким образом, они могли получить представление об управлении проектами (мы использовали Trello для отслеживания задач с простыми досками, такими как невыполненные, выполняемые, выполненные, карточки, крайние сроки и подзадачи).

Они работали над мобильной и веб-версией приложения, которое позволяет пользователям отслеживать свои предыдущие полеты (приложение, которое я создал несколько лет назад, но я хотел создать его новую версию). В этом проекте я мог объяснить многие концепции, и в конечном итоге все соединилось по частям, чтобы они могли участвовать в реальном процессе разработки.

О, и я упоминал, что они оба жили более чем в 1000 миль от меня на протяжении всего процесса? Расстояние не затрудняет обучение (но было несколько раз, когда я встречался с ними лично, особенно в начале, когда я объяснял объектно-ориентированное программирование - вам действительно нужно много рисовать с этим).

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

Https://itunes.apple.com/us/app/guess-what-game/id1239106598
Вы можете загрузить приложение, которое мы трое создали за выходные.
У нас также есть сайт: http://guesswhatapp.net

Имейте в виду, все это было создано за выходные, а у ребят был опыт разработки несколько месяцев! Престижность им! 🙌👊

Так зачем учить программировать для друга?
- Вы можете работать над своими собственными проектами, теми, которыми вы всегда пренебрегали из-за нехватки времени - так что в конце концов, вы не «зря» время
- Вы можете узнать много нового, лучше понять то, что вы уже знаете, упорядочить имеющиеся знания
- Вы можете проводить больше времени со своими друзьями (хотя мне удалось найти много материалов в Интернете, которые действительно сократили время, когда нам приходилось разговаривать напрямую - они учились из статей, книг и видеоуроков и задавали вопросы, если они были)
- И для хорошей кармы: кодирование - это чрезвычайно ценные знания, вы можете помочь им изменить свою карьеру, получить лучшую работу или начать работать вместе в будущем