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

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

Как я за 2 года прошел путь от ученика до веб-разработчика

Меня зовут Руслан, я живу в городе Нур-Султан и вот уже более года профессионально занимаюсь программированием. И да, мне всего 18 лет. Я не из тех, кто с детства хотел попасть в IT. Вообще, моим первым выбором карьерного пути была профессия повара. Меня привлекала возможность что-то создавать, показывать свой труд окружающим, получать отклик и постоянно работать над мастерством.

С IT меня познакомил муж сестры. У него с братьями было своё дело, не требующее постоянной привязки к офису – они запустили несколько успешных стартапов и продавали темплейты для сайтов. Общаясь с ним, я всё больше понимал, что создавать веб — это по-настоящему интересно, плюс тебе не надо каждый раз выбирать продукты, иметь массу техники и утвари, достаточно лишь компьютера и ПО. Кроме того, как и в профессии повара, здесь много творчества, обратной связи и необходимости непрерывно развиваться. Поэтому идеей фикс №2 стало как раз попадание в IT.

От мужа сестры я получил первую рекомендацию — обучение основам веба на HTML Academy. Там я начал изучать основы вёрстки и стиля. Поначалу возникало множество сложностей даже с элементарными вещами: пропорциями элементов, атрибутами тегов, форматированием. Я зубрил, копировал чужие работы, пересматривал семинары снова и снова, но обучение шло так медленно, что в итоге я потерял мотивацию и даже немного разочаровался в профессии.

К счастью, у меня есть внутренний страх, что если я что-то не выучу, то рискую в будущем остаться без хорошей работы и средств к существованию. Поэтому через пару недель, когда полученные знания улеглись, а нервы успокоились, я продолжил. Удивительно, но во второй раз всё пошло, как по маслу. Более того, сразу после основ HTML и CSS возникло желание углубиться в веб, изучить функционал, так что следующим пунктом стал PHP. Таким образом, в свободное время я уже вовсю создавал простые страницы с формами для отправки и обмена данными.

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

  1. Часть из них была вызвана манерой подачи материала, желанием преподавателя сразу перейти к практике, минуя часть теории.
  2. Другая проблема, банальная – когда делаешь всё по методичке, но ничего не работает.
  3. Ещё одна сложность –  ограниченность по времени. Из-за того, что обучение проходит в сжатые сроки, приходится тратить на него почти всё свободное время.

Однако, так как у меня был опыт — я выработал собственный рецепт борьбы с подобными проблемами обучения:

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

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

В это же время в моём колледже узнали, что я обучаюсь вебу и отправили меня на WorldSkills -– международный конкурс, призванный выявить молодые таланты во всевозможных профессиях. Правда в моём случае это был его внутригородской вариант, но страха было не меньше. Проблемой было и то, что главной задачей моего конкурса являлось создание браузерной игры, это было известно заранее. Игры я никогда не создавал, более того, совершенно не знал JavaScript. Курс по этому языку должен был начаться уже после соревнования. Так что пришлось в турбо-режиме учить JQuery, не углубляясь в основы самого языка, отрабатывать теорию на создании простых игр. Возможно, способ не самый правильный, но мне помогло.

Задание на конкурсе оказалось следующее: простая игра, где летит самолёт, навстречу птицы, с которыми он не должен столкнуться. Попутно он собирает топливо, оно даёт очки. В конце игры очки заносятся в таблицу и выводятся в режиме реального времени. С заданием я справился за пару часов: полтора  из них я создавал саму игру и еще 30 минут ушло на настройку сервера node.js. В итоге я занял второе место, уступив, со слов организаторов, лишь в дизайне. За участие и призовое место я получил награду в виде диплома, но для меня это значило гораздо больше — факт успеха заставил поверить в свои силы и правильность выбранного пути. Сложно передать словами, насколько это заряжает на упорный труд.

Получив новую порцию знания и набив немного руку, я взялся за Vue.js. Он мне настолько понравился, что я не мог остановиться — постоянно что-то создавал: свои компоненты, фреймворки, сайты для знакомых, объединившись с другом, запустили несколько проектов для колледжа (БД учебников, расписания, табели успеваемости и т.д.), форум наподобие Laracasts, чаты на web sockets. В общем, получилось создать так много, что меня даже взяли на полставки инженером-программистом в колледж, где я учусь. Это не только принесло мне заработок, но и позволило избегать скучных пар. Плюс я помогаю мужу сестры, так у меня появились собственные заказчики, в том числе из Франции.

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

  • htmlacademy.ru – ресурс, на котором очень удобно изучать основы веба: HTML, CSS, PHP.
  • geekbrains.ru – здесь есть комплексные программы для изучения дисциплин в рамках какой-то профессии и огромный плюс в виде преподавателей, у которых всегда можно спросить совет.
  • laracasts.com – как понятно из названия, этот образовательный ресурс посвящён Laravel. Но им дело далеко не ограничивается: есть семинары по Vue, JavaScript, PHP, да и вообще всему, что может понадобиться в профессии

Если говорить про книги, то могу порекомендовать «Изучаем PHP 7» Дэвида Скляра. Практически библия для всех, кто изучает язык. Однако, скажу честно, это единственная книга, которую я прочёл полностью. Есть ещё хорошие «PHP и MySQL. От новичка к профессионалу» Кевина Янка и классика от Head First «Изучаем PHP и MySQL», но в них я заглядывал лишь эпизодически.

Но в целом, моё мнение, лучший способ – всегда пытаться делать что-то новое. Часто этому способствуют заказчики, желая соединить по 3-4 фреймворка для чего-то уникального. Это вынуждает вас шерстить массу электронных ресурсов:

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

В общем, мне 18, я учусь на втором курсе, преподаю в родном колледже для людей, желающих получить новую профессию. Что касается IT, то мы с командой сейчас работаем над созданием аналога Asana, только с частично бесплатным функционалом. Как часть реализации проекта для начала распространим 2 версии dashboard template через CodeCanyon. Параллельно работаем над нашим менеджером задач, анализируем аналоги, пытаемся довести до того состояния, когда в нём реально будет смысл на рынке. Когда всё получится – объединим в единое целое, и, может, что-нибудь получится.  

В числе более глобальных целей – перебраться в Австралию и продолжить там любимое дело. Поставленный срок – 1,5 года, это время до конца обучения. За это время планирую выпустить несколько проектов, заработать стартовый капитал и расширить клиентскую базу. Почему именно туда? Прекрасный климат, расслабленная атмосфера, удалённость от политической и финансовой напряжённости. Всё что надо для успешного творчества.

У меня нет сомнений, что все запланированное сбудется. Теперь-то я точно знаю: если стараться и не опускать руки – всё обязательно получится.

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

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

Постигая Python: учеба в GU, практика в Австрии, развитие

За время изучения Python в GeekUniversity Максим Столпасов успел пройти практику в Австрии и трудоустроиться. Рассылать резюме не пришлось — на стажировку, а затем и постоянную работу его пригласил преподаватель курса Django. Своей историей, впечатлениями от учебы и рекомендациями новичкам Максим поделился в интервью.

Привет! Расскажи, пожалуйста, чем ты занимался до GU? Был ли опыт с Python и почему решил изучать Django?

— До GeekUniversity я 10 лет занимался автоматизацией: внедрял ERP-систему и поддерживал ее работоспособность на предприятии клиента.

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

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

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

Шесть лет я изучал Python самостоятельно. В 2018 решил сменить работу и подобрать что-то связанное с «питоном». Достаточного опыта не было, фундаментальной теоретической подготовки тоже, а без этого никуда не брали.

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

— Что показали тесты?

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

— Как тебе учеба?

— За первые два месяца мы освоили все, что я до этого учил шесть лет! Для меня это был шок.

Занимался я всерьез: выполнял все домашние задания, читал методички и дополнительные материалы, старался сделать чуть больше, чем требовалось для оценки «отлично».

Курс Django 1 у нас вел Максим Данилов — очень рекомендую его как преподавателя! Мы общались не только на занятиях, но и в WhatsApp. Обсуждали домашние задания, подходы к решению задач. По окончании курса Максим предложил пройти практику в его фирме в Австрии. Надо было выйти из зоны комфорта: на месяц уехать в другую страну от семьи, детей. Со старой работы я тогда еще не уволился, пришлось договариваться. Но в итоге ради практики я смог все уладить и поехал.

Австрия, Ландек. Вид из окна офиса. Фото: Максим Столпасов

— Учебу на это время пришлось прервать?

— Нет. Практика совпала с периодом командной разработки в GU. Мои одногруппники делали очень классный проект: систему тестирования EasyTest. Я за ним следил, анализировал рекомендации преподавателей. Максим тоже шел навстречу — выделял мне время для учебы.

По возвращении я отчитался преподавателю по командной разработке — Сергею Кручинину, — что я делал, как взаимодействовал с коллегами и применял полученные в GU знания. Этот опыт мне засчитали за командный проект.

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

— Пригодились общие знания Python и все, что мы изучали на курсе Django. Особенно полезным оказалось умение сокращать объем потребляемой памяти в Python и работать с классами Django.

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

Приходилось узнавать на ходу и лучшие практики, которые мы еще не успели разобрать в GU. Максим показывал мне их на реальных примерах: хороших и плохих. Причем он объяснял, почему здравая на первый взгляд идея на деле плохо работает. Было очень интересно.

— А что за продукт вы делали и в чем была твоя роль?

— Продукт называется winePad Der Digitale Sommelier — это система автоматизации продаж вин. В приложении не нужно заводить номенклатуру — в него встроена одна из лучших баз данных по винам Европы, с фото и описаниями.

Винотека в офисе. Фото: Максим Столпасов

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

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

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

Я нашел библиотеку, которая обеспечивала похожие функции, но она была написана на Python 3. Мне пришлось править ее для совместимости с Python 2.7.

— Ты говоришь, что учился взаимодействию с коллегами. Команда большая, интернациональная?

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

Где именно в Австрии находился офис? И насколько жизнь компании отличалась от того, к чему ты привык в России?

— Я жил в городе Ландек в Тироле. Что сильно отличалось — это корпоративы. В российских компаниях, где я работал, при организации корпоративов ставка делалась на развлечение. Кроме застолья всегда были встречи со знаменитостями, разные выступления. В Австрии я впервые попал на корпоратив, полностью нацеленный на удовольствие от еды! Меня впечатлил подбор вин и угощений.

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

Один из совладельцев бизнеса — сомелье мирового уровня — раскрывал нам секреты вин. Я не большой их любитель, но был ошеломлен.

Нам наливают вино, сомелье о нем рассказывает (Максим мне переводит), затем предлагает понюхать и попробовать. Что ж, хорошее вкусное вино. «Поставьте его на пять минут», — говорит он и опять рассказывает. Через пять минут вино продышалось, пробуем снова — вкус абсолютно другой. Оставляем еще на пять минут — вкус третий. И так шесть раз! Плюс были всякие интересные закуски.

На открытии офиса. Фото: Максим Столпасов

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

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

Для меня все это было ожидаемо: примерно так, как нам рассказывали на курсе командной разработки GU.

— В этом курсе помимо практики дают теорию?

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

Еще нам объясняли, как работает распределенная команда, как правильно относиться к задачам и взаимодействовать. Рекомендации я брал на вооружение, польза их подтвердилась.

— Сейчас ты продолжаешь работать у Максима, но уже удаленно?

— Да. Когда я ехал в Австрию, не рассчитывал на последующее трудоустройство. Моей целью было погрузиться в практическую разработку на Python и Django, получить месяц опыта.

Я наслаждался процессом, и впервые ничто не отвлекало. Вечером после работы я читал о задачах, которыми занимался: какие есть варианты решений и библиотеки. Утром бежал обратно на работу, чтобы скорей опробовать подходы, о которых прочел. И так весь месяц без остановки!

Я был поглощен делом и не ждал большего. Но под католическое Рождество (25 декабря) Максим предложил сотрудничать на удаленной основе. Два раза в год я должен приезжать на месяц в Австрию, чтобы скорректировать планы на полугодие.

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

Раньше мне приходилось каждый день ездить на работу через всю Москву: с севера области на юг. На дорогу в одну сторону уходило в среднем 2–2,5 часа. Сейчас я снял себе коворкинг и работаю в двадцати минутах от дома. Зарплата чуть выше прежней. И главное — перспективы. Компания оплатила мне курсы английского, чтобы я мог лучше взаимодействовать с командой.

Работа мечты, по-другому назвать не могу!

Альпы. Вид из офиса. Фото: Максим Столпасов

— И ее не пришлось искать.

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

В итоге получилось еще проще: я полностью сконцентрировался на занятиях, а работа нашлась сама в процессе обучения.

— Какие проекты ты реализовал в GU?

— Пока я продолжаю учиться и за плечами один «сквозной» проект, который мы дорабатывали в ходе каждого учебного курса — это интернет-магазин на Django. Мы начинали с верстки (курс HTML & CSS), затем нам показали, как увязать сайт с базой данных и фреймворком Django.

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

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

Мы также научились пользоваться встроенными в Django тестами: провели нагрузочное, функциональное и unit-тестирование.

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

— Зачастую в GU и GB фронтендеры кооперируются с бэкендерами и делают курсовые проекты вместе. А вы, получается, — мастера на все руки.

— Нас готовят как Middle fullstack-разработчиков, поэтому учат всему.

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

Верстка. Первый экран главной страницы магазина

— Что из проектов у тебя впереди по учебному плану?

— В середине марта у нас начинается разработка мессенджера на Python. После этого научимся использовать PyQt для взаимодействия с базой данных.

— Сейчас ты занимаешься вебом, но в принципе ты ведь «питонист широкого профиля». Есть планы освоить новые направления Python-разработки?

— Машинное обучение — обязательно. За ним будущее! Я заинтересовался этой темой в первые же месяцы учебы в GU.

Тогда, еще на старой моей работе, надо было оптимизировать распределение задач в отделе. Для начала их нужно было классифицировать, и вот на этом примере я впервые «пощупал» machine learning. Разобрался, как построить вектор по заголовку и описанию задачи. Удалось довести правильность распределения задач до 90 %.

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

Мы уже обсуждали с Максимом возможность прикрутить машинное обучение к проекту WinePad. Выяснились интересные моменты. Я раньше не представлял, как модель обучения может взаимодействовать с Django.

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

— Прикольно. Я пока в этом не разобрался, нужно будет вникнуть.

— В завершение беседы поделись, пожалуйста, опытом. Что ты посоветуешь поступающим на ту же специальность?

— Мой совет: помните, что в программе обучения GU нет ничего лишнего. Вам дают самый необходимый минимум, который обязательно пригодится в работе. Берите этот объем знаний целиком. Домашние задания — наше всё! Смотрите занятия онлайн, пересматривайте, читайте методички, в ДЗ обязательно делайте все задачи со звездочками и еще что-нибудь сверху. Вы оцените результат.

Когда Максим приходит ко мне с новой задачей, я думаю: «Где-то такое уже было!» — и сразу вспоминаю, в какую методичку смотреть и какой код поднимать.

— При твоей увлеченности и мотивации, что тебе задачи со звездочками... :) Думаю, секрет в этом.

— Не всегда. Мотивация — штука непостоянная! То она пропадает, то объективно времени нет и приходится сидеть ночами. Надо себя заставлять и не сдаваться! Домашнее задание — оно маленькое, примерно на два часа. Это время надо по-честному полностью уделять занятиям.

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

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

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

Как стать Android-разработчиком — интервью с деканом

Александр Аникин — Senior Android developer и декан факультета Android-разработки в GeekUniversity. Он сам изучил профессию в GeekBrains, а сейчас руководит преподавателями и параллельно работает в крупной компании. Я расспросила Александра, что происходит с платформой Android, какие направления развития она предлагает программисту и как приобщиться к ней в GU.

 

— Привет! Расскажи, пожалуйста, о перспективах Android-разработчика, как ты их видишь. Чем это направление привлекло тебя и чем оно может заинтересовать сегодняшнего новичка?

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

Меня в мобильной разработке привлекает возможность сразу видеть результат своих трудов. Ты пишешь небольшое приложение за пару месяцев, выкладываешь его в Google Play и получаешь отдачу. Можно работать в одиночку или в маленькой команде, где вклад каждого участника важен и очевиден. Для сравнения: если в команде из 500 джавистов писать крупную серверную SAP-систему, результата своей работы можно не наблюдать годами и не увидеть никогда. Думаю, многим важно, чтобы их вклад был заметен.

Есть и еще один момент. Навыки Android-разработки позволяют создавать приложения для себя — полезные инструменты, которые всегда с тобой. Для меня смартфон — это часть жизни, неотъемлемая и интересная. Я понимаю, как работает мой гаджет, расширяю его возможности, делаю его «умнее» и так упрощаю свою жизнь. Это приносит мне удовольствие. И надо помнить, что Android-разработка нацелена не только на мобильные устройства, сфера ее применения гораздо шире.

— Помимо приложений для планшетов и смартфонов, что можно делать?

— Писать софт для Android Auto, телевизоров, часов и других устройств. Android для ТВ отличается от мобильной версии в основном управлением — все действия не через тачскрин, а через пульт.

Еще есть горячее направление Internet of Things: можно писать приложения для управления умным домом. Тут уже больше отличий от мобильной разработки. Умные дома — это тренд, который уже наметился и будет развиваться. Эти технологии ближе, чем кажутся, ведь не обязательно иметь комплекс устройств: лампочки и розетки Wi-Fi — тоже умный дом.

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

Будет развиваться индустрия — нужна ведь не только программная часть, но и аппаратная. Уже были «первые звоночки»: Microsoft HoloLens и Google Glass. Но технология еще недостаточно совершенна для реализации таких идей. Как только появятся недорогие и удобные очки (а это случится), произойдет взрыв! Дополненная реальность через смартфоны — это легко и это уже есть.

— Какими из перечисленных направлений вы занимаетесь на факультете Android-разработки?

— Пока мы занимаемся только разработкой приложений для смартфонов и планшетов. Это основа, от которой студенты могут оттолкнуться в дальнейшем изучении программирования и Android. Игры не делаем, потому что в GU есть факультет разработки игр.

Наши студенты изучают мобильную разработку за год и не в формате пятидневки: у нас два занятия в неделю по два с половиной часа каждое. За это время ты получаешь базовые знания, которые позволят устроиться на работу в качестве junior'а. Если ты очень упорно занимался и отдавал этому все силы, тебя могут взять на вакансию уровня middle. Будь у нас два года учебного времени, я бы с удовольствием добавил в программу курс по дополненной реальности.

— Помимо языка Java на факультете преподают Kotlin?

— Да. Недавно мы включили в программу изучение основ Kotlin. По итогам курса студенты пишут приложение для заметок, которое, по аналогии с Google Keep, хранит данные в облачном хранилище Firebase.

В планах — добавить еще курс профессиональной мобильной разработки на Kotlin.

— А еще какого типа проекты ждут студентов факультета?

— Сначала мы пишем погодное приложение, которое показывает сводку по любым городам и регионам. Дизайн интерфейса и дополнительные фичи — на усмотрение слушателей. Затем изучаем принципы Material Design и по этому курсу пишем приложение для просмотра фотографий — по аналогии с лентой Instagram.

Один курс посвящен популярным библиотекам: Dagger, Mosby, Butterknife, Room, Sugar ORM. Отдельный проект по итогу студенты не разрабатывают, вместо этого они внедряют изученные паттерны и библиотеки в свои текущие проекты.

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

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

— Что нужно для занятий мобильной разработкой? Как минимум среда разработки и Android-устройство для тестирования?

— Из обязательных требований — только компьютер. Даже Android-девайс иметь под рукой не обязательно, потому что тестировать приложения можно на эмуляторе. Гипотетически, код можно писать и в блокнотике, но на деле, конечно, понадобится среда разработки (IDE). Это бесплатная Android Studio, которую вы можете скачать из интернета.

Если сравнивать с iOS-разработкой, там тебе нужен Mac, который стоит в 5–10 раз дороже ПК под Windows или Linux. Плюс ты будешь ежегодно платить Apple по 100 $, чтобы иметь право что-то разрабатывать для их устройств. Это создает «имущественный ценз» — порог входа, который в Android-разработке практически отсутствует.

— Как изменилась Android-разработка за последние годы — с момента, когда ты пришел в это направление?

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

Я пришел в Android-разработку четыре года назад — тогда многие использовали IDE Eclipse, и я тоже начинал работать в ней. С тех пор все перешли на Android Studio — среду разработки от Google. Еще появились архитектурные компоненты: стало ясно, какой должна быть архитектура Android-приложений. До недавнего времени все писали кто во что горазд. В число основных языков разработки вошел Kotlin — теперь это стандарт, и многие новые приложения изначально пишутся на нем.

— То есть за Kotlin будущее? Почему этот язык так «выстрелил» в Android-разработке?

— Создатели Kotlin плотно работают с Google. А если учесть, что они (JetBrains) создали еще и среду IntelliJ IDEA, на которой базируется гугловская Android Studio, сотрудничество получается очень успешным. Кроме того, Java принадлежит компании Oracle, у которой сейчас правовые проблемы с Google.

Я не вникал глубоко в этот вопрос, но, насколько понимаю, Oracle хочет сделать Java платным для корпоративных клиентов или брать royalties за использование отдельных модулей. А поскольку на этом языке пишется софт для двух миллиардов Android-устройств, Google не в восторге от такого хода. Если бы не юридические препирательства, не уверен, что Kotlin так быстро поднялся бы в этой сфере. Но есть и другие причины.

Возьмем Go и Dart — они со временем наверняка станут официальными языками Android-разработки, но у них узкая специализация. Kotlin позволяет делать все, что может Java, и больше того. На нем можно написать сервер, мобильное приложение, нативную логику, среду сборки — что угодно. Плюс создатели Kotlin добавляют в язык фичи, специально заточенные под Android-разработку.

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

— До Android я всю жизнь занимался маркетингом. Работал классическим маркетологом, мобильным маркетологом, SMM, продакт-менеджером. Потом захотел сменить профессию и начал программировать.

Мобильная разработка интересовала меня давно, потому что я всегда любил гаджеты: оценил прелесть смартфонов, когда они только появились, и следил за проектами в этой области на KickStarter. Специально ездил в Москву на «Горбушку», чтобы купить первый iPhone — тот, который официально в России никогда не продавался. И с тех пор старался пользоваться самыми новыми и современными девайсами.

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

— С чего ты начал путь в разработку?

— Знакомые разработчики порекомендовали мне начать с Java. И этот совет до сих пор актуален, потому что Java — развитый, хорошо документированный язык с отличным community. Он использует строгую статическую типизацию и подходит новичку. Если ты знаешь Java, тебе легко перейти на Swift, Objective-C, Kotlin, Go, Dart. Это позволяет выбирать практически любое направление.

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

— Да. Месяца два я ковырялся с Java сам, затем понял, что лучше вложить деньги в свое образование и с помощью менторов закрепить и стандартизировать свои знания. Тогда я купил курсы в GeekBrains, прошел обучение и устроился junior'ом на первую работу.

— Какое-то портфолио удалось собрать?

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

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

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

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

— Через какое время в разработке ты решил преподавать?

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

— Чем ты занимаешься вне GeekUniversity?

— Работаю в крупном банке и пишу для него приложения.

— И там тоже проводишь собеседования? Ты на руководящей должности?

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

— До банка ты работал еще в нескольких компаниях?

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

Компания создает приложения под ключ — решает задачи заказчика силами своих программистов, тестировщиков, архитекторов, консультантов и других специалистов. В EPAM я стал senior'ом и затем перешел в банк, где работаю сейчас.

— А кого-то из выпускников GB и GU тебе доводилось брать на работу?

— Только один раз, но случай интересный. В октябре 2018 года ко мне пришел выпускник курса, который я вел около года назад. Он уже 6 месяцев трудился Android-разработчиком и хотел устроиться к нам преподавать. Я его сразу узнал — это был один из активных студентов. Мы провели собеседование, он его не прошел: не хватало базовых знаний для ведения вебинаров. На мой взгляд, преподавателю, который ведет курсы Android-разработки первого и второго уровня, нужна очень хорошая теоретическая подготовка. Потому что студенты, еще мало знакомые с Java, могут задать любой вопрос — не только про Android, но и по смежным направлениям. И ты должен быть готов хотя бы в общих чертах говорить о вещах, с которыми на практике не сталкивался.

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

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

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

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

Самые востребованные навыки 2019

Сервис LinkedIn исследовал свою аудиторию — это порядка 250 миллионов активных пользователей по миру — и выяснил, какие специалисты больше всего нужны бизнесу в 2019 году. Россия блокирует LinkedIn за нарушение закона о персональных данных, но СМИ пишут, что сервисом пользуются миллион россиян. В любом случае давайте посмотрим на тенденции и сделаем выводы.

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

Профессиональные навыки (hard skills)

Каждый блок навыков в списке мы дополнили ссылками на курсы и вебинары, которые знакомят с данными направлениями. Знания и стартовый опыт в большинстве перечисленных областей можно получить на занятиях в GeekBrains — называем конкретные курсы и факультеты.  

Облачные вычисления

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

Что посмотреть: «Ключ к облакам: как сделать свои приложения Cloud-Native»,  Amazon Web Services, «Облака для разработчиков».

Искусственный интеллект

Никуда не денешься — эра ИИ наступила. Тех, кто в стороне, постепенно вытеснят конкуренты.

Что посмотреть: «Введение в искусственный интеллект», «Введение в искусственный интеллект: компьютерное зрение», «Глубокое обучение: быстрый старт для разработчиков».

Этому учат на факультете искусственного интеллекта GeekUniversity. Как учат — мы рассказали здесь.

Аналитика и принятие решений

Компании собирают как никогда много данных — остро не хватает людей, способных на этой основе принимать обоснованные решения.

Что посмотреть: «Интеллектуальные системы поддержки принятия решений — краткий обзор», «Миллиардер о простой методике принятия решений».

Этому учат на занятиях по профессии Product Manager в GeekBrains. Техническими инструментами аналитика данных можно овладеть на факультете Data Science в GU.

Управление персоналом

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

Что посмотреть: «17 типичных ошибок начинающих руководителей».

Этому учат на занятиях по профессиям Product Manager и Project Manager, на курсе «Маркетинг для предпринимателей» в GeekBrains. Вы также можете решать задачи тимлида во время работы над командными проектами в GU и на стажировках.

UX-дизайн

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

Что посмотреть: «UX-дизайн для начинающих», «10 универсальных правил для дизайна мобильных приложений», «Основы тестирования пользовательских интерфейсов».

Этому учат на курсах по специальности «UX/UI-дизайнер» и на курсе «Проектирование интерфейсов» в GeekBrains.

Мобильная разработка

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

Что посмотреть: «Будущее уже здесь! React Native: один код для iOS и Android», «Чистая архитектура. Строим не дом, а приложение!», «Разрабатываем простое клиент-серверное Android-приложение», «Путь iOS-разработчика: первые шаги», «Введение в разработку под iOS», «Введение в server-side и разработку под iOS на Swift».

Этому учат на факультетах Android-разработки и iOS-разработки в GU, а также на специальностях «Программист Android» и «Программист iOS» в GeekBrains.

Производство видеороликов

70 % интернет-трафика приходится на передачу видео. Это любимый медиаформат потребителей, отсюда и спрос на производство роликов.

Что посмотреть: «Все о YouTube. Часть 2: как снимать видео», «Немного об операторских приемах», «Морти, мы в UltraHD! Как посмотреть любой фильм в 4K, дорисовав его через малоизвестную нейросеть», «Как монтировать видео?», «Увеличь это! Современное увеличение разрешения», А. Г. Соколов «Монтаж: телевидение, кино, видео», «Мультикоптеры: что нужно знать, чтобы купить дрон (или вовремя отказаться от покупки)».

Лидерство в продажах

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

Что посмотреть: «Управление продажами: инструменты, принципы, методы», «Как стать Data Driven организацией — рецепт Сбербанка», «Данные решают все».

Перевод

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

Что посмотреть: «Cинхронный перевод: как это устроено», «Яндекс.Перевод в офлайне. Как компьютеры научились хорошо переводить», «Нейронный машинный перевод Google», «Как Яндекс научил машину самостоятельно создавать переводы для редких языков».

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

Производство аудиороликов

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

Что посмотреть: «А много ли дроны дают молока? Приемы обратной разработки в звуковом дизайне», «Мечтают ли андроиды об электропанке? Как я учил нейросеть писать музыку», «Как „воевали“ и эволюционировали аудиоформаты и аудиотехнологии: большой исторический дайджест», «На что способен PC Speaker», «Атмосфера или боль: как выбрать музыку к компьютерной игре».

Обработка естественного языка

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

Что посмотреть: «Введение в искусственный интеллект: обработка естественного языка», «Главные достижения в области обработки естественного языка в 2017 году», «Обзор исследований в области глубокого обучения: обработка естественных языков».

Этому учат на факультете Data Science в GeekUniversity.

Научные вычисления

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

Что посмотреть: «Python для обучения научной информатике: моделирование систем массового обслуживания», «Основы MatLab в примерах и задачах», «Про котиков, собак, машинное обучение и deep learning»,  «SciPy, оптимизация», «Python: OpenCV-библиотека», «Scala: чем интересен данный язык».

Этому учат на факультете Data Science в GeekUniversity.

Разработка игр

По данным LinkedIn, игроделы в 2019 году будут обеспечены работой. Особенно высок спрос на разработку онлайн-игр.

Что посмотреть: «Разработка 2D-realtime игры на JavaScript», «Простая 2D игра-платформер на Unity», «SpriteKit. Клонируем Flappy Bird за один час», «Введение в разработку игр на Pygame», «В гейм-дизайнеры с нуля: как делать игры, если нет опыта» (части 2 и 3),  «Игра на 50 млн скачиваний за час на Unity3D!», «5 бесплатных open source движков для игр на JavaScript».

Этому учат на занятиях по специальности «Разработчик игр» в GeekBrains и на  факультете разработки игр в GeekUniversity. Вы также можете пройти курс по Unity, чтобы освоить самый популярный в мире игровой движок.

Маркетинг в социальных медиа (SMM)

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

Что посмотреть: «SMM: о чем говорят эти три буквы?», «Продвижение в соцсетях», «Instagram — алгоритмы 2018 года», «Креатив в SMM», «Тренды в SMM».

Этому учат на занятиях по специальности «SMM-менеджер» в GeekBrains. Доступны и курсы по более узким направлениям: «SMM: маркетинг в соцсетях»,  «SMM. Продвижение» (уровень 1 и 2), «Стратегия для продвижения в социальных сетях».

Анимация

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

Что посмотреть: «Анимация в iOS-разработке», «Эффект 3D с помощью белых линий», «Своя анимация переходов между экранами. Custom View Controller Transitions», «Анимация в Unity3d (state Machine Mecanim)».

Бизнес-анализ

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

Что посмотреть: «Хочу все знать: бизнес-анализ. Часть 1» (часть 2), «Как мы перестали бояться и полюбили Agile: работа в онлайн-кинотеатре ivi глазами сотрудников», «Налаживаем коммуникацию между бизнесом и UX: набор артефактов в помощь аналитику».

Этому учат на курсах по специальностям Product Manager и «Маркетинг для предпринимателей» в GeekBrains.

Журналистика

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

Цифровой маркетинг

Сфера digital на подъеме, а значит не обойтись без digital-маркетинга.

Что посмотреть: «Как сделать, чтобы лендинг продавал», «Секреты эффективного email-маркетинга», «Как настроить контекстный таргетинг?», «Как стать крутым SEO-специалистом», «Секреты интернет-маркетинга: осваиваем CPA-сети», «От b2b-приложений к массовому сервису по всему миру».

Этому учат на занятиях по специальности «Интернет-маркетолог», курсах «Маркетинг для предпринимателей» и «Контекстная реклама» в GeekBrains.

Промышленный дизайн

Умение сочетать практичность и красоту в дизайне окружающих человека предметов традиционно приносит доход.

Что посмотреть: «Дизайн-мышление и продуктовый дизайн. Разберемся с азами», «Роль промышленного дизайна в создании продукта для рынка электроники», «Промышленный дизайн для бизнеса» (и часть 2).

Конкурентная стратегия

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

Что посмотреть: «CustDev: определение потребностей пользователя», «Маркетинговая стратегия веб-студии/агентства», «Как от маленького сайта дойти до розничной сети и что для этого нужно», «Разработка электроники. Выигрышная стратегия технологического стартапа. Часть I», «Product-менеджмент: этапы создания продукта».

Этому учат на курсе «Основы продакт-менеджмента», на занятиях по профессиям Product Manager и «Маркетинг для предпринимателей» в GeekBrains.

Работа с клиентами

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

Что посмотреть: «Методичка по работе с клиентами. Для начинающих менеджеров веб-студий», «Как работать с неадекватными клиентами?», «Эх, раз, еще раз: что делать с клиентом в CRM после того, как он купил».

Тестирование ПО

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

Что посмотреть: «Тестирование web-приложений. TDD и Unit-тестирование на PHP», «Модульное тестирование (unit-тесты) на C#», «Тестирование: ручное или автоматизированное?», «Нагрузочное тестирование. Коротко о главном», «Тестирование ПО на виртуальных машинах и гостевых ОС», «Юнит-тестирование. Покрытие кода тестами», «Тестирование ПО наглядно», «Подготовка к собеседованию на стажера по тестированию».

Этому учат на курсах «Тестировщик ПО» и «Инженер автоматизированного тестирования ПО» в GeekBrains.

Data Science

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

Что посмотреть: «Другой GitHub: репозитории по Data Science, визуализации данных и глубокому обучению», «Визуальный анализ данных с Orange3», «Анализируем данные с Python-библиотеками Pandas и Numpy», «Первичный анализ данных в Python», «Библиотека imguag для увеличения данных в машинном обучении».

Этому учат на факультете искусственного интеллекта в GeekUniversity.

Компьютерная графика

Спецэффекты в кино, создание игрового контента, улучшение качества 3D-графики, потребность ускорить и упростить создание мультипликации — все это требует высококвалифицированного труда.

Что посмотреть:  «До чего докатилась 3D-графика», «learnopengl. Урок 1.1 — OpenGL», «Отечественная САПР-платформа nanoCAD Plus 10: универсальный комплекс для тех, кто проектирует», «Добавляем глубину 2D-спрайтам с помощью отрисованных вручную карт нормалей», «Зачем верстальщику векторная графика?».

Этому учат на занятиях по профессии «Гейм-дизайнер» в GeekBrains. Плюс на факультете разработки игр в GU есть факультативы по работе с 3D-графикой.

Корпоративные коммуникации

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

Что посмотреть: «6 основных принципов PR в кризисной ситуации», «Как бесплатно рассказать о своем стартапе в зарубежных СМИ с миллионной аудиторией», «Забудьте про пресс-релиз — используйте лучше этот формат».

Гибкие навыки (soft skills)

Эти навыки тренируют все студенты GeekUniversity. Их также оттачивают на курсах по профессиям Product Manager и Project Manager в GeekBrains.

Креативность

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

Умение убеждать

Мало создать крутой продукт, классную платформу или концепцию  — нужно еще заинтересовать окружающих.

Умение работать в команде

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

Гибкость

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

Умение распоряжаться временем (Time Management)

Навык на все времена (каламбур, да), чем бы вы ни занимались.

Откуда такие результаты

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

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

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

Курс Go-разработки в GeekUniversity: как это будет

GeekUniversity запускает факультет Go, где один из курсов будет вести Сергей Шипков — руководитель разработки юнита Communication в Avito. Занятия помогут студентам вникнуть в реалии коммерческой разработки и сделать первые интересные проекты для портфолио.

Чтобы узнать больше о языке Go и о том, чему научатся студенты, я задала вопросы автору и ведущему курса.

Привет! Расскажите о себе, пожалуйста: где работаете, какой стек технологий используете, как давно в IT.

— Привет. Работаю в IT уже десять лет, шесть из них — пишу backend-системы. Разрабатывал микросервисы, мобильные приложения, игры, сайты.

C 15 декабря 2016 года работаю в Avito. Начинал backend-инженером, через год стал руководить разработкой юнита Communication. Наша команда занимается развитием единой платформы уведомлений и защищает телефоны пользователей от SMS-спама и звонков.

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

Для защиты телефонных номеров пользователей интегрируемся с телеком-провайдерами.

На Go мы пишем сервисы, которые легко запускать в Kubernetes-кластере с помощью инструментов CI/CD.

Данные храним в MongoDB, Tarantool, аналитику и логи — в ClickHouse.

В качестве брокера сообщений используем RabbitMQ, для ошибок — Sentry, для мониторинга — Grafana, для алертинга — Moira.

Пишем юнит-тесты и тестируем производительность сервисов.

Какие именно сервисы вы пишете на Go и почему выбрали этот язык?

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

А еще в Go есть готовая среда, горутины и каналы. Это позволяет строить высоконагруженные системы, которые эффективно используют ресурсы машины.

Кстати, почему у других потоки, а у Go — горутины? Чем они отличаются?

Если коротко:

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

Когда в 2007 году Google начала разрабатывать Go, одним из основных требований к языку было создание встроенных средств распараллеливания вычислений, которые были бы простыми и эффективными.

Насколько разработчики Go сейчас востребованы на рынке? Есть ли дефицит таких специалистов? Кому вы советуете учить Go в первую очередь?

— Востребованность Go-разработчиков растет — бизнес модернизирует производственные процессы, чтобы:

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

Дефицит специалистов есть и остро ощущается. Например, за последние три дня на hh.ru появилось/обновилось больше 200 вакансий «Go-разработчик». Есть и смежные вакансии, где Go требуется как один из языков.

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

— Если говорить о первом языке, чем Go дружелюбен к новичку?

В языке Go всего 25 ключевых слов, в отличие от С# (102), С++ (82), Java (50), PHP (49), Ruby (42), JavaScript (41), Python 3.x (33), C (32), Python 2.7 (31).

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

Статическая типизация в Go исключает множество ошибок на этапе компиляции. В системе типов легко разобраться и практически невозможно запутаться. А еще в Go, как и в Python, ясные и четкие конструкции: нельзя написать всю программу в одну строку.

— В Go нет классов, наследования, исключений. Это ломает шаблон людям, привыкшим к объектно-ориентированному программированию. Насколько сложен переход к Go после Python или Java?

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

Создатели Go вдохновлялись иными семействами языков, нежели разработчики Java и Python. Из-за этого при переходе разница заметна. Но сделать его просто: если вы владеете хотя бы одним языком программирования, влиться в Go-разработку сможете за одну-две недели.

Чему вы будете учить на курсе? Какие проекты студенты выполнят под вашим руководством?

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

В рамках курса поработаем с базами данных, разберем принципы и методы проектирования, структуры данных и алгоритмы.

Чтобы применить все изученное на практике и добавить первый Go-проект в портфолио, студенты напишут простой микросервис объявлений.

Будут примеры из личного опыта?

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

Практическую часть будете писать на чистом Go или с использованием фреймворков?

— Сервис сделаем без фреймворка. По функциям это будет API для манипуляции объектами, плюс реализуем поиск.

Язык полностью зависим от благополучия Google или живет своей жизнью в сообществе Open Source?

— Инженеры Google и участники сообщества Open Source развивают Go вместе. Всего в работе над языком уже приняли участие более 1800 человек. В середине 2018 года вклад сообщества превысил объем доработок, внесенных основной командой Go.

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

Как вы оцениваете перспективы языка: не сместят ли его со сцены в обозримом будущем?

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

По результатам опроса Stack Overflow’s 2018 Developer Survey, Go сохранил заветное место в топ-5 самых любимых и пятерке наиболее популярных языков. Люди, которые используют Go, любят его. А те, кто еще не пробовал его на практике — хотят изучить.

Участники опроса ActiveState’s 2018 Developer Survey вывели Go на первое место в рейтинге: 61 % пользователей указали, что они «очень довольны» Go, из них 36 % — «чрезвычайно довольны».

Go стал «Самым многообещающим языком» по итогам опроса JetBrains’s 2018 Developer Survey. При этом 12 % респондентов работают с Go сегодня и 16 % намерены использовать его в будущем.

По результатам опроса HackerRank’s 2018 Developer Survey, 38 % разработчиков ответили, что намерены изучить Go.

Прежде чем записываться к вам на занятия, нужно что-то почитать, посмотреть?

— Для погружения в Go-разработку достаточно будет самого курса и любознательности.

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

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

Идеальный код на Python

Главная ошибка новичка: он пишет код и не думает о том, что его будет кто-то читать. Более того, он не берет в расчет, что сам будет вникать в эти строки спустя день, неделю или год. Новичок решает другую задачу: пишет код, который будет работать.

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

У нас уже вышла публикация о том, как написать код для собеседования и получить работу. Мы пошли дальше и задали вопросы об идеальном коде декану Python-факультета GeekUniversity Алексею Петренко. Он рассказал, что в коде выдает джуниора.

Отступы: все разные

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

Что новички делают не так

  • Неправильно выставляют отступы — их код просто не работает.
  • Используют неодинаковое количество отступов: в одной функции — два пробела, в другой — все шесть.
  • Используют разные клавиши, чтобы создать отступ: в одной функции — клавишу табуляции, в другой — два пробела.

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

Решение

Хороший тон — делать отступ четырьмя нажатиями пробела.

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

Для языка Python разработан официальный документ PEP-8, в котором прописаны правила красивого кода. Это соглашение всех программистов мира, которые пишут на Python, о том, какой код считать образцовым.

Переменные: непонятные

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

Что новички делают не так

  • Используют в качестве переменных обычные буквы алфавита: a, b, c, d, — не задумываясь о смысловой нагрузке.
  • Называют все переменные любимой буквой, добавляя цифры: а1, а2, а3. Если переменных двадцать, то будет и а20. Понять, какую информацию они хранят, очень сложно.
  • Используют строчную переменную l. Разработчики стараются избегать эту букву. Ее не принято использовать не только в Python, но и в других языках программирования, потому что при быстром чтении кода строчную l легко спутать с единицей. Аналогичная путаница возникает с O и 0.
  • Записывают переменные транслитом (massiv вместо array).
  • Придумывают новые переменные для общепринятых: для названия цикла (в цикле используют переменные i, j, k — именно в таком порядке, от внешнего i до вложенного k), для обозначения осей координат (x, y).

Решение

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

  • Если название переменной состоит из нескольких слов, используйте в Python нижнее подчеркивание: переменная со значением максимального размера — max_size.
  • Если именуете класс, записывайте каждое слово с заглавной буквы: имя_переменной должно отличаться от ИмениКласса.

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

Из этого вытекает еще одна ошибка новичков: они называют переменные так же, как функции.

В Python есть около 70 функций «из коробки»: функция sum() вычисляет сумму всех переданных аргументов, max() ищет максимальное значение. Если программист назовет переменную sum, она будет работать. Но такой переменной он переопределит функцию суммирования — и она сломается.

Пустые строки: отсутствуют или в избытке

Как правило, код джуниора идет сплошным текстом: в каждой строке — очередная строка кода.

Что новички делают не так

  • Не разделяют строки кода пустыми строками.
  • Отделяют каждую строчку кода пустой строкой.

В обоих случаях код очень сложно прочитать.

Решение

Код принято делить на логические блоки.

К примеру, если запрашивают информацию о пользователе, пишут несколько строк кода и оставляют одну пустую после блока.

Далее идет блок обработки информации. Если он содержит несколько подблоков, их тоже следует отделить пустой строкой.

Перед выводом информации в конце также добавляют пустую строку.

Слишком сжатый код

Что новички делают не так

  • Пытаются написать код максимально сжато и для этого помещают несколько составных операций в одну строку.

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

Решение

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

Советы декана начинающим разработчикам

  1. Ваш код будут читать другие программисты. Всегда думайте о том, как они его воспримут, насколько он будет понятен коллегам.
  2. Потратьте время на изучение синтаксиса, почитайте стандарты PEP8. Есть англоязычная версия и перевод. Работодатель будет встречать «по одежке»: ваш код должен выглядеть красиво.
  3. Если Python — не первый для вас язык программирования, повторяйте требования стиля. Когда разработчик пишет, не соблюдая их, возникает путаница: то ли перед нами человек, у которого в голове перемешались все языки программирования, то ли новичок, который вообще ничего не знает о Python.
  4. Воспользуйтесь командой import this. Это пасхалка от разработчиков: она выводит свод правил хорошего кода. Почаще перечитывайте этот Дзен Python — и ваш код будет идеален.

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

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

22 фев 19, 16:50
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0
Темы с 11 по 16 | всего: 16

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

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

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

Люди

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