Как я выучил PHP и Python, не стал гуру кода, но собрал много других плюшек

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

PHP: начало

Желание освоить PHP появилось, когда я начал заниматься собственными информационными сайтами. Лет пять назад, без кучи качественных современных плагинов для WordPress, работать всерьез, не имея навыков разработки было непросто. Постоянно возникали мелкие проблемы, для решения которых приходилось заказывать услуги на фрилансе или задавать вопросы на форумах.

Например:

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

Подлил масла в огонь и неудачный проект, где на подготовку ТЗ и контроль результатов ушло невероятное количество времени и сил.  Да я чаще переписывался с программистом, чем с женой! Требовалось поменять ситуацию.

Попытка номер раз: как не надо учить язык программирования

Что делает современный человек, если ему надо чему-то научиться? Правильно: гуглит.

На меня вывалился ворох информации — официальный мануал, статьи в блогах, видео. Я прилежно изучал все это, подмечая отдельные конструкции языка и приемы, но толку было откровенно мало. Разрозненные сведения никак не складывались в общую картину. Мне казалось, что научиться кодить — это значит выучить миллион типовых приемов и действовать по аналогии. Представляя, сколько времени уйдет на подобный подвиг, я не раз хотел все бросить.

Попытка номер два: никогда не знаешь, где тебе повезет

Не знаю, во что вылились бы эти потуги. Но мне очень повезло.

Я простудился.

А потому две недели провалялся на диване в обнимку с книжкой «Создаем динамические веб-сайты с помощью PHP, MySQL, JavaScript, CSS и HTML5»

Не могу сказать, что это идеальный учебник (мне не с чем сравнить). Но основы он дает хорошо. А главное — в начале объяснения идут буквально на пальцах и с картинками. Это очень важно, потому что помогает разглядеть за закорючками в текстовом файле их смысл, понять суть программирования интуитивно. Помню, для меня поворотным моментом стало сравнение переменных и спичечных коробков. В переменную, как и в коробок, можно положить разное содержание, но сам коробок останется прежним.

Практика: мелкие скрипты just for fun и для облегчения работы

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

Проблем, впрочем, не возникло.  Свой первый простенький калькулятор на php я писал около 3 часов (сейчас справился бы за 15 минут). Потом пошло куда легче. Мне скучно было искать новые учебники и выполнять задания по порядку, я с первых дней работал над интересными задачами.

Так появились:

Чуть позже стал писать скрипты для SEO, использующие API различных сервисов  (Яндекс.Метрика, Search Console). Тогда я на потоке делал SEO-аудиты на заказ, так что экономия времени благодаря автоматизации оказалась очень существенной.

Еще один приятный бонус от новых навыков — стало гораздо легче общаться с программистами (этого SEO-шнику не избежать).

Еще больше практики: публичный платный сервис

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

В один прекрасный момент мне надоело копаться в этом хламе. Я решил упорядочить код и объединить разные инструменты в виде онлайн-сервиса. В июле прошлого года выпустил первую версию.

Не до конца верил в коммерческий успех проекта. Хотя львиная доля возможностей не только полезна, но и уникальна на рынке, опыта продвижения сервисов у меня не было. «В крайнем случае, буду с удобством пользоваться сам, уже польза», — подумал тогда я и c чистой совестью выделил на разработоку три месяца своего времени.

Сейчас я очень доволен, что начал этот проект. В сервисе зарегистрировано почти 3000 пользователей, есть ряд постоянных клиентов — при том что на рекламу за все время было потрачено ровно 500 рублей (стал спонсором SEO-календаря на 2017 год).

Еще пару лет назад я бы не поверил, что смогу своими руками соорудить что-то подобное, но факт остается фактом — 90% работы над https://bez-bubna.com/ выполнил сам, отдав на сторону только несколько частных задач. По ходу дела изучил много нового, но к текущему моменту перестал придавать этому особое значение. Главное — это удается ли тебе решать поставленную задачу, а сколько всего знаешь — неважно.

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

Python за три недели

В начале 2017 вдруг оказалось, что стоит бешеная мода на машинное обучение. И SEO-шнику, по хорошему, надо бы в нем разбираться не на уровне желтой прессы («нейросети снова учудили»).

А в машинном обучении используется что? Много чего, но в первую очередь Python и R. Недолго думая, я выбрал Python — он как-то больше на слуху в моей среде общения. Первым делом я пошел учиться на онлайн-платформу Shultais Education. Ее основатель — мой хороший знакомый. Несколько дней позанимался и понял, что курс отличный, но не совсем подходит мне по уровню. Он предназначен для новичков и в Питоне и в программировании вообще. А во втором я уже не совсем новичок.

Стал искать учебное пособие с более сжато изложенным материалом и набрел на сайт Питонтьютор. Читая уроки и выполняя задания, получил хорошее представление о синтаксисе языка. Но — не появилось ощущения, что владею им по-настоящему. Все время хотелось сбиться на родной PHP, хотя с первых уроков было видно, что Питон гораздо изящнее и проще.

В конце концов, я решил зайти с другой стороны и занялся непосредственно машинным обучением с помощью курса «Машинное обучение и анализ данных» на Сoursera. Над первым серьезным заданием по программированию пришлось повозиться. Но оно было похоже на реальную задачу из практики, так что оказалось не только сложным, но и интересным. А главное — когда я добился-таки правильной работы кода, наконец появилось чувство интуитивного понимания языка.

Дальше пошло как по маслу. Сейчас я постоянно использую Phyton в работе, парочка новых инструментов в сервисе написана именно на нем (а именно — инструмент для поиска LSI с помощью word2vec и лемматизатор).

Напоследок: зачем и как учиться программированию

Как ни странно, программирование — в первую очередь свобода. Свобода обращения с данными. Ты можешь как угодно их комбинировать, сравнивать, обрабатывать сложными алгоритмами, класть в основу моделей машинного обучения… При этом тебя не отвлекают мелочи вроде разных форматов и источников (API? просто сайт? куча файлов? — без разницы! под все давно есть готовые решения). Исключительно ценное умение для SEO-специалиста и интернет-маркетолога.

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

Сначала долгий период страха и сомнений. Суетливая, не слишком осмысленная подготовка (копание в статьях и мануале без системы).

И вдруг — полет наедине с небом. Все становится простым и понятным (чувство, когда написал свой первый настоящий скрипт).

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

Поделиться
Отправить
Плюсануть

Читайте также
  • Сергей
    24.10.2017

    Гуру кода можно не быть, но экранировать ввод необходимо обязательно ).

    Ответить
  • seoonly.ru
    24.10.2017

    Теперь без куска хлеба не останешься-)

    Ответить
    • Сергей
      25.10.2017

      Какое там. Кисло стало в программировании, если связей нет.

      Ответить
  • Devvver
    24.10.2017

    Питон с какими фрамеворками используешь? Я немного синтаксис учил, я так понимаю что голый питон только в консоль информацию выводит.

    Ответить
    • Алексей Трудов
      24.10.2017

      Я как раз голый учил, так как он мне нужен для использования библиотек, которые применяются в машинном обучении — numpy, scipy и так далее вплоть до CatBoost.
      Для веба использую PHP.

      Ответить
    • Dimma
      25.10.2017

      Рекомендую Django

      Ответить
  • Алекс
    24.10.2017

    Молодчага! А у меня как раз такая проблема,занимаюсь продвижением своих ИМ и жуть,просто жуть как не хватает элементарных знаний в программировании…

    Ответить
    • Алексей Трудов
      24.10.2017

      Элементарные можно вообще быстро получить.

      Ответить
    • Рус
      25.10.2017

      склад, доставку и возвраты тоже сам?

      Ответить
  • Сабир
    25.10.2017

    Данная статья меня воодушевила возобновить изучать php для себя, т.к. частенько приходится дорабатывать под нужды сайты. Что на сегодняшний момент лучшее для обучения PHP. Может есть хорошие онлайн-курсы?

    Ответить
    • Алексей Трудов
      25.10.2017

      Здорово!
      По курсам ничего не могу сказать, не проходил.

      Ответить
  • Димма
    25.10.2017

    Для приведения лемм к базовой форме у меня очень хорошо показал себя pymorphy2. Ты им же преобразовываешь?

    Ответить
    • Алексей Трудов
      25.10.2017

      Да, им. Отличная библиотека.

      Ответить
  • Мимокрок
    25.10.2017

    Текст написан для рекламы «сервиса» (или сервиса без кавычек, не суть важно). Когда видишь, что единственная цель автора — впарить тебе нечто, то трудно, почти невозможно воспринимать всё, что он вдобавок балаболит как ценную информацию. Не знаю что за подход у оргов, но на мой взгляд условие:
    > Пишите о тех темах, в которых хорошо разбираетесь — статья должна быть экспертной, а читатель должен доверять вашему опыту.
    не соблюдено. Я, конечно, понимаю, что у вас и нет задачи победить, а лишь в лучших традициях «СЭО» засветить «сервис» (или сервис) хоть где-то и хоть как-то, но, тем не менее, это факт.

    Ответить
    • Алексей Трудов
      25.10.2017

      это факт

      Это мнение.

      трудно, почти невозможно воспринимать всё, что он вдобавок балаболит как ценную информацию

      Можно просто не читать.

      Ответить
      • Анатолий
        25.10.2017

        > Можно просто не читать.
        Это слив, да еще и на своем блоге… позор).
        > Это мнение.
        я вообще не понял, какой сервис пиарился, без-бубна чтоли? но вообще да, туповато вышло. «как я учил питон» а по факту вода-водой, ценный рекомендаций для себя не нашел.

      • Алексей Трудов
        25.10.2017

        Это слив, да еще и на своем блоге… позор).

        Не понял мысль про слив. Ну не нравится человеку пост — что теперь за ним бегать и уговаривать что ли? Да мне все равно.

        «как я учил питон» а по факту вода-водой, ценный рекомендаций для себя не нашел.

        Так тут не рекомендации. Я же не пишу «как выучить питон». Это моя личная история + ссылки на ресурсы которые мне оказались полезны. Рекомендовать в этой теме по-настоящему может только преподаватель с хорошим таким опытом.

      • Галина Нагорная
        25.10.2017

        Я не первый раз наблюдаю ваш диалог — это любофь… )))))
        Хорошо отвечаете.
        Теперь нюанс: на почту приходит статья полностью, не анонс — это так задумано? Я её там читаю, а сюда — на сайт Ваш иду смотреть комменты.
        Может, всё-таки, анонс лучше?

      • Алексей Трудов
        25.10.2017

        Я не первый раз наблюдаю ваш диалог — это любофь… )))))

        😀

        Теперь нюанс: на почту приходит статья полностью, не анонс — это так задумано? Я её там читаю, а сюда — на сайт Ваш иду смотреть комменты.
        Может, всё-таки, анонс лучше?

        Многим как раз удобнее полную статью. Можно просто кликать по заголовку (одновременно ссылка на оригинал статьи) https://yadi.sk/i/jpD_mTN63P63uP

  • Сергей
    25.10.2017

    Да ладно, сервис без бубна реально крут)). Кстати интересно, что сейчас больше денег тебе приносит — сервис / частные консультации и seo / или свои проекты (кроме сервиса есть еще шото?).

    Ответить
    • Алексей Трудов
      25.10.2017

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

      Ответить
  • Никита Шультайс
    26.10.2017

    Лучшие результаты в обучении (не только в программировании) мы получаем через реальные задачи, поэтому Coursera так хорошо зашла и ты получил «чувство интуитивного понимания языка».

    Молодец!

    Ответить
    • Алексей Трудов
      26.10.2017

      Лучшие результаты в обучении (не только в программировании) мы получаем через реальные задачи

      Это точно.
      Спасибо!

      Ответить
  • Игорь
    26.10.2017

    Пардон, мой предыдущий комент нужно удалить.

    Привет! Не пробовал ли ты делать кластеризацию поисковых запросов на питоне? Я кроме этого пока ничего не нашел.

    http://coderhs.com/archive/cluster-search-queries-Python

    Ответить
    • Алексей Трудов
      26.10.2017

      С питоном не пробовал пока, этот материал тоже лежит в закладках 🙂
      Но тут прямо больших прорывов ждать не стоит, так как кластеризация идет по принципу «набор пересекающихся слов». Зачастую надо сажать на одну страницу ключи, которые даже однокоренных слов не содержат (тем более с приходом Палеха и Королева).
      У меня по похожему принципу кластеризуются дополнительные темы в анализе страниц, но на PHP. Пример в демо (внизу).

      Ответить
      • Игорь
        26.10.2017

        А какой на твой взгляд сейчас самый адекватный сервис по кластеризации для инфо -сайтов?

      • Алексей Трудов
        26.10.2017

        Да нет больших различий. Под инфосайты просто ставим софт и порог не очень жесткий.

  • Юрий
    01.11.2017

    Прикол, тоже начинал изучать php — бросил. Начал изучать Питон из-за ИИ — бросил. Вы воодушевили, пошел по ссылкам шастать)

    Ответить
  • Marla
    05.11.2017

    Хорошая статья, спасибо. Выше кто-то плевался, мол, статья писалась ради упоминания сервиса «Без бубна» и практической пользы от нее нет. Не знаю… мне показалось, что она полностью отвечает заявленной в заголовке теме.

    Я сейчас нахожусь на стадии изучения PHP (правда стадия эта длится уже больше года). Учусь по курсу от Специалиста, но вот упоминаний об «интуитивном понимании» языка ещё ни разу не встречала. Ни в курсе, ни на просторах интернета. Видимо, как раз его мне не хватает, потому что для меня PHP — это пока набор сущностей, принципов взаимодействия и правил. И чтобы их понять и запомнить, пришлось потратить немало времени. То есть, хочу сказать, что до интуитивного понимания я пока не доросла, но буду надеяться, что ко мне это рано или поздно придёт.

    Ответить
    • Алексей Трудов
      06.11.2017

      Спасибо за поддержку!

      Видимо, как раз его мне не хватает, потому что для меня PHP — это пока набор сущностей, принципов взаимодействия и правил. И чтобы их понять и запомнить, пришлось потратить немало времени.

      Да, долго было именно такое ощущение, отлично сформулировано.

      буду надеяться, что ко мне это рано или поздно придёт

      Я бы посоветовал взяться за достаточно сложную задачу — поставьте цель сами или возьмите где-нибудь ТЗ. Практика обязательно поможет.

      Ответить
  • Кирилл Корнеев
    06.11.2017

    А я уже стал полиглотом в сфере программирования, и пришел к выводу, что самый быстрый способ изучить новый синтаксис — искать best practice по языку и применять на практике.
    Как-то сейчас, читаешь час-два о синтаксисе, после начинаешь несложный проект. Конечно, большую часть ты в поисковике сидишь и читаешь и лучших реализациях микрозадачи, но с течением времени в поисковик уже не лезешь, и под конкретную микрозадачу решение уже находишь в своей голове.
    Правда я не уверен, что прокатит с нуля — ведь нужно понимать что такое lambda в том же python, или декораторы, иначе читать чужой код совсем туго. А принцип ООП просто нужно понимать, чтобы усваивать чужой код / писать свой.

    Ответить
    • Алексей Трудов
      06.11.2017

      Хорошая идея.

      Ответить
  • Иван
    07.11.2017

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

    Ответить
    • Алексей Трудов
      07.11.2017

      Отлично, удачи!

      Ответить

Добавить комментарий

 

Публикуя комментарий, вы соглашаетесь с правилами http://alexeytrudov.com/terms/