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

Блог

«Введение в искусственный интеллект» — курс для подростков

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

Почему искусственный интеллект — это круто

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

Ещё несколько очевидных направлений, где требуются специалисты по Data Science:

  1. Бизнес-аналитика. Кто откажется иметь в штате человека, который понимает, что и как искать в данных, чтобы улучшить показатели бизнеса?
  2. Медтех. Дата-сайентист может проанализировать данные пациентов, скажем, с сердечно-сосудистыми заболеваниями — пол, рост, вес, вредные привычки и так далее. Найти неожиданные закономерности и определить, какой показатель влияет больше всего. А затем написать модель, которая будет предсказывать вероятность заболеть.
  3. Беспилотный транспорт. Здесь есть множество факторов: сама машина, её характеристики, окружающая среда (светофоры, поведение людей). Именно дата-сайентисты за счёт этих данных понимают, какое решение нужно принять ИИ. Может быть, чтобы не сбить человека, надо врезаться в другую машину, потому что беспилотник уже рассчитал, что не успеет остановиться. 

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

А ещё с нейросетями можно неплохо повеселиться. Посмотрите, например, на AI, который иронично оценивает музыкальный вкус, опираясь на историю прослушиваний Spotify.

Зачем нужен этот курс

Профориентация

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

Понимание индустрии через практику

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

Подготовка к поступлению и возможность писать олимпиады

В курсе будут алгоритмы, много практики и вещей, которым не учат в школе. При усердной учёбе выпускники значительно увеличат шансы успешно сдать ЕГЭ (или другой государственный экзамен) и писать олимпиады, которые открывают двери в топовые технические вузы.

Дмитрий Санников, руководитель направления чемпионатов Mail.ru Group:

«На курсе ребята изучат подходы и технологии, которые ускоряют процессы, и смогут применять их при решении олимпиадных задач. Победители олимпиад получают бонусы при поступлении, количество которых зависит от уровня соревнований. Например, мы проводим олимпиаду „Технокубок”, которую организуем с МФТИ, МГТУ и другими партнёрами. Победив в ней, можно поступить в вузы без вступительных испытаний. Правда, всё равно придётся написать ЕГЭ хотя бы на 75 баллов». 

Для кого этот курс

Курс рассчитан на учеников 9–11 классов, которые интересуются искусственным интеллектом, ответственно относятся к учёбе и на уверенном уровне освоили школьную программу по математике.

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

Программа курса

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

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

Дениc Шонов, LX designer, методист курса:

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

В курсе будет 3 блока, каждый логично вытекает из предыдущего:

  1. Основы программирования на Python. Python — самый популярный язык программирования для Data Science, поэтому в дальнейшем обучении нужна хорошая база знаний. И мы её даём. Ребята изучат основные конструкции языка, структуры данных и функции. Преподаватель блока — опытный разработчик Илья Акчурин. Илья проектировал много успешных курсов по Python в GeekSchool.
  2. Numpy и Pandas — инструменты, которые помогают получать данные. Последовательно изучаем боевой арсенал дата-сайентиста: от установки самых ходовых библиотек до обучения моделей без учителя.
    Pandas — библиотека для работы с большими объёмами данных. Она хорошо умеет брать данные, аккумулировать их и составлять таблицы. Для неё миллион записей — не проблема. Она позволяет моментально сделать запрос к таблице и вывести данные по определённому критерию. Например, из миллионной выборки людей показать только тех, у кого зарплата более 100 тыс. рублей.
    Numpy — библиотека для математических вычислений. Там есть все методы и способы для быстрых расчётов. Например, можно перемножить матрицы, быстро получить транспонированную или единичную матрицу. Эти операции используются в искусственном интеллекте, поэтому библиотека очень тесно связана с машинным обучением. 
  3. Работа с машинным обучением. Знакомимся с созданием нейронных сетей. На практике оцениваем их преимущества под наставничеством Светланы Шориной, специалиста по большим данным в Mail.ru Group. Ребята решат задачи из предыдущих модулей, но теперь с помощью нейронных сетей, и сравнят эффективность подходов.

А в конце курса участников ждёт демодень — соревнование по улучшению нейросети, которое поможет почувствовать олимпиадную атмосферу. Ученики, показавшие лучшие результаты, получат призы. 

Как это всё совмещается с нагрузкой в школе

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

На что будут способны выпускники

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

Ребята научатся правильному подходу к работе. Например, будут знать, как подступиться к написанию ML-модели, которая определяет COVID-19 по снимку. Главная задача курса — научить выпускников искать нужную информацию и самостоятельно определять, чему учиться, чтобы представлять, как решать подобные задачи».

Что в итоге получает выпускник

  1. Понимание направления. Ребята определят, нравится ли им в Data Science, и смогут осознанно выбрать карьерный трек. 
  2. Расширение кругозора. Инструменты и технологии с курса будут полезны в любом IT-направлении. Выпускнику будет просто перейти в любую другую ветку, если не зайдёт Data Science.
  3. Портфолио. Будет один большой итоговый проект — своя нейросеть. И 2–3 хороших кейса с несколькими датасетами. В будущем выпускник сможет использовать это при трудоустройстве — показывать, какие у него были практики.
  4. Сертификат о прохождении курса. Официальный, основанный на гослицензии № 040485. 
  5. Крутые эмоции и, возможно, новые друзья и единомышленники. Прокачка умения работать в команде и коммуникабельности тоже предусмотрены. Не исключено, что в итоге ребята подружатся на почве общих интересов.

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

 


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

Как подготовиться к IT-собеседованию

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

Изучите описание вакансии

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

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

Узнайте подробности о компании

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

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

Освежите забытые знания

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

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

Решайте задачки

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

Ищите задачи от Google, типовые IQ-тесты, упражнения на логику и смекалку — подойдёт всё. Ваша задача — отработать все варианты заданий, чтобы не растеряться в «боевых» условиях. К тому же, такая подготовка поможет сосредоточиться.

Составьте рассказ о себе

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

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

Внимательно просмотрите текст и убедитесь, что он соответствует информации в резюме. Если что-то изменилось, упомяните об этом в речи отдельно, или HR может подумать, что вы лжёте.

Отрепетируйте речь

Текст с рассказом о себе придётся выучить. Но не стоит зубрить, иначе на интервью любое забытое слово сможет выбить вас из колеи. Прочитайте написанное два–три раза, обязательно вслух. А потом несколько раз перескажите — тоже вслух.

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

Потренируйтесь на окружающих

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

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

Выспитесь

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

А какие секреты подготовки к собеседованию знаете вы?


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

Удалённая работа: как избежать обмана

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

Компании перестали бояться удалёнки и смогли выстроить свои процессы так, чтобы не подвергать бизнес опасностям (подписывают с сотрудниками NDA, закрепляют правовые вопросы, выстраивают отношения в коллективе и т. д.). После пандемии мы увидим, что количество вакансий с удалённым форматом работы увеличится в несколько раз. 

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

Где чаще ищут сотрудников

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

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

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

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

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

Советы специалистам

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

Особенно важно понимать, как именно вас трудоустраивают, потому что есть несколько форм. 

Первая — обычное трудоустройство по трудовому кодексу. В договоре прописывается всё: рабочее место и время, все контакты, по которым идёт коммуникация, условия по выплатам, отпускам и многое другое. Есть два вида трудового договора: срочный и бессрочный. Срочный ограничен по времени, но может быть продлён. Так что внимательно проверяйте все формулировки и числа в договоре. 

Вторая форма — договор ГПХ (гражданско-правового характера). Он регулируется не трудовым, а гражданско-правовым кодексом. Здесь тоже есть свои особенности. Например, не прописывается график занятости, а зарплата выплачивается за конкретные услуги. Договор ГПХ также может быть заключён как срочный, а потом продлён.

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

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

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

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

Как могут обмануть при трудоустройстве на удалёнку

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

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

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

Советы работодателям

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

Если вы нанимаете кандидата из своего города, хорошо бы всё-таки пригласить его в офис, чтобы день в день подписать договор. Так сотрудник убедится в серьёзности компании.

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

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

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

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

Удалёнка: суммируем плюсы и минусы

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

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

Все особенности работы с сотрудниками в разных форматах вы можете узнать на факультете управления персоналом GeekUniversity!

Самоизоляция из-за коронавируса продолжается, а значит, у вас всё ещё есть время, которое можно вложить в собственное будущее — освоить новую профессию и не бояться никаких экономических катаклизмов. Мы хотим помочь вам с этим и до 11 июня 2020 г. дарим скидку 40% почти на все программы обучения GeekBrains. Будьте здоровы и успешны! :)

 

 


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

История языков программирования: 2000-е

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

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

В начале 2000-х форм-фактор зачастую играл ключевую роль

Продолжение битвы

Начнем с того, на чем остановились в прошлой статье. Компания Microsoft в конце 90-х приступила к разработке C#, который должен был оспорить господство Java. Новый язык был представлен в 2000 году, но увидел свет только в 2002. Причина задержки заключалась не только в желании победить все «болячки» Java, но и в меняющихся тенденциях на рынке IT. Прежде в Microsoft ориентировались на создание десктопных приложений для Windows, но поняли, что это путь в никуда. Требовалась новая программная платформа, которая бы замкнула на себе множество языков, а также позволила работать с вебом, мобильными и стационарными устройствами. Так появилась .NET, представленная вместе с C# в 2000 году.

Этот шаг позволил в долгосрочной перспективе поднять интерес как к языку, так и ко всем продуктам Microsoft. Но компания уже допустила главный просчет. В конце 90-х ведущие производители мобильных устройств, среди которых — Nokia, Ericsson и Motorola, объявили о создании новой системы Symbian. Изначально она была закрытой, приложения писались на языках ассемблера и C, но долго игнорировать влияние Java было невозможно. Уже к началу 2000-х пользователи мобильных устройств могли устанавливать приложения на базе Java ME (ограниченной версии языка). Пока C# собирал аудиторию, Java уже работал на каждом втором смартфоне. Microsoft еще долго будет пытаться переломить эту ситуацию, но так и не преуспеет.

Зато у C# прекрасно пошли дела в игровой сфере. Как и сегодня, в 2000-х среди консольных приставок основная борьба разворачивалась между Sony PlayStation и Microsoft Xbox. Первая использовала в качестве базы C и язык ассемблера, потом перешла на собственный скриптовый язык. Фактически, Sony PlayStation была закрыта для сторонних разработчиков. Продукт компании Microsoft опирался на C++ и C# — в частности при работе с графическим движком Unity. Популярность C# возросла, но догнать Java так и не получилось: конкурент имел серьезное влияние на веб, а к концу десятилетия стал фундаментом системы Android.

Масла в огонь подливали и новообразованные языки. К примеру, Groove, работающий на базе JVM, подтягивал синтаксис Java к простоте Python, сохраняя функциональность — поэтому привлек внимание. Менее известные примеры: Whiley, AspectJ, Join Java, Tea. Свою нишу занял и появившийся в 90-х JavaScript.

Новый вектор обучения

Создание языков программирования для обучения — тенденция, берущая начало в 60-х годах. В первом десятилетии XXI века появился ведущий «детский» язык — Scratch. Разработанный в MIT, он позволял на основе простых графических блоков создавать анимацию. Первые 10 лет существования не принесли языку заслуженной славы. Дело в концепции, согласно которой программировать приходилось непосредственно в браузере. Из-за ограничений на трафик и скорость начинающие программисты со всего мира не могли себе позволить долго возиться с этим продуктом.

Виток функционального программирования

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

Частично этому способствовала новая волна маломощных машин (смартфонов). Высокие требования при скромной производительности вынуждали программистов мыслить функциями, а не привязываться к данным. Частично на популярность ФП повлиял новый язык — Clojure, диалект Lisp, работающий на основе виртуальной машины Java. Он будто связал десятилетия, позволив в новой эре применить известные принципы ФП. Чуть позже появился еще и ClojureScript для работы с JavaScript. Это был сигнал разработчикам языков: пора вводить возможности полноценного функционального программирования.

Big data

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

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

Гонка мобильных вооружений

Чтобы понять, насколько быстро менялись технологии в первом десятилетии XXI века, достаточно вспомнить события на рынке мобильных телефонов. Он стартовал с огромными черно-белыми «коммуникаторами» под управлением закрытых операционных систем. Им на смену пришли кнопочные «смартфоны» с Symbian. Уже к концу десятилетия все эти наработки устарели — на рынке сенсорных аппаратов бушевала битва iOS и Android.

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

В Apple избрали другой путь — использовать собственные наработки. Objective-C был создан в 80-х как одно из множества ответвлений языка С. Возможно, он так и канул бы в ХХ веке, если бы не приглянулся разработчикам компании NeXT и операционной системы NEXTSTEP. Компьютер NeXTcube собрал массу положительных отзывов, но не получил распространения из-за высокой стоимости проекта.

Главой NeXT был Стив Джобс. Он не только удержал компанию на плаву и выгодно продал ее Apple, но и внедрил все наработки в «яблочные» продукты. Надежность и быстродействие стали визитной карточкой Mac OS и iPhone OS.

В отличие от Android, который имеет открытый исходный код, системы Apple изначально были закрытыми для сторонних разработчиков. Компания выпускала средства разработки приложений после того, как оценивала заинтересованность в продуктах. Так случилось и с MacOS: Xcode была представлена спустя 2 года после платформы, — и с iOS: через год была обнародована SDK. Разумеется, исходные коды при этом не открывались и разработчики не получали полной свободы в персонализации. Родилось главное идеологическое противостояние в  IT 2010-х годов: анархическая свобода против бесконечных ограничений, массовость против качества, доступность против безопасности.

Поговорим об этом в следующей статье.

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

29 июн 18, 11:03
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Карьера в IT: от админа до JS-разработчика

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

Карьера в IT: от админа до JS-разработчика

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

Мой путь в IT начался с верстки. Тогда я переехал в Москву и работал системным администратором в «ЖКО «Город». Однажды компании понадобилось, чтобы я сделал сайт — так я попал на курсы GeekBrains, после окончания которых разработал свой первый веб-сайт на Wordpress — jkogorod.ru.

Цель обучения была для меня совершенно конкретной — освоить необходимые навыки, чтобы сделать сайт для своего работодателя. Я прошел курсы по JavaScript, HTML и CSS — от них и стал отталкиваться, занимаясь версткой. Продолжил изучать JS уже самостоятельно. Обучаясь веб-разработке, в GeekBrains можно освоить PHP, Node, JavaScript, верстку... По выбранному направлению получаешь все необходимые знания в рамках одной учебной программы.

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

«Верстка хороша, когда ты только входишь в мир фронтенда»

В «ЖКО «Город» я проработал год и понял, что хочу заниматься веб-разработкой более серьёзно. Стал искать работу: ходил на собеседования, читал профессиональную литературу, стараясь «прокачать» свои навыки. Устроился в «Модульбанк»: на тот момент у меня не было портфолио как такового, но были знания и желание развиваться.

«За три месяца испытательного срока освоил многое»

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

Мне пришлось взять на себя его обязанности и быстро учиться: читал книги и статьи, смотрел вебинары. Много полезного можно найти на Habrahabr или в блоге GeekBrains, где каждую неделю выходит дайджест новостей о новейших технологиях. За три месяца испытательного срока я освоил многое. В итоге мы переписали сайт с asp.net и Angular на Keystone.js — это библиотека на express.js c готовым роутингом (сайт работал по принципу конструктора).

«Портфолио сыграло большую роль в трудоустройстве»

После года в «Модульбанке» я понял, что уже научился быстро верстать, а чтобы развиваться, нужно поработать в других компаниях. Верстка поднадоела, хотелось углубиться в разработку. Особенно интересовал язык Javascript. В течение трех месяцев я был фрилансером: сначала в «МКБ», потом в Boomstarter, где более плотно познакомился с JavaScript и React.js. Так я нарабатывал портфолио, которое сыграло большую роль в дальнейшем трудоустройстве. По крайней мере, больше мне не приходилось делать тестовых заданий.

Устроился в группу компаний «ПИК» frontend-разработчиком. Работодатель оценил мой бэкграунд: опыт разработки на JavaScript, навыки работы с React и Redux.

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

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

В «ПИК» я работал в команде, где было по четверо fronfend- и backend-разработчиков. Мы создавали личный кабинет и основной сайт компании. Здесь я погрузился в разработку и получил удовольствие от работы. Но по завершении основной части проекта понял, что впереди ждут однотипные задачи.

«За три года опыта вырос не только мой профессионализм, но и доход»

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

  • Джон Дакетт «Javascript и Jquery». Подойдет тем, кто лучше воспринимает информацию в графическом виде: в книге много подробных иллюстраций и наглядных схем;
  • Этан Браун «Изучаем JavaScript». Хорошая книга с описанием стандартов ES6;
  • Николас Закас «ECMAScript 6 для разработчиков»;
  • Серия книг Кайла Симпсона «Вы не знаете JS»;
  • Луис Атенсио «Функциональное программирование на JavaScript».

Сейчас мы разрабатываем веб-приложение: я делаю клиентскую часть на React JS и Redux, а ядро биржи — на C#. Познакомился с новыми технологиями и сегодня больше занимаюсь разработкой на JavaScript, чем версткой, — к чему и стремился все это время.

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

Верстка или JavaScript?

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

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

Советы начинающим

  • Старайтесь постоянно расти и развиваться, осваивать новые направления. Не бойтесь менять работу, если понимаете, что стало скучно или надоели однотипные задачи. За три года я сменил три места работы: понимал, что надо двигаться вперед, приобретать новый опыт.
  • Набивайте руку — cо временем придет и скорость. Раньше на разработку веб-ресурса у меня уходила неделя, сегодня могу сделать адаптивный сайт за день–два. Конечно, все зависит от конкретных задач. Но чтобы их решить, нужно постоянно развиваться самому. Не забывайте и про soft skills: особенно пригодится английский язык. Еще советую дружить с дизайнерами: им постоянно нужны люди, готовые заняться версткой.
  • Нарабатывайте портфолио — это крайне важно в начале карьеры. Для этих целей подойдет фриланс, где зачастую работает принцип «сарафанного радио». Работайте с максимальной отдачей – и труды не пропадут зря.
  • Правильно оценивайте время и трудозатраты. Заказчик частенько просит вносить правки. В итоге вы делаете гораздо больше работы, чем было оговорено на начальном этапе. Поэтому все нюансы лучше фиксировать заранее.

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

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

30 июн 18, 14:13
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Логические ошибки. 7 бед начинающего программиста

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

Кунсткамера: «Почему это плохо работает?»

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

«Не туда положил», или неверный тип данных

Ошибка из разряда «Семен Семеныч!». Если вы неправильно выбрали тип переменной или он непредвиденно изменился во время работы кода, это может создать проблему. Например, программа попытается записать 64-битное значение в 32-разрядную переменную. Или число одинарной точности с плавающей запятой (float) попадает в переменную типа int (Integer).

У такой ситуации несколько вариантов развития:

  • В языках со статической типизацией (С++, Java, С#) значения переменных проверяются на этапе компиляции. Если мы явно положили значение типа long в int, получим ошибку и шанс ее исправить. Но баг всегда найдет лазейку — в С#, например, если по итогам вычислений записать 1,7 в int, это пройдет незаметно. Причем число будет округлено до 1 и результаты дальнейших вычислений с участием переменной исказятся.
  • В языках с динамической типизацией (JavaScript, Python, PHP) переменные получают значение во время работы программы. Ничто не укажет на ошибку, пока вы не столкнетесь с ней непосредственно. Неявное приведение типов в таких языках — норма жизни. Поэтому 32-битная int, если в нее поместить число с плавающей запятой, автоматически превратится во float, и никто вам об этом не скажет. Лучше еще на этапе создания алгоритма следить, чтобы у переменной не было случая самовольно обратиться «в другую веру».

Хрестоматийный пример — вещественные вычисления с целыми числами, такие как деление с остатком. Вещь настолько банальная, что в современных языках с ней просто не может что-то пойти криво… Или может.

int a = 25;
int b = 8;
float c = a/b;
Console.Write(c);
Console.Write("\n"+ c.GetType()); // Проверяем тип переменной c

Результат:

3
System.Single

На самом деле мы получили 3,125, но значение округлилось. Указание типа float для “с” не помогло сохранить точность. Компилятор сначала выполнил деление и округлил результат, а потом уже задумался о типе… и выбрал Single. Это тип, который хранит числа с плавающей запятой одиночной точности в диапазоне от -3,402823E38 до 3,402823E38. Типы float и Single — оба 32-разрядные. C# в таких случаях допускает неявное преобразование, так что компилятор не заметил подвоха.

Когда вы уверены, какой тип должен вернуться, лучше объявлять об этом явно:

float c = (float)a/b; 

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

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

Пример округления при делении int на int с остатком был актуален и для Python 2. В Python 3 это работает иначе:

a = 25
b = 8
c = a/b
print(c)
"""Проверяем тип переменной"""
print(type(c) == float)

Результат:

3.125
True

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

Вебинары GB: «Все, что вы должны знать о типах данных»  «Типы данных в PHP», «Типы данных языка C#», «Базовые типы данных, ветвление и циклы языка Java» .

Что читать: «Ликбез по типизации в языках программирования», «Статическая и динамическая типизация», «Исследование внутренних механизмов приведения типов в JavaScript», «Приведение и преобразование типов C#», «Опциональные типы данных в языке Swift».

«На волю, всех на волю!» — высвобождение ресурсов

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

Поэтому будьте внимательны. Можете принудительно освобождать ресурсы с помощью конструкций типа try-with-resources и try-finally. Так вы убедитесь, что все лишнее будет стерто при любом раскладе. Отпускать ресурсы на волю лучше «в естественную среду обитания» — в том же коде, где их захватили.

А еще привыкайте закрывать открытые файлы и сессии, как скобки в коде.

Что читать: «Правильно освобождаем ресурсы в Java», «Очистка неуправляемых ресурсов» (C#), «Как работает JS: управление памятью, четыре вида утечек памяти и борьба с ними».

Неслучайные случайности

На основе случайных чисел можно создавать уникальные ID для объектов и сессий, генерировать пароли, вносить разнообразие в геймплей или общение пользователя с программой. Главное, чтобы случайность не стала слишком предсказуемой. Увы, в языках программирования используют генераторы не случайных, а псевдослучайных чисел (ГПСЧ). Получить действительно случайное число не так просто. Для этого нужны внешние сигналы, последовательность которых для компьютера всегда неожиданна. Обычно в таких случаях используют аппаратуру, которая фиксирует хаотически меняющиеся параметры физического процесса. Основой рандомизации могут быть движущиеся частицы, белые шумы, микродвижения (смещение координат курсора мыши) или текущее число просмотров под самым популярным видео на YouTube (шутка). В 2017 году для получения истинно случайных чисел в МГУ специально собрали квантовый генератор.

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

Что читать/смотреть: «Подробно о генераторах случайных и псевдослучайных чисел» (с примерами уязвимостей ГПСЧ в Java и PHP), «Как написать генератор случайных чисел» (на JS), «Случайные числа и функция random» на Arduino.

Гонка за ресурсами

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

Вебинары GB: «Синтаксический сахар при работе с потоками на языке С#».

Что читать: о многопоточности, «Синхронизация процессов», «Процессы и потоки in-depth».

Публичность и «все общее»

Чтобы не было сквозняка, нужно закрывать двери, в которые никто не ходит. Так же и с объектами внутри программы: они должны быть открыты только тем участкам кода, которым действительно нужны. Это один из принципов инкапсуляции, и он важен для всех, кто применяет объектно-ориентированное программирование. «Сквозняк» в коде ведет к ошибкам во взаимодействии объектов и повышает риск перехвата данных извне. Для ограничения доступа во многих языках применяют модификаторы public, private и protected. Также избегайте использования глобальных переменных везде, где можно обойтись без них. Делиться чем-то — хорошо, но только не внутри программы, когда общий доступ к ресурсам становится источником проблем.

Что читать: «Все о модификаторах доступа» (с примерами на C#), «Модификаторы доступа и класса» в Java.

Особенности сериализации

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

Сериализацию часто используют в веб-приложениях и службах, но не только. Например, если вы разрабатываете игру на C# или Python, сериализация поможет реализовать систему сохранений.

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

Если по какой-то причине вы не хотите передавать объект в виде потока байт, есть удобные альтернативы: можно сохранить структуру объекта в формат XML или JSON.

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

  • BinaryFormatter — обеспечивает бинарную (двоичную) сериализацию, т.е. преобразование в поток байт;
  • SoapFormatter — сериализует связанные объекты в SOAP-сообщение: особым образом структурированный XML-документ, который пересылают по протоколам HTTP, HTTPS, SMTP и другим;
  • Xstream — Java-класс для сериализации в XML и JSON-файлы. XML весит меньше SOAP и быстрее передается по сети, но не так гибок в описании типов данных. Данные формата JSON являются объектами JavaScript и удобны для использования в клиент-серверных приложениях.

Что читать: «Как не наступить на грабли, работая с сериализацией», «Сериализация (C#)», «Сериализация объектов PHP», «Обобщенное копирование связных графов объектов в C# и нюансы их сериализации».

С-библиотеки без присмотра и переполнение буфера

Есть мнение, что в языках более высокого, чем С, уровня (Java, Python, C#, Rust) проблема переполнения буфера решена. Например, Java по умолчанию контролирует размер буфера и границы массивов. Но для ускорения жадных к ресурсам участков кода многие программисты используют С-библиотеки. И вот здесь будьте осторожны. Языки С и С++ считаются сложными именно потому, что дают простор для ошибок, которые легко допустить, но трудно найти. В плане переполнения буфера код на C/С++ очень уязвим.

В чем суть проблемы? Если неправильно рассчитать или не проверить размер буфера, программа попытается записать данные за его пределами. Это не только ошибка, но и дыра в безопасности. Злоумышленники могут намеренно переполнить буфер, чтобы подменить хранимый в стеке адрес возврата, т.е. адрес функции, которую надо вызвать по завершении текущей. Подставная функция передаст дальнейшее управление мошенническому коду. Такой подход используется при создании вирусов с 1988 года. Чтобы не наступить на ржавые 30-летние грабли, узнайте больше о том, как бороться с переполнением буфера.

Что читать: «Как устроены дыры в безопасности: переполнение буфера» (или оригинал на английском).

Переменные впрок

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

Вносите в алгоритм только то, что готовы инициализировать!

Хотите на таком-то этапе присвоить вот этой переменной вот это значение? Так и пишите. Что-то переиграли? Не забудьте почистить код.

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

Что читать: «Переменные» (и где их объявляют — на примере С++), «Области видимости и замыкания в JavaScript».

Как найти остальные ошибки?

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

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

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

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

Сколько языков программирования существует сейчас в мире

Сколько языков программирования существует сейчас в мире

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

Но сколько языков программирования существует вообще? Чтобы ответить на этот вопрос, нужно провести серьёзное исследование. Причём стоит сразу отделить зёрна от плевел, то есть определить, что является языком программирования (ЯП), а что нет. В зависимости от этого разные источники дают самые разнообразные ответы. Если коротко, то от 1000 до 10 тысяч. Всё зависит от того, что признавать языком программирования и определять ли разновидности (если угодно, форки) одного ЯП как разные языки. Но даже если так не делать, то насчитать можно около 700 языков: от самых старых до современных, от практичных и используемых до эзотерических, создаваемых просто для фана. 

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

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

Какие бывают языки программирования

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

Статическая и динамическая типизации 

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

Здесь речь идёт о процессе проверки соответствия типов. Система типов — это набор правил, присваивающих свойство («тип») ряду сущностей: переменным, выражениям, функциям, модулям. В статической типизации переменным типы присваиваются в момент объявления — так работают Go, С++, C#, Java и ряд других языков. При динамической типизации это происходит в момент присваивания значения, как в PHP, Python, JavaScript, Ruby и подобных ЯП.

Высокоуровневые и низкоуровневые языки

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

Здесь всё проще. Как правило, к низкоуровневым языкам относятся ЯП первых поколений. Это машинный код и ассемблеры, которые появились на заре цифровой эры. Тогда горы были высокими, деревья зелёными, а ЭВМ занимали целые здания.

Низкоуровневые языки: Assembler и машинный код

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

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

Интерпретируемые и компилируемые языки 

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

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

Примеры компилируемых языков: Pascal, Basic, Visual Basic, Cobol, Swift, Go, Haskell, C#, Kotlin. Интерпретируемые: PHP, JavaScript, Python, Lava, Perl.

Визуальные и текстовые языки

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

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

Примеры таких языков: Sketchware, App Inventor, Блокли, HiAsm и другие. К текстовым относится множество других языков, к которым мы привыкли больше.

Эзотерика и just for fun 

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

Lolcode

Этот язык в 2007 году создал научный сотрудник Ланкастерского университета Адам Линдсей. Lolcode использует словарь интернет-мема «лол кот». 

HAI
CAN HAS STDIO?
I HAS A VAR
IM IN YR LOOP
   UP VAR!!1
   VISIBLE VAR
   IZ VAR BIGGER THAN 10? KTHX
IM OUTTA YR LOOP
KTHXBYE

У большинства языков, созданных для фана, нет библиотек. А это значит, что использовать их можно лишь для чтения файла или записи текста на консоль. 

Glass

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

{F[f(_a)A!(_o)O!(_t)$(_n)1=,(_isle)(_n)*(_a)(le).?=/(_isle)^\(_n)*(_a)
s.?(_t)f.?(_n)*(_a)s.?(_t)f.?(_a)a.?]}{M[m(_a)A!(_f)F!(_o)O!(_n)=(_nlm)
=/(_nlm)(_n)*(_f)f.?(_o)(on).?" "(_o)o.?(_n)(_n)*(_a)a.?=(_nlm)(_n)*
(_a)(le).?=\]}

Участок кода выше выводит последовательность чисел Фибоначчи. 

Brainfuck

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

++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.
<<+++++++++++++++.>.+++.------.--------.>+.>.

Выше — участок кода, отвечающий за вывод «Hello, World».

Chicken

А в этом языке всего одно ключевое слово — угадаете какое? И количество повторений с новыми линиями определяет код используемой операции. 

chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken

Это был пример работающего кода. 

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

По версии сервиса TIOBE, первую тройку рейтинга востребованности занимают Java, C и Python. А вот топ-20:

Рейтинг языков программирования TIOBE

Каждый год топ изменяется — иногда очень заметно, а порой незначительно. Рейтинги 2020 и 2019 годов почти не отличаются. 

Какие разработчики больше всего зарабатывают

Сервис «Хабр.Карьера» регулярно выкладывает статистику зарплат программистов, работающих с разными языками. Самая высокая медианная зарплата у разработчиков Elixir: 165 тысяч рублей. Затем идут разработчики Objective-C — 151 тысяч рублей в месяц. Далее — Scala с Go: специалисты по ним получают 150 тысяч рублей. Распределение самых «доходных» ЯП выглядит так: 

Зарплата разработчиков на разных языках программирования

А вот разбивка по основным специализациям разработки:

Зарплата разработчиков на разных специализациях разработки

Большое влияние на эти цифры оказывает и локация работодателя. Если взять среднее значение зарплат программистов, то медиана по Москве — 140 тысяч рублей, в Санкт-Петербурге — 116 тысяч, в других регионах — 80 тысяч рублей. 

Так сколько языков программирования существует? 

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

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

 


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

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

 

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

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

 

Какой бывает стресс

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

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

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

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

Как справляться

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

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

Выработайте правильное отношение к ситуации
Это важно. Например, «Что нас не убивает, то делает нас сильнее» или «Если я справлюсь с такой сложной задачей (с работой в таком темпе, с враждебностью коллектива, с неумехами-подчиненными), то мне уже ничего не будет страшно и я стану мегакрут!».

Поменяйте восприятие стресса
Стэнфордский профессор Келли Макгонигал обобщил исследования последнего десятилетия по поводу стресса и показал в своей книге «Хороший стресс как способ стать сильнее и лучше», что исход стрессовой ситуации больше всего зависит от установки на стресс. Если вы ожидаете, что он будет вам полезен, — именно так и произойдет. Вы закалитесь и станете компетентнее, приобретете позитивный опыт преодоления трудностей. Если же вы тяжело переживаете стрессовую ситуацию, то рискуете получить все неприятные последствия стресса.
Ведущий российский исследователь стресса Л. А. Китаев-Смык обозначил, что на стресс вообще можно реагировать творческой активностью, а она обязательно предполагает позитивную установку. Именно это имел в виду Ганс Селье, классик науки о стрессе, сказав, что «стресс — вкус и аромат жизни».

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

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

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

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

  1. Осознать стрессовую ситуацию.
  2. Внутренне эмоционально отстраниться.
  3. Понять, что вы приобрели полезный опыт.
  4. Найти утешение у друзей.
  5. Сделать выводы, чему именно вам нужно еще научиться.
  6. «Оторваться» и отдохнуть, чтобы обрести силы и уверенность для новой работы.

Главное — не бояться стресса, а превратить его в учителя. А как вы справляетесь со стрессом на работе? Как расслабляетесь на досуге?

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

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

Факультет тестирования ПО — короткая дорога в IT

 

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

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

Теперь историй успеха станет гораздо больше — ведь факультет, в отличие от отдельных курсов:

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

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

  • мануальным тестировщиком веб-приложений (устроиться на эту должность реально уже после I четверти);
  • инженером по автоматизации тестирования на Java;
  • мануальным тестировщиком мобильных приложений;
  • инженером по автоматизации тестирования мобильных приложений на Java.

Подробнее о факультете и его программе рассказал методист образовательных программ GeekBrains Александр Скударнов.

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

— Затрагиваемые темы и временные пропорции во многом соответствуют программе международной сертификации по тестированию — ISTQB® Certified Tester. Базовый уровень. Конечно, студенты, желающие получить этот сертификат, должны понимать, что это как знать английский и сдавать IELTS или TOEFL — перед экзаменом нужно отдельно подготовиться к его формату.

— Чем обучение на факультете отличается от того, что предлагают конкуренты?

— Не видел на рынке каких-то очень хороших продуктов. Где-то программы — фактически наш факультет, но за три месяца. Не знаю, как можно в человека впихнуть столько информации за такое время. Если у нас нагрузка примерно 10 часов в неделю, то там 30 будет? :) У нас все довольно размеренно, аккуратно, без перегибов — чтобы все усвоилось.

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

— Какая будет практика?

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

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

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

— Скажешь что-то мотивирующее напоследок? :)

— Ниша тестирования огромная! Вот я зашел на HeadHunter и вбил «тестирование ПО» по Москве — он выдал 5 000 вакансий. По России — 15 000 вакансий. Просто для понимания, насколько это крутая возможность, чтобы сменить профессию и войти в сферу IT. 

Еще есть такой миф, что тестировщики — это те, кто какие-то баги ищет, лазит в HTML-верстке. Но плох тестировщик, который хочет просто «ломать систему», искать баги, а не смотреть чуть выше, чуть шире — выступать с позиции силы. 

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

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

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

Ручное тестирование

Раиль Закиров, Senior Software Validation / Integration Engineer в международном проекте, работал в EPAM и группе компаний FIX. Имеет два высших образования — оба в нефтегазовой сфере. Отработал несколько лет в нефтяной отрасли, разочаровался в ней и сменил профессию. 

— Раиль, чему научите студентов?

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

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

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

— Как сделаете занятия интересными?

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

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

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

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

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

Мне нравится подход в европейских компаниях — там очень скрупулезно относятся к тому, насколько хорошо вольется потенциальный инженер в команду. Будет ли он ее дополнять или же вносить разлад? Технические моменты тоже важны, все-таки на серьезные проекты нужны технически подкованные специалисты, но soft skills не менее важны (на мой взгляд, даже более). 

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

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

Владлена Бонк, работает тестировщиком три года, получила опыт в геймдеве, банковской сфере, ip-телефонии. Сейчас работает с энергетикой и промышленностью. Закончила ОмГУ им. Достоевского по специальности «экскурсоведение и охрана природных и культурных объектов» — то есть училась на музейного работника.

— Владлена, чему научите студентов?

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

Автоматизация тестирования на Java

Александр Фисунов, Senior Java Developer, разработчик ПО в области компьютерного зрения и видеоаналитики. Консультирует зарубежных тестировщиков. Кандидат технических наук, лауреат стипендии Президента РФ для молодых ученых и аспирантов.

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

— На младшего инженера автоматизации тестирования можно спокойно идти. Для тестирования достаточно хорошего знания Java Core: циклы, массивы, методы, условия, типы данных, переменные. ООП — без него никуда. Коллекции, исключения, немного многопоточности, обобщения, работа с файлами, JDBC, Apache Maven — самые основы. Все это и инструменты, которые понадобятся в работе, мы изучим на курсе. 

Небольшая история для вдохновения. Несколько лет назад через «знакомых знакомых знакомых» со мной связался человек, который работал в Америке, он тогда занимал позицию Manual QA Engineer. У него было время, и он хотел изучить Java, Selenium, TestNG, SQL, а в процессе работы сюда еще добавились SoapUI, Zap Proxy, Jersey Client, Jbehave, Appium, Selenide и другие вещи. За три-четыре месяца еженедельных консультаций по два-четыре часа он разобрался с необходимой базой языка Java, которая как раз будет преподаваться в курсе, и устроился на позицию Middle Automation QA Engineer. 

После того как он нашел эту работу, мы продолжили с ним обучение. Чтобы не тратить время на отдельные примеры, стали разбирать рабочие задачи. Где-то после пяти месяцев такой работы он перешел на позицию Senior QA Engineer в компанию, которая занимается разработкой веб-приложений для сферы страхования. Еще через год он перешел работать на позицию ведущего автоматизатора тестирования в Disney. 

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

Мобильное тестирование

Александр Данилов, более десяти лет опыта в тестировании. Разрабатывает и проводит интерфейсное, функциональное и регрессионное тестирование веб- и мобильных приложений в компании CDC. Начинал с ручного тестирования крупного аналитического инструмента в ООО «Мегапьютер ТЕК», был старшим тестировщиком в Diasoft. Окончил два факультета Чувашского государственного университета им. И. Н. Ульянова: электротехнический и экономический. 

— Александр, чему научите студентов? Какие задачи будут под силу выпускникам?

— Научу принимать правильные решения в процессе тестирования. Чтобы занятия были интересными, будет много примеров и практики с учетом современных тенденций. Выпускники получат опыт использования современных инструментов автоматизации (UI Automator, XCUITest, Appium и Espresso), смогут внедрить их на своих проектах.

У вас вопрос по программе обучения? Напишите консультанту в чат или оставьте комментарий к статье. Либо запишитесь на факультет тестирования ПО и задайте вопросы менеджеру.

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

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

Окей, Гугл! Как устроиться в Google?

Какой язык лучше изучить, какие знания и навыки потребуются? Как подготовиться к собеседованию и вести себя на нем? На эти вопросы порталу GeekBrains ответил сотрудник Google Сергей Березин.

Сергей живет в США с 1995 года, в Google работает с января 2014-го в отделении Google Chrome. Занимается IT-поддержкой разработчиков Chrome.

— Добрый день, Сергей! Расскажи, как ты оказался в США?

— Это был август 1995 года. Я закончил Новосибирский государственный университет и поехал в Штаты — продолжать обучение в университете Карнеги-Меллон. В американские вузы можно поступать удаленно (в России сейчас действует такая же система). Сдаешь стандартизованные тесты, пишешь заявление и рассылаешь сразу в десяток университетов — в какой возьмут. Эта программа для поступающих работает и сегодня. Нужно еще внести сравнительно небольшую сумму за подачу документов (в 1995 году было около 50 долларов). И остается только ждать результатов. Если тебя приняли — собираешься и едешь учиться. В некоторых вузах придется платить за обучение — значит нужно будет еще и работать. Другие сами предлагают стипендию. В Карнеги-Меллон, например, она была.

— Сложно ли устроиться на работу в IT-компанию в Штатах? Какие могут быть преграды для соискателя из России?

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

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

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

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

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

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

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

— Что еще работодатель может оплатить, помимо оформления документов и билета на самолет? На что можно рассчитывать?

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

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

— Общежитий для сотрудников не предусмотрено?

— У компании Google таких общежитий нет.

— В Google работает много иностранцев?

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

— Специалисты каких направлений наиболее востребованы сейчас в IT-компаниях?

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

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

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

Если говорить о специализации, по большей части IT-компании нуждаются в программистах, причем востребованы спецы всех направлений: и front end, и back end, и поддержка стабильности систем. Обычно все это описывается термином software engineer — «инженер программного обеспечения». Когда такой человек попадает в компанию, ему находят место. Иногда его будут перекидывать с одного проекта на другой, давать разнообразные задачи в зависимости от текущих потребностей компании. Так что чем быстрее учишься новому — тем лучше.

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

— А специалисты по компьютерному «железу» (hardware) востребованы?

— Для них могут найтись места в отдельных компаниях типа Intel, Nvidia, Broadcomm, у других известных производителей. Я в свое время много с ними работал. Но они обычно не такие большие, как софтверные гиганты. В Intel больше 100 000 человек, но остальные менее крупные. Так что и новых сотрудников там требуется не так много. Насколько я знаю, система там примерно такая же, как в Google — если человек с головой и умеет работать, у него есть шанс туда попасть.

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

— Какие еще направления деятельности доступны IT-специалистам?

— Сейчас есть «горячие области», куда людей берут охотно и на большие деньги. Это в основном обработка данных. Популярный термин для таких специальностей — Data scientists. Часто под этим подразумевают специалистов по искусственному интеллекту и смежными технологиям. Это люди, которые умеют работать с big data, пишут сложные конвейеры обработки данных — занимаются Business intelligence. Это работа с большими данными в бизнесе. Тут и оптимизация бизнеса, и обработка данных по клиентам, и сбор информации о том, какие продукты пользуются популярностью. Для этих задач требуется анализ огромных объемов данных — их изучают и вылавливают из этого моря информации шаблоны.

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

Никто не поручится, что эта профессия будет востребована и дальше. Но если говорить про «здесь и сейчас» — это хороший способ устроиться на работу в США.

А.Б: В США средняя заработная плата для Data scientist — от 90 000 долларов в год. Специалисты топового уровня могут зарабатывать до 1 000 000 долларов.

— Поговорим о работе программистов. Какой язык будет максимально востребован при устройстве на работу в IT-компанию в США?

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

Наиболее широко используются Java, C++, Python, Ruby, JavaScript — в частности, node.js. В меньшей степени — PHP. Мне кажется, он уже потихоньку уходит. Это только самые популярные.

— Что насчет Swift?

—Насколько мне известно, Swift используется только у Apple, больше на нем практически никто и не пишет. Если разработчик собирается делать программы для iPhone или Macintosh, ему этот язык будет полезен. Пригодится ли он в других компаниях — сложно сказать. Скорее всего, там это знание будет не очень востребовано.

Вообще говоря, раньше в Apple использовали Objective-C, а потом разработали более современный Swift, который, вроде бы, быстрее и проще в программировании.

Google при разработке Chrome для iOS изначально использовал Objective-C. Так исторически сложилось — когда начинали проект, Swift еще не существовал. А потом переделывать не стали. На Objective-C написана только оболочка, интерфейсная часть, чтобы программа выглядела по-эппловски. А большинство «начинки» выполнено на C++, который тоже превосходно работает на iPhone.

— Вероятно, этим списком языков дело не ограничивается?

— Можно вспомнить множество языков, которые могут быть полезны. Тот же Google Go. Его иногда называют Golang — по этому ключевому слову его проще отыскать в сети. Go переживает пик популярности. В Google на нем пишут очень много, но он используется и в других IT-компаниях: Docker написан на Go. Это система, которая используется для управления контейнерами. Контейнеры — своеобразные виртуальные машины, только очень легкие. Они стартуют за пару секунд, их можно запустить одновременно на множестве компьютеров, и они гарантируют одну и ту же среду на них всех. Docker ими «дирижирует»: запускает, управляет и контролирует. Все это написано на Go.

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

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

— Как проходит трудоустройство в крупных IT-компаниях?

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

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

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

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

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

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

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

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

Все это, прошу заметить, только первый шаг. И на нем «заваливается» большинство.

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

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

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

Был период, когда задачи были «олимпиадного» уровня: от соискателя требовалось додуматься до чего-то нетривиального, найти хитроумное и изящное решение, без которого невозможен результат. Но подобные задания мало что говорят о специалисте и плохо прогнозируют. Ведь не придется же сотруднику, в самом деле, ежедневно сталкиваться с такими головоломками? Гораздо важнее выяснить, как он справляется с рутинными делами. Поэтому сейчас используется другая система: 4–5 человек дают соискателю более простые задачи — зато разнообразные. Для решения достаточно здравого смысла и определенного уровня знаний.

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

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

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

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

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

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

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

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

— Если претендент выполняет все задачи, он поступит на работу?

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

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

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

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

— Я работаю в отделении Google Chrome, если конкретнее — Chrome operations. Это IT-поддержка разработчиков Chrome.

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

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

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

— Chrome — довольно распределенная команда, они работают во многих частях мира: кто-то есть в Европе, кто-то даже в Индии. Но наш отдел, Chrome operations — в основном в Маунтин-Вью. (Mountain View — город, в котором находится главный офис Google — А.Б.)

К сожалению, в России инженеров Google не осталось, разработки там больше не ведутся. Есть офис, занимающийся продажами, но софт-инженеров больше нет.

— Какие еще подразделения есть в Google? Если человек устраивается работать, нужно ли ему знать их специализацию?

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

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

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

У меня вообще не было предпочтений по поводу конкретной работы. Мне просто позвонили и спросили: «А не желаешь ли поработать в Google?» Я подумал: «Почему бы нет».

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

— То есть это не ты устраивался в Google — это Google предложил тебе работу? Так тоже бывает?

— Бывает и так. Меня кто-то «продал» внутри Google. Это обычная практика у крупных компаний: как только ты туда попадаешь, к тебе подходит HR-менеджер и мягко вытягивает контакты знакомых хороших айтишников.

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

Получилось так, что из компании, где я раньше работал, несколько человек ушли в Google. И как раз через год с небольшим мне оттуда позвонили с предложением. Подозреваю, кто меня «сдал», но не обижаюсь.

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

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

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

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

— Зависит ли шанс на получение гражданства от профессии, места работы?

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

Если уже есть вид на жительство — гражданство могут дать практически «автоматом». Но можно и тут все испортить — например, если человек совершенно не говорит по-английски. Например, он китаец и все время проработал в китайской компании. Но подобное совсем маловероятно в IT-сфере.

Необходимо сдать тест на гражданство — это сотня вопросов в основном по истории Штатов. Их нужно просто знать. Это не так уж сложно.

Самое важное — отсутствие криминала в личном деле. Речь о серьезных правонарушениях. Если просрочил библиотечную книжку или однажды неправильно запарковался — не повлияет. А из-за ареста за неаккуратное вождение могут быть проблемы. Не говоря об уголовном преследовании или розыске ФБР.

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

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

— Учитесь тому, что любите делать, и радуйтесь неудачам — ошибки, как правило, лучшие учителя!

Есть английская поговорка: good judgement comes from experience, and experience comes from bad judgement. :)

Удачи!


23 авг 18, 18:04
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0
Темы с 1 по 10 | всего: 1136

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

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

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

Люди

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