Зачем специалисту программирование?
· 4 мин
Для большинства задач и профессий кодить совершенно необязательно, но многие проходят курсы по программированию. Зачем? Действительно ли нужно кодить, если ты не собираешься работать программистом?
Давайте разберёмся что такое кодинг, чем он полезен и с чего начать.
Программирование — это инструкции для компьютера, написанные языком, похожим на очень сухой английский, где некоторые фразы заменяются переменными, а повторяющиеся части предложений автоматизируются (циклами, функциями и классами). В основах программирования нет ничего сложного — нужно понять несколько концепций, и ты уже можешь написать что-то простое.
Как программирование может помочь не-программисту?
1) Программирование учит логике, оптимизации и анализу
Код практически никогда ни у кого не запускается с первого раза, даже у самого матёрого программиста где-нибудь в Google. Часто не запускается ни со второго, ни с третьего…
Пока учишься программировать, ты учишься анализировать проблемы, принимать объективную обратную связь и работать со своими негативными эмоциями, когда бьёшься головой об стенку в непонимании почему же код не запускается. Но потом получаешь огромный прилив дофамина, когда он всё же заработал.
2) Общение с программистами
Если ты в профессии, где нужно работать с разработчиками, понимание их ремесла помогает развить эмпатию, а им — уважение к тебе. Я считаю, что конкретно продакт менеджерам обязательно нужно хоть немного разбираться в том, как работают и мыслят разработчики, так как они — средство воплощения твоих идей в жизнь и поэтому — твои основные стейкхолдеры.
3) Анализ данных
Бывают ситуации, особенно, на ранних стадиях разработки продукта, когда информация не поступает в системы анализа и базы данных. Данные могут быть в логах (logs) — записях в обычных текстовых файлах на серверах. Если знаешь основы Python, ты можешь создать очень простой скрипт (20-30 строчек), чтобы трансформировать логи в таблицы, которые, в свою очередь, можно импортировать для анализа в Excel или в локальную базу данных вроде SQLite для анализа при помощи SQL.
Я несколько раз сталкивался с такими ситуациями, когда стоял выбор — отвлечь разработчиков на пару дней от разработки продукта ради аналитики, либо же самому параллельно запилить скрипт, вытаскивающий данные. Я выбирал делать сам и, помимо пользы для продукта, косвенно это помогло мне заслужить бóльшее уважение разработчиков.
4) Статистический анализ и машинное обучение
При помощи Python и специализированного языка для машинного обучения R можно извлекать из данных паттерны, не видимые глазу. Несколько строчек кода могут помочь выявить тренды и спрогнозировать будущее. Это очень мощная штука, но, вдобавок к программированию, требует понимания статистики. Это тема для отдельного поста.
5) Автоматизация себя
Все, кто работает в больших компаниях, сталкиваются с административной (и часто ручной) работой, которую неохота делать. Можно написать скрипт, который делает эту работу за тебя. Я так делал для автоматизации отчётности — написал скрипт в VBA (visual basic for applications — язык, встроенный в Excel), который делал за меня рутинную работу.
6) Улучшение личной эффективности
Сейчас для того, чтобы запустить свой продукт не нужно никаких серверов и понимания как работает инфраструктура. Можно взять облачный сервис AWS Lambda, прямо в браузере написать код на Python, Node.js или Go, нажать Сохранить и он уже в продакшене (или, скорее, в говнопродакшене, но это ок для мелких личных проектов).
Как пример, я создал себе бота в Телеграм, которому я отправляю интересные мысли. Он записывает их в базу данных, а потом каждое утро случайным образом выбирает одну запись и отправляет её мне в чат. Это напоминает мне об интересных идеях, которые, в противном случае, я бы давно забыл.
С чего начать?
Новичкам я бы посоветовал начать с простых языков, которые сразу дают ощущение успеха. Python — самый очевидный выбор. Он простой, прощает кривые ручки и очень распространён, а это значит, что в интернете полно курсов, видео, документации и примеров.
Однозначно не стоит начинать со сложных языков типа Java. Я бы также не советовал с нуля идти в Node.js с его асинхронностью, об которую чёрт ногу сломит. Поняв на простом языке основы программирования и фундаментальные концепции, такие как циклы, функции, классы, модули и т.п. изучение других языков будет, скорее, изучением их особенностей, потому что в их основе лежат те же самые принципы.
Думаю, всем знаком подход “маленьких шагов” — начинайте с малого, наслаждайтесь промежуточными успехами, идите потихонечку вверх. Не надо сразу хвататься за сложные вещи — есть ненулевая вероятность, что не дотянешься до следующей ступеньки, оступишься, упадёшь и решишь, что программирование не для тебя. А оно для всех, у кого есть мотивация и терпение.