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

Основная статья: Программирование

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

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

Сходства и различия

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

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

Иностранный язык всегда немного напоминает родной. Все люди живут в одном материальном мире. Часть слов мы можем усвоить сразу: table — стол, а cat — кошка. Некоторые более абстрактные вещи тоже понятны — как hello или good morning.

Встречаются и более сложные конструкции, смысл которых не очевиден — вряд ли новичок сумеет с ходу разобраться, почему how do you do означает «как дела?», а take care — «береги себя». В этих выражениях перевод отдельных слов мало что дает для понимания смысла. Подобные словосочетания лучше запоминать целиком, не вникая в их внутреннюю логику. 

В языках программирования тоже есть элементы, которые понятны сразу — как операторы сложения (+) или умножения (*). Но существуют и конструкции, которые на первых порах приходится заучивать. Например, тег, открывающий код на JavaScript:

<script type="text/javascript">

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

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

Словарный запас

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

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

Кроме того, большинство ключевых слов (if, void, while, for или print) взяты из английского языка. И если он вам знаком, будет просто запомнить их и увязать с новыми значениями.

Синтаксис

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

В английском вопросительные предложения отличаются от повествовательных обратным порядком слов: «Mark will go to the park» и «Will Mark go to the park?». Только корректная конструкция даст вашему собеседнику понять, сообщаете вы ему новую информацию или ждете ответа от него. 

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

result := a + (b * 2) / c

и 

result := (a + (b * 2)) / c

Эти выражения дают разные результаты при одинаковых значениях переменных a, b и c. 

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

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

Семантика

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

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

Главное — видеть цель! 

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

Цель нужна и при обучении программированию: найти работу в IT, создать гениальное приложение или разработать программу для себя. Цель — это стрелка компаса, которая поможет ориентироваться в программировании. 

Первый язык — самый сложный

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

Сосредоточьтесь на изучении одного языка. Вы не сможете освоить сразу все — и даже пять самых популярных разом не осилите. Это не только трудно, но и непрактично. Вы ведь не стали бы одновременно изучать японский, немецкий и зулусский, не так ли? Так же нет смысла пытаться охватить сразу Python, Swift, Java и C++.

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

Elementary. Hello, world!

Знакомясь с иностранным языком, вы прежде всего узнаете, как сказать «Привет». И чаще всего в первую очередь при изучении ЯП разбирают, как вывести на экран приветствие «Hello, world!».

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

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

Intermediate

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

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

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

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

Не отчаивайтесь! Помните, что это нормальная часть обучения. В начале пути вы быстро шли вперед — потому что постигали самые простые вещи. Чтобы приобрести более сложные навыки, требуется больше времени, и прогресс будет уже не таким быстрым. Запаситесь терпением. Если чувствуете, что топчетесь на месте, — дайте себе немного отдохнуть, чтобы не перегореть. Решайте задачи на своем нынешнем уровне, общайтесь с коллегами. А когда почувствуете силы — продолжайте совершенствовать знания и навыки!

Advanced

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

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

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

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

Готовимся к первым шагам

Для тех, кто в начале пути, мы сформулировали несколько простых советов.

Не пытайтесь охватить сразу все

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

Начните с простых понятий и конструкций. Освойте базовый «словарь» — важнейшие ключевые слова языка. Изучите принципы синтаксиса. И двигайтесь дальше! 

Возьмите учебник, а не документацию

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

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

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

Найдите наставника

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

Погружайтесь в языковую среду

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

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

Не бойтесь неудач

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

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

Практика, терпение, упорство и опыт — отличная формула для изучения языков программирования!

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

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

15 типов айтишников, которые есть в каждой компании

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

МЧС

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

Нуб

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

Евангелист-новинок

Знает Go, Scala, Julia. Каждые полчаса обновляет Hacker News. Всегда готов обсудить новую тему, поэтому легко сбивается с курса интересной идеей. Несмотря на это, продуктивен в работе. С ним легко найти общий язык — главное зацепить его интересной инновационной штукой.

Гуру

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

Балласт

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

Мечта 

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

Дата-сайентист

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

Звезда

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

Аналитик

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

Фанатик

Знает один язык и постоянно его использует. Никто не может его убедить, что что-то может быть лучше. 

Человек-ТЗ

Работает строго по ТЗ или БТ, не обращая внимания на очевидные несоответствия здравому смыслу. Даже на опечатки. Иногда просто из-за склада ума — человеку проще иметь дело с четко определенными задачами. Но это бывает и своеобразным проявлением итальянской забастовки: программист может быть не согласен с решениями Product Manager’а или Product Owner’а, но выполняет их предельно точно.

Эксперт по кибербезопасности

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

FAQ-ер

Гордится своей экспертизой и любит это показывать, поучая новичков. Любит посылать людей в FAQ или поисковики. Любимая фраза: «Тебя что, в гугле забанили?».

Вдохновленный Джобсом

Прочитал биографию Стива Джобса, и она перевернула его мировоззрение. Мечтает запустить свой суперуспешный стартап, который вскоре станет транснациональной корпорацией. Вычислить этот типаж можно по тому, что он пользуется техникой только от Apple. Вероятность особенно высока, если он пишет на JavaScript или Swift.

«Нейросети головного мозга»

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

Узнали себя в каком-то описании? Или, может, вспомнили еще какой-то типаж?

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

16 авг 19, 14:31
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

Обучение программированию через тестирование или TDD

Еще в XIX веке шотландский автор Самуэль Смайлс написал: «Мы учимся мудрости на ошибках гораздо быстрее, чем на успехах». Этому утверждению созвучны многие методологии разработки, где особое место уделяется тестированию, — например, DevOps и Agile. Лучшей считается та проверка, которая быстро находит ошибки. Если баги не обнаружены — цикл неудачный.

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

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

Это не означает, что обучение через одну лишь практику эффектно. Необходима правильная градация. Такая, где на первом месте — анализ возможных ошибок.  Это Test-Driven Development (TDD), или разработка через тестирование — частное направление экстремального программирования. Суть этого принципа сводится к следующему:

  1. Составляется тест для небольшого отрывка кода, описывающего «базу».
  2. Создается код, прогоняется тест.
  3. По мере увеличения объема кода тест прогоняется повторно, каждый раз подтверждая правильность.

Отметим плюсы такого подхода:

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

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

Чтобы погрузиться в тему TDD, почитайте классные вводные статьи:

  1. Обзорный текст на Habr.
  2. Подробная статья на Technology Conversations.
  3. Наглядный туториал на Agile Data.
  4. Тест на вашу совместимость с TDD на Scott Logic.

И несколько книг:

  1. Экстремальное программирование: разработка через тестирование. Кент Бек.
  2. The Art of Unit Testing: With Examples in .NET. Roy Osherove.
  3. xUnit Test Patterns: Refactoring Test Code. Gerard Meszaros.
  4. Test-Driven Web Development with Python. Harry Percival.
  5. Growing Object-Oriented Software, Guided by Tests, Steve Freeman.

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

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

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

Из автосервиса — в веб-разработку 

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

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

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

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

— Куда можно пойти работать с дипломом историка?

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

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

— Как вы стали автомехаником и где учились?

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

Выучился на автомеханика на курсах ДОСААФ: там работают хорошие преподаватели и есть гараж, где дают покопаться во внутренностях автомобиля. Когда пошел на стажировку, у меня были и теоретическая база, и опыт. В итоге остался работать там, где стажировался, — в Bosch-service.

Почему так мало проработали автомехаником — всего год?

— Эта работа мне очень нравилась. Я бы не отказался и дальше этим заниматься, если бы там можно зарабатывать по-человечески. Сервисов в Кемерово много, а загрузки мало, и 40 % дня сидишь без работы.

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

Есть объективный потолок заплаты, и очень невысокий. При идеальном раскладе, если целыми днями, без перерывов и обеда, работать на какой-нибудь замене колодок, которая делается почти вдвое быстрее нормо-часа, то за месяц можно заработать 64 800 рублей. Это предел и идеальная модель, которая в жизни никогда не осуществится. А так автомеханик зарабатывает от 20 до 40 тысяч рублей, и 40 — это очень круто.

Справедливости ради, стоит заметить, что у автомехаников (если в сервисах нет отдельно шиномонтажников) два раза в год случается праздник — зарплата достигает 80 тысяч. Это сезон «переобувания». Примерно неделю автомеханики работают по 18 часов в день без перерывов. Это адски тяжелый труд. Причем половину заработка можно легко потерять, в спешке испортив дорогой диск. 

— Как вы пришли к идее заняться разработкой?

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

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

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

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

Нашел интерактивные курсы HTML Academy, затем CSS освоил. Потом понял, что этого недостаточно, — чтобы сделать свой сайт, нужно еще выучить PHP. Прошел и этот курс. Попутно изучал дополнительные технологии, пытался знакомиться с JavaScript, улучшал навыки в верстке.

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

— Помогли новые знания?

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

Первая моя работа была связана с СRM — меня взяли в стартап, у которого не было ни лида, ни наставника, ни четкого бизнес-плана. Дали доступ к серверу, ТЗ и сказали «Дерзай!». Это была настоящая школа выживания — перед тобой ставят задачу, с которой ты совершенно не знаком, и приходится искать решение с помощью Google. Тем не менее я продержался полгода, несмотря на то, что зарплату они стабильно задерживали, а придраться пытались к каждой мелочи. При этом все равно я получал больше среднего дохода по области.

Благодаря этому опыту вскоре я устроился на более высокооплачиваемую работу — в веб-студию из Санкт-Петербурга, которая занимается поддержкой CRM, созданных на базе vTiger. С ними я удаленно сотрудничаю уже полтора года. Одновременно работаю в штате одной местной компании — разрабатываю узкоспециализированную рекламную веб-площадку для привлечения клиентов.

— Почему выбрали GeekBrains и рассматривали ли другие образовательные курсы?

— Я к тому времени уже работал в веб-студии, и мне нужно было получить новые знания — поучиться на системного администратора, чтобы брать дополнительные задачи и больше зарабатывать. Выбирал между несколькими курсами — у GeekBrains курс дороже, чем у некоторых конкурентов, но самый интересный по наполнению. Я показал программу знакомому сисадмину из Израиля, и он одобрил соотношение цены и качества. По JavaScript курс прошел уже накатом — мне понравилось, как в GeekBrains преподают. К тому же с таким же объемом знаний за эти деньги ничего больше не предлагалось.

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

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

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

С JavaScript эту ошибку я решил не повторять и проходил курсы планомерно, шаг за шагом, — так оказалось эффективнее и удобнее. Я, собственно, еще учусь. Продвинутый курс по JavaScript у нас закончился в начале июня, потом начался по React. Еще мне предстоит пройти бонусный курс, который мне подарили на Новый год, — Node.js. Так что буду учиться до конца лета.

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

А лайфхаков, как сочетать учебу и работу, у меня просто нет: я порой ложусь спать в 6 утра. Из-за разницы во времени с Москвой занятия в GeekBrains для меня начинаются в 12 часов ночи. И для программиста на удаленке работать ночью — обычное дело. 

— Не страдает ли семейная жизнь при таком насыщенном графике?

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

— Довольны ли вы сейчас своими доходами?

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

— Как планируете развиваться?

— Одна из перспективных идей — попробовать себя в разработке игр. Я уже посмотрел, где можно этому учиться, к примеру: на GeekBrains есть курс по С++ с интересным содержанием, на другом ресурсе — хороший курс по Unreal Engine. На работу в зарубежных компаниях пока не рассчитываю, для этого мне нужно подтянуть английский.

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

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

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

10 правил бесшовного перехода в IT из любой сферы

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

Забудьте про возрастные стереотипы

Главная ошибка в любом начинании — ожидать немедленных результатов. Перед людьми со сложившейся карьерой вопрос о том, стоит ли идти в IT, стоит особенно остро, так как общество и СМИ навязывают нам возрастные стереотипы. Считается, что к 25, 30, 35 годам (по советской привычке мы зачастую мыслим пятилетками) специалисты должны достигать карьерных целей.

В действительности же никакой проблемы возраста в IT нет. Как показывает практика, многие люди только к 30 годам понимают, чем хотят заниматься профессионально, поэтому лишние 5–10 лет точно не станут переломными. Яркий пример — Игорь Разумов, выпускник GeekUniversity. Он рискнул юридической карьерой и не пожалел. А все потому, что обратил свой возраст и опыт в плюс. Более того, у нас в практике были случаи, когда люди и после 50 переходили в IT и становились востребованными специалистами. Поэтому про возраст точно можете забыть.

Составьте план

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

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

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

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

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

Создайте финансовую подушку

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

Подготовьте финансовую подушку — и убьете двух зайцев: 

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

Учитесь профессии, а не конкретным навыкам

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

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

Подходите к учебе серьезно

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

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

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

Вовремя начинайте искать новую работу

Практика показывает, что к финальной трети комплексного обучения на онлайн-курсах студенты готовы браться за активный поиск работы. Такие соискатели, вероятно, будут соответствовать не всем требованиям вакансий (даже для джуниоров), но на этом этапе куда важнее научиться общаться со специалистами и HR в IT. 

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

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

Не опускайте руки после отказов

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

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

Заручитесь поддержкой близких

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

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

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

Всегда ставьте новые цели

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

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

Делитесь своими историями

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

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

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

  3. Позволяет создать «карту развития». Это индикатор того, на каком уровне вы были и чего достигли сейчас.

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

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

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

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

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

Как я стал frontend-разработчиком и получил работу в Mail.ru

Вениамин Шитиков выиграл бесплатное обучение фронтенд-разработке, после чего прошел стажировку и сейчас работает в GeekBrains. Как студент стал сотрудником образовательной площадки? Сейчас узнаете.

— Вениамин, какое у тебя было образование и где ты работал до GB? Откуда у начальника склада подготовка, чтобы выиграть бесплатное обучение IT-профессии при огромном конкурсе? :)

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

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

— Ты родился в Узбекистане?

— Родился я в Ленинграде, но, когда мне было семь лет, мы с мамой переехали в Ташкент. Там я вырос, окончил школу и университет. В 2002 году переехал обратно в Питер к отцу. Считаю себя петербуржцем до глубины души: люблю свой город со всеми его дождями, парадными, поребриками и гречей с курами. 

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

— Когда ты понял, что разработка — это твое?

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

К 2013 году я вырос в начальника большого склада. Первое время было интересно и финансово все устраивало. Но за пять лет многое изменилось. Сейчас логистика — звено, на котором все пытаются экономить. И получается, что работы на складах становится больше, а зарплата не растет. Изменилось и отношение к этой сфере. Я понял: надо что-то менять. 

Проанализировал рынок вакансий и свои сильные стороны: образование и математические способности, — и решил попробовать себя в программировании. 

Сначала я выбрал язык Java: читал о нем, пробовал писать код — и убедился, что мне это интересно. Начал искать курсы и узнал про GeekBrains. Собирался записаться на платное обучение, но увидел, что проходит замечательный конкурс :) Можно было выиграть бесплатное обучение фронтенду или Ruby.

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

— И почему между Frontend и Ruby ты выбрал первое?

— Это произошло спонтанно: для поступления на специальность «frontend-разработка» во вступительных задачах нужно было использовать JavaScript. По сравнению с Ruby язык JS показался мне более близким к Java и потому более понятным. 

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

— Задания показались тебе простыми?

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

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

— Мы с двумя ребятами-бэкендерами сделали сервис для владельцев парковок Parking online. Это решение для автоматизации учета и управления, а также электронное рабочее место для оператора парковки.

Скриншот страницы авторизации

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

Создание тарифа с помощью сервиса Parking online

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

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

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

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

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

Курировал нас тимлид из GeekBrains. Я и сейчас в его команде.

— Чему пришлось учиться в период стажировки? 

— С самого начала пришлось осваивать новые технологии: GraphQL, TypeScript, Apollo, Styled components.

— Когда ты шел на стажировку, ты уже знал, что по итогу можешь получить позицию Junior в GB?

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

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

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

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

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

— Практически не изменился. К тому, что я назвал выше, остается добавить как раз базовые вещи, изученные в GB: современный JS, HTML 5, CSS-grid.

— В каком направлении собираешься развиваться дальше, что изучать?

— Сейчас осваиваю React Native. Буду дальше развиваться как frontend-разработчик. Мне нравится это направление — оно востребовано и, как мне кажется, на этом поприще у меня многое получается. Тем более, есть у кого учиться: мне очень повезло с тимлидом. Помимо обширных знаний он обладает отменным терпением :)

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

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

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

Первая работа в IT с переездом в Москву: как это бывает

Никите Ермакову 26 лет, раньше он жил в Старом Осколе Белгородской области и работал резчиком металла на металлургическом комбинате. Программирование начал изучать менее года назад, а сейчас — Junior-разработчик Java в компании EPAM Systems. Это крупнейший производитель заказного ПО в мире. 

Первую работу в IT Никита получил в процессе обучения. Но были на пути и сомнения, и проваленное собеседование, и интересные учебные проекты.

— Привет, Никита! Ты уже завершил обучение или еще продолжаешь?

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

— Чем сейчас занимаешься в EPAM?

— Работаю над проектом, который был написан довольно давно, так что многие инструменты, используемые в нем, мы на уроках в GU не затрагивали. Например, Tomcat Vault, Axis2 или Sybase. Естественно, приходится все это изучать уже самостоятельно. 

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

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

— Как ты нашел эту работу? На каком этапе обучения?

— Работу я начал искать примерно в середине третьей четверти, и поначалу с вакансиями было совсем глухо. Я постоянно отслеживал предложения на сайтах типа HeadHunter. Еще попробовал «Мой круг», но там вакансий для начинающих Java-разработчиков не оказалось. 

Я прошел весь путь ищущего работу студента: откликался на вакансии, выполнял тестовые задания, дистанционно решал кейсики со Дня карьеры в GeekBrains.

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

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

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

Что было делать дальше? Я посоветовался со знакомым Java-программистом, который работал в EPAM. Он помог мне составить новое резюме на вакансию в компании. Я читал, что подобная практика широко применяется в Google и других крупных западных компаниях: сотрудники могут приглашать на вакансии своих знакомых и друзей. В моем случае это сработало. 

— Как выглядит хорошее резюме в EPAM? Чем оно отличалось от предыдущего?

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

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

Тестовое задание и собеседование

Мне ответили и предложили выполнить тестовое задание. Нужно было написать консольную программку типа CRUD. 

Как мне показалось, работодателя больше интересовала архитектура программы, нежели ее конкретная реализация. Главным было показать, что умеешь практически подходить к задаче и создавать гибкий код, в котором можно что-то быстро заменить. После курса по фреймворку Spring я уже понимал, как это должно выглядеть. Да и книга «Совершенный код» очень помогла разобраться в таких вещах. В плане инструментов оказалось достаточно простого Java Core.

Предложенное мной решение подошло — пригласили на собеседование. 

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

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

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

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

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

Когда готовился к собеседованиям, обогнал программу обучения GeekUniversity: раньше времени разобрался в паттернах проектирования, одолел половину книги о Spring. Помимо занятий и методичек читал и смотрел сторонние источники. Все решает мотивация.

— Переезд из Старого Оскола в Москву был связан с работой?

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

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

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

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

Не секрет, что рынок перенасыщен джуниорами и на старте приходится брать его брутфорсом (буквально — «грубой силой»). Это тоже подталкивало к раннему поиску работы. 

Переезд

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

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

— Почему ты решил идти в разработку и выбрал язык Java? 

— Оглядываясь назад, думаю, что предпосылок заняться программированием было две. Первая — с детства с компьютерами дружу. Конечно, сначала это было связано с игрушками, но я и обработкой изображений в Photoshop увлекался, и ролики монтировал в Sony Vegas, и в 3D-моделировании успел получить минимальный опыт — делал игровые карты для Counter-Strike 1.6. Разные бытовые вопросы с «железом» и «софтом» тоже сам старался решать, когда нужно было поднять домашнюю сеть, модернизировать или настроить оборудование, побороть «синий экран смерти», очистить ПК от вирусов и их последствий. 

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

Выбор языка

Когда я планировал учиться, посоветовался с товарищем, о котором уже рассказывал. Он предложил для начала попробовать Python либо Java. 

Про Java я к тому моменту чаще слышал, так что интуитивно был настроен на этот язык. Позже я познакомился и с другими: С++ и JavaScript. Пробовал на них писать и понял, что с первоначальным выбором не ошибся. Я хоть и люблю производительные приложения и переносимость, работать с Java мне приятнее. Это дружественный человеку язык программирования, что для меня важно.

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

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

Дальше я работал над облачным хранилищем. Захотелось добавить имитацию окошек Windows средствами Swing, и получилось интересно. Это привнесло в процесс каплю творчества — а творчество я люблю.

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

Немного о самой игре. Это классический космический shoot ‘em up: летим вперед и крушим всех на своем пути. Жанр и тематику мы выбрали на первом занятии, в качестве движка использовали LibGDX. По итогам курса достаточно было сдать что-то типа бесконечного уровня с несколькими типами противников, но мне захотелось большего. 

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

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

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

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

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

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

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

Тем не менее я внимательно слежу за проектом одногруппников: мотаю на ус, с какими проблемами они сталкиваются. Наверное, самое интересное пропускаю. :)

— Какие впечатления от GeekUniversity?

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

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

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

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

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

— Какие перспективы видишь для себя в профессии? В каком направлении хочешь развиваться дальше?

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

Когда я готовился к собеседованиям, просмотрел 24-часовой курс по Java, который записал Yakov Fain по своей книге. Яков — очень умный человек, в свое время компания Sun Microsystems присвоила ему титул Java Champion. Меня этот курс очень вдохновил — захотелось как можно скорее набрать опыта, стать бывалым разработчиком, возможно, получить какие-то награды. 

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

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

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

Что такое искусственный интеллект?

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

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

Что такое искусственный интеллект?

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

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

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

Когда начались разработки ИИ?

Летом 1956 года в Дартмуте ученые собрались на семинар, посвященный вопросам искусственного интеллекта (там и был сформулирован этот термин), а уже в следующем году появилась концепция первой искусственной нейросети — перцептрон. В 1960 году Фрэнк Розенблатт создал на основе этой концепции компьютер «Марк-1». Первый в мире нейрокомпьютер учили распознавать буквы латинского алфавита. Но несовершенство техники 60-х и сложность процессов не позволили довести технологию до ума, а ее разработчик вскоре погиб. О нейрокомпьютерах забыли на 20 лет.

Лишь в 1980-е концепции нейросетей снова принялись изучать всерьез. Техника уже была достаточно мощной, да и критиков поубавилось: умная электроника быстро делала успехи. То, что два десятилетия назад казалось мечтой, стало выглядеть вполне реальным и достижимым. Впрочем, чтобы найти правильные подходы к обучению нейросетей, потребовалось еще 20 лет. Только в середине 2000-х ученые нащупали верный путь и искусственные нейросети начали свое победное шествие по планете.

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

Описание искусственного нейрона

Искусственные нейронные сети создавались как математическая модель человеческого мозга. Для этого ученым Уоррену Мак-Каллоку и Уолтеру Питтсу пришлось выработать теорию деятельности человеческого мозга. 

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

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

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

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

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

Отличие искусственного интеллекта от естественного

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

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

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

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

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

 Как сравнить человеческий и компьютерный интеллекты?

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

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

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

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

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

 У компьютерных программ есть IQ?

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

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

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

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

Что такое тест Тьюринга?

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

Тьюринг начал с определений, чтобы уточнить вопрос о том, может ли машина думать, — он показался ему слишком размытым. Что за машина имеется в виду? Что вообще означает «думать»?.. Было очевидно, что такой вопрос изначально несет в себе иррациональное зерно, которое не позволит дать на него правильный ответ. Результатом размышлений ученого стал тест Тьюринга — эксперимент, в котором человеку («судье») предлагается общаться с двумя собеседниками: человеком и компьютером. Задача судьи — понять, кто есть кто. Если в результате он не уверен, который из его собеседников — программа, или ошибся в оценке, считается, что машина прошла тест.

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

Процессоры для ИИ

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

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

Тензорный процессор Google Tensor Processing Unit 3.0 (TPU)

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

Рынок технологий искусственного интеллекта

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

Мировой рынок

К 2022 году прогнозируемый объем рынка ИИ достигнет 52 миллиардов долларов. Возможно, это не такая уж большая цифра — к примеру, рынок компьютерных игр к этому же году превысит 130 миллиардов, а рынок смартфонов уже в 2018 был в 10 раз больше — 520 миллиардов. 

Но рынок ИИ показывает беспримерно высокий рост — по некоторым оценкам, он увеличивается примерно на 30 % ежегодно (аналогичные показатели для игр и смартфонов — около 5 %). Если такие темпы внедрения технологий сохранятся еще несколько лет, можно ожидать, что скоро искусственный интеллект будет буквально повсюду.

Свой вклад в развитие ИИ вносят крупнейшие мировые IT-компании: Google, IBM, Intel, Nvidia. Среди стран лидируют США, Китай и Великобритания. 

В России

Если в 2017 году проектов с использованием ИИ в России было всего несколько десятков, то в 2018 — уже сотни. По прогнозам экспертов, к 2020 году объем рынка достигнет 28 миллиардов рублей (примерно 450 миллионов долларов). Активнее всего новые технологии используются в финансовой сфере, а также телекоммуникациях, ритейле и энергетике. Некоторые компании нанимают команды специалистов, занимающихся исключительно вопросами разработки и внедрения систем ИИ.

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

Влияние искусственного интеллекта на рынок труда

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

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

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

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

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

Где используется ИИ?

Говоря кратко — почти везде! 

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

ИИ в интернете

Всякий раз, когда вы произносите «Окей, Гугл» или «Привет, Сири», вы обращаетесь к искусственному интеллекту в вашем смартфоне. Он способен распознать в сигнале с микрофона обращенную к нему речь. Он записывает ваш вопрос и пересылает на серверы Google или Apple. Там к делу подключается второй ИИ, который распознает речь и переводит вопрос в понятный компьютеру формат. А затем третий выполняет поиск ответа по гигантским базам данных. Наконец, ответ возвращается на ваш смартфон, где ИИ, генерирующий человеческий голос, озвучивает его для вас. И все это за доли секунды.

ИИ на транспорте и в логистике

Впечатляющее применение искусственных нейросетей — беспилотные автомобили. За последнее десятилетие разрабатывать машину, которая была бы способна самостоятельно перемещаться по дорогам, взялись многие автопроизводители — General Motors, Nissan, BMW, Honda, Volkswagen, Audi, Volvo, а также компании Google и Tesla. Беспилотники пока не стали массовым явлением на улицах наших городов, но они явно делают успехи. 

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

ИИ в финансах

В финансовой сфере ИИ применяют для прогнозирования рисков, выявления мошенничества. Корпорация MasterCard, создавшая международную платежную систему, несколько лет назад внедрила сервис Decision Intelligence. Он призван повысить точность подтверждения подлинных транзакций и снизить вероятность ложных отклонений платежей — это ошибочное срабатывание встроенной системы безопасности, которая не позволяет совершить корректную транзакцию, принятую за мошенническую. Подобные ошибки наносят вред как продавцу, теряющему клиента, так и покупателю, не получающему товар. Убытки получаются даже выше, чем ущерб от мошенничества. 

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

ИИ в медицине

В здравоохранении ИИ развивается в первую очередь в области диагностики заболеваний. Искусственные нейросети научились распознавать раковые опухоли на рентгеновских снимках, КТ, маммографии и МРТ. Опытному врачу на изучение снимка требуется около 20 минут, а нейросети — считаные секунды. Так что пациент может узнать результаты обследования практически мгновенно. Особенно приятно, что такие разработки ведутся и в России.

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

В обороне и военном деле

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

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

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

В военно-промышленном комплексе ИИ поможет повысить обороноспособность стран, но может стать и оружием террора.

В бизнесе и торговле

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

Согласно данным TAdviser, в 2018 году свыше трети всех доходов ритейла было получено благодаря рекомендациям на основе ИИ! 

ИИ в спорте

Здесь ИИ-технологии используют для прогнозирования результатов матчей — такие системы созданы компаниями UBS, Commerzbank и Microsoft. Учитывается опыт команды и отдельных игроков. Порой прогнозы оказываются верными, но зачастую искусственный интеллект серьезно просчитывается. Человеческий фактор способен опровергнуть любые предсказания.

ИИ в культуре

Машина не может заниматься творчеством, потому что у нее нет воображения! Или все же может?

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

Музыка

Как звучала бы флейта, если бы была ситаром? Синтезатор NSynth Super от Google использует нейронную сеть, чтобы создавать совершенно новые звуки на основе разных инструментов.

Проект Sony Flow Machines идет дальше. Анализируя подборку песен, электронный композитор вырабатывает собственную оригинальную мелодию. В 2016 году компания представила сингл Daddy's Car, основанный на музыке The Beatles. 

Alice, разработанная в рамках стартапа Popgun, умеет «подыгрывать» человеку, создавая музыкальные импровизации. Американская певица Тэрин Саузерн выпустила альбом в соавторстве с нейросетью Amper. А проект Endel способен по нажатию одной кнопки создавать композиции, созвучные настроению пользователя. 

Живопись

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

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

Видео

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

Литература

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

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

А компания Narrative Science разработала электронного журналиста. Пока статьи, написанные ИИ, просты по содержанию, но руководство компании с оптимизмом смотрит в будущее и верит, что к 2025 году до 90 % текстов в интернете будут написаны с помощью машинного интеллекта.

В 2016 году книга «День, когда компьютер напишет роман» вышла в финал японской литературной премии имени Хоси Синъити. Это произведение почти полностью создал искусственный интеллект.

Игры

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

В 2016 году между ИИ даже проводился чемпионат по Doom. А система Deep-Q-Network обучена играть на классических аркадных автоматах Atari. Зачастую она показывает результаты до 30 % выше, чем у опытных игроков.

В XX веке считалось, что искусственный интеллект можно будет считать достаточно мощным и развитым, когда он сумеет обыграть чемпиона мира по шахматам. Этот этап компьютеры прошли уже давно — еще в 1997 году Deep Blue одержал победу над Гарри Каспаровым (причем это была алгоритмическая программа, а не искусственный интеллект). 

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

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

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

Ответим рационально на вопросы, связанные с далекими перспективами развития ИИ.

Цель ИИ — поместить человеческий разум в компьютер?

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

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

ИИ стремится достичь человеческого уровня интеллекта?

Цель ИИ — помогать людям и брать на себя сложные или рутинные задачи. Для этого ему вовсе не обязательно поддерживать беседы на философские темы или сочинять поэмы. 

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

Когда искусственный интеллект достигнет человеческого уровня?

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

Человек может сегодня заниматься музыкой, а завтра взяться за программирование на C++ — благодаря невероятной сложности мозга. В нем 86 миллиардов нейронов и бесчисленное количество синаптических связей между ними. 

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

Скорость компьютеров позволяет им обладать интеллектом?

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

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

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

Может ли нейросеть развиваться естественным путем?

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

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

Риск для человеческой цивилизации — есть ли он?

Риски, связанные с новыми технологиями, всегда существуют. Вопрос — в чем они заключаются. 

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

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

Тем не менее мы должны помнить, что ИИ — наша разработка. Мы их проектируем, создаем, обучаем, вкладываем «мысли». Значит, и ответственность за их поведение — на нас. 

Четвертая революция

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

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

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

17 июл 19, 15:33
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
Темы с 21 по 30 | всего: 97

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

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

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

Люди

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