Елена Булыгина предлагает Вам запомнить сайт «Ленусик»
Вы хотите запомнить сайт «Ленусик»?
Да Нет
×
Прогноз погоды

Основная статья: Python

15 интересных каналов Telegram для программистов

Telegram уже давно стал для многих и средством общения, и средством массовой информации. В том числе и профессиональным. Для этого поста мы просеяли много разных телеграм-каналов для разработчиков и составили список из самых, на наш взгляд, интересных.

Tproger

Количество подписчиков: 60000+.

Частота обновлений: 2–3 записи в день.

Тематика: новости, статьи, рейтинги, обсуждения.

Маловероятно, что в современном рунете хоть один программист не знает про ресурс tproger. Здесь есть всё: от советов «как написать идеальный код» до рассуждений «какую мышку выбрать». Обновления не слишком частые, зато информативные. Пару раз в день зайти на канал —то, что доктор тимлид прописал.

GeekBrains

Количество подписчиков: 3 200 +.

Частота обновления: 1–5 записей в день.

Тематика: новости, статьи.

На канале в режиме реального времени отображается всё, что происходит у нас на ресурсе. Здесь появляются ссылки на свежие статьи в блоге и СМИ, анонсы вебинаров и крупных IT-событий, уникальные скидки на обучение и просто полезные материалы. Если вы учитесь программированию или только планируете присоединиться к нам — обязательно подписывайтесь.

Руки

Количество подписчиков: 2900+.

Частота обновлений: 1 запись в день.

Тематика: IT-новости.

Канал начинал с гиковских статей про разработку, а сейчас публикует в основном новости, рейтинги и подборки. Привлекает качеством контента — никаких обновлений ради обновлений.

TechSparks

Количество подписчиков: 37800+.

Частота обновлений: 2–3 записи в день.

Тематика: IT-новости.

О чём. Канал-агрегатор IT-новостей, которые не увидишь на первых строках крупных ресурсов. Наполнение зависит от автора, Андрея Себранта, — и это сказывается на регулярности публикаций и диапазоне задействованных ресурсов.

Front End Dev

Количество подписчиков: 20200+.

Частота обновлений: 2–5 записей в день.

Тематика: объявления о вакансиях, статьи по фронтенду.

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

UniLecs

Количество подписчиков: 19100+.

Частота обновлений: 1–2 записи в день.

Тематика: задачи по программированию, статьи и лекции по Computer Science.

UniLecs — это канал «со звёздочкой». Здесь вы найдёте задачи олимпиадного формата по программированию и алгоритмам, ссылки на статьи для углублённого изучения языков и просто интересные лекции, посвящённые науке о данных.

TechRocks

Количество подписчиков: 16300+.

Частота обновлений: 1–3 записи в день.

Тематика: статьи и новости про IT.

95% записей данного канала — ссылки на статьи портала techrocks.ru с кратким описанием. Подойдёт тем, кому не нужен специализированный канал по своему языку или направлению. Здесь можно найти и общие новости, и конкретные кейсы: например, по использованию Python в VS Code или приёмам CSS при оформлении сайта.

Machine Learning World

Количество подписчиков: 6700+.

Частота обновлений: 1–2 записи в день.

Тематика: новости ИИ.

Ресурс на английском языке, полностью посвящённый искусственному интеллекту и машинному обучению. Уникален тем, что здесь нет пространных статей от неизвестных людей — только отчёты крупных конференций, ссылки на продукты, научные исследования, полезные твиттер- и телегам-каналы.

Библиотека программиста

Количество подписчиков: 69600+.

Частота обновлений: 1–4 записи в день.

Тематика: статьи и обзоры книг.

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

StartAndroid

Количество подписчиков: 7900+.

Частота обновлений: 1 запись в день.

Тематика: всё про Android-разработку.

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

Microsoft Developer Community

Количество подписчиков: 3800+.

Частота обновлений: 1 запись в день.

Тематика: всё про разработку под и от Microsoft.

Здесь авторы ежедневно выкатывают порцию свежих новостей о релизах каких-нибудь продуктов, анонсах крупных конференций или официальные обзоры средств разработки Microsoft.

iOS dev

Количество подписчиков: 6200+.

Частота обновлений: 1–3 записи в день.

Тематика: всё об iOS-разработке.

Завершаем список каналов про платформы «яблочным» сообществом iOS dev. Здесь собрано много информации по прикладной части разработки — например, обзоры возможностей кнопок и ссылок. Есть и сильное новостное направление: анонсы и ссылки на видео с конференций, релизы продуктов и другие статьи.

Мой круг

Количество подписчиков: 4000+.

Частота обновлений: 2–5 записей в час.

Тематика: вакансии и HR-статьи.

Портал «Мой круг» оперативно сообщает здесь о свежих вакансиях в IT-индустрии и даёт советы, как быстро и успешно найти работу. При помощи чат-бота можно установить фильтр и видеть только сообщения из интересных вам рубрик.

Remote IT

Количество подписчиков: 17900+.

Частота обновлений: 1–5 записей в день.

Тематика: вакансии.

Канал посвящен мечте всех офисных работников — работе со свободным графиком, отсутствием дресс-кода и хорошей зарплатой. Подобные вакансии можно найти на этом канале.

GitHub Repos

Количество подписчиков: 4800+.

Частота обновления: 2–5 записей в день.

Тематика: ссылки на исходники.

Здесь публикуются самые заметные релизы, которые появляются в хранилищах GitHub — полезные и удобные приложения, которые можно использовать. А ещё таким образом вы получаете возможность заглянуть в качественный код. В записях указывается оценка релиза и используемый язык. 

На десерт — несколько полезных чатов:

DBA RU

Количество участников: 1700+.

Чат о базах данных. Сейчас в IT с ними работают более-менее все, так что полезно иметь эту ссылку под рукой. Ответы дают на все не слишком глупые вопросы.

ГОРИ

Количество участников: 2000+.

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

Big Data Ru

Количество участников: 3800+.

Чат об ИИ и машинном обучении. Обсуждается здесь вообще всё: релизы библиотек и ПО, практическая сторона профессии, задачи, терминология, книги и даже курсы. Человек извне поймёт процентов 80 — но если хотите быть в профессии, то лучшей платформы «для привыкания» не придумаешь.

Web Structure

Количество участников: 4000+.

Изначально чат был посвящён вёрстке сайтов, но сейчас о веб-разработке в целом. Хотите знать, есть ли смысл учиться на PHP-разработчика? Вам сюда. Хотите рекомендаций, что доработать в сайте, чтобы подороже его продать? Заходите. Просто за советом по коду? Вы знаете, что делать.

Coding RU

Количество участников: 1 300 +.

Этот чат посвящён всему, что обсуждают российские кодеры. Если скучаете по старым добрым чатам, где есть свои «цугундеры», где шутки бьют ниже пояса, а разговоры по теме теряются в сотнях офтопных посланий — вам сюда.

Если аппетит к телеграм каналам только разыгрался, посмотрите нашу большую подборку для гиков. Кстати, какие профессиональные каналы считаете самыми полезными вы? Поделитесь своими находками, и в будущем мы сделаем подобный дайджест от учеников GeekBrains ;)

Пройти обучение

25 ноя 19, 14:23
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Обучение Python для школьников

В мае 2019 года в рамках нашей «гик-школы» мы запустили первый поток трехмесячного детского курса Python, где ученики могут не только начать разработку на Python, но также познакомиться с основами программирования и веб-разработки вообще. Новый поток стартует совсем скоро, 29 ноября, и в этом материале мы собрали ответы на все важные вопросы.

Что такого особенного в вашем курсе?

Главная особенность курса — в цели обучения. Школьники здесь не готовятся на должность middle-разработчика, а, скорее, знакомятся с миром IT, разработки. Поэтому учебный материал не только проще подается, но иначе выстроен. Яркие презентации, лаконичные методички, облегченные практические задания — все призвано подстёгивать интерес к учебе. 

При этом в программе учтены ошибки и трудности, через которые проходит начинающий программист вне зависимости от возраста.

Что нужно знать и уметь к началу занятий?

Сразу скажем: знаний о разработке не нужно, мы учим программированию с нуля, с установки Python и среды разработки. А вот что точно понадобится:

  • Базовые навыки работы на компьютере. Надо уметь устанавливать и запускать программы, выходить в интернет, создавать и копировать файлы.
  • Математика на уровне начальной школы. Код всегда связан с логикой и вычислениями.
  • Английский язык на базовом уровне. В коде мы используем английские слова — их надо уметь запоминать. Сюда же относится умение печатать в американской раскладке.

Остальному научит Алексей Петренко — один из самых опытных наших преподавателей, декан факультета Python в GeekUniversity.

Что будут создавать на курсе?

Основным проектом учеников будет сайт-визитка. Это хорошее начало для развития в мире IT. Такой проект позволяет не только изучить Python, но и параллельно вникнуть сразу в несколько других языков и популярных инструментов — HTML, CSS, JavaScript, SQL, Bootstrap, Flask. Все это будет освоено на базовом уровне, таким образом сформируется первый стек технологий.
 
Преимущество сайта-визитки ещё и в том, что такой результат можно легко увидеть и оценить. Это как игрушка, которую делаешь сам — играть с ней вдвойне приятно и друзьям всегда показать можно.

А как с нагрузкой?

Курс разработан специально для детей и нагрузка здесь ниже, чем на взрослых занятиях в GeekBrains. Уроки-вебинары длительностью 1,5 часа проходят раз в неделю. Каждый урок разбит на две половины, между которыми предусмотрен перерыв. Мы постарались найти баланс так, чтобы ребёнок нормально ознакомился с новой технологией и при этом не успел устать или заскучать.

Домашние задания составлены так, чтобы ученик получал видимый, практический результат без долгого сидения за монитором. На первом уроке преподаватель договаривается с ребятами, что работы по курсу они готовят только после основных школьных домашних заданий и сдают до выходных. То есть на выполнение заданий дается пять дней, в течение которых ученику нужно найти примерно 1-3 часа на «домашку по питону».

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

По запросу «сайты, созданные с Python» Google выдает множество топовых ресурсов — включая самого себя.

Профессиональная сфера разработки быстро развивается. Насколько актуальные вещи преподаете вы?

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

  • Flask — минималистичный по своей концепции фреймворк, который позволяет пятью строчками кода создать веб-версию «Нello, world!». Весь проект можно собирать как конструктор, из готовых компонентов. Простота в освоении и отсутствие лишнего — вот за что мы выбрали Flask.
  • Bootstrap — набор инструментов и заготовок, ускоряющих создание веб-страниц. Вместо того чтобы месяц углубляться в тонкости CSS и JavaScript, с Bootstrap мы просто берем шаблон и получаем отличное динамическое меню или стильную анимированную кнопку для сайта. Быстрые результаты мотивируют новичков.
  • Jinja2 — шаблонизатор, полезный при создании веб-приложений на Flask. По шаблону генерирует Python-код, который можно тут протестировать в «песочнице».
  • SQLite — база данных, реализованная в одном файле. Идеальна для первого знакомства с возможностями современных СУБД, не требует сложной установки и настройки.

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

А если ребенку не понравится Python? Получается, всё было зря?

Совсем нет. Знания курса в любом случае могут пригодиться ещё не раз. Основы программирования, с которыми познакомятся ученики, являются общими для большинства современных языков. Понятия переменной, ветвления, цикла полезны не только программисту, но также тестировщику, да и любому IT-специалисту в принципе.

В курсе мы затронем HTML, CSS и JavaScript. Если ребенку понравится это, он сможет заняться версткой сайтов и frontend-разработкой. Если приглянется SQL, на котором пишут запросы к базам данных, ему будет с чего начать учиться на аналитика. В подростковом возрасте есть время на изучение разных языков и технологий. Остается пробовать и выбирать.

Про сайт-визитку понятно, а что ещё будет уметь ребёнок после курса?

Давайте сведём все вместе. Выпускник нашего курса Python для школьников сможет создавать:

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

А как развиваться после курса?

Главное — не останавливаться, иначе знания могут уйти в пассив и стереться из памяти. Можно перейти к взрослым курсы — у нас есть бесплатный интенсив по Python, а также программы подготовки junior- и middle-специалистов. Помимо веб-разработки c Python, можно познакомиться с близкими IT-направлениями, которые были затронуты в время курса — возможно, они вызовут больший энтузиазм.

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

Любовь к программированию, которая проявится в подростковом возрасте, спустя 5-10 лет может привести на работу мечты — с большой зарплатой, карьерными перспективами и радостью от любимого дела.

Как записаться на курс?

Достаточно просто оставить заявку на странице. Новый поток стартует 29 ноября.

Пройти обучение

20 ноя 19, 16:13
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Тренды среди языков программирования в 2019 году

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

Популярные языки программирования

Начнём с традиционно популярных языков, Как известно, любой распространенный язык имеет в запасе минимум 10 лет, чтобы специалисты в нём оставались востребованными на рынке.
Согласно рейтингам авторитетного портала PYPL, основывающихся на популярности поисковых запросах Google в разных странах, самым востребованным языком сегодня является Python. Он обошёл Java ещё летом прошлого года, и количество запросов с тех пор увеличилось на 4,5%.

По версии портала TIOBE, учитывающего не только Google, а все поисковые системы, первое место давно и уверенно удерживает как раз Java. При этом статистика этого портала подтверждает, что языки живут в противофазе: Java за год потерял 0,9%, в то время как Python набрал 1,93 пункта.

Известная софтверная компания JetBrains на своём официальном сайте опросила 7 тысяч разработчиков. Результаты следующие: JavaScript первый, на втором месте Java (оставим HTML/CSS и SQL за скобками), на третьем Python. При этом у Python вновь лучший прирост аудитории за год — 9 %.

Вот что о феномене Python говорит преподаватель факультета искусственного интеллекта GeekUniversity Сергей Ширкин:

«Python очень прост в освоении – можно быть новичком в программировании и уже писать на нём рабочие программы. В своё время это подошло Data Science, потому что большую часть контингента в этой сфере составляли математики и физики, но не профессиональные программисты. В итоге самые популярные библиотеки для работы с большими данными – на Python.

Единственное, что ограничивает язык – низкая скорость работы программ, особенно если мы сравниваем с C/C++. При этом в Python есть такие библиотеки, как numpy, которая, благодаря тому, что часть кода написана на C и Fortran, почти не уступают в производительности.

Сейчас Python проникает в область квантовых вычислений и квантового машинного обучения. Сейчас уже для этого есть библиотеки Qiskit, Cirq, PennyLane, дальше – больше. Здесь уже скорость исполнения программ на Python не важна, ведь все операции проходят на квантовом компьютере, быстродействие которого на порядки выше».

Языки программирования «второго эшелона»

При взгляде на рейтинг PYPL также бросается в глаза взлёт Kotlin: четыре позиции за год и итоговое 12 место.  Пользователи на сайте JetBrains отдали языку 9 место. Причин взлёта две.

Первая — это обновление языка в конце лета. Тогда были устранены многие проблемы и расширена функциональность, с сопутствующим введением всех новых фичей в IntelliJ IDEA – популярнейшую среду программирования. Вторая причина — в прошлом году язык Kotlin получил статус предпочтительного для разработки Android-приложений.

Вот что думает об этом декан факультета Android-разработки GeekUniversity Александр Аникин:

«Если в прошлом году Kotlin стал предпочтительным для Android, то в этом, по сути, главным. Теперь весь новый код, библиотеки, обновления и примеры будут писаться разработчиками платформы на Kotlin. Для этого есть 3 основные причины:

  • Юридический уход от Java. Не секрет, что Oracle в последние годы всё больше ограничивает бесплатное использование Java, что больше всего, пожалуй, затрагивает Android.
  • Полная взаимозаменяемость языков. Можно легко перейти с одного языка на другой не изменив ни строчки кода.
  • Kotlin = Java 2.0. Это современный язык, имеющий те же возможности, что и родитель, но улучшенный с учётом текущих тенденций.

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

Другой заметный язык – Rust, который также выделяется в рейтинге PYPL. Год назад мы узнали о том, что это один из самых любимых языков у посетителей портала Stack Overflow. Rust очень медленными шагами идёт к замещению C/C++ в клиентских и серверных веб-приложениях. Этим он обязан популярному формату инструкций для виртуальной машины WebAssembly, поддерживающему все три вышеназванных языка.

Кроме того, он поддерживает и Go — язык к которому также стоит присмотреться. Согласно JetBrains, у Go ожидается самый большой прирост популярности в ближайшие 12 месяцев.

Менее распространенные языки программирования

У языков программирования, не входящих в топы рейтингов, очень сложно оценить потенциал. Количество поисковых запросов, как правило, плохо отражает реальность – из-за низких цифр в статистику вмешивается специфика региона и местных компаний. Из тех, на которые стоит обратить внимание гикам (а больше это, пожалуй, никому и не надо): Elixir, Dart и Ballerina.

Если о первых двух вы наверняка что-то слышали и читали, — а Dart даже многие успели похоронить — то о последнем стоит сказать чуть подробнее. Ballerina – это молодой и крайне интересный язык. Его синтаксис — комбинация из Java, Python, JavaScript и Go, со статической типизацией. Основные операции имеют привычный вид, поэтому на обучение не уйдёт много времени. Но куда интересней в Ballerina другое — направленность на интеграцию. В современном вебе, где постоянно взаимодействуют сотни серверов и сервисов, ценность языков с модулями, легко обеспечивающими это, крайне высока. Как альтернативу Ballerina можно взять на заметку Pulumi и Dark – будущее веба без языков инфраструктуры невозможно.

Однако, несмотря на все прелести и перспективы этих языков, браться за их изучение новичкам не следует – лишь представителей первого и отчасти второго разделов стоит рассматривать как фундамент современного программиста. Знание Elixir, Dart, Ballerina или Pulumi поможет понять, что у любой задачи есть множество решений.

Подробней об изучении разных языков программирования можно почитать на страницах факультетов Geekbrains — Python, Go, Java, а также веб-, iOS-, Android-разработки. Удачного выбора!

Пройти обучение

13 ноя 19, 12:36
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Путь аналитика: из агентства — в мир big data и big zarplata

О неоконченном высшем образовании

Моя история начинается в Красноярске, где в разное время я учился на трех факультетах Сибирского федерального университета. Сначала — на математическом. Там было тяжело, преподаватели строгие, но я здорово продвинулся в интеллектуальном плане и получил первый опыт программирования на С++. Теперь ценю это. К сожалению, из-за высокой нагрузки пришлось перевестись на философский факультет. Я проучился там до ухода в армию, а после возвращения отчислился — нужно было работать. 

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

Рекламная аналитика

Затем я стал аналитиком в рекламном агентстве. Нужно было составлять отчеты по рекламе и попутно решать административные задачи. Работа оказалась нервной и слишком «клиентоориентированной»: деньги ставились выше здравого смысла. Где-то через год я понял, что не привыкну.

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

Учеба и первые результаты 

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

Я записался на факультет Java, потому что читал об этом языке как об инструменте «боевого» дата-инжиниринга. Дальше стал изучать Scala, и эта связка помогла мне разобраться в анализе больших данных на уровне начинающего специалиста. Я уже примерно понимал, что мне по силам, а за что пока лучше не браться.

К слову, изучать Java я начал еще во время работы в рекламном агентстве. Тут же стал применять новые знания на практике: автоматизировал свои рабочие процессы, снизил повседневную нагрузку. Результаты порадовали и еще больше убедили развиваться в выбранном направлении. 

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

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

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

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

В Питер — за перспективами

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

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

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

Знаний Python, SQL и Power BI хватило, чтобы справился с тестовым заданием. Еще были вопросы на рабочую логику — тут пригодился опыт аналитика.

 Рабочее место Алексея: ничего лишнего

Я увидел, что буду работать с адекватными и спокойными людьми. Руководитель сам в прошлом был рекламным аналитиком в агентстве, и мы отлично поняли друг друга.

Еще понравилось, что со мной не торговались по зарплате. На рынке аналитики, особенно в рекламе, не всегда адекватно оценивают твой труд. Многие пытаются сбивать цену фразами типа «Вы же готовы к даунгрейду в первое время?». Как человек с опытом, я сразу понимаю, что «первое время» затянется. А здесь мне позволили самому доказать, сколько я могу сделать и заработать.

Как я работаю

Сейчас я аналитик в управляющей компании в kassir.ru — зарабатываю в 2,5 раза больше, чем на прошлом месте. Но главное — получаю удовольствие от того, чем занимаюсь.

Я работаю над сайтами экосистемы компании: использую SQL и Python, R (на нем написан legacy-код), PowerBI, MS Azure, Google Analytics. Это единственное, что могу рассказать о своих задачах, так как в компании я подписал NDA. Добавлю только, что опыт в рекламной аналитике пригодился.

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

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

Что касается программирования, я самостоятельно практикуюсь в Java, планирую ближе знакомиться с Clojure и Scala, продолжаю изучать Python и SQL в GeekBrains.

Что я понял на своем опыте

Если боитесь пробовать себя в IT, значит, пока не понимаете, чем предстоит заниматься. По-моему, лучший способ это прояснить — съездить на конференцию и познакомиться с разработчиками. Они расскажут, чем занимаются на практике и какие видят перспективы по своему направлению.

Как проходить собеседования

Я советую ходить на собеседования не по принципу «лишь бы взяли», а смотреть на компанию и всерьез думать, хотите ли вы у них работать. Потому что бывают очень неприятные собеседования в духе «чего приперся?!». Если люди с порога вызывают негатив, не надейтесь, что все наладится. Просто ищите дальше — сбережете время и нервы. Без уважения в команде нормальной работы не бывает.

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

Как адаптироваться на новом месте

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

Чтобы вникнуть в серьезный продукт, нужно минимум два месяца! Это при условии, что у вас адекватное начальство и вас поддерживают коллеги. Плюс по ходу дела придется уточнять очень много деталей и ждать, когда все это осядет в голове.

Как не потерять интерес

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

Кстати, с ноября начинается новый поток факультета аналитики Big Data в GeekUniversity. За полтора года там можно освоить все современные технологии работы с большими данными — а их более двух десятков! Параллельно вы получите множество других навыков, важных для работы в любой IT-компании, — и в результате будете полностью готовы начать новую главу в своей карьере.

Пройти обучение

24 окт 19, 12:41
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Юрист днем, программист ночью  

— У вас два высших образования. Расскажите, где учились.

— Первое образование, по юриспруденции, я получил в Государственной классической академии им. Маймонида. Очное, дневное. Затем было не второе высшее, а перепрофилирование — в РАНХиГС при президенте РФ я получил специальность по государственному и муниципальному управлению.

— Вы руководитель юридического отдела и помощник депутата, а теперь еще и программист? 

— Да, эти занятия вполне сочетаются. Главное, найти ту нить, которая связывает в человеке все эти направления, не позволяя ему разорваться на части. Я вот в себе такую нашел. И постоянно читаю и учусь — это для меня отдых. Книги выбираю по праву или программированию. Иногда художественную литературу и что-то про садоводство, но нечасто. Так что у меня в этом плане все довольно гармонично сложилось.

— Изучали раньше языки программирования?

— Нет, к сожалению. Когда у меня был первый компьютер ZX Spectrum на аудиокассетах, я больше играл. И потом больше играл. И сейчас иногда играю. Потом стало понятно, что надо было учиться. Так что курсы на GeekBrains стали для меня первым подходом к теме IT.

— Насколько сложно было учиться программированию с нуля?

— Первая попытка была не совсем удачной. Это был курс по Java, и я смог освоить нормально только первый уровень. Дальше понял, что механически выполняю действия, не понимая их смысл, и оставил курсы. За время «простоя» подтянул знания по информатике, увлекся HTML, CSS, начал верстать, прошел базовые бесплатные курсы GB по разным темам. 

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

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

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

— Какова ваша занятость сейчас на каждом из направлений: юрист, программист, помощник депутата? 

— Основная занятость у меня в сфере юриспруденции. Все-таки 14 лет работы в этой сфере. Руководство юридическим подразделением — ответственная работа, на которой не стоит допускать ошибки. Поэтому днем я юрист.

Помощник депутата — факультативная работа, которой занимаюсь на общественных началах с 2013 года. До 2016, при VI созыве Госдумы, занятость в этой сфере составляла более 70 %. Сейчас по ряду объективных причин она снизилась до 10 %. Каждый созыв меняет стиль работы. А содержание не изменилось — написание законопроектов от стадии задумки до реализации в тексте.

Программирование я оставляю на дорогу домой, вечера, ночи и выходные. Это пока не работа, а увлечение. Делаю что-то либо для себя, либо для друзей-айтишников.

— А что за задачи они вам подкидывают?

— Как правило, связанные с поиском и парсингом информации (Python Scrapy, Beautiful Soup и подобное), ее обработкой и систематизацией (Numpy), визуализацией (Pandas).

Мои внутренние задачи — разработка сайта на Django. Сейчас стараюсь не уходить за пределы Python, поскольку хочется изучить его возможности и функциональность других языков на его примере. Но это не исключает работу с такими прикладными составляющими, как разметка — HTML, стили — CSS, СУБД — MySQL, SQLite, и фреймворки, облегчающие жизнь, вроде Bootstrap.

— Чтобы все успевать, используете приемы по тайм-менеджменту?

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

Важен отдых — без него не будет работать никакая методика. Я работаю недалеко от центра и иногда позволяю себе доехать в обед до «Аптекарского огорода», где можно погулять и собрать разрозненные мысли воедино. После этого намного эффективнее и спокойнее работается.

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

— Да, насчет связующего звена. Вы написали в анкете, что методы в юриспруденции и IT похожи. Это интересно, раскройте тему.

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

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

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

Конечно, это упрощенный подход, но концептуально он отражает суть процессов. Сейчас методы проектирования, пришедшие из IT, используются практически во всех процессах и сферах деятельности.

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

— Сейчас вы продолжаете работать юристом. Это именно то, чем вы хотите заниматься дальше, или все-таки мечтаете о смене профессии?

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

Хочу за полтора года поднять уровень знаний по IT (не только в области Python, но и других технологий, математики) и, возможно, выделить уже полноценно вторую сферу постоянной работы — программирование. 

Пока могу сказать точно: понимание процессов в IT помогает принимать правильные правовые решения. И юрист в сфере IT — это относительно новая специализация, в которой очень мало профессионалов.

— А как вы видите работу юриста в IT?

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

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

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

Пройти обучение

2 сен 19, 15:16
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Как написать говорящую программу на Python

Озвучиваем системное время и любой текст в Windows и Linux. Используем pytts3, espeak, RHVoice, gTTS, Speech dispatcher. 

Синтез речи может пригодиться вам в работе над мобильным помощником, умным домом на Raspberry Pi, искусственным интеллектом, игрой, системой уведомлений и звуковым интерфейсом. Голосовые сообщения донесут информацию до пользователя, которому некогда читать текст. Кроме того, если программа умеет озвучивать свой интерфейс, она доступна незрячим и слабовидящим.  Есть системы управления компьютером без опоры на зрение. Одна из самых популярных — NVDA (NonVisual Desktop Access) — написана на Python с добавлением C++.

Давайте посмотрим, как использовать text-to-speech (TTS) в Python и подключать синтезаторы голоса к вашей программе. Эту статью я хотела назвать «Говорящая консоль», потому что мы будем писать консольное приложение для Windows, Linux, а потенциально — и MacOS. Потом решила выбрать более общее название, ведь от наличия GUI суть не меняется. На всякий случай поясню: консоль в данном случае — терминал Linux или знакомая пользователям Windows командная строка.

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

Готовим поляну

Прежде чем писать и тестировать код, убедимся, что операционная система готова к синтезу речи, в том числе на русском языке.

Чтобы компьютер заговорил, нужны: 

  • голосовой движок (синтезатор речи) с поддержкой нужных нам языков,
  • голоса дикторов для этого движка.

В Windows есть штатный речевой интерфейс Microsoft Speech API (SAPI). Голоса к нему выпускают, помимо Microsoft, сторонние производители: Nuance Communications, Loquendo, Acapela Group, IVONA Software. 

Есть и свободные кроссплатформенные голосовые движки: 

  • RHVoice от Ольги Яковлевой  — имеет четыре голоса для русского языка (один  мужской и три женских), а также поддерживает татарский, украинский, грузинский, киргизский, эсперанто и английский. Работает в Windows, GNU/Linux и Android.
  • eSpeak (не обновляется с 2014 года) и его ответвление — eSpeak NG — c поддержкой более 100 языков и диалектов, включая даже латынь. NG означает New Generation  — «новое поколение». Эта версия разрабатывается сообществом с тех пор, как автор оригинальной eSpeak перестал выходить на связь. Система озвучит ваш текст в Windows, Android, Linux, Mac, BSD. При этом старый eSpeak стабилен в ОС Windows 7 и XP, а eSpeak NG совместим с Windows 8 и 10.

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

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

Установка речевых движков, голосов и модулей в Windows 

С установкой синтезаторов в Windows проблем возникнуть не должно. Единственный нюанс — для русского голоса eSpeak и eSpeak NG нужно скачать расширенный словарь произношения. Распакуйте архив в подкаталог espeak-data или espeak-ng-data в директории программы. Теперь замените старый словарь новым: переименуйте ru_dict-48 в ru_dict, предварительно удалив имеющийся файл с тем же именем (ru_dict).

Теперь установите модули pywin32, python-espeak и py-espeak-ng, которые потребуются нам для доступа к возможностям TTS:

pip install pywin32 python-espeak pyttsx3 py-espeak-ng

Если у вас на компьютере соседствуют Python 2 и 3, здесь и далее пишите «pip3», а при запуске скриптов  — «python3».

Установка eSpeak(NG) в Linux

Подружить «пингвина» с eSpeak, в том числе NG, можно за минуту:

sudo apt-get install espeak-ng python-espeak

pip3 install py-espeak-ng pyttsx3

Дальше загружаем и распаковываем словарь ru_dict с официального сайта:

wget http://espeak.sourceforge.net/data/ru_dict-48.zip

unzip ru_dict-48.zip

Теперь ищем адрес каталога espeak-data (или espeak-ng-data) где-то в /usr/lib/ и перемещаем словарь туда. В моем случае команда на перемещение выглядела так:

sudo mv ru_dict-48 /usr/lib/i386-linux-gnu/espeak-data/ru_dict

Обратите внимание: вместо «i386» у вас в системе может быть «x86_64...» или еще что-то. Если не уверены, воспользуйтесь поиском:

find /usr/lib/ -name "espeak-data"

Готово! 

RHVoice в Linux

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

Смысл в том, что мы клонируем git-репозиторий и собираем необходимые компоненты через scons.

Для экспериментов в Windows и Linux я использую одни и те же русские голоса: стандартный ‘ru’ в eSpeak и Aleksandr в RHVoice.

Как проверить работоспособность синтезатора

Прежде чем обращаться к движку, убедитесь, что он установлен и работает правильно. 

Проверить работу eSpeak в Windows проще всего через GUI  — достаточно запустить TTSApp.exe в папке с программой. Дальше открываем список голосов, выбираем eSpeak-RU, вводим текст в поле редактирования и жмем на кнопку Speak.

Обратиться к espeak можно и из терминала. Базовые консольные команды для eSpeak и NG совпадают — надо только добавлять или убирать «-ng» после «espeak»:

espeak -v ru -f D:\my.txt

espeak-ng -v en "The Cranes are Flying"

echo "Да, это от души. Замечательно. Достойно восхищения" |RHVoice-test -p Aleksandr

Как нетрудно догадаться, первая команда с ключом -f  читает русский текст из файла. Чтобы в Windows команда espeak подхватывалась вне зависимости от того, в какой вы директории, добавьте путь к консольной версии eSpeak (по умолчанию — C:\Program Files\eSpeak\command_line) в переменную окружения Path. Вот как это сделать.

Библиотека pyttsx3

PyTTSx3 — удобная кроссплатформенная библиотека для реализации TTS в приложениях на Python 3. Использует разные системы синтеза речи в зависимости от текущей ОС:

  • в Windows — SAPI5,
  • в Mac OS X — nsss,
  • в Linux и на других платформах — eSpeak.

Это очень удобно: пишете код один раз и он работает везде. Кстати, eSpeak NG поддерживается наравне с исходной версией.

А теперь примеры!

Просмотр голосов

У каждого голоса есть несколько параметров, с которыми можно работать:

  • id (идентификатор в операционной системе), 
  • name (имя),
  • languages (поддерживаемые языки),
  • gender (пол),
  • age (возраст).

Первый вопрос всегда в том, какие голоса установлены на стороне пользователя. Поэтому создадим скрипт, который покажет все доступные голоса, их имена и ID. Назовем файл, например, list_voices.py:

import pyttsx3

tts = pyttsx3.init() # Инициализировать голосовой движок.

У активного движка есть стандартный параметр ‘voices’, где содержится список всех доступных этому движку голосов. Это нам и нужно

voices = tts.getProperty('voices')

 # Перебрать голоса и вывести параметры каждого

for voice in voices:

    print('=======')

    print('Имя: %s' % voice.name)

    print('ID: %s' % voice.id)

    print('Язык(и): %s' % voice.languages)

    print('Пол: %s' % voice.gender)

    print('Возраст: %s' % voice.age)

Теперь открываем терминал или командную строку, переходим в директорию, куда сохранили скрипт, и запускаем list_voices.py.

 Результат будет примерно таким:

В Linux картина будет похожей, но с другими идентификаторами. 

Как видите, в Windows для большинства установленных голосов MS SAPI заполнены только «Имя» и ID. Однако этого хватит, чтобы решить следующую нашу задачу: написать код, который выберет русский голос и что-то им произнесет.

Например, у голоса RHVoice Aleksandr есть преимущество — его имя уникально, потому что записано транслитом и в таком виде не встречается у других известных производителей голосов. Но через pyttsx3 этот голос будет работать только в Windows. Для воспроизведения в Linux ему нужен речевой Speech Dispatcher, с которым библиотека взаимодействовать не умеет. Как общаться с «диспетчером» еще обсудим, а пока разберемся с доступными голосами.

Как выбрать голос по имени

В Windows голос удобно выбирать как по ID, так и по имени. В Linux проще работать с именем или языком голоса. Создадим новый файл set_voice_and_say.py:

import pyttsx3

tts = pyttsx3.init()

voices = tts.getProperty('voices')

# Задать голос по умолчанию

tts.setProperty('voice', 'ru') 

# Попробовать установить предпочтительный голос

for voice in voices:

    if voice.name == 'Aleksandr':

        tts.setProperty('voice', voice.id)

tts.say('Командный голос вырабатываю, товарищ генерал-полковник!')

tts.runAndWait()

В Windows вы услышите голос Aleksandr, а в Linux — стандартный русский eSpeak. Если бы мы вовсе не указали голос, после запуска нас ждала бы тишина, так как по умолчанию синтезатор говорит по-английски.

Обратите внимание: tts.say() не выводит реплики мгновенно, а собирает их в очередь, которую затем нужно запустить на воспроизведение командой tts.runAndWait().

Выбор голоса по ID

Часто бывает, что в системе установлены голоса с одинаковыми именами, поэтому надежнее искать необходимый голос по ID.

Заменим часть написанного выше кода:

for voice in voices:

    ru = voice.id.find('RHVoice\Anna')  # Найти Анну от RHVoice

    if ru > -1: # Eсли нашли, выбираем этот голос

        tts.setProperty('voice', voice.id)

Теперь в Windows мы точно не перепутаем голоса Anna от Microsoft и RHVoice. Благодаря поиску в подстроке нам даже не пришлось вводить полный ID голоса.

Но когда мы пишем под конкретную машину, для экономии ресурсов можно прописать голос константой. Выше мы запускали скрипт list_voices.py — он показал параметры каждого голоса в ОС. Тогда-то вы и могли обратить внимание, что в Windows идентификатором служит адрес записи в системном реестре:

import pyttsx3

tts = pyttsx3.init()

EN_VOICE_ID = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\MS-Anna-1033-20DSK"

RU_VOICE_ID = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\TokenEnums\RHVoice\Anna"

# Использовать английский голос

tts.setProperty('voice', EN_VOICE_ID)

tts.say("Can you hear me say it's a lovely day?")

# Теперь — русский

tts.setProperty('voice', RU_VOICE_ID)

tts.say("А напоследок я скажу")

tts.runAndWait()

Как озвучить системное время в Windows и Linux

Это крошечное приложение каждую минуту проговаривает текущее время по системным часам. Точнее, оно сообщает время при каждой смене минуты. Например, если вы запустите скрипт в 14:59:59, программа заговорит через секунду. 

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

# «Говорящие часы» — программа озвучивает системное время

from datetime import datetime, date, time

import pyttsx3, time

tts = pyttsx3.init()

tts.setProperty('voice', 'ru')  # Наш голос по умолчанию

tts.setProperty('rate', 150)    # Скорость в % (может быть > 100)

tts.setProperty('volume', 0.8)  # Громкость (значение от 0 до 1)

def set_voice(): # Найти и выбрать нужный голос по имени

    voices = tts.getProperty('voices')

    for voice in voices:

        if voice.name == 'Aleksandr':

           tts.setProperty('voice', voice.id)

        else:

            pass

def say_time(msg): # Функция, которая будет называть время в заданном формате

    set_voice() # Настроить голос 

    tts.say(msg)

    tts.runAndWait() # Воспроизвести очередь реплик и дождаться окончания речи

while True:

    time_checker = datetime.now() # Получаем текущее время с помощью datetime

    if time_checker.second == 0:

        say_time('{h} {m}'.format(h=time_checker.hour, m=time_checker.minute))

        time.sleep(55)   

    else:

        pass

Программа будет отслеживать и называть время, пока вы не остановите ее сочетанием клавиш Ctrl+Break или Ctrl+C (в Windows и Linux соответственно).

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

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

Обертка для eSpeak NG

Модуль называется py-espeak-ng. Это альтернатива pyttsx3 для случаев, когда вам нужен или доступен только один синтезатор — eSpeak NG. Не дай бог, конечно. Впрочем, для быстрых экспериментов с голосом очень даже подходит. Принцип использования покажется вам знакомым:

from espeakng import ESpeakNG

engine = ESpeakNG()

engine.speed = 150 

engine.say("I'd like to be under the sea. In an octopus's garden, in the shade!", sync=True)

engine.speed = 95 

engine.pitch = 32

engine.voice = 'russian' 

engine.say('А теперь Горбатый!', sync=True)

Обратите внимание на параметр синхронизации реплик sync=True. Без него синтезатор начнет читать все фразы одновременно — вперемешку. В отличие от pyttsx3, обертка espeakng не использует команду runAndWait(), и пропуск параметра sync сбивает очередь чтения.

Озвучиваем текст из файла

Не будем довольствоваться текстами в коде программы — пора научиться брать их извне. Тем более, это очень просто. В папке, где хранится только что рассмотренный нами скрипт, создайте файл test.txt с текстом на русском языке и в кодировке UTF-8. Теперь добавьте в конец кода такой блок:

text_file = open("test.txt", "r")

data = text_file.read()

tts.say(data, sync=True)

text_file.close()

Открываем файл на чтение, передаем содержимое в переменную data, затем воспроизводим голосом все, что в ней оказалось, и закрываем файл.

Управляем речью через Speech Dispatcher в Linux

До сих пор по результатам работы нашего кода в Linux выводился один суровый eSpeak. Пришло время позаботиться о друзьях Tux’а и порадовать их сравнительно реалистичными голосами RHVoice. Для этого нам понадобится Speech Dispatcher — аналог MS SAPI. Он позволяет управлять всеми установленными в системе голосовыми движками и вызывать любой из них по необходимости.

Скорее всего Speech Dispatcher есть у вас в системе по умолчанию. Чтобы обращаться к нему из кода Python, надо установить модуль speechd:

sudo apt install python3-speechd

Пробуем выбрать синтезатор RHVoice с помощью «диспетчера» и прочесть текст:

import speechd

tts_d = speechd.SSIPClient('test')

tts_d.set_output_module('rhvoice')

tts_d.set_language('ru')

tts_d.set_rate(50)

tts_d.set_punctuation(speechd.PunctuationMode.SOME)

tts_d.speak('И нежный вкус родимой речи так чисто губы холодит')

tts_d.close()

Ура! Наконец-то наше Linux-приложение говорит голосом, похожим на человеческий. Обратите внимание на метод .set_output_module() — он позволяет выбрать любой установленный движок, будь то espeak, rhvoice или festival. После этого синтезатор прочтет текст голосом, предписанным для данного движка по умолчанию. Если задан только язык — голосом по умолчанию для данного языка.

Получается, чтобы сделать кроссплатформенное приложение с поддержкой синтезатора RHVoice, нужно совместить pyttsx3 и speechd: проверить, в какой системе работает наш код, и выбрать SAPI или Speech Dispatcher. А в любой непонятной ситуации — откатиться на неказистый, но вездеходный eSpeak.

Однако для этого программа должна знать, где работает. Определить текущую ОС и ее разрядность очень легко! Лично я предпочитаю использовать для этого стандартный модуль platform, который не нужно устанавливать:

import platform

system = platform.system() # Вернет тип системы.

bit = platform.architecture() # Вернет кортеж, где разрядность — нулевой элемент

print(system)

print(bit[0])

Пример результата:

Windows

64bit

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

Модуль Google TTS — голоса из интернета

Google предлагает онлайн-озвучку текста с записью результата в mp3-файл. Это не для каждой задачи:

  • постоянно нужен быстрый интернет;
  • нельзя воспроизвести аудио средствами самого gtts;
  • скорость обработки текста ниже, чем у офлайн-синтезаторов.

Что касается голосов, английский и французский звучат очень реалистично. Русский голос Гугла — девушка, которая немного картавит и вдобавок произносит «ц» как «ч». По этой причине ей лучше не доверять чтение аудиокниг, имен и топонимов.

Еще один нюанс. Когда будете экспериментировать с кодом, не называйте файл «gtts.py» — он не будет работать! Выберите любое другое имя, например use_gtts.py.

Простейший код, который сохраняет текст на русском в аудиофайл:

from gtts import gTTS

tts = gTTS('Иван Федорович Крузенштерн. Человек и пароход!', lang='ru')

tts.save('tts_output.mp3')

После запуска этого кода в директории, где лежит скрипт, появится запись. Чтобы воспроизвести файл «не отходя от кассы», придется использовать еще какой-то модуль или фреймворк. Годится pygame или pyglet. 

Вот листинг приложения, которое построчно читает txt-файлы с помощью связки gtts и PyGame. Я заметила, что для нормальной работы этого скрипта текст из text.txt должен быть в кодировке Windows-1251 (ANSI).

Выводим текст через NVDA

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

Одна из самых популярных программ экранного доступа в Windows — бесплатная и открытая NVDA. Для связи с ней к нашему приложению нужно привязать библиотеку nvdaControllerClient (есть варианты для 32- и 64-разрядных систем). Узнавать разрядность системы вы уже умеете.

Еще для работы с экранным диктором нам понадобятся модули ctypes и time. Создадим файл nvda.py, где напишем модуль связи с NVDA:

import time, ctypes, platform

# Загружаем библиотеку клиента NVDA

bit = platform.architecture()

if bit[0] == '32bit':

    clientLib = ctypes.windll.LoadLibrary('nvdaControllerClient32.dll')

elif bit[0] == '64bit':

    clientLib = ctypes.windll.LoadLibrary('nvdaControllerClient32.dll')

else:

    errorMessage=str(ctypes.WinError(res))

    ctypes.windll.user32.MessageBoxW(0,u"Ошибка! Не удалось определить разрядность системы!",0)

# Проверяем, запущен ли NVDA

res = clientLib.nvdaController_testIfRunning()

if res != 0:

errorMessage=str(ctypes.WinError(res))

ctypes.windll.user32.MessageBoxW(0,u"Ошибка: %s"%errorMessage,u"нет доступа к NVDA",0)

def say(msg):

    clientLib.nvdaController_speakText(msg)

    time.sleep(1.0)

def close_speech():

    clientLib.nvdaController_cancelSpeech()

Теперь эту заготовку можно применить в коде основной программы:

import nvda

nvda.say('Начать игру')

# … другие реплики или сон

nvda.close_speech()

Если NVDA неактивна, после запуска кода мы увидим окошко с сообщением об ошибке, а если работает — услышим от нее заданный текст. 

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

Заключение

Ваша программа уже глаголет устами хотя бы одного из установленных синтезаторов? Поздравляю! Как видите, это не слишком сложно и «в выигрыше даже начинающий». Еще больше радуют перспективы использования TTS в ваших проектах. Все, что можно вывести как текст, можно и озвучить.

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

Пройти обучение

29 авг 19, 15:15
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Как опытный IT-специалист изучал Python в GB

Константин Ложкин — Magento-разработчик, т.е. специалист, который пишет интернет-магазины на PHP-движке Magento. Уже три года как Константин живет и работает в Германии. Совсем недавно он поделился историей своего переезда и трудоустройства, а главное — подробными рекомендациями для тех, кто хотел бы работать в ЕС. 

Сегодня мы решили расспросить Константина о его тринадцати годах в IT, об учебе в GeekBrains и о преимуществах написания бэкенда на PHP и Python. Также немного поговорим о том, зачем веб-разработчику разбираться в информационной   безопасности.

— Константин, сколько вы уже занимаетесь программированием профессионально?

— Впервые коммерческую программу я написал в 2006 году, когда учился на первом курсе университета. Это было решение для автоматизации производства пенопласта. Программу внедрили и использовали на промышленном предприятии минимум пару лет. Были за время учебы и другие подработки: создание небольших сайтов, верстка. В 2010 году я окончил университет и остался работать в сфере образования. В этот период написал на PHP систему для дистанционного тестирования студентов. Ее в университете использовали до 2015 года. В этот период я также работал по совместительству в технической поддержке Яндекса.

Первый опыт работы в команде программистов я приобрел в 2014 году. Заграничная компания, чтобы удешевить разработку, открыла аутсорсинговый филиал на Украине, достаточно быстро расширялась и искала новых разработчиков в команду. По воле случая мне повезло попасть к опытным коллегам. 

Хочу порекомендовать новичкам: когда у вас уже есть базовые знания для позиции программиста, переходите к работе в команде. Это ускорит ваше обучение. Два года командной разработки дали мне в разы больше, чем все предыдущие годы кодинга в одиночку. Например, я изучил на практике Docker и Vagrant, узнал про автоматическое тестирование с помощью PHPUnit-тестов и с их помощью нашел вагон багов в чужом коде. Это технологии, которые используются только в больших проектах, — на маленьких, над которыми работаешь один, это бессмысленно. 

А еще мне повезло: примерно через девять месяцев работы над проектом мне предложили перейти в другую команду и изучить с нуля перспективную Magento CMS, под которую не могли найти дополнительного разработчика. Естественно, я согласился, и это впоследствии сыграло ключевую роль при поиске работы за границей. Классно, когда работодатель поощряет сотрудников в изучении новых технологий в рабочее время.

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

— Когда вы поняли, что вам нужен Python, и какие перспективы для себя увидели в этом направлении?

— До 2014 года я работал в Яндексе, в технической поддержке сервиса «Почта для домена». Там я узнал, что почти все проекты Яндекса написаны на Python и что этот язык хорошо заточен под работу со строками, поэтому идеален для крупной поисковой системы. 

Больше я тогда ничего не знал о Python, и, конечно же, заинтересовался им. Хотел переквалифицироваться из сотрудника техподдержки в Python-программиста

Обстоятельства распорядились иначе, и я погрузился в более знакомую мне сферу PHP, а затем переехал на работу в Германию. Но от идеи изучить Python не отказался, потому что понял, насколько он перспективен.

— Вы окончили вуз по специальности «системное программирование» — это хорошая теоретическая база. Дальше получили опыт PHP-разработки. Почему вы решили изучать Python на курсах, а не самостоятельно, по книгам и документации?

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

Сначала я пытался самостоятельно освоить Python по статьям в интернете, затем попробовал бесплатный образовательный видеокурс. Есть ряд ресурсов такого плана: edX, Udemy, бесплатные уроки на GeekBrains. Если пользоваться бесплатными инструментами, то получаешь, как правило, точечные знания. Такое обучение малоэффективно. Так можно стать кодером, но не программистом. 

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

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

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

— Почему вы остановили выбор на курсах GeekBrains? Насколько оправдались ожидания от учебы?

— Больше всего мне понравилась идея стажировки: возможность получить опыт разработки реального проекта. На других курсах я такого не нашел, и ясно, что просмотр видеоуроков на YouTube этого не даст. 

Еще мне было важно, чтобы кто-то контролировал качество моего кода и высказывал пожелания или замечания по практическим работам. Например, я поначалу писал Python-программы в стиле языка PHP. Преподаватель помог мне увидеть, что в Python для тех же целей есть более удобные инструменты. Особенно это касается циклов и функций работы со строками.

Еще один аргумент в пользу онлайн-обучения — его легче совмещать с полной занятостью на работе.

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

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

— Расскажите о проектах, которые вы сделали за время учебы и стажировки.  Насколько было сложно? Есть ли перспективы реального применения или это были проекты ради опыта?

— В курсе по профессии «Программист Python» обучение языку разделено по уровням. На одном из них мы разрабатывали собственный мессенджер. Позже этот проект студенты продолжили доводить до ума на стажировке. А я попал в команду, которая делала другой проект, и разрабатывал backend-часть для программного HR-бота. Нужно было написать API, который отвечал бы за сохранение данных и взаимодействие всех частей бота между собой. Таких частей две: frontend-клиент и «паук», который собирает данные в интернете и передает API для обработки.

Backend я построил на основе Flask. Сейчас мы с командой вносим финальные правки, и совсем скоро проект будет внедрен реальным заказчиком. Ждать осталось совсем чуть-чуть :)

— Вы теперь можете сравнить написание backend’а на PHP и Python. В чем, на ваш взгляд, плюсы и минусы? Что бы вы предпочли делать с помощью PHP, а что — на Python? 

— Почему-то у PHP много хейтеров. На мой взгляд, он хорош для небольших сайтов или случаев, когда нужно минимизировать сложность разработки интернет-магазина средней величины. Под PHP есть ряд популярных CMS, на которых легко запустить сайт с нужными функциями: тот же блог на Wordpress. 

В немецкой компании, где я сейчас работаю, используют Magento CMS — большой и местами неповоротливый движок для интернет-магазина. Под Python нет готовых инструментов такого масштаба. Python — это скорее конструктор. С ним вы собираете что-то свое из множества небольших модулей. А у движков на PHP много лишнего «в нагрузку».

PHP старше, и иногда это играет с ним злую шутку, но все же он развивается: например, PHP 7 гораздо быстрее прошлых версий. Думаю, этот язык еще долго продержится в пятерке самых популярных.

Python незаменим для крупных веб-проектов, где важно быстродействие. А еще это универсальный язык, на котором можно писать что угодно, в том числе desktop-приложения. Его используют для сложных научных вычислений, построения нейросетей и даже для программирования умного дома на базе Raspberry Pi. Думаю, PHP никогда не сможет предложить так много вариантов применения.

Есть еще эстетика. И хотя плохой код можно написать на любом языке, скажу честно: код на Python намного чище и читабельнее. Скажем так, Python требует от программиста дисциплины, в то время как PHP легче «мирится» с некрасивым кодом.

— Помимо Python вы изучали в GeekBrains информационную безопасность. На каком этапе сейчас обучение? Вы собираетесь применять эти знания в разработке? Или вам интересна возможность перейти с позиции разработчика к работе программиста-безопасника?

— Работать в сфере ИБ не планирую, а курс прошел для общего развития — веб-разработчику полезно взглянуть на свой код глазами хакера, чтобы просчитать угрозы. Настоящим открытием для меня было разнообразие инструментов и методов взлома. 

Нас отправили на специализированный ресурс, где я узнал, сколько моих паролей «утекло» в интернет, и ужаснулся. :) Ничуть не жалею о времени, потраченном на лекции и практические задания, — поработал с инструментами. Большего мне пока не нужно, поэтому на стажировку записываться не стал. Но знания уже пригодились в работе: я выявил несколько уязвимостей на сайтах компании. Уверен, что и в будущем понимание азов безопасности пригодится.

Пройти обучение

15 авг 19, 14:52
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

«Сейчас или никогда!» Бросил хорошую работу ради Python

Говорим с выпускником GeekUniversity Артемом Сухаренко, который не побоялся сменить профессию в 36 лет.

— Артем, как долго ты в IT? Какие впечатления остались от работы инженером ЦОД? И когда ты решил перейти в разработку?

— В IT я уже девять лет. Заниматься разработкой хотел c далекой юности, но в силу обстоятельств, в том числе и личных сомнений, не решался. Уже в 15 лет я пробовал программировать по мелочам и даже делал графический редактор на QBasic. Периодически возвращался к кодингу, «щупал» разные ЯП, но без карьерных планов. 

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

Позже к препятствиям добавились бытовые проблемы: ипотека, например. Начинать с нуля, когда висит кредит по ипотеке, было страшновато. Да и личные опасения не последнюю роль играли: одно дело крутить провода за деньги, почти не используя мозг, совсем другое — постоянно учиться новому и аккуратно внедрять это, чтобы не поломать уже готовое.

А мечта тем временем скреблась и просилась на волю! Однажды понял: сейчас или никогда — и принял твердое решение. Это примерно совпало с поступлением в GeekUniversity. 

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

— Почему изо всех направлений ты выбрал Python? И какое применение этого универсального языка тебе интереснее?

— Вот именно за универсальность и простоту я Python и выбрал. Сейчас на рынке мне открыто в первую очередь веб-направление, потому что для Machine Learning я недостаточно силен в математике. 

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

— Почему ты решил пойти на курсы? Какие были критерии и требования, когда ты выбирал место учебы?

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

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

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

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

— Где сейчас трудишься и над какими задачами?

— Сейчас работаю в компании «Код безопасности». Есть готовый продукт — программно-аппаратный комплекс для защиты сетевой инфраструктуры и создания VPN-сетей. Его нужно поддерживать. Я занимаюсь в основном исправлением багов и рефакторингом. Намечается еще задача: планируем весь legacy-код проекта перенести на Python 3+.

— Сколько предложений работы ты получил после обучения? Как выбирал работодателя? 

— За время учебы и после нее мне поступило три оффера. Еще пара наклевывалась, но потребность в них отпала сама собой. Вакансии я выбирал по двум критериям: что за проект и сколько ехать до офиса. На нынешнем месте остановился в том числе потому, что знал будущего начальника по его выступлениям в подкастах и на митапах.

— Может, поделишься советами, как проходить собеседования?

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

Как получить работу? Обязательно знать Rest и еще какой-нибудь Rest-фреймворк. Если с этим все в порядке — считайте, что оффер ваш. :) 

Мое скромное мнение: лучше не врать, что все знаете и просто что-то подзабыли. Говорите или пишите о том, чем действительно владеете, только обязательно уточняйте, что еще готовы освоить или уже изучаете. Все задают примерно одинаковые вопросы, но некоторые интервьюеры (HR или руководители) в силу своих личностных качеств любят предложить что-нибудь с подковыркой. А вы все равно не бойтесь! :) 

Какие проекты ты сделал за время учебы в GeekUniversity? Расскажи немного о каждом, пожалуйста.

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

На командной разработке мы делали коммерческий проект GoLiving.net, который просуществовал недолго, но дал нам уйму практического опыта. Я писал backend, а еще выступал в роли fullstack-разработчика при создании админки сервиса и деплоил все на сервер.

Мы обсуждали проект на встречах через Google Hangouts, а code review был коллективным.

— Как считаешь, почему проект «не взлетел»? Что пошло не так?

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

Нужно было добавлять новые фичи, но наш стартап сам не знал, чего хочет, и работал по «динамическому» ТЗ. Что я точно помню, это сложности в организационных вопросах: не было четкого разделения обязанностей и ясных задач. Так мы получили горький, но полезный опыт участия в псевдокоманде! :)

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

Почему GoLiving не взлетел — это скорее вопрос к владельцу бизнеса. В какой-то момент он просто пропал с моих радаров.

Сейчас я понимаю: там было что переписать, мягко говоря. Это были «учебные» [проекты] — мы кодили, как могли! 

Именно тогда я попробовал технологии, о которых раньше только читал: требовалось сделать P2P-чат на веб-сокетах. Это было очень интересно и даже работало.

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

Кстати, благодаря этому опыту я почти полностью переписал собственный проект, который на добровольных началах затеял на предыдущей работе «непрограммистом». Это была система мониторинга и взаимодействия с операторами ЦОД. Но и это я бы сегодня переписал! (Смеется.)

— Как быстро удалось найти работу? Насколько сложными были тестовые задания и технические вопросы на интервью?

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

Наиболее сложными из тестовых мне показались задачи, связанные с асинхронными фреймворками, такими как AioHTTP и Sanec. В этом деле мне не хватало практического опыта.

— Как проходит адаптация на новой работе? И хватает ли времени на самообразование?

— Адаптация проходит интенсивно и интересно. Я уже в принципе представлял, как выглядит коммерческая разработка, поэтому огромным сюрпризом это не стало.

Но понадобилось вникнуть в новые темы: в основном это сети и криптография. Со временем пока очень туго, однако по-прежнему выручает длинная дорога от дома до работы и обратно.

— Ты уже наметил себе цели в профессии на ближайшую перспективу?

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

Пройти обучение

15 июл 19, 16:00
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Как применить Data Science в ИИ для недвижимости?

Студенты GeekUniversity соревнуются в разработке наиболее успешной модели ИИ на Python. Правда, бояться бунта машин рановато: все, что модели умеют — это предсказывать цены на недвижимость. О том, как проходят эти соревнования, почему для обучения ИИ используется язык программирования Python и о других интересных вещах нам рассказал специалист по Data Science Сергей Ширкин. Сергей имеет богатый профессиональный опыт в сфере финансов и IT, а в настоящее время работает в маркетинге и является деканом факультета искусственного интеллекта в GeekUniversity. 

— Сергей, что студентам дает курс «Python для Data Science»? Что они изучают? 

— В первую очередь курс дает представление об основных программных библиотеках для языка Python, которые используются в Data Science, а также помогает освоить базовые приемы работы с ними. Речь идет о библиотеках NumPy, Pandas, Matplotlib, Seaborn, Scikit-learn. Это основные библиотеки для обработки данных, математических алгоритмов и построения моделей. 

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

— Почему именно Python? В чем его преимущества в работе с ИИ и Data Science?

— Python — достаточно простой для изучения, но при этом чрезвычайно мощный язык. Кроме того, он является интерпретируемым, то есть отдельные команды преобразуются в исполняемый код непосредственно в процессе выполнения программы. Это несколько замедляет работу программ (в отличие от тех, что написаны на компилируемых языках), но зато позволяет запускать их без предварительной компиляции, как в Java или C++. Отдельные команды можно запускать прямо из среды разработки. Мы используем пакет Anaconda с Jupyter Notebook — этот софт дает дополнительные преимущества в работе с табличными данными, позволяет запускать команды и строить графики в ячейках данных, в целом облегчает работу. 

Правда, у Python в Data Science и области обработки данных есть один конкурент — это язык R. Он тоже интерпретируемый, также позволяет запускать отдельные команды из командной строки и строить графики, обладает удобной средой разработки. Но его минус в том, что разработанные на R программы сложно использовать для промышленных решений. К тому же он довольно специализированный, ориентированный в основном на статистические вычисления. Python лишен такого недостатка: это полноценный, универсальный язык программирования, а разработка ИИ на Python уже не представляется сном, как это было раньше. Сегодня даже наблюдается «миграция» специалистов с R на Python — а в обратную сторону такого движения не происходит. 

Наконец, для Python создано множество программных библиотек, которые упрощают разработку в сфере машинного обучения. Частично они написаны на том же Python, частично — на C++, они удобные, быстрые и непрерывно развиваются. Так что, если речь идет об искусственном интеллекте, то сегодня 95 % разработок ведется именно на Python. 

— На курсе вы даете не только теоретические знания, но и практические навыки на примере конкретных задач?

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

Представьте агентство по продаже недвижимости, у которого есть база данных по квартирам, выставленным на продажу. Известны их характеристики: количество комнат, площадь, этаж. Кроме того, заданы характеристики районов: экологическая обстановка, какие магазины есть поблизости, каковы социальные условия и так далее. Цены некоторых квартир известны, а других — нет. 

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

Мы уже подвели итоги соревнования, и первые места в своих группах заняли Сергей Кабанов, Михаил Донченков, Арминэ Мороз и Рашид Исхаков. Студенты отлично поработали! 

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

— По завершении этого курса уже можно пытаться устраиваться на работу?

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

Курс дает не только быстрые знания о библиотеках, но и навыки для реальной работы. Человек быстро входит в курс дела и попадает в рабочую обстановку. Студенты практически с минимальными знаниями приходят на курс, а через месяц уже строят работоспособные модели. 

— Что еще может оказаться преимуществом при трудоустройстве?

— Многие работодатели приветствуют, если соискатель на должность Data Scientist участвовал в соревнованиях и конкурсах. Большой плюс — участие в конкурсах Kaggle (примечание GB: kaggle.com — это веб-сообщество, в котором участники могут взяться за решение практических задач в сфере машинного обучения и искусственного интеллекта, например: за распознавание рукописного текста, анализ изображений, прогнозирование транзакций клиентов и подобных. За победу в состязании зачастую предусмотрены крупные денежные призы). Причем преимуществом является уже сам факт участия в конкурсе. Победить там достаточно сложно, так как участников всегда много. Даже войти в первые 10 % — это уже огромное достижение. Далеко не все специалисты, уже работающие в Data Science, принимали участие в конкурсах Kaggle!

Конечно, чтобы участвовать в состязании Kaggle, нужно знать библиотеки для Data Science и уметь пользоваться ими — в том числе теми, которые мы изучаем на курсе. Библиотек много, мы осваиваем здесь самые основные и востребованные. Вряд ли с полученными знаниями студент сможет создать модель для анализа текста или распознавания изображений (мы проходим это на факультете позже). Но работать с табличными данными он будет готов. Некоторые из наших студентов по окончании курса отправились на Kaggle и приняли участие в конкурсе (результат мне неизвестен, но сам факт — уже знаменательный). 

— Где сегодня востребован Data Scientist? 

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

Специалисты по Data Science востребованы сегодня в ритейле, телекоме, у операторов связи, в создании поисковых систем, в промышленности и нефтяной отрасли. Специалист может попробовать себя в совершенно разных сферах. Поработал в продажах, захотелось нового — занялся компьютерным зрением или обработкой естественного языка. У нашего выпускника много дорог! 

Заработок специалиста в крупных городах начинается примерно от 70 тысяч рублей в месяц. Это средняя зарплата спеца по Data Science на Python и Machine Learning, у которого нет опыта работы. Через год-два можно найти более прибыльное место. С тремя годами опыта человек может рассчитывать на зарплату в 200 тысяч, с пятью — 250 и более. 

— Какие знания нужны для учебы на курсе?

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

— Спасибо за интересный рассказ! Желаем вам новых успехов, а студентам — побед и больших достижений!

Пройти обучение

27 июн 19, 17:15
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Говорят, выучить Python и стать программистом легко. Правда?

На биржах труда ищут мобильных разработчиков, девопсов, бэкендеров и фронтендеров, но где эти профессии в списках специальностей классических вузов?

Мы запускаем цикл статей в которых подробно расскажем о каждой профессии через опыт людей. В первом выпуске обсуждаем Python-разработчиков. Свои истории рассказали Артем Сухаренко и Данила Лобанов. Они пришли в профессию совсем недавно, но успели набраться опыта в других сферах. А экспертом выступил Алексей Петренко — декан факультета Python в Geekbrains.

Мы поговорили о том, что нужно знать перед обучением, чем хорош и плох язык, что трудного ждет в обучении и на чем стоит сосредоточиться; какие профессии и деньги сулит знание языка, как готовиться к первым собеседованиям и многое другое.

Для чего учить Python

Артем Сухаренко учился в СибГИУ на кафедре автоматики и информатики. Его специальность была инженерной, но не связанной с программированием. После выпуска Артем устроился работать на завод ЗСМК — один из самых крупных металлургических комбинатов в России

«Я обалдел, насколько там все ужасно», — говорит он, — «Полуразвалившийся советский электропривод, никакой модернизации, специалисты особо не нужны». Долго на заводе он не задержался, но продолжил работать с электрикой дальше. Вырос до ведущего инженера в Сибирьтелекоме, затем переехал из Сибири в Москву и устроился в коммерческий ЦОД, где отвечал за инфраструктуру.

Программирование иногда подразумевалось. Артем пытался работать с микроконтроллерами, делать что-то более сложное, но всегда упирался в отказы работодателей и заказчиков — им это было не нужно. Хватало элементарных вещей, которыми, как говорит Артем, интересно заниматься только первые 15 минут, и особых скиллов для этого не нужно.

«Может быть, я не туда совался, но развития для себя не нашел. Пять лет вуза — просто чтобы крутить провода. Это было так обидно».

Однажды коллега подал Артему идею изучать программирование не для электрики, а чтобы стать разработчиком. Он стал читать книги, пробовать разные задачи, но не решался сменить профессию. «Желание у меня назревало долго. Сначала не давали сменить профессию ипотека, финансовые вопросы, личный страх».

В 36 лет Артем пошел на курсы Python-разработчика.

 

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

«Зная Пайтон можно делать много всего — от простейших скриптов до анализа данных и построения нейронных сетей. Но конкретно разработка на Пайтон — это бэкенд для веб-серверов, разработка скрытой части интернета — той, которую не видят обычные пользователи. Сервер, его логику, взаимодействие с базами данных», говорит Алексей Петренко, декан факультета Python в Geekbrains.

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

 

«Хоть Python и пропагандируется как язык для всего, по факту у него только две сферы применения: всякие data science, ML и прочая математика — и веб-разработка. В этом он меня немного разочаровал», — говорит Данила Лобанов, бывший сисадмин, который недавно стал Python-разработчиком.

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

Данила тесно познакомился с компьютером относительно поздно, примерно в 18 лет. От высшего образования он отказался и почти сразу пошел работать сисадмином. Начинал с самых элементарных задач, потом приступил к изучению Linux и программирования.

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

После неудачных попыток Данила надолго забросил программирование. Около десяти лет он проработал сисадмином. И когда почувствовал, что администрирование больше не приносит радости, решил дать разработке еще один шанс.

 

«Новичку лучше первым делом разобраться в синтаксисе», — считает Алексей Петренко, — «Только потом стоит думать, куда хочется идти дальше. Чем больше ты учишься, тем больше уходишь от синтаксиса к библиотекам, паттернам проектирования, отдельным шаблонам».

Данила все-таки выбрал Python потому, что язык считался легким. «Синтаксис реально оказался простым», — говорит он, — «Как писать текст на английском языке. Сначала я изучал его самостоятельно по видеоматериалам на Ютубе, по статьям, решал задачи на pythontutor.ru. Но потом понял, что ресурсы в интернете — это только основы и азы. Они доступны всем и везде, и не помогут научиться программированию основательно. Я понял, что надо искать курсы, которые дадут все то же самое, только систематизировано, а потом поведут меня дальше».

Что надо знать перед началом обучения

Перед тем, как серьезно погружаться в изучение языка, Алексей Петренко рекомендует выяснить заранее — а нравится ли программировать вообще. «Я бы советовал попробовать написать несколько программ, пройти бесплатные уроки. Перед началом обучения лучше уже понимать, что такое переменная и как две переменные сложить.

Чтобы курсы не стали бесполезными, поможет только одно — практика. Если только смотреть и слушать, ничего не получится. Для новичка практикой будет даже переписать код, который преподаватель показывает на экране. Переписывать и думать, как он работает.

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

Начать может быть легко, но впереди ждут трудности

Артем продолжал работать электриком днем, а вечерами начал учиться на курсах, несмотря на усталость. «Как и у всех наивных людей, у меня было ожидание магии от курсов. Я пришел не совсем нулевым. В багаже было несколько книг и даже простых сайтиков, в том числе на PHP (грешен, признаю). Я ждал, что на курсах надмозги меня выдрессируют, и я стану волшебником.  Реалии оказались другими — там такие же люди, которые просто знают чуть больше».

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

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

«Все признавали, в том числе сотрудники Geekbrains, что уровни 2 и 3 в программе по Python были одними из самых сложных курсов в университете. Очень много информации в слишком сжатые сроки, очень большие домашние задания. Многие усваивали только часть материала. Я лично два раза переводился в следующий поток. Мы просили облегчить программу, нас спрашивали как, и я предлагал разбить два курса на три. Что-то из этого приняли во внимание и сейчас реализовали».

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

«Преподавать программирование тоже очень сложно. Всем кажется, что раз человек может писать программы, значит может и научить. Это не так. Когда мышление перестроено, и знаешь много всего — уже не можешь вспомнить, каково это — не понимать».

Алексей предупреждает, что Python легкий только в начале. А после легкой базы придется приложить усилия, чтобы освоить более серьезные аспекты — библиотеки и фреймворки. «Если сравнить язык программирования с водоемом, то, например, язык С — это океан. Ты ныряешь с обрыва на огромную глубину, и либо плывешь, либо тонешь. Язык Пайтон — это пляж с чистым песком, где ты можешь далеко зайти, спокойно поплавать, и если понял, что хочешь двигаться дальше — то за красивым пляжем есть огромная впадина, по глубине сопоставимая с С и Java».

 

«Асинхронное программирование в Python — это мозгодробительная штука», вспоминает Артем. «Мы проходили это как-то поверхностно, и потом даже на собеседованиях, когда по нему спрашивали, я чувствовал, что плыл.

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

Данила же вспоминает модуль select как самое трудное: «Все три потока помнят мою боль с селектами. Есть такой модуль, и он мне прямо очень не давался в свое время. Сейчас-то он для меня простой — я теперь не понимаю, как его можно не понять».

 

«В базовой конфигурации Python лежит около 70 функций и несколько десятков зарезервированных слов, но даже крутой программист не обязательно использует их все. То есть, чтобы выучить сотню слов и понять, что они делают, можно потратить одну-три недели при желании и активной работе», говорит Алексей.

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

Чтобы в будущем работать в команде и показывать код кому-то еще, надо знать общепринятые стандарты стиля. В Python они называются «Пепы» (Peps). Я бы советовал читать Pep8 параллельно с изучением синтаксиса. Это соглашение программистов, которые пишут на Пайтоне. Оно рекомендует как правильно писать, а как неправильно.

Несколько лет назад в Python произошло разделение. Был Python 2.7, а потом вышла версия 3. Вторая версия все еще используется, но только в старых фирмах для поддержания легаси-кода. Если устроиться в такую фирму, то изучать Python 2 придется, но я бы рекомендовал учить третью версию. Все современные проекты и сторонние библиотеки пишутся под нее».

 

Как выдержать первые собеседования

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

«Проект назвался GoLiving. Это что-то вроде AirBnb, только задумка такая: в Америке есть люди, которые часто ездят работать в разные города на непродолжительный период. И они могут между собой меняться жильем с гарантированной страховкой, чтобы точно быть уверенным, что не вернешься в разгромленную квартиру. Сейчас я не знаю, насколько далеко пошел этот ресурс, кажется финансирование приостановили. Но тогда у нас даже были инвесторы».

 

Данила во время обучения на курсах полгода сидел без работы. Он уволился специально, чтобы учиться, но из-за частых переводов учеба заняла больше времени, и отложенные на это время деньги подходили к концу. Покинув курсы, Данила даже не успел начать изучение Django — самого популярного фреймворка для веб-разработки.

«Под новый год я написал в компанию, которая просто находилась рядом с моим домом. Зашел к ним на сайт, увидел вакансию бэкенд-разработчика и написал им письмо. Говорю, хотел бы у вас поработать, хоть и учился, но знаю немного. Очень интересуюсь и буду развиваться. И меня позвали на собеседование».

«Мой опыт в Geekbrains показывает, что некоторые студенты находят работу, до того как они заканчивают годовой курс обучения», говорит Алексей. «Работодатель хочет видеть у серверного разработчика элементарное умение работать с синтаксисом, знание как работают сайты, как устроен бэкенд, тот же самый набирающий популярность Django. Я бы сюда ещё добавил работу в команде и знания баз данных, потому что любой бэкенд любого сайта неразрывно связан с хранением информации.


Ежемесячно на «Моём круге» открывается порядка 200 вакансий python-разработчиков, вы можете посмотреть самые свежие и подписаться на рассылку о новых вакансиях.

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

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

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

Алексей же считает, что с такими компаниями стоить быть внимательнее. «Кроме общих вопросов должны быть задачи на написание кода. Даже если на бумаге карандашом — это нормально. Но если ты пришел на собеседование программиста и не получил ни одного вопроса о программировании, то тебя либо собеседовал некомпетентный человек, либо ты будешь заниматься вообще чем-то непрограммистским. Программистов надо проверять на программирование».

«Я считаю, не спрашивать технические вещи — это правильный подход», говорит Данила. «Очень известный в Python-сообществе Григорий Петров тоже говорит, что скилы по программированию (хард скилы) подтянуть всегда можно. Главное сойтись во взглядах на жизнь, чтобы было комфортно вместе работать. Я с ним согласен.

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

 

«Собеседование, которое проходил я, расплавило мне мозг еще как», вспоминает Артем. «Когда я вышел, состояние было, как будто иду на автопилоте — так сильно продолжали жужжать мысли».

Проходило оно так: сидели два эйчара и два технаря. Один питонист и фулстек, который занимался вебом — куда пробовался и я. Второй — судя по вопросам —  совершенный надмозг. У него такой был сильный матан, что просто ого-го!

Сначала пошли житейские вопросы, все эти «как себя видишь, как себя чувствуешь». Потом за меня принялся фулстек, погонял меня по Python, по Django. Он прямо на бумаге накидывал примеры и спрашивал по ним. Не сложные, но с подковырками.

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

Честно, даже не ожидал, что мне перезвонят. Тем не менее — получил оффер. Через несколько дней будет первый рабочий день».

На какие деньги стоит рассчитывать

Люди идут в ИТ не только по зову души. Это индустрия с одними из самых быстро растущих зарплат в России. И иногда кажется, что зарплаты программистов по сравнению со среднестатистическими профессиями отличаются как зарплаты в Москве и в регионах. Тем не менее, ни Артем, ни Данила не шли в эту профессию за богатством. Больше того — они его пока так и не нашли.

«Даже в Москве на начальных позициях программистам предлагают 40-50 тысяч, может даже меньше. В регионах 20 тысяч для джуниора тоже не редкость. Это не такая уж высокооплачиваемая работа, как все утверждают. Да, когда достигаешь уровня синьора, зарплаты могут переваливать за 200-300 тысяч. Но где таких зарплат нет? Недавно одна такси-компания показала доходы таксистов, которые больше всех заработали. Там 230, 240 тысяч.


На диаграмме зарплат python-разработчиков с разбивкой по квалификациям видно, что медиана для джуна составляет почти 60 000 рублей, тогда как мидл получает уже в среднем чуть больше 100 000 рублей. Зато разница между показателями медиан для сеньора и лида совсем небольшая — 151 000 рублей и 167 000 рублей соответственно.
При построении диаграммы были использованы данные зарплатного калькулятора «Моего круга».

Возможно, в программировании проще дойти до уровня выше среднего, чем во многих других сферах. Но для меня это вообще не было главным. Мне было интересно создавать программы».  

«Зарплаты зависят от региона», говорит Алексей, «Кто-то устроится за 40 тысяч как начинающий, кто-то может и сразу на 100 тысяч. Смотря как себя проявить. Если покажешь, что можешь писать не только код, но и разбираешься в архитектуре, можешь набросать схему проекта целиком, всех модулей, сервисов, связей между ними».

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

 

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

«До уровня мидла можно прокачаться в течение года обучения. Например, в Geekbrains есть обязательные курсы и дополнительное. Все их надо пройти полностью чтобы честно сказать — я прокачался до уровня мидла. То есть, получается год основной программы и ещё полгода параллельных курсов», — считает Алексей, — «А синьор — это человек, у которого есть богатый опыт. Это тот, кто разбирается в разных фреймворках, способен масштабировать задачи, понимать каких ресурсов они требуют. Человек, который не изобретает велосипеды. Кто на собственном опыте разобрался во всех аспектах и нюансах работы.

Если человек через три года работы называет себя синьором — почему бы и нет. Все зависит от фирмы, стремления и навыков. Если человек одаренный и целеустремленный, то я в это поверю. Если он скажет, что знает «Питон», а не «Пайтон», то наверное он все-таки прокололся».
 

Пройти обучение

3 июн 19, 17:17
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0
Темы с 1 по 10 | всего: 26

Последние комментарии

нет комментариев
Читать

Поиск по блогу

Люди

7 пользователям нравится сайт lena2018.mirtesen.ru