История моего знакомства с программированием довольно забавная и поучительная. Давно обещал нескольким людям подробно ее описать. Хорошо, что срок приема работ для статейного конкурса блога Нетологии уже поджимает – иначе вряд ли собрался бы. Итак…
PHP: начало
Желание освоить PHP появилось, когда я начал заниматься собственными информационными сайтами. Лет пять назад, без кучи качественных современных плагинов для WordPress, работать всерьез, не имея навыков разработки было непросто. Постоянно возникали мелкие проблемы, для решения которых приходилось заказывать услуги на фрилансе или задавать вопросы на форумах.
Например:
Подлил масла в огонь и неудачный проект, где на подготовку ТЗ и контроль результатов ушло невероятное количество времени и сил. Да я чаще переписывался с программистом, чем с женой! Требовалось поменять ситуацию.
Попытка номер раз: как не надо учить язык программирования
Что делает современный человек, если ему надо чему-то научиться? Правильно: гуглит.
На меня вывалился ворох информации – официальный мануал, статьи в блогах, видео. Я прилежно изучал все это, подмечая отдельные конструкции языка и приемы, но толку было откровенно мало. Разрозненные сведения никак не складывались в общую картину. Мне казалось, что научиться кодить – это значит выучить миллион типовых приемов и действовать по аналогии. Представляя, сколько времени уйдет на подобный подвиг, я не раз хотел все бросить.
Попытка номер два: никогда не знаешь, где тебе повезет
Не знаю, во что вылились бы эти потуги. Но мне очень повезло.
Я простудился.
А потому две недели провалялся на диване в обнимку с книжкой «Создаем динамические веб-сайты с помощью PHP, MySQL, JavaScript, CSS и HTML5»
Не могу сказать, что это идеальный учебник (мне не с чем сравнить). Но основы он дает хорошо. А главное – в начале объяснения идут буквально на пальцах и с картинками. Это очень важно, потому что помогает разглядеть за закорючками в текстовом файле их смысл, понять суть программирования интуитивно. Помню, для меня поворотным моментом стало сравнение переменных и спичечных коробков. В переменную, как и в коробок, можно положить разное содержание, но сам коробок останется прежним.
Практика: мелкие скрипты just for fun и для облегчения работы
Когда самочувствие позволило переползти с дивана в компьютерное кресло, я взялся проверить на практике, чему научился. Оказалось, что в теории знаю довольно много, но практических навыков ноль. Приходит идея, вроде бы знаешь как ее реализовать (в памяти всплывают названия функций и конструкций языка), но вот как связать это все вместе?
Проблем, впрочем, не возникло. Свой первый простенький калькулятор на php я писал около 3 часов (сейчас справился бы за 15 минут). Потом пошло куда легче. Мне скучно было искать новые учебники и выполнять задания по порядку, я с первых дней работал над интересными задачами.
Так появились:
- Инструмент для принятия рациональных решений.
- Калькулятор расчета окупаемости бизнес-идеи (не дожил до наших дней).
- сервис smmup.ru.
- Система оплаты через Яндекс.Кассу, подключенная к лендингу.
Чуть позже стал писать скрипты для 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 и лемматизатор).
Обновление: летом и осенью 2018 учился также на курсах “Python для SEO”: https://py4seo.com от Сергея Черненко. Могу смело рекомендовать, отличный преподаватель. Более того, он предложил скидку для моих читателей – по промокоду “trudov” вы получите этот курс на 10% дешевле.
Напоследок: зачем и как учиться программированию
Как ни странно, программирование – в первую очередь свобода. Свобода обращения с данными. Ты можешь как угодно их комбинировать, сравнивать, обрабатывать сложными алгоритмами, класть в основу моделей машинного обучения… При этом тебя не отвлекают мелочи вроде разных форматов и источников (API? просто сайт? куча файлов? – без разницы! под все давно есть готовые решения). Исключительно ценное умение для SEO-специалиста и интернет-маркетолога.
В ходе обучения главное – как можно быстрее добиться этого ощущения свободы, родства с языком. Оно появляется, когда ты делаешь первый самостоятельный шаг, решаешь настоящую задачу. Очень похоже на прыжок с парашютом.
Сначала долгий период страха и сомнений. Суетливая, не слишком осмысленная подготовка (копание в статьях и мануале без системы).
И вдруг – полет наедине с небом. Все становится простым и понятным (чувство, когда написал свой первый настоящий скрипт).
Потом, конечно, тебя не очень дружелюбно встретит земля. Практика быстро покажет, что ты еще не самый выдающийся программист. Но память о небе вокруг останется навсегда. Незнакомые функции и библиотеки больше не пугают. Ты чувствуешь, что всегда с ними справишься, стоит только захотеть.
Гуру кода можно не быть, но экранировать ввод необходимо обязательно ).
🙂
Теперь без куска хлеба не останешься-)
Какое там. Кисло стало в программировании, если связей нет.
Питон с какими фрамеворками используешь? Я немного синтаксис учил, я так понимаю что голый питон только в консоль информацию выводит.
Я как раз голый учил, так как он мне нужен для использования библиотек, которые применяются в машинном обучении – numpy, scipy и так далее вплоть до CatBoost.
Для веба использую PHP.
Рекомендую Django
Молодчага! А у меня как раз такая проблема,занимаюсь продвижением своих ИМ и жуть,просто жуть как не хватает элементарных знаний в программировании…
Элементарные можно вообще быстро получить.
склад, доставку и возвраты тоже сам?
Данная статья меня воодушевила возобновить изучать php для себя, т.к. частенько приходится дорабатывать под нужды сайты. Что на сегодняшний момент лучшее для обучения PHP. Может есть хорошие онлайн-курсы?
Здорово!
По курсам ничего не могу сказать, не проходил.
Для приведения лемм к базовой форме у меня очень хорошо показал себя pymorphy2. Ты им же преобразовываешь?
Да, им. Отличная библиотека.
Текст написан для рекламы «сервиса» (или сервиса без кавычек, не суть важно). Когда видишь, что единственная цель автора – впарить тебе нечто, то трудно, почти невозможно воспринимать всё, что он вдобавок балаболит как ценную информацию. Не знаю что за подход у оргов, но на мой взгляд условие:
> Пишите о тех темах, в которых хорошо разбираетесь — статья должна быть экспертной, а читатель должен доверять вашему опыту.
не соблюдено. Я, конечно, понимаю, что у вас и нет задачи победить, а лишь в лучших традициях «СЭО» засветить «сервис» (или сервис) хоть где-то и хоть как-то, но, тем не менее, это факт.
Это мнение.
Можно просто не читать.
> Можно просто не читать.
Это слив, да еще и на своем блоге… позор).
> Это мнение.
я вообще не понял, какой сервис пиарился, без-бубна чтоли? но вообще да, туповато вышло. “как я учил питон” а по факту вода-водой, ценный рекомендаций для себя не нашел.
Не понял мысль про слив. Ну не нравится человеку пост – что теперь за ним бегать и уговаривать что ли?
Так тут не рекомендации. Я же не пишу “как выучить питон”. Это моя личная история + ссылки на ресурсы которые мне оказались полезны. Рекомендовать в этой теме по-настоящему может только преподаватель с хорошим таким опытом.
Я не первый раз наблюдаю ваш диалог – это любофь… )))))
Хорошо отвечаете.
Теперь нюанс: на почту приходит статья полностью, не анонс – это так задумано? Я её там читаю, а сюда – на сайт Ваш иду смотреть комменты.
Может, всё-таки, анонс лучше?
😀
Многим как раз удобнее полную статью. Можно просто кликать по заголовку (одновременно ссылка на оригинал статьи) https://yadi.sk/i/jpD_mTN63P63uP
Да ладно, сервис без бубна реально крут)). Кстати интересно, что сейчас больше денег тебе приносит – сервис / частные консультации и seo / или свои проекты (кроме сервиса есть еще шото?).
Консультации больше всего. Но потихоньку перераспределяю время и силы от них в свои проекты. В прошлом году бывало безостановочно клепал аудиты один за другим, сейчас делаю большие перерывы.
Пока ничего серьезного кроме без-бубна нет, так, небольшие сайты (статейники, экспериментальные на генережке).
Лучшие результаты в обучении (не только в программировании) мы получаем через реальные задачи, поэтому Coursera так хорошо зашла и ты получил “чувство интуитивного понимания языка”.
Молодец!
Это точно.
Спасибо!
Пардон, мой предыдущий комент нужно удалить.
Привет! Не пробовал ли ты делать кластеризацию поисковых запросов на питоне? Я кроме этого пока ничего не нашел.
http://coderhs.com/archive/cluster-search-queries-Python
С питоном не пробовал пока, этот материал тоже лежит в закладках 🙂
Но тут прямо больших прорывов ждать не стоит, так как кластеризация идет по принципу “набор пересекающихся слов”. Зачастую надо сажать на одну страницу ключи, которые даже однокоренных слов не содержат (тем более с приходом Палеха и Королева).
У меня по похожему принципу кластеризуются дополнительные темы в анализе страниц, но на PHP. Пример в демо (внизу).
А какой на твой взгляд сейчас самый адекватный сервис по кластеризации для инфо -сайтов?
Да нет больших различий. Под инфосайты просто ставим софт и порог не очень жесткий.
Прикол, тоже начинал изучать php – бросил. Начал изучать Питон из-за ИИ – бросил. Вы воодушевили, пошел по ссылкам шастать)
Удачи)
Хорошая статья, спасибо. Выше кто-то плевался, мол, статья писалась ради упоминания сервиса “Без бубна” и практической пользы от нее нет. Не знаю… мне показалось, что она полностью отвечает заявленной в заголовке теме.
Я сейчас нахожусь на стадии изучения PHP (правда стадия эта длится уже больше года). Учусь по курсу от Специалиста, но вот упоминаний об “интуитивном понимании” языка ещё ни разу не встречала. Ни в курсе, ни на просторах интернета. Видимо, как раз его мне не хватает, потому что для меня PHP – это пока набор сущностей, принципов взаимодействия и правил. И чтобы их понять и запомнить, пришлось потратить немало времени. То есть, хочу сказать, что до интуитивного понимания я пока не доросла, но буду надеяться, что ко мне это рано или поздно придёт.
Спасибо за поддержку!
Да, долго было именно такое ощущение, отлично сформулировано.
Я бы посоветовал взяться за достаточно сложную задачу – поставьте цель сами или возьмите где-нибудь ТЗ. Практика обязательно поможет.
А я уже стал полиглотом в сфере программирования, и пришел к выводу, что самый быстрый способ изучить новый синтаксис — искать best practice по языку и применять на практике.
Как-то сейчас, читаешь час-два о синтаксисе, после начинаешь несложный проект. Конечно, большую часть ты в поисковике сидишь и читаешь и лучших реализациях микрозадачи, но с течением времени в поисковик уже не лезешь, и под конкретную микрозадачу решение уже находишь в своей голове.
Правда я не уверен, что прокатит с нуля — ведь нужно понимать что такое lambda в том же python, или декораторы, иначе читать чужой код совсем туго. А принцип ООП просто нужно понимать, чтобы усваивать чужой код / писать свой.
Хорошая идея.
Хорошая статья для тех, кто не может решиться 🙂
У меня самого руки не доходили до программирования. Считал это сильно сложным занятием и лень было тратить много времени. Но сейчас думаю начать.
Отлично, удачи!
На фриласне пальцы загибают дай Бог, причём за весьма простые и банальные вещи. Это не наш метод 🙂 Да и вообще, хоть и говорят, что без знаний программирования можно обойтись, с ними вероятность достижения успеха на поприще информационных сайтов куда выше.
Лучше уметь, чем не уметь, это точно 🙂
Что лучше начать учить php или python?
Смотря какие задачи. Если делать веб-проекты и простые скрипты – то PHP. Если заниматься серьезной аналитикой, то Python.
Спасибо за ответ
а если разрабатывать чат ботов для ФБ, телеги или просто сайта, какой язык выбрать?
Не в курсе, никогда не касался толком этой темы.