Quantcast
Channel: Найцікавіше на DOU
Viewing all 8435 articles
Browse latest View live

Как я работаю: Вера Ткаченко, Software Team Lead в MacPaw

$
0
0

[В рубрике «Как я работаю»мы приглашаем гостя ответить на блиц-вопросы об организации своего воркспейса, полезных инструментах и лайфхаках]

Вера Ткаченко — работает в MacPawс момента основания компании. 9 лет назад присоединилась к команде на позицию Software Developer и работала над созданием флагманского продукта CleanMyMac, сейчас — Software Team Lead. Отвечает за то, чтобы продукты компании создавалась быстрее, становились лучше и полезнее, а у команд было все необходимое для этого.

Имеет 11-летнийопыт в создании разнообразных macOS/iOS продуктов — от идеи и до релиза.

Возраст и опыт: 30 лет, 11 лет работает в IT.
Текущая должность: Cocoa Team Lead в MacPaw.
Модель смартфона: iPhone 7+.
Модель ноутбука: MacBook Pro.
Суперспособности:быстро и часто переключаться между разнообразными задачами; долго и спокойно разбираться в чем-то.

— Как проходит ваш типичный рабочий день?

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

С 11-тиначинаю работать, в 11-12часов у нас проходит большинство стендапов. В рабочее время стараюсь не заниматься чем-то личным, не отвлекаться. Моя задача как тимлида — обеспечивать условия, чтобы команда работала максимально эффективно, помогать с разными трудностями. Это относится не только к команде, но и к каждому человеку — помогаю коллегам развиваться и быть успешными специалистами. Программированию сейчас уделяю не очень много времени, примерно 5 %. Остальное время — собрания, продуктовые совещания, 1:1/performance review, найм новых сотрудников, административные вопросы. Около 8 вечера ухожу домой, стараюсь не засиживаться.

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

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

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

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

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

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

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

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

Что касается инструментов, предпочитаю не веб-, а десктопные версии всех клиентов. Как правило, нативные клиенты имеют более красивые интерфейсы и поддерживают больше функций. Регулярно использую почту, календарь, наши собственные сервисы для отслеживания состояния продуктов, разные аналитики. Где-то 80 % коммуникаций проходит через Slack. Notes — мой инструмент № 1 для быстрых заметок во время митингов. Он работает действительно быстро, синхронизируется со всеми устройствами, хорошо работает в офлайне.

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

— Используете ли какие-то практики по тайм-менеджменту?

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

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

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

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

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

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

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

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





— Ваш любимый to do менеджер?

OmniFocus — очень функциональный, надежный и качественный продукт. Отлично работает на Apple-инфраструктуре.

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

— Сколько часов в неделю работаете?

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

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

— А отпуск часто берете?

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

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

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

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

— Что вас вдохновляет?

Фидбэки от пользователей. Они дают желание продолжать работать, делать полезные продукты.

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

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

— Что помогает быть продуктивным?

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

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

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

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






— Вы экстраверт или интроверт?

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

— Что последнее прочитали или читаете сейчас?

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

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

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

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

— За что любите и не любите свою работу?

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

Нравится компания, ее ценности: семейная атмосфера и отсутствие бюрократии.

Что не люблю? Бывают такие дни, когда много митингов, и от этого устаешь. Неприятно, когда кто-то уходит из компании или твоей команды. Не люблю, когда мы делаем что-то не так, теряем какие-то моменты. Задаешься вопросом: «Почему мы это раньше не сделали?» Становится немного обидно.

— Что бы вы посоветовали себе 10 лет назад?

Считаю, что не имеет смысла давать какие-то советы, так как все меняется. 10 лет назад я была совсем другим человеком. И благодаря тому, какой я была в 20 лет, я стала такой, как сейчас, в 30.

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

— Кем себя видите через 5 лет? :)

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

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

Моя цель — продолжать жить одним днем и не потерять возможность адаптироваться, меняться, приобретать что-то новое.


Удаленная работа: плюсы и менеджерские особенности

$
0
0

[Об авторе: Владимир Железняк — успешно запустил два стартапа в распределенных проектах. Многих сотрудников не видел ни разу. Разница в часовых поясах — до 12 часов. Работаю из дому 6+ лет. Трое детей]

Принимаю команду на распределенном проекте, обзваниваю сотрудников. Про одного толкового джуна знаю, что он молод и всегда вежлив. И у меня всё время ощущение, что собеседнику страшно. Звоню ему, спрашиваю: «У тебя камера есть?» — «Есть, но можно я её не буду включать?»
Поговорили, все ок.
Но я ни фига не понимаю, чего он боится. Это преступник, которого разыскивает Интерпол? У него на лице неэстетично растут щупальца? Он во время работы надевает только шапку из фольги с заземлением? Если человек такой странный, то я не смогу его понять и не смогу предсказать его действия. Вдруг он решит, к примеру, базу и код в открытый доступ выложить?
Начинаю гуглить. Сразу же нахожу топик: «Добрый день. Мне 16 лет, я боюсь, что на работе узнают и уволят». Да пофиг мне на его возраст! Работает хорошо, и ладно. Хотя какие-то особенности работы ФЛП и т. д. пришлось объяснять.

В сегодняшнем материале:

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

Плюсы удаленной работы

Для сотрудников

Этот раздел для тех, кто еще не пробовал работать удаленно. И для менеджеров для удобства мотивации.

Время на дорогу

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

Пусть на дорогу туда-обратно уходит 1,5 ч/день. Тогда если считать:

  • 8+1 работа
  • 8 сон
  • остается 24-8-1-9=6, и 1,5 ч/день из 6 — это много.

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

Удаленная работа подходит не всем. Это не хорошо и не плохо. Это личные особенности.

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

Гибкий график

«Иду на работу — еще темно. Иду домой — уже темно. На выходных отсыпаюсь».
© Офисный работник, который заподозрил в себе вампира

Хочется зимой увидеть солнце не только из окна? Или летним днем покататься на велосипеде? Или ребенка некому забрать из садика? Гибкий график дает шанс на это.

«Гибкий» здесь можно толковать очень по-разному. От «4 часа работаю — час сплю — 4 часа работаю» до «работаю 24/7 так, что клавиатура дымится». См. цикл про овертаймы.

Удаленная работа требует больше самодисциплины.

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

Openspace и другие офисные прерыватели

Openspace — банально дешевле в аренде, чем офис с комнатами. Openspace — дешевле перепланировать при изменении количества людей на проекте. Openspace — дешевле в обогреве и кондиционировании.

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

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

Зарплата

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

Статья расходовПриблизительный минимум, $/месПриблизительный максимум, $/мес
Офисдешевый офис, людей поплотнее 14*6=84дорогой офис, места побольше — с кухней, митинг-румами и ресепшеном 25*9=225
Железокомп попроще, меняем раз в три года 720/(3*12)=20комп помощнее, меняем раз в два года 1200/(2*12)=50
Софт515
HR+бух+юрист53*500/100=15
Печеньки и кофе с кофемашиной515
Интернет и электричество510
Стол, стул и прочая мебель120/(5*12)=2240/(5*12)=4
Принтер с бумагой35
Админ-эникейщик300/100=36
Итого84+20+5+5+5+5+2+3+3=132225+50+15+15+10+4+5+6=330

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

Я для себя считаю, что на удаленном сотруднике работодатель экономит от $132 до $330 в месяц. И если для джуна это большие деньги, то синьору они просто приятные.

Еще один источник экономии — можно иметь офис в столице, а нанять программиста из Жмеринки. Разница в ЗП может быть существенной. Например Java-мидл в Киеве хочет на $400 в месяц больше, чем такой же девелопер из другого города.

Имитация бурной деятельности

Где мерилом работы считают усталость ©

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

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

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

Путешествия

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

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

Возможность одеваться и раздеваться

«Люди обсуждают мой стиль одежды только до первого хука. Потом только стонут». © Сборный персонаж

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

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

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

Для работодателей

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

Больше выбор сотрудников

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

Маски-шоу

В распределенный офис не придут маски-шоу. А ведь айтишники с каждым годом всё вкуснее выглядят для тварей в форме. Это вопрос к депутатам и избирателям.

Другие офисные нежданчики

«Когда в айтишном офисе пропадает свет, то сначала слышно коллективное: „$#%!“. Потом слышно шарканье ног по коридору. И еще раз „$#%!“, когда самые шустрые добегают до чайника».
© личное наблюдение

Иногда в офисе пропадает свет. Иногда — интернет.

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

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

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

Распределенная команда не падает одновременно.

Круглосуточность

«У нас каждые три недели сотрудники неделю работают в ночную смену. Мы так непрерывность поддерживаем».
© Директор одной компании

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

Особенности и рекомендации

«Для меня в удаленке самый главный плюс — я могу не видеть этих опостылевших рож». © когда-же-я-сдохну-PM

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

  • высокий КПД сотрудников;
  • предсказуемость результата по срокам/качеству/ресурсам/скоупу.

Минимизация и юниты

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

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

Если общение минимизировано, то коллеги из людей превращаются в юнитов. Отношение соответствующее. Легко ли кинуть NPC? Да. Можно ли игнорировать указания NPC? Конечно. У этого персонажа родился ребенок? Да пофиг, главное, чтобы до него всегда можно было дозвониться.

Минимальное общение ведет к последующим конфликтам и неожиданным увольнениям.

Что делать?

  1. Повышайте связи между людьми. «А давайте встретимся выпьем пива / поговорим об астрофизике / и т. д» — обычно это хорошая идея.
  2. Ежедневные созвоны — рулят. Даже без видео.
  3. Способы коммуникации по возрастанию укрепления отношений: таск-трекер-письма-чат-звонки-видео-встречи.
  4. Давайте высказаться всем, даже сравнительно малозначимым джуниорам. «Костя, хочешь ли ты что-то добавить к обсуждению? Нет? Ок». Сам факт обращения уже значим.
  5. Поощряйте прямое общение. Т. е. топология коммуникации — не звезда, а сеть. Вплоть до «Сегодня мы созвонились по поводу <>. Вася, что ты думаешь о проблеме? Коля, можешь дополнить? Обсудите плз между собой».
  6. Помните о людях. Индивидуальные привычки, любимые слова, поведение при нежданчиках, каким способом говорит об ошибках и подозрительных местах и т. д.

Ошибки

Своим ошибки простить гораздо проще. Кого нет — тот и виноват. А в удаленной работе — никого нет. Поэтому виноваты все.

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

Что делать?

  1. Ругать лично, хвалить публично.
  2. Стройте доверие, не ругайте за ошибки. Фокус не на «кто виноват», а «как предотвратить в дальнейшем».
  3. «Совершил ошибку» и «сказал о своей ошибке» — это два разных действия. Хвалите за то, что сказал вовремя. Уважайте чужую смелость, не все так могут.
  4. Людям страшно рассказать о своих ошибках тем, кто сам выглядит безошибочным. Поэтому если хотите раннего сообщения «похоже, я не успеею вовремя» — то рассказывайте о своей работе и о своих ошибках.

Инициатива

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

Расслабление и напряжение

«На проекте был синьор. Хороший программист и яркая личность. Однажды он не получил четкого ответа от заказчика на вопрос о текущей задаче. Поэтому в ожидании ответа тихо запустил онлайн-рубилово. Так он ждал день, а ответа все не было, ждал два — а заказчик молчал... Синьору очень не хотелось задавать вопрос повторно, ведь пришлось бы рассказывать о том, что он два дня ничего не делал. Ждал неделю, а заказчик так и не вспомнил. А может, вообще не понял, что от него ждут ответа. Синьору уже совсем не хотелось говорить с заказчиком. Через две недели заказчик начал домогаться результатов работы. Сначала аккуратно, потом все настойчивей. А их не было. Совсем не было. Ну не считать же результатом переход на 76-йуровень? В итоге после нескольких проигнорированных попыток достучаться до синьора, заказчик спросил напрямую коллегу: „А здесь ли Вася?“ — „Да, здесь“ — „Попроси его взять трубку“. Тут Вася громко и вслух послал заказчика и с криком „Да не хочу я с ним общаться“ выбежал из комнаты».
© история из офиса, в удаленной работе такое бывает чаще

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

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

И вообще, какая машина лучше: которая без тормозов или которая без двигателя? Дурной выбор. Лучше та, которая может и ехать, и тормозить.

Что делать?

Хорошо, когда периоды расслабления и напряжения чередуются.

Для усиления напряжения спрашивайте: «Когда будет готово?», «Ты вчера сказал, что будет готово за день. Какой новый срок?», «Расскажи детальнее о том, что ты планируешь сделать за сегодня?».

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

Неопределенность, страх, вина

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

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

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

Что делать?

1. Научиться узнавать чужие эмоции. Их больше, чем «норм» и «меня колбасит».

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

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

Непредсказуемость и доверие

Люди остерегаются непредсказуемого. Предсказуемость в отношениях приходит с продолжительностью общения.

Нервничающий человек занят своими нервами, а не работой.

Что делать?

  1. Делайте людей предсказуемыми. Проще предсказать чье-то поведение, если вы уже провели вместе какое-то время. Поэтому поощряйте совместные задачи.
  2. Делайте ситуацию предсказуемой. Рассказывайте о планах и об изменениях планов.
  3. Раз в пару месяцев давайте обратную связь. «Что сделать, чтобы стать более ценным работником?» Желательно не общие слова «нууу... надо работать лучше», а «мне бы хотелось слышать от тебя больше вопросов ДО начала работы».

Прерывания

Прерывания — это часть работы. Они здорово крадут эффективность.

Что делать?

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

Конфликты корпкультур и групп

«Мы отдали мобильную разработку в отдельную команду из другого города. И у нас непрерывно возникают трения между офисами: у нас более формальный стиль общения и жестче график, а они какие-то более расслабленные».
© вопрос от HR компании среднего размера

В каждом офисе свое расписание. В каждом офисе свои требования по формализму/неформализму. В каждом офисе есть «ближний начальник», который обладает неформальной властью («Брось всё, помоги воду поднять, а потом отсобеседуй кандидата»).

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

Что делать?

  1. Такие конфликты обычно начинаются с эмоций и отношения, а уже потом приходят формальные поводы. «Эти... представители интеллектуального большинства... опять не понимают, что нужно слать в наш REST-интерфейс». Вроде ничего особо плохого не сказано, а все уже знают твоё отношение к другой команде. Менеджеры должны купировать такие разговоры.
  2. Повышать прозрачность и усиливать связи между группами. Командировки, парная работа, общие митинги и встречи и т. д. Группы всё равно будут образовываться, просто их нужно перемешивать.

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

Типичная ситуация для менеджера-удаленщика: спросил о чем-то, а человек не отвечает. В офисе я бы просто подошел к нему или просто бы посмотрел, на месте ли он... А тут непонятно, он либо не на месте, либо не хочет отвечать, либо сильно занят, либо думает... Ответы через рандомное время повышают тревожность («аааа, мир непредсказуем, мы все умрем!») и раздражение — организм накачивает тело гормонами на случай, если понадобиться драться. При тревоге готовиться к драке — это правильно. Было правильно для пещерного человека.

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

Что делать?

  1. Научиться работать со своими эмоциями. Знать хотя бы пару техник, как успокоиться. Кто-то медитирует, кто-то молится, кто-то пьет колеса, кто-то использует арсенал психологии.
  2. Научиться работать с чужим раздражением: давать быстрые ответы, даже если это «сейчас занят, отвечу послезавтра». Да, тут нужен баланс с прерываниями.

Рамки

«На работе надо работать. Поэтому для удаленных сотрудников мы используем жесткий тайм-трекер и скриншотеры».

В условиях неопределенности естественное поведение человека — это построить рамки. Для менеджера-удаленщика такими рамками будут расписание, время ответа и средства технического контроля.

В аутсорсе для заказчика мы все удаленщики. Поэтому бизнес часто давит в эту сторону.

Что делать?

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

Сбор и обработка информации

  1. В удаленной работе one-to-one важнее, чем при работе в офисе.
  2. «Люди приходят в компанию, а уходят от людей». Сбор отзывов сотрудников о других сотрудниках позволяет вовремя поймать межличностные конфликты. «Что ты думаешь о нашем новичке?» Заодно это стимул подтолкнуть его вообще подумать о других сотрудниках. Не нужно стукачество «а Петя по вечерам в „Веселую Ферму“ бацает», а нужно «раньше мне с Петей было ок, а теперь его не дозовешься». Изменения.
  3. Подбирайте лучший способ общения для каждого. «Джон любит короткие письма, шлет их по три в день», «Арсен предпочитает чат», «для Мити важны митинги и возможность порассуждать перед аудиторией».

Коротко и заумно. Чего не хватает в удаленной работе, что есть в работе неудаленной?

  • Обратная связь → отсутствие в «системе» необходимого количества информации, недостаток информации, отсюда логичные, но неправильные решения.
  • Эмпатический контакт → фактически отсутствие понимания другого человека, ожидания формируются из своих представлений и стереотипов → конфликты ожиданий, причем с большой задержкой («я еще 2 месяца назад понял, что ты за человек, когда ты не ответил мне по моему вопросу...»).

Вместо заключения

Что было:

  • плюсы и минусы удаленной работы;
  • менеджерские рекомендации «что делать и что не делать».

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

DOU Hobby: Фехтование - боевое искусство для интеллектуалов

$
0
0

[DOU Hobby — рубрика о нетехнических проектах IT-специалистов: творчество, интересное хобби и другие lifestyle-достижения. Если вам есть о чем рассказать — пишите на valentina@dou.ua]

Дарья Недашковская — Senior QA в Luxoft, с детства занимается фехтованием. За 15 лет она успела сменить колющий вид оружия на более динамичный — рапиру на саблю, войти в состав Национальной сборной Украины по фехтованию и стать неоднократной чемпионкой и обладательницей кубка Украины.

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

— Дарья, как ты заинтересовалась фехтованием? Чем именно понравился этот вид спорта?

Все началось в далеком 1994 году с того, что меня выгнали с художественной гимнастики. Я не появлялась на тренировках 2 месяца из-за болезни. А когда вернулась к занятиям, услышала от тренера: «Ты столько пропустила! Что ты здесь делаешь? Ты совершенно неспортивный ребенок, спорт не для тебя!».

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

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

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

Я закончила экономический факультет КНУ им. Тараса Шевченка. Совмещать тренировки и учебу было довольно непросто: ни один преподаватель не был в восторге от моей спортивной карьеры.

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

— Олимпийские игры — это профессиональный спорт. Каких результатов удалось достичь?

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

— В каких еще соревнованиях участвовала?

Я стала неоднократной чемпионкой Украины, 5 лет защищала честь Украины в составе Национальной сборной. В 2001 году завоевала серебро первенства мира среди кадетов в индивидуальных соревнованиях, в 2003 — серебро командного первенства Европы среди юниоров. В 2005 получила бронзу чемпионата Европы в команде.

Чемпионат Европы в Хорватии, 2003 год (Дарья — вторая слева)

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

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

Стандартная тренировка фехтовальщика длится 2-3часа и состоит из трёх стадий: сначала разминка — разогрев и растяжка мышц, затем передвижение в фехтовальной стойке и, наконец, боевая практика — непосредственно фехтование.

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

Количество тренировок в неделю — индивидуально. Если у профессионалов таких тренировок по 8-9 внеделю, то любители могут ограничиться и 2-3походами в зал.

— В фехтовании есть 3 вида оружия — шпага, рапира и сабля. Чем они отличаются друг от друга?

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

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

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

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

Чемпионат мира в Польше, 2001 год финал (слева — Мариэль Загунис из США, справа — Дарья)

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

— Из чего состоит экипировка фехтовальщика?

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

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

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

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

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

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

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

Чемпионат мира в Польше, 2001 год

— Что можешь посоветовать новичкам? С чего и как лучше начинать?

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

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

— Развито ли в Украине сообщество фехтовальщиков? Насколько распространен этот вид спорта?

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

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

— А ты? Продолжаешь тренировки?

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

Junior дайджест: курси, стажування, інтернатура. Жовтень’17

$
0
0

До вашої уваги дайджест навчальних програм для тих, хто починає свою кар’єру в ІТ. В цьому номері зібрані можливості, актуальні у жовтні 2017. Усі програми безкоштовні та передбачають можливість працевлаштування по завершенні.

Якщо ви маєте інформацію про інші безкоштовні курси/стажування/інтернатури, яких немає в дайджесті, пишіть на zlot.dima@gmail.com, і ми додамо їх до статті.

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

КомпаніяМістоНапрямТип
CodalineЧеркасиFront-End, Android, RubyКурси
DataArtХерсонQAКурси
Dev-ProХарківJavaScriptКурси
EPAMДніпро, Вінниця, Київ, ЛьвівFront-End/JS, .NET, Automated Testing (Java), DevOps, Business IntelligenceКурси
GenesisКиївProduct Manager, Analyst, Data Analyst, Marketing Manager, User Acquisition Analyst, Affiliate ManagerКурси
GL BaseCampХарків.NET/JSКурси
Intego GroupХарківБіостатистика, програмування SASКурси
KyivstarКиївBig DataКурси
MobiDevЧернівціAndroid, iOSКурси
NIX SolutionsХарківJava, .Net, PHP, Front-End, Business AnalysisКурси
OWOXДніпроАналітикаКурси
SoftServeРівне, Львів, ХарківPython, Automation Testing with Ruby, Golang, Manual QA, WebUI/PythonКурси
WeteloЛуцькJavaScriptКурси
CHI SoftwareХарківQA Engineer, Resource/ Account ManagerІнтернатура
HYS EnterpriseОдеса.NETІнтернатура
LuxoftКиїв, ОдесаAngular JS, С++, AnalystІнтернатура
InteticsХарків, КиївРозробник (функціональна мова)Робота
SombraЛьвів, Івано-ФранківськFront-EndРобота

Codaline

Напрям:курси Front-End, Android та Ruby.
Місто:Черкаси.
Дедлайн подачі заявок: 1 жовтня.

Як потрапити:заповнити заявку на сайті, пройти тестування, співбесіду.
Деталі:на сайті.

DataArt

Напрям: DataArt QA School — курси для тестувальників.
Місто:Херсон.
Дедлайн подачі заявок: 10 жовтня.

Вимоги до кандидатів:

  • Студенти 3-5 курсів,новачки в IT-сфері та всі, хто бажає стати спеціалістом і розвиватися у сфері тестування ПЗ;
  • Англійська — не нижче Intermediate;
  • Уважність, аналітичний склад розуму, наполегливість та бажання навчатися.

Як потрапити:надіслати резюме на school.ksn@dataart.com, пройти тестування, співбесіду.

Умови:навчання почнеться 30 жовтня. Заняття проходитимуть тричі на тиждень у вечірній час. Тривалість курсу — півтора місяця. Програма складається з теоретичної та практичної частини ручного тестування та основ автоматизованого тестування.
Деталі:пишіть на пошту.

Dev-Pro

Напрям:курси Front-End та JavaScript.
Місто:Харків.
Дедлайн подачі заявок: 9 жовтня.

Вимоги до кандидатів:

  • Рівень англійської — Intermediate і вище;
  • Упевнені знання HTML і CSS;
  • Додатковим плюсом буде знання основ Git і портфоліо виконаних проектів.

Як потрапити:зареєструватись на cайті, пройти тестування, співбесіду.

Умови: 20 занять (10 лекцій + 10 практик), 2 заняття в неділю по 2,5 години. Заняття проходять в корпусах ХНУРЕ.
Деталі: на cайті.

EPAM

Напрям: Front-End/JS, .NET, Automated Testing (Java), DevOps, Business Intelligence.
Місто:Дніпро, Вінниця, Київ, Львів.
Дедлайн подачі заявок: 29 вересня — Київ (.NET), 3 жовтня — Львів (Front-End/JS Development), 5 жовтня — Дніпро (Front-End/JS Development), 12 жовтня — Вінниця (Front-End/JS Development), початок жовтня — Львів (Automated Testing Java, Business Intelligence), 13 жовтня — Київ (DevOps).

Вимоги до кандидатів:деталі на сайтікомпанії.

Як потрапити:надіслати заявку на сайті, пройти тестування та інтерв’ю.

Умови:навчання проводиться 2-3рази на тиждень залежно від напрямку та групи. Більше інформації на сайтітренінгового центру компанії.

Genesis

Напрям:ІТ школа для тих, хто хоче працювати в продуктовому ІТ. Після школи випускники зможуть працювати на позиціях Product Manager, Analyst, Data Analyst, Marketing Manager, User Acquisition Analyst, Affiliate Manager.
Місто:Київ.
Дедлайн подачі заявок: 5 листопада.

Вимоги до кандидатів:

  • Від 2 років досвіду роботи (ІТ, Big 4, телеком, фінанси, аудит, медіа, аналітика і т.д.)
  • Технічна або економічна освіта
  • Знання математики — великий плюс
  • Знання математики — великий плюс
  • англійська на рівні не нижче Upper-Intermediate.

Як потрапити:

  • до 5 листопада подати заявку на gen.tech/school;
  • з 6 жовтня по 12 листопада пройти онлайн тест;
  • з 13 по 18 листопада розповісти про себе трохи більше;
  • з 20 по 26 листопада вирішити завдання в офісі Генезису;
  • і з 27 листопада по 20 грудня проявити себе на співбесіді.

Умови:двічі на тиждень з 19-21:00.Лекції та домашні завдання по кожному модулю, всього 8 модулів.
Деталі:на сайті.

GL BaseCamp

Напрям:курси .NET та JavaScript.
Місто:Харків.
Дедлайн подачі заявок: 29 вересня.

Як потрапити:зареєструватись на cайті, пройти тестування, співбесіду.

Умови:тривалість — 3 місяці (3 рази на тиждень у вечірній час).
Деталі:на cайті.

Intego Group

Напрям:курси біостатистика, програмування SAS.
Місто:Харків.
Дедлайн подачі заявок: 29 вересня.

Вимоги до кандидатів:

  • Студент магістратури чи випускник ВНЗ;
  • Поглибленні знання статистики та статистичного аналізу;
  • Початкові знання SQL;
  • Володіння англійською мовою на рівні Intermediate.

Як потрапити:надіслати заявку за посиланням, пройти тестування зі статистики, основ баз даних та англійської, за підсумками якого пройти співбесіду з представниками ХНУ ім. Каразіна та компанії Intego Group.

Умови:термін навчання — один академічний рік. Протягом навчання студенти займаються на навчальній базі ХНУ, отримуючи знання з клінічних випробувань лікарських препаратів, статистичних методів аналізу результатів випробувань, використання програмного комплексу SAS для програмування статистичної обробки цих результатів, а також поглибленні навички з англійської мови. Після закінчення повного курсу студенти можуть безкоштовно пройти тести та отримати сертифікат SAS Certified Base Programmer for SAS 9. За результатами навчання та сертифікації компанія надає найкращим студентам можливість стажування.
Деталі: на сайті.

Kyivstar

Напрям:школа Big Data.
Місто:Київ.
Дедлайн подачі заявок: 5 жовтня.

Вимоги до кандидатів:

  • Студент, програміст, математик чи аналітик;
  • Знайомі з основами машинного навчання;
  • Маєте навички програмування на Python чи R.

Як потрапити:зареєструватись на cайті, пройти тестування, співбесіду.

Умови: 10 днів, 7 модулів. Старт занять 27 жовтня.
Деталі:на cайті.

MobiDev

Напрям:курси iOS/Android.
Місто:Чернівці.
Дедлайн подачі заявок: 6 жовтня.

Вимоги до кандидатів:

  • Знання та навички у будь-якій мові програмування (для Android на Java);
  • Знання та навички роботи з Git;
  • впевнені знання ООП;
  • Intermediate English level (written & spoken);
  • Навички роботи з алгоритмами.

Як потрапити:зареєструватись на cайті, пройти тестування, співбесіду.

Умови:викладач курсу — Android Developer, Head of Chernivtsi R&D Brunch MobiDev. Заняття відбуватимуться 2 рази на тиждень з 18:00 до 21:00. Максимум практики і мінімум теорії. Протягом курсу студенти розроблятимуть Android-додаток, який стане показником засвоєння навичок студентом. Крім того, передбачені домашні завдання, виконання яких вплине на успішне завершення навчання.
Деталі:на сайті.

NIX Solutions

Напрям:курси по Java, .Net, PHP, Front-End, Business Analysis.
Місто:Харків.
Дедлайн подачі заявок:немає.

Вимоги до кандидатів:деталі по кожному з напрямів на cайті.

Як потрапити:зареєструватись на cайті, пройти тестування, співбесіду.

Умови:навчання триває від 2 до 5 місяців, у залежності від програми та напрямку. Проходить в офісі компанії в форматі лекцій + практичні заняття 2-3рази на тиждень по 2-3 години.
Деталі:на сайті.

OWOX

Напрям:курси для аналітиків.
Місто:Дніпро.
Дедлайн подачі заявок: 28 вересня.

Вимоги до кандидатів:базові знання SQL та аналізу даних, англійська мова Intermediate.

Як потрапити:зареєструватись на cайті, пройти тестування, співбесіду.

Умови:курси тривають місяць, заняття 2 рази на тиждень.
Деталі:в анкеті.

SoftServe

Напрям:курси Python, Automation Testing with Ruby, Golang, Manual QA, WebUI/Python.
Місто:Рівне (Python), Львів (Automation Testing with Ruby, Golang), Чернівці (Manual QA), Харків (WebUI/Python).
Дедлайн подачі заявок: 03.10 (Рівне), 18.10 (Львів), 23.10 (Чернівці), 24.10 (Харків).

Вимоги до кандидатів:детальніше про кожен з напрямів за посиланням.

Як потрапити:заповнити реєстраційну форму на сайті. Пройти технічне тестування, тестування на визначення рівня англійської та співбесіду з рекрутером.

Умови:Термін навчання — 3 місяці.
Деталі:на сайті.

Wetelo

Напрям:курси JavaScript.
Місто:Луцьк.
Дедлайн подачі заявок: 15 жовтня.

Як потрапити:зареєструватись на cайті, пройти тестування, співбесіду.

Умови:курси тривають 1,5 місяці.
Деталі:на сайті.

CHI Software

Напрям:інтернатура QA Engineer, Resource/ Account Manager.
Місто:Харків.
Дедлайн подачі заявок:Немає.

Вимоги до кандидатів:
QA

  • Освіта: вища технічна (комп’ютерні технології) або курси QA Engineer;
  • Досвід створення тестової документації (check list, test cases, bug reports та ін.);
  • Розуміння теорії QA та тестування;
  • Розуміння SDLC, методологій та різниці між видами тестування;
  • Знання англійської мови на рівні Intermediate;
  • Аналітичне мислення.

Resource/ Account Manager

  • Досвід у продажах: не менше ніж півроку;
  • Базове теоретичне знання технологій розробки програмного забезпечення;
  • Сильні комунікативні навички;
  • Орієнтування на результат, здатність працювати в стресових умовах, багатозадачність;
  • Знання англійської мови на рівні Intermediate або Upper-Intermediate.

Як потрапити:надіслати резюме на пошту careers@chisw.com, пройти тестування, співбесіду.

Умови:навчання в інтернатурі відбувається у форматі повноцінної роботи у компанії протягом 3 місяців (повний 8-годиннийробочий день, з понеділка по п’ятницю, гнучкий графік). За період навчання в інтернатурі кандидати будуть отримувати гідну оплату та зможуть брати участь в усіх заходах, що відбуваються у компанії. Кожному інтерну буде виділений ментор, який буде давати йому завдання, слідкувати за прогресом та проводити код рев’ю.
Деталі:надсилайте запитання на пошту.

HYS Enterprise

Напрям:інтеранатура С#.
Місто:Одеса.
Дедлайн подачі заявок:немає.

Вимоги до кандидатів:знання C#, Microsoft. NET (ASP.NET, MVC, ADO.NET) та знання HTML, CSS, JavaScript (jQuery).

Умови:повний робочий день.
Як потрапити:надіслати резюме на vacancies@hys-enterprise.com.
Деталі:на cайті.

Luxoft

Напрям:інтернатура Angular JS, С++, Analyst.
Місто:Київ (Angular JS, С++, Analyst), Одеса (С++).
Дедлайн подачі заявок:немає.

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

Як потрапити:відгукнутись на вакансію на сайті.

Умови:оплачуване стажування, повний робочий день.
Деталі:на сайті.

Intetics

Напрям:робота розробником на функціональній мові.
Місто:Київ, Харків.
Дедлайн подачі заявок:немає.

Вимоги до кандидатів:

  • Досвід програмування на будь-якій мові;
  • Аналітичний склад розуму;
  • Англійська рівня Intermediate.

Як потрапити: надiслати резюме, пройти спiвбесiду з рекрутером та менеджером проекту, виконати тестове завдання.
Деталі: на сайті.

Sombra

Напрям:робота Front-End.
Місто:Львів, Івано-Франківськ.
Дедлайн подачі заявок:немає.

Вимоги до кандидатів:

  • Гарне знання HTML5 та CSS3;
  • Знання Javascript, JQuery, AJAX;
  • Знання AngularJS буде плюсом;
  • Важливою є здатність обирати та реалізовувати гарні компоненти UI як з дизайнером, так і без нього;
  • Знати та вміти застосовувати адаптивну верстку;
  • Досвід роботи з Git та/або SVN;
  • Англійська мова не нижче Intermediate.

Як потрапити:подати заявку на сайті, пройти співбесіду, виконати тестове завдання.

Умови: розглядаються кандидати без досвіду роботи, лише зі Львова або сусідніх областей.
Деталі: на сайті.

DOU Ревизор в Rentberry: «Квартира в доме, где жила Ахматова»

$
0
0

В этот раз DOU Ревизорпобывал в киевском офисе Rentberry — небольшой продуктовой компании, которая разрабатывает платформу для долгосрочной аренды жилья. Rentberry была основана в 2015 году, основной рынок — США.

Платформа Rentberry значительно упрощает поиск и аренду квартир, автоматизирует процесс и дает возможность решать любые вопросы в режиме онлайн — без бюрократии. С ее помощью пользователи могут искать квартиры, создавать и отправлять аппликационные формы, обсуждать условия и цену аренды, делать background/credit check (без этих данных снять квартиру в США невозможно), а также подписывать договор об аренде и отправлять ежемесячную оплату. Владельцы квартир могут выбрать самых надежных кандидатов, проверять их кредитную историю, запрашивать рекомендательные письма и получать оплату за аренду.

В Украине расположен центр разработки. Здесь работает 21 сотрудник, 13 из них — технические специалисты. Второй представительский офис находится в Сан-Франциско, там всего 4 сотрудника.

В округе и поблизости

Киевский офис компании находится по адресу ул. Заньковецкая, 7, что в 3-хминутах ходьбы от станции метро «Крещатик». Дом был построен еще в 1904 году архитектором А. Вербицким. В свое время в нем жила поэтесса Анна Ахматова и писатель Дмитрий Прилюк.

В пешей доступности от офиса можно найти кафе и общепиты на любой вкус. Из ближайших — прямо напротив офиса кафе «Буланжери» (средняя стоимость обеда — 75 грн). В 5-10-ти минутах ходьбы находится площадь Независимости и Крещатик, где сосредоточено много различных продуктовых магазинов, общепитов, ТРЦ «Глобус» и ЦУМ.

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

На велосипеде приезжать в офис будет неудобно: обустроенной парковки для велотранспорта здесь нет.


















Рабочее пространство

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

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

График работы довольно гибкий. По словам представителей компании: «Нужно отработать 40 часов в неделю. Кто-то приходит пораньше, кто-то позже. Но есть главное правило — нужно быть на рабочем месте до 10:30 утра».

Количество квадратных метров на человека в рабочем помещении составляет 7 м2 (по данным компании).




























Отдых и вдохновение

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
















DOU Ревизор спрашивает

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

Александр, Lead UX/UI Designer, 2 года в компании:

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

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

Надежда, Front-End Developer, 2 года в компании:

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

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

Денис, Lead Developer, 2 года в компании:

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

У нас нет митинг-румов. Это проблема. Всего остального достаточно. Бывает, что на кухне много людей, но в принципе места все равно хватает всем.

Юлия, QA Engineer, 6 месяцев в компании:

Нравится расположение офиса в центре Киева — очень удобно. Нравится современная техника — компьютеры, ноутбуки. Если есть дополнительная потребность в гаджетах — монитор или что-нибудь другое, это вполне можно попросить, и тебе купят. У нас очень классная кухня. Нравится, что балкон есть, комфортная мебель.

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


Ну что, мы поехали дальше... А если вы хотите, чтобы DOU Ревизор приехал к вам, пишите нам — revisor@dou.ua

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

Следите за нами на Facebook — www.facebook.com/dourevisor

Смотрите закулисные кадры того, что не проходит нашу цензуру на Instagram — instagram.com/dourevisor

Подписывайтесь на видеоканал DOU Ревизор на YouTube.

Кибербезопасность по-украински: о давлении силовиков, белых и черных хакерах и ценности диванных экспертов

$
0
0

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

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

— Никита, вы давно сотрудничаете с государственными службами по вопросам ИБ. С чего всё началось?

У меня очень активная позиция. Когда в 2015 году анонсировали создание киберполиции, мы с коллегами поехали в ОБСЕ к координаторам национальных проектов и предложили им программу обучения для киберполиции. Мы разработали прозрачную публичную процедуру подбора кадров, придумали, как можно собрать деньги на достойные зарплаты для инструкторов с помощью краудфандинга. Однако у них эта процедура была весьма закрыта и заангажирована, и нам тогда отказали. Детали этой истории я рассказывал в интервью на «Цензоре», материал называется «„Крымский ботнет“, или Кто заказал „Цензор.НЕТ“?».

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

Вот после этого и началось моё взаимодействие с представителями власти. Я для себя решил, что моя компания ProtectMaster и я лично никогда не будем участвовать в государственных тендерах, чтобы избежать конфликтов интересов. Моя компания начала бесплатно предлагать сотрудникам всех силовых ведомств пройти мастер-классы по способам сбора информации из открытых источников и базовым навыкам в сфере практической кибербезопасности. Мы занялись обучением СБУ, прокуратуры и силовиков, рассказывая, как правильно документировать, собирать информацию, пользоваться открытыми базами данных и всем, что даёт нам интернет.

— Как попали на должность советника при Администрации Президента?

Наша инициатива по обучению сотрудников СБУ, полиции, киберполиции и прокуратуры привела к знакомству с представителями власти. Они также оказались заинтересованы в профильных, профессиональных консультациях. Это сотрудничество естественным путем оформилось официально, и меня назначили внештатным советником АП.

В удостоверении написано просто «Советник Администрации Президента». Но, как вы понимаете, ни в какой другой сфере, кроме кибербезопасности, я советовать не могу :)

— Что входит в обязанности советника?

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

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

— Чем вы занимаетесь сейчас, какими вопросами?

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

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

— Какие еще проблемы в информационной безопасности видите?

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

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

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

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

Вот такие публичные (законодательные или не законодательные) IT-инициативы я предлагаю на критику общественности. Пока что конструктивной критики не получил.

— А как реагирует государство? Что-то улучшается?

Подвижки есть: я вижу какие-то решения СНБО, которые вводятся указами Президента. Возможно, провести такие решения через ВР не всегда хватает голосов. К примеру, та же блокировка «ВКонтакте», «Яндекса» — это уже конкретные шаги.

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

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

— Что тормозит прогресс на государственном уровне?

Проблема в абсолютной хаотичности действий. Распространенный пример: киберполиция расследует какое-то дело. К ней приходит сотрудник из СБУ, пытается изъять дело. Потом ещё приходит прокуратура, и начинаются непонятные танцы с бубном вокруг громкого резонансного дела.

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

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

— Много ли в Украине таких профессионалов? Насколько развито сообщество?

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

В частном секторе всё более-менее хорошо, работы достаточно. Программисты могут получать там от 1,5 до 4-5,а то и 6 тыс. долларов в месяц и не хотят связываться с государством. А само сообщество развивается, меняется, адаптируется к рыночным тенденциям. Бизнес всегда развивается быстрее, чем государство.

— Если сравнивать кибербезопасность в Украине и в других странах Европы, США — насколько мы отстаем?

У нас бумажная страна. Поэтому, к примеру, когда «Прикарпатьеоблэнерго» атаковали и выключили свет, мы всегда могли послать электрика Василия, чтоб он физически включил рубильник. Если случится что-то подобное в странах Европы или США, у них послать включить рубильник будет намного сложнее :)

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

— Изменилось ли у нас что-то в лучшую сторону после NotPetya? Приняло ли государство какие-то превентивные меры?

Было принято решение на базе СНБО. Пока что оно только на бумаге. Будут ли какие-то подвижки и изменения? Покажет время.

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

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

— Большой ли спрос в украинских компаниях на специалистов по ИБ?

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

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

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

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

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

Надо сказать, в плане «черных» хакеров нам тоже есть чем «похвастаться». Украинско-русской командой был создан «Зевс» — один из самых известных и нашумевших банковских троянов, который ворует деньги с банковских карт. Черная платежная система Liberty Reserve, которая использовалась в основном для отмыва денег, для черных платежных операций, была создана киевлянином, его арестовало ФБР. Обороты внутри этой системы исчислялись сотнями миллионов долларов.

— Как работают «белые» хакеры?

«Белые» хакеры, как правило, работают через Bug Bounty программы. Крупные и уважающие себя бренды запускают такие программы и говорят: «Мы публично разрешаем всем хакерам тестировать наши сервисы, пытаться их взломать при условии, что вы отправите нам отчет о том, что вы нашли. Мы в обмен на это оплатим стоимость найденных уязвимостей». Составляется список, что разрешено, что запрещено. К примеру, нельзя использовать DDOS-атаки и автоматические сканеры. Если нарушить правило, то, скорее всего, вам не заплатят.

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

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

— Вы сказали, что начинали с игр. А как вообще заинтересовались сферой информационной безопасности?

Мне было 14-15 лет,когда под руку подвернулась книжка «HTML 4.0», и я увлекся, стал пробовать создавать сайты. Тогда твёрдо определился, что хотел бы работать в направлении IT. На тот момент, как и все ровесники, ходил в компьютерные клубы, где можно было играть по сети с друзьями. Со временем стал системным администратором в таком клубе. По чуть-чуть изучал сетевые технологии, настраивал сетки, создавал сайты, начал создавать читы для игр. Затем написал программу, которая позволяет смотреть закрытые фотографии «ВКонтакте», это, кстати, тоже активно обсуждается троллями на определенных ресурсах. Но позже забросил это дело и перешёл в арбитраж веб-трафика: занимался скупкой рекламы в Google и перепродажей на более выгодных условиях.

На втором курсе отправился в США по программе обмена «Work and Travel» , где прожил почти 6 месяцев, перенимая опыт. На 3 курсе университета пошел на военную кафедру, оттуда попал в СБУ, где прослужил два года. Разочаровался службой из-за интриг и непонимания со стороны руководства простых истин, но всё равно за это время получил очень много полезного жизненного опыта. На мой взгляд, структура в 2014 году была более «беззубая», сейчас она более крепкая.

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

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

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

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

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

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

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

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

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

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

Поэтому я и призываю всех максимально объединяться и присоединяться. Мне очень нравится девиз десантников: «Кто, если не мы?»

IT на службе у государства: опыт Эстонии

$
0
0

[Об авторе: Алексей Воронков — управляющий директор e-Residency в Украине. Ветеран ИТ-индустрии с обширным опытом работы в большом спектре компаний, от стартапов (2 успешных выхода) до мультинациональных корпораций (Procter & Gamble, Western Union и других)]

Как и Украина, Эстония вернула себе независимость от СССР в августе 1991 года. Но всего на несколько недель раньше в мире совершилась и другая революция — интернет стал общедоступным. Именно тогда правительство Эстонии приняло решение, благодаря которому страна превратилась в «цифровое сообщество». Был запущен проект Tiger Leap, целью которого стало вложение средств в IT-инфраструктуру.

Самый известный продукт, который «родился» в Эстонии, — это Skype. Но не все знают об эстонских государственных IT-сервисах — e-Estonia, которые облегчают как повседневную жизнь, так и ведение бизнеса. Практически все здесь делается онлайн, за исключением разве что браков, разводов и покупки недвижимости. Причина такого активного развития IT-сервисов довольно проста. В конце 90-ху страны не было средств на аутсорс-разработки IT-систем, поэтому решили воспользоваться внутренними ресурсами. В частности, технология X-Road,на которой основана вся цифровая инфраструктура Эстонии, была разработана эстонской компанией Cybernetica.

В этой статье я расскажу, как развивался правительственный проект e-Estonia и какие технологии используются в стране.

История

2000 — e-Tax

Декларировать налоги онлайн в Эстонии стало возможно еще в 2000 году. Процесс подачи электронной декларации занимает всего 5 минут. Каждый год в Эстонии около 95 % налоговых деклараций подается в электронном виде.

2001 — X-Road

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

2001 — Digital ID

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

2005 — i-Voting

Эстония стала первой в мире страной, граждане которой стали участвовать в выборах полностью онлайн с помощью системы i-Voting,даже находясь за пределами страны. ID-картыпозволяют проголосовать за 3 минуты из любой точки мира.

2007 — Public Safety

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

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

2008 — Blockchain

В стране активно поддерживают блокчейн-технологии. Эстонская компания Guardtime — одна из крупнейших блокчейн-компаний мира — разработала технологию KSI (Keyless Signature Infrastructure), которая используется для независимой верификации всех государственных процессов. Например, ее применяют в сфере здравоохранения для защиты медицинских карт и историй болезни. Пациенты просматривают свои данные и видят историю просмотров, предотвращая таким образом несанкционированный доступ к своим данным. Также блокчейн-технологии используются в банковском секторе, нотариальной сфере, индустрии биржевой торговли, а некоторые компании уже сейчас принимают к оплате биткоины.

2014 — e-Residency

В Эстонии проживает всего 1,3 миллиона человек. Поэтому правительство решило создать программу e-Residency. Став электронным резидентом Эстонии, предприниматель из другой страны получает возможность удаленно открыть компанию в ЕС, счет в банке и управлять своим бизнесом без необходимости бывать в Эстонии.

Помимо вышеперечисленных, в Эстонии действуют такие IT-сервисы:

  • Электронный реестр недвижимости.Пользователи могут просматривать зарегистрированную в стране недвижимость и ее собственников в реальном времени. Помогает в этом геоинформационная система (ГИС) и X-Road.
  • Электронный реестр населения.Информация о каждом жителе Эстонии хранится в электронной базе данных, связанной с другими системами с помощью X-Road.Во время электронного голосования данные загружаются именно из этого реестра.
  • Электронный суд.С 2015 года все судебные документы подаются и обрабатываются в электронном виде. Почти все судебные процессы в стране полностью автоматизированы, а для простых процессов даже не нужно личное присутствие — слушания проводятся онлайн.
  • Sharemind.Технология Sharemind, основанная на Big Data, используется для анонимной обработки зашифрованных данных. На государственном уровне Sharemind помогает выявить уклонение от уплаты налогов, сравнивая налоговые декларации частных лиц и компаний, у которых они покупают товары и услуги. Также Sharemind используется в медицинской диагностике и даже в космосе — для предотвращения столкновения спутников.

IT-рынок Эстонии

Первые IT-компании появились в Эстонии еще в 90-хгодах. Например, компания Cybernetica, где были разработаны технологии X-Roadи Sharemind, основана в 1997 году. Компания CGI, разрабатывающая ПО для европейской спутниковой навигационной системы, появилась в 1993 году. Сейчас у CGI 68 тысяч сотрудников в 40 странах мира.

Среди известных украинцам эстонских IT-компаний — Playtech с крупным офисом в Киеве. Playtech разрабатывает платформу для легальных азартных игр онлайн.

Нельзя обойти вниманием и Skype. Продажа Skype eBay и затем Microsoft очень сильно повлияла на развитие IT в Эстонии: после продажи сотрудники Skype получили премии и смогли запустить свои стартапы.

Кстати, в Эстонии активно поддерживают молодые компании, и на данный момент в стране работает более 450 стартапов. К самым успешным относятся сервис денежных переводов TransferWise, рекламная платформа Adcash, CRM-система Pipedrive.

Будущее

IT в стране не стоит на месте, и в будущем планируются такие проекты:

Data Embassy

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

Транспорт без водителей

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

Reporting 3.0

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

Real-Time Economy (RTE)

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

Industry 4.0

Проект Industry 4.0 основан на концепции Real-Time Factory, которая позволит менеджерам отслеживать ключевые показатели эффективности и разрабатывать способы их улучшения. В результате все фабрики будут работать как единая интегрированная система. Например, SimFactory в Таллине помогает производителям электроники освоить подход Real-Time Factory.

Healthcare 4.0

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

Электронная система образования

К 2020 году все учебные материалы в Эстонии будут доступны онлайн.

Статистика

В заключение немного статистики по результатам работы онлайн-сервисов Эстонии:

  • 99,6 % банковских транзакций проводится онлайн;
  • 96,3 % доходов декларируется в электронном виде;
  • 95 % медицинских данных хранится в электронном виде;
  • 98 % медицинских рецептов выписывается онлайн;
  • 20 735 человек получили e-Residency;
  • 820 лет рабочего времени сэкономлено с помощью X-Road.


В 90-хгодах Эстония стартовала с тех же позиций, что и Украина. В рейтинге ООН по развитию электронного правительства за 2016 год они заняли 13 и 62 места соответственно. Надеюсь, что опыт Эстонии, о котором я рассказал, поможет Украине построить эффективную цифровую инфраструктуру.

DOU Labs: как харьковчане создали IT-музей

$
0
0

В рубрике DOU Labsмы приглашаем IT-компании делиться опытом собственных интересных разработок и внутренних технологических инициатив. Вопросы и заявки на участие присылайте на editors@dou.ua.

Привет! Меня зовут Дарья Гордиенко, я волонтер проекта по созданию Музея программного обеспечения и компьютеров в Харькове.

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

Знаете, со временем начинаешь верить в то, что случайности не всегда случайны, и что существует закономерность: есть идея — всегда найдется единомышленник, который готов развивать её вместе с тобой. Так и произошло у Антона Трубникова (CEO Logic IT Solutions) с Александром Коваленко (системный администратор в Plarium) и Сергеем Цимбалом (глава отдела бизнес-развития в AIRS+). Ещё после посещения Computer History Museum в Калифорнии у Антона с Сергеем возникла мысль создать свой музей. Они хотели показать украинцам, насколько увлекательна и интересна история ИТ-индустрии.

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

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

Основатели музея (слева направо): Сергей Цимбал, Антон Трубников, Александр Коваленко

Что мы вкладываем в идею музея?

«Софт и хард ≠ белое и черное» — именно эта аксиома закладывается в основу Software & Computer Museum. Ведь очевидно, что именно программное обеспечение движет развитием технологий, выступая импульсом для создания достойного «железа» под новую «фичу» софта.

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

Реализация

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

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

Среди экспонатов есть Apple II (1977 год) — самый прибыльный проект Стива Джобса и Стива Возняка. ПК, который изменил ход истории и доказал, что компьютеры могут служить обычным людям, а самое важное — по размеру быть меньше комнаты.

Еще один экспонат — Osborne 1 (1981 год), первый коммерчески успешный ноутбук. Тридцать пять лет назад было продано 125 000 этих 11-килограммовых«портативных» устройств.

Векторная игровая приставка Vectrex — единственная в своем техническом решении: ни до, ни после нее именно векторные консоли не разрабатывались! Еще стоит обратить внимание на графическую станцию Silicon Graphics стоимостью в 40 000 долларов на 1992 год. Именно на такой машине рендерился «Терминатор 2», «Парк Юрского периода» и даже сам Мастер Йода.

В музее 80 % всех экспонатов до сих пор в рабочем состоянии. Именно поэтому у нас есть демозона, где каждый может насладиться игрой в Sega Genesis 1988 года.

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

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

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

Что получают выпускники программы?

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

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

Результаты и планы

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

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

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

Вход в музей бесплатный.
Адрес: БЦ «Капиталист» (пр. Науки, 27Б, 2 эт.).
Рабочие часы: пн-пт — с 10:00 до 20:00; суббота — с 11:00 до 18:00.
Запись на сайте: sncmuseum.org

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


Как выучить английский самостоятельно: бесплатные онлайн-курсы и советы бывалых

$
0
0

— Какой язык программирования учить?
— Английский.
© частый диалог на Форуме

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

При этом на Jobs.dou.uaсложно найти вакансию, в которой от кандидата бы не требовалось уверенное владение английским.

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

Social English Language Skills

Данный курс подойдет для новичков, которые хотят освоить базовый разговорный английский. Авторы обещают, что после прохождения курса вы будете увереннее чувствовать себя во время беседы. Также для тех, кто только начинает изучать грамматику, на Alison есть курс Introduction to English Grammar.

Старт курса: доступен постоянно
Необходимый уровень английского: Beginner / Pre-Intermediate

A Beginner’s Guide to Writing in English for University Study

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

Старт курса: доступен постоянно
Продолжительность курса: 5 недель

English: skills for learning

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

Старт курса: доступен постоянно
Продолжительность курса: 8 недель
Необходимый уровень английского: Intermediate или выше

English Grammar and Style

Еще один курс для прокачки письменных навыков. Этот курс подойдет для тех, кто уже уверенно владеет английским, но хочет отточить свои знания грамматики. Также на edX есть еще один курс, немного легче, и направлен на разговорный английский — Conversational English Skills (доступен постоянно).

Старт курса: 9 октября 2017 года
Продолжительность курса: 8 недель
Необходимый уровень английского: Intermediate или выше

Essentials for English Speeches and Presentations

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

Старт курса: доступен постоянно
Продолжительность курса: 8 недель

Tricky American English Pronunciation

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

Старт курса: доступен постоянно
Продолжительность курса: 4 недели
Необходимый уровень английского: Beginner

Business English

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

Старт курса: доступен постоянно
Продолжительность курса: 5 недель
Необходимый уровень английского: Pre-Intermediate

Learning English with BBC

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

Старт курса: доступен постоянно
Продолжительность курса: 5 недель
Необходимый уровень английского: Pre-Intermediate


Если вы проходили какой-то из этих курсов или знаете еще бесплатные онлайн-курсы, поделитесь отзывом/информацией в комментариях.

Советы по самостоятельному изучению

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

Александр Хомич, Director of engineering, investment & finance, Upper-Intermediate / Advanced

До начала активного изучения английского я знал базовые конструкции на уровне школьника 10-гокласса. Были неплохие знания слов, так как просто из-за любопытства любил листать словарик на досуге. Сейчас я свободно общаюсь и пишу. Оцениваю себя как Upper-intermediate, так как все же есть пробелы в областях, которые не используются активно. Если говорить о рабочей коммуникации, то можно даже оценить как Advanced, без стеснения :)

Моя методика очень простая: нужно постоянно стараться общаться с носителем или человеком, владеющим языком свободно. Мой текущий уровень — результат 8-милет постоянной практики ежедневных, потом еженедельных созвонов со своим боссом. Общение — это не только устные разговоры, но и попытка наладить эффективную переписку в имейлах и чатах. Но это, конечно же, не все. Мой конек — постоянно пытаюсь экспериментировать: использовать новые слова, выразить более сложную, глубокую или тонкую мысль. Это поначалу идет кострубато, но за пару раз ощущается прилив уверенности, и многие вещи выходят сами собой. А также я люблю сам с собой говорить на английском, проговаривать воображаемые диалоги, выступления и т. п. Если перевести на «часы» обучения, то в среднем я тратил около 3-4часов в неделю в течение 7 лет умеренно активного практикума. Но это очень грубо.

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

Богдан Стеблянко, Project Manager, Upper-Intermediate

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

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

Поскольку денег особо тратить мне не хотелось, решил использовать подручные средства. Для изучения грамматики скачал себе учебник «Round-up» и teacher’s book к нему, чтобы можно было выполнять задания на грамматику и сразу себя проверять. Также там были интересные тексты, которые развивали мой словарный запас. Хочется отметить, что «Round-up» я взял себе сразу Upper-Intermediate, чтоб быть уже как бы на уровень выше.

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

Понимая, что этого недостаточно, я зарегистрировался на онлайн-курсах lingualeo.com — достаточно удобный ресурс для изучения английского, сделанный в игровой форме. За день я должен был накормить Лео до 100 %. На этом ресурсе я черпал знания Vocabulary и грамматики.

Для тренировки понимания речи я решил смотреть фильмы на английском языке. Начал с того, что просто скачал сериал «Friends» и пытался его смотреть на языке оригинала. «Friends» показался мне неинтересным, а на английском еще и непонятным, поэтому я отложил его и начал смотреть в оригинале «Игру престолов». В этом сериале меня смутило отсутствие речи, актуальной для сегодняшнего дня, то есть мне хотелось больше познавать деловой английский, нежели язык средневековья, смотреть не про драконов и рыцарей, а про современный деловой мир. И в итоге я пришел к сериалу «House of cards», 5 сезонов по 10-12серий которого я посмотрел с превеликим удовольствием на языке оригинала. Более того, я нашел хороший бесплатный сервис для просмотра фильмов с английскими субтитрами show-english.com. Прелесть его в том, что при нажатии на паузу английские субтитры дублируются русскими, таким образом давая возможность переводить незнакомые слова, не отрываясь от фильма.

Суммарно у меня получалось 4 часа в неделю «Round-up», 100 % lingualeo и минимум 1 серия сериала в день на языке оригинала. Пытался также пройти бесплатный курс бизнес-английского на Prometheus, но смутила укр/рус речь преподавателя при объяснении правил или слов. В дополнение к этому я периодически ходил на бесплатные спикинг-клабы для тренировки своей устной речи. Также иногда я придумывал для себя интересную тему для размышления и рассуждал о ней сам с собой на английском языке.

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

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

Ярослав Леви, арт-директор, Upper-Intermediate

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

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

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

Третий этап — общение с native speaker’ами и просто иностранцами, не понимающими русский язык. Когда у тебя нет другого выхода, кроме как объясниться на том языке, который есть — это серьезно поднимает тонус мозга. Я искал возможностей общения с ними. Мир к тому моменту уже серьезно расширился посредством интернета, и не найти себе собеседника мог только ленивый. Плюс чемпионат Евро 2012 очень помог. Я тогда устроился работать в отель возле стадиона, две недели по-русски вообще не говорил.

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

В результате до текущего уровня дошел за три года активной практики. Отсутствие практики, конечно, подтачивает скилл.

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

Евгений Поветкин, Test Automation Engineer, Intermediate / Upper-Intermediate

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

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

Закрепляя основы, я также использовал различные приложения на телефоне, пока находился в метро и при любой другой возможности. Например, Lingualeo — приложение, которое можно отлично использовать и в бесплатной версии для ежедневного совершенствования: улучшать грамматику, повторять слова, читать разные интересные истории на английском. Когда нажимаешь на слово, появляется его перевод, который можно добавить себе в словарь для повторения. Также там удобная интеграция с TED Talks — это набор познавательных видео на разные темы с английскими субтитрами (можно найти и в ютубе). Улучшает восприятие, и опять-таки новые слова можно добавлять себе в словарь.

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

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

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

С трудностями в формулировке предложений я иногда обращаюсь за помощью к google translate. Введя текст на английском, можно кликнуть на предложенный перевод и увидеть варианты, как ещё можно было бы написать это по-английски. Очень важно при формулировке понимать основные тонкости построения предложений:

  • правильное использование времени;
  • предлоги at-on-in;
  • условные предложения.

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

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

Сейчас у меня уверенный Intermediate, который уже очень близок к Upper-Intermediate.
От того момента, когда я осознал надобность английского, прошло 1,5 года. Но я бы не назвал своё изучение активным, и я думаю, что при большом желании по этой схеме можно развить уверенный Upper-Intermediate, если добавить больше чтения английской литературы.

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

Сергей Каракаш, Front-end Developer, Intermediate / Upper-Intermediate

До начала изучения английского я не говорил на нем вообще, так как в школе и вузе изучал французский язык. Сейчас я свободно говорю, пишу (веду твиттер 99 % на английском — там, если что, про футбол в основном), смотрю фильмы и сериалы на языке оригинала.

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

Вначале я просто пытался внимательно вслушиваться в речь комментатора. Сперва она для меня звучала как одно длинное слово. Со временем я стал различать слова, даже не зная их перевода. К этому я добавил ежедневное чтение и перевод одного абзаца любой статьи в интернете о футболе (статьи брал в основном c telegrapgh.co.uk, guardian.co.uk). Я никуда не записывал переведенные слова, а просто пытался их запомнить. Понятное дело, из 20 новых слов мне удавалось запомнить от силы 1-2.Но смысл методики в том, что, встретив одно и то же слово 10-15-20 раз,рано или поздно ты запомнишь его значение.

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

  • рус. звук, англ. субтитры;
  • англ. звук, рус. субтитры;
  • англ. звук, англ. субтитры;
  • англ. звук, без субтитров.

Естественно, каждый раз смотреть фильм полностью не обязательно, можно как и со статьями — разбивать на части. В первую очередь, самые любимые части (например, моя любимая вторая сцена из «Pulp Fiction»). Стоит упомянуть еще «The Big Lebowski», «12 Angry Men», «The Departed», «Leon». Британские фильмы не рекомендую из-за акцента и необычного произношения.

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

И самый главный метод — ежедневно что-то писать на английском из головы. Идеально завести твиттер, найти интересующую тематику, «братьев по разуму» и начинать общаться или просто писать свои мысли (первое работает лучше). Мне очень помогло, когда я начал фолловить ребят, которые болеют за ту же команду, что и я. Кто там говорил, что футбол — это бесполезная игра, где 22 мужика гоняют один мяч? :)

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

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

React 16: огляд нової архітектури fiber

$
0
0

Я Євген Шемет — професійно займаюсь розробкою більше 10-тироків, виступаю на конференціях, організовую IT-мітапи, викладаю у благодійній фундації BrainBasket та з цього навчального року у ВНТУ. Я доповідав на Vinnytsia.jsпро React 16. І нещодавно мене запросили написати на цю тему статтю для DOU. Статтю пишу вперше, тому буду радий вашим зауваженням та порадам у особистих повідомленнях або коментарях.

Fiber

Fiber — це нова архітектура, що покладена в основу React 16, реліз якого відбувся нещодавно. Велика частина коду була переписана з нуля. Основною метою було створення можливості для пріоритизації оновлень контенту. Також переписана система обробки помилок та усунуті деякі старі незручності, наприклад, необхідність обгортати декілька елементів в один кореневий елемент. Існуюче API, на щастя, майже не зачепили.

Демо

Розпочати знайомство найкраще з проблеми, яку має вирішити нова версія. Її добре видно на демо. Демо синтетичне, симулює щось накшталт екрана диспетчерської таксі. На карті міста жовті машини. На машинах чорні числа, що вказують, скільки машині ще їхати до точки призначення. Числа змінюються кожної секунди, і під час цієї зміни, анімація підлагує. Лаги з’являються тому, що виконуються дві паралельні дії: обробка анімації та оновлення DOM. Анімація працює добре, аж до поки не стається масове оновлення DOM.

Щоб проблему було краще видно, введена штучна затримка, не забувайте що демо синтетичне. Але проблема цілком реальна: поки переобраховується DOM, анімація не програється, через те що всі ресурси покладено на роботу з DOM. І в рамках старої архітектури React цю проблему не можна було вирішити аж ніяк. Треба віддати належне розробникам бібліотеки: вони, зіткнувшись з цією проблемою, переписали значну частину коду. Незважаючи на це, міграція не має викликати великі труднощі.

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

Наразі

React для забезпечення високої швидкості роботи використовує технологію Vitrual DOM. В пам’яті підтримується спрощена копія DOM, де за вузлами закріплені конкретні екземпляри (instance) компонентів, що ними керують. Коли змінюється стан екземпляра, відбувається процес оновлення, що складається з таких етапів:

  • Компоненти опитуються щодо змін.
  • DOM в пам’яті перебудовується.
  • Обраховується різниця з реальним деревом DOM та вносяться безпосередні зміни.

Минулі версії React для оновлення використовували алгоритм, що його заднім числом назвали Stack. І в нього з часом виявився значний недолік: він працює простим пошуком в глибину, і його робота неперервна. А оскільки в браузері все виконується в одному потоці, то під час оновлення інші процеси мають зачекати. У випадку високопріоритетних оновлень, наприклад анімації, це може стати відчутним клопотом.

Новий алгоритм оновлення

Архітектура fiberназвана на честь алгоритму, що лежить в її основі. Алгоритм полягає у розбитті процесу оновлення на дві фази:

  1. Фаза узгодження (reconciliation) — коли виконуються переобрахунки компонентів і відбувається оновлення DOM у пам’яті.
  2. Фаза внеску (commit) — коли виконується безпосереднє оновлення DOM.

Варто зазначити, що фазу узгодження (reconciliation) можна переривати. fiberза допомогою requestIdleCallbackпросить у браузера виділити час, коли той не буде завантажений роботою. При зворотньому виклику браузер вказує, скільки, власне, в нього є вільного часу. Це дає змогу fiber-у планувати частину оновлень на цей проміжок. Якщо браузер не підтримує requestIdleCallback, то React робить поліфіл (polyfill).

Алгоритм fiberу свою чергу названий на честь найменшого об’єкта, що лежить в його основі. За кожним еземпляром (компонента чи елемента) закріплений такий об’єкт, що контролює його стан та зв’язок з іншими компонентами.

{
  stateNode
  return
  child
  sibling
  parent
}

Процес оновлення виглядає таким чином

У нас є поточне (current) дерево компонентів та елементів, сформоване за допомогою об’єктів fiber. Стрілочки вниз це child, вгору parent, вправо sibling.

Створюється паралельне робоче (workInProgress) дерево, що частково складається зі старого дерева.

Визначаються компоненти, що мають зміни (позначені зірочками).

Дерево поступово розгортається, і на його основі відбудовується нове дерево. Там де є оновлення — клонуються елементи і вносяться зміни. Там де оновлень немає — використовуються наявні елементи.

В результаті формується внесок (pending commit). Що для застосування очікує вже більшого проміжку часу. Тому що фазу внескупереривати не можна.

Після того як відбувається внесок (commit), поточне (current) дерево не знищується. Для економії часу дерева просто міняються місцями. Це називається подвійна буферизація (double buffering).

Застосування

Для того щоб відчути нові можливості, необхідно застосувати режим відкладених оновленьReactDOM.unstable_deferredUpdates. (Всі експериментальні можливості спочатку поставляються з префіксом unstable_).

tick() {
  ReactDOM.unstable_deferredUpdates(() => (
    this.setState((prevState) => ({
      tick: prevState.tick + 1
    }))
  ))
}

Оновлення, що відбуваються в рамках deferredUpdates, проходять паралельно.
Зверніть увагу:

  • Необхідно застосовувати setState зі зворотним викликом (callback), setState з об’єктом стає застарілим (deprecated).
  • Якщо новий стан буде залежати від поточного стану, то необхідно використовувати параметр зворотнього виклику prevStateзамість this.state. Тому що він може бути викликаний декілька разів.

Порівняння

Жовтим позначені — оновлення, фіолетовим — анімації, червоним — лаги.

Stack:

Fiber:

Як бачите, обробка CSS анімацій не зупиняється навіть при високій завантаженості оновленнями DOM.

Також

Разом з новою архітектурою при переписуванні React були виправлені деякі невеликі архітектурні помилки.

Фрагменти (Fragments)

Відтепер, якщо компонент повертає набір елементів, його не обов’язково обгортати в один корінний елемент. Ви можете повертати масив елементів, що дуже зручно в місцях, де неможливо просто обгорнути елементи в <div>. Наприклад, в роботі з таблицями і списками, якщо компонент має повернути декілька рядків або елементів списку. Також тепер можна повертати стрічки.

const TableHeader = () => {
  return [<tr><th colspan="2">Автомобіль</th><th colspan="2">Водій</th></tr>,<tr><th>Номер</th><th>Марка</th><th>Позивний</th><th>Телефон</th></tr>,
  ]
}

Кордони помилок (Error boundaries)

Запроваджена нова система обробки помилок. Тепер, якщо в компоненті виникає помилка, можна застосувати метод життєвого циклу componentDidCatch.

class Map extends React.Component {
  constructor(props) {
    super(props)

    this.state = { hasError: false }
  }

  componentDidCatch(error, info) {
    this.setState(() => { hasError: true })
  }

  render() {
    if (this.state.hasError) {
      return <h1>На жаль, сталась прикра помилка.</h1>
    }
    return <MapContent />;
  }
}

Портали (Portals)

Іноді виникає необхідність створити елемент не в рамках поточної ієрархії, а приєднати, наприклад, як у випадку з модальними вікнами, до <body>. На допомогу приходять портали.

render() {
  return ReactDOM.createPortal(<Modal />, domElement)
}

Атрибути (Attributes)

React 16 дозволяє вам використовувати власні атрибути.

<div hello="world" />

Будьте обережні. Це означає, що фільтрація атрибутів більше не виконується.

<div myData="[Object object]" />

Тим не менш, атрибути, що мають канонічне ім’я, все одно валідуються. І ви отримаєте попередження, якщо використовуєте неправильне ім’я атрибута.

// Warning: Invalid DOM property `tabindex`. Did you mean `tabIndex`?<div tabindex="-1" />

Майбутнє

Потенціал нової архітектури реалізовано не повністю. І у розробників є багато планів на майбутнє, що стали реальними завдяки fiber.

Пріоритизація

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

  • Synchronous — синхронний, виконується зараз;
  • Task — задача до наступного тіку (tick);
  • Animation — анімація до наступного кадру (frame);
  • High — високий;
  • Low — низький;
  • Offscreen/Hidden — схований або поза межами екрана.

Превізуалізація (pre-rendering)

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

Абстракція

Мабуть, ви знаєте, що React наразі працює на великій кількості платформ. Наприклад:

  • Браузер: react-dom
  • Мобільні: react-native
  • Термінал: react-blessed
  • Віртуальна реальність: aframe-react
  • Arduino: react-hardware

Команда React активно працює над тим, щоб зробити React незалежним від оточення. З версії v0.14 ReactDOM був виділений в окремий пакет. З версії v0.16розробники рапортують, що React став (майже :)) повністю незалежний від браузера.

Проблеми

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

Міграція

Коли

Вже.

Життєвий цикл компонента

Будьте уважні та обережні, якщо ви використовуєте відкладені оновлення. Деякі методи життєвого циклу під час одного оновлення можуть викликатись двічі або більше разів. Пов’язано це з тим, що оновлення може бути відкладене через більш нагальні оновлення, а потім переобраховане. Це методи фази узгодження (reconciliation):

  • componentWillMount
  • componentWillReceiveProps
  • shouldComponentUpdate
  • componentWillUpdate

Методи фази внеску (commit), викликаються тільки один раз:

  • componentDidMount
  • componentDidUpdate
  • componentWillUnmount

Помилки

Відтепер, з введенням кордонів помилок, React у випадку помилки не намагається продовжувати роботу. Це покладається на ваші плечі. Якщо є необроблена помилка, що доходить до верхнього рівня, дерево компонентів повністю перемонтується.

Атрибути

React більше не видаляє незнайомі атрибути, і вам бажано (але не обов’зково) це робити самим.

setState

Виклик виду setState({ key: value })вважається застарілим (deprecated). Використовуйте setState зі зворотним викликом (callback).

Матеріали та ресурси

Посилання

Ресурси

Java дайджест #35: #WorksFineOnJDK9

$
0
0

Ссылки, на которые лучше таки нажать (по мнению автора), отмечены знаком (!)

Java 9

JDK 9: General Availability

Твиттер фид #WorksFineOnJDK9

(!) Java Platform, Standard Edition Oracle JDK 9 Migration Guide, Release 9

Java Community Process Reacts to Release Cycle Announcement. Если кто не в курсе, то нам обещают новую джаву раз в 6 месяцев, а LTS релиз раз в 3 года. То есть в реальности джаву будем обновлять в лучшем случае раз в 3 года.

Java 9 and IntelliJ IDEA

Unified Logging In Java 9 With The -Xlog Option

Что-то вроде новостей

Вышел Spring Framework 5.0

Вышла спека Bean Validation 2.0

Вышел JUnit 5

Вышел Gradle 4.2

The Ceylon Language Is Now Eclipse Ceylon. У кого-то есть опыт работы с этим языком? Если да, интересно было бы услышать.

Java EE 8 and GlassFish 5.0 Released!

Оракл выбросил Java EE ... то есть Oracle Chooses Eclipse Foundation as New Home for Java EE.

Оракл выбросил NetBeans ... то есть Oracle Donates NetBeans Code to Apache.

Почитать и посмотреть

jOOQ Tuesdays: Oliver Gierke Talks About Spring Data — Java, SQL and jOOQ

(!) Given-When-Then in JUnit Tests. Довольно удобный способ организовывать код в тестах. Вполне возможно, что статья — перепечатка, а не оригинал, ибо я так делаю уже несколько лет, и я не мог придумать такой подход сам.

!) Lambdas and Clean Code. Уже вышла Java 9, а люди все еще обсуждают как пользоваться лямбдами.

(!) Pattern Matching with Brian Goetz. Кому было лень читать про паттерн-матчинг, можете посмотреть видео.

Equifax хакнулиблагодаря уязвимости в Struts. Интересно, что новости о том, что кого-то хакнули через Стратс регулярно появляются где-то раз в полгода.

Using VS Code to Debug Java Applications. Не одной же IDEA пользоваться, нужны же и альтернативные ИДЕ.

Spring

(!) Spring Framework 5 Kotlin APIs, the functional way. Пример того, куда движется Спринг.

Spring Boot 2.0 Will Feature Improved Actuator Endpoints

Spring Boot metrics monitoring with ELK


Предложения и пожелания все еще принимаются или через завсклад и товаровэдадминистрацию ДОУ, или через твиттер @_silverwolf. Также можно оставлять комментарии в специально выделенной темена форуме.


← Предыдущий выпуск: Java дайджест #34

Ruby/Rails дайджест #10: подкаст с DHH, новый блог о разработке, выступления на RubyKaigi

$
0
0

Привет! Сентябрь оказался богатым на события в мире Ruby/Ruby on Rails, поэтому спешим поделиться с вами последними новостями.

В десятом юбилейном дайджесте встречайте множественные рекомендации и советы по улучшению производительности работы на Ruby/Rails, подкаст от Basecamp с участием David Heinemeier Hansson, новый блог о разработке, видео выступлений с конференции RubyKaigi и важные события в октябре.

Почитать

Understanding the secret_key_base in Ruby on Rails — secret_key_base — отличный способ сократить нагруженность конфигураций. В туториале приводятся примеры использования secret_key_base и говорится о ценности этой конфигурации для приложений Ruby on Rails.

Code simplicity — Command pattern — в этом туториале вы найдете информацию, как применять шаблон проектирования ‘Command’ на примере сценария покупки товара в online-магазине.

Superfast CSV imports using PostgreSQL’s COPY command — рекомендации, как максимально быстро импортировать CSV, используя команду PostgreSQL’s COPY.

Серия из двух статей с подробным объяснением моделей параллелизма (concurrency models) в Ruby:

  • Introduction to Concurrency Models with Ruby. Part I — в первой части автор рассматривает различия между процессами, потоки, что такое GIL, EventMachine и Fibers в Ruby.
  • Introduction to Concurrency Models with Ruby. Part II — вторая часть посвящена более продвинутым видам моделей параллелизма, таким как Actors, передаче последовательных процессов, Software Transactional Memory и Guilds — новой модели параллелизма, которая может применяться в Ruby 3.

Teaching a Neural Network to play a game using Q-learning — в предыдущем выпуске нашего дайджеста мы предлагали прочесть статью от Practical Artificial Intelligence о том, как научить искусственный интеллект играть в простую игру с использованием Q-learning. В этом выпуске предлагаем вам узнать, как с помощью нейронной сети и Q-Learning создать искусственный интеллект, который смог бы играть в компьютерную игру.

Using the scikit-learn machine learning library in Ruby using PyCall — из этого туториала вы узнаете, как использовать набор простых и эффективных инструментов для машинного обучения и искусственного интеллекта Scikit-learn. Scikit-learn написан на Python, но Ruby разработчики могут с ним взаимодействовать через PyCall.

How we made our rspec test suite to run 2x faster — скорость выполнения автотестов играет важную роль в разработке программного обеспечения. Из примера в этой статье вы узнаете, как вдвое ускорить выполнение RSpec.

Verify user phone numbers in Ruby on Rails with the Authy Phone Verification API — полезный туториал о том, как проверить достоверность номера телефона пользователя в приложении на Rails 5 с помощью Authy Phone Verification API.

Подборка полезных статей от Engine Yardза сентябрь:

  • Ruby on Rails Security 17-Item Checklist — полезный чеклист проверки безопасности приложения для Rails разработчиков.
  • AWS Image Storage with S3 and EFS: A Rails How To — туториал, как настроить сервисы хранения фотографий Amazon S3 и Amazon Elastic File System для приложения на Rails.
  • Customer Stories: Resolving a Deploy Issue Due to Load Error — кейс, в котором описывается пример успешного решения проблемы ошибки загрузки во время развертывания приложения.
  • Using Services to Keep Your Rails Controllers Clean and DRY — сложная система контроллеров, которые трудно менять, ‒ это не то, что хочется обнаружить в Rails-приложении. Чтобы избежать этого, стоит обратить внимание на подсказки в статье, как использовать сервисы для организации контроллеров.
  • Improving Rails App Performance with Database Refactoring & Caching — улучшаем производительность Rails-приложения, рефакторим базу данных и подключаем кэширование.
  • 7 Completely Legal Rails Performance-Enhancing Techniques — советы по улучшению скорости времени отклика и пропускной способности Rails-приложения.
  • Running Rails on AWS: Know Your Options — в этой статье вы найдете описания четырех вариантов запуска Rails на AWS, которые помогут вам решить, какой из них лучше подходит для вашего приложения.

Rails: make sure you have proper DB indexes for your model’s unique validations — статья- напоминание о том, что надо не забывать про индексы базы данных при создании собственных валидаторов.

That time I wrote a query with chained ruby methods weighing in at 41 lines and 2844 chars — что делать, если получился SQL-запрос на 41 строку? Автор статьи делится опытом, как рефакторить такие запросы.

How to include Rails Associated Model Data in React components — в этом туториале вы найдете подсказки, как получить доступ к связанным данным модели из вашего компонента React на Rails.

DEALING WITH RUBY DEPENDENCY CONFLICTS — рекомендации, как избежать конфликтов зависимостей в Ruby и какие для этого существуют инструменты.

Ruby: pass by value or pass by reference?— существуют спорные взгляды на то, как в Ruby передаются параметры — по ссылке или по значению. Автор блога Rubyblog.proпредлагает разобраться, как это работает.

Improving spec speed in a huge, old Rails app — по мере того, как растет проект, все больше времени уходит на выполнение continuous integration, и скорость spec становится одной из проблем. Из этого кейса вы узнаете, как улучшить скорость выполнения тестов в масштабном приложении на Rails.

Rails Best Practice — Persisting Addresses in PostgreSQL — решение, которое предлагает последовательный, эффективный и надежный способ хранения и извлечения сложных типов данных из базы данных SQL.

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

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

DateTime#to_time and Time#to_time preserves receiver’s timezone offset info in Ruby 2.4 — методы DateTime#to_time and Time#to_time могут быть использованы для возврата объекта Time. В туториале вы найдете отличия работы с этими методами в версиях Ruby 2.3 и Ruby 2.4.

3 ways that will make you React with Rails developer — советы и полезные ресурсы, как лучше инициализировать React.js в приложение на Rails.

Debugging Why Your Specs Have Slowed Down — если выполнение spec-тестов занимает, на ваш взгляд, вечность, советуем взять на вооружение эти подсказки по определению причин замедлений и методы предотвращения их в будущем.

В сентябре увидел свет новый блог от Ruby/Rails разработчика Paul Martensenи уже успел пополниться несколькими статьями:

  • Off the Rails! Part 1.— в своей первой статье автор блога пытается уйти от Ruby on Rails и предлагает альтернативный способ написать JSON-API для приложения.
  • Off the Rails! Part 2.— вторая часть туториала, как создать приложение без использования Rais. Автор предлагает расширить структуру приложения, добавив Bundler, Rake, Sequel и базу данных Postgres.
  • Refactoring CanCan(Can) Abilities — если в системе вашего приложения присутствует сложный набор правил авторизации, эти подсказки помогут сделать их более управляемыми.
  • A way to split up big merge- or pull-requests — в статье описывается способ, как упростить один большой Pull-Request на несколько небольших. Такая практика помогает команде разработчиков делать code review быстрее и качественнее.

Серия статей на тему применения API-интерфейса GraphQL в Rails:

  • How to Implement a GraphQL API in Rails — туториал, как реализовать API-интерфейс GraphQL в Rails.
  • GraphQL and Performance in Rails — в туториале рассматриваются три способа избежать проблем с производительностью с помощью GraphQL в приложении на Rails, а также инструмент, который помогает контролировать, какие запросы выполняются вразрез с API-интерфейсом GraphQL.

Подборка статей о разработке от Arkency за сентябрь:

For Software Engineers — Scalability Introduction — в этой статье вы найдете полезную информацию о масштабируемости и как ее достичь при разработке программного обеспечения.

Послушать

Rework — 03 — Pick A Fight (on Twitter) — подкаст от Basecamp с участием CTO Basecamp David Heinemeier Hansson, где David расскажет об искусстве спорить с людьми в интернете и непосредственно в Twitter.

Подкасты от The Ruby Rogues продолжают радовать беседами с известными программистами:

Свежие подкасты от The Bike Shed в сентябре:

  • The Bike Shed — 122: Name That Smell — в этом выпуске авторы подкаста ведут беседу о работе над новым проектом, о тестах связанных с внешними сервисами и ошибке точности, которая встречается в ActiveRecord.
  • The Bike Shed — 123: Too Many Parameters — в этом эпизоде авторы подкаста обсуждают проблемы, возникающие при повторном использовании кода.
  • The Bike Shed — 124: Nope. Nope. Nope. Nope.— эпизод посвящен процессу подачи заявки на участие в конференциях Ruby, анализу кода и многом другом.
  • The Bike Shed — 125: Less Bad Than Expected — обсуждение преимуществ и недостатков FactoryGirl и уязвимостях данных Equifax.

Пятый сезон подкастов на RWpod продолжается, и за сентябрь собралось немало выпусков:

Посмотреть

The 11-minute guide to building and launching an online store with Rails, Stripe Checkout and Heroku — короткий гайд по созданию интернет-магазина на Rails. Из видео вы узнаете, как настроить платежи для магазина через Stripe checkout.js и развернуть его на Heroku.

Подборка скринкастов от GO RAILS в сентябре:

  • Faster Rails boot times with Bootsnap — из этого скринкаста вы узнаете, как Bootsnap ускоряет время загрузки приложения на Ruby и Ruby on Rails.
  • Geo-spatial Search with Geocoder and Google Maps — в этом скринкасте вы узнаете, как повторить функцию определения геолокации, как у приложений Yelp и Airbnb с помощью гема Geocoder.
  • Geo-spatial Search with Searchkick and ElasticSearch — в этом эпизоде вы научитесь индексировать и находить модели по геолокации с помощью Searchkick и Elasticsearch.

Подборка скринкаcтов от Drifting Ruby за сентябрь:

RubyKaigi 2017 — International Conference — в сентябре в Японии прошла ежегодная конференция RubyKaigi, на которой выступали как известные разработчики из Японии, так и западные специалисты. В этой подборке предлагаем выступления на английском:

Релизы и библиотеки

Библиотеки

Zen Rails Base Application — шаблон для новых Rails приложений, сократить время на создание нового проекта.

ruby-vips — гем, который, обеспечивает привязку Ruby к библиотеке обработки изображений libvips.

Slack Neuralyzer — гем, для массового удаления сообщений и файлов на Slack-каналах.

Gemfile’s new clothes — вскоре ожидается релиз Bundler 2.0 — менеджера для управления гемами. Рекомендуем узнать, чего ожидать от новой версии, и быть в курсе всех изменений задолго до релиза. Также в статье указывается, какими опциями уже сейчас можно пользоваться в последних версиях.

Say Hi to Delivery Boy!— библиотека Racecarобеспечивает простой и интуитивно понятный способ создания и настройки потребителей (consumers) в Kafka, и может легко интегрироваться с приложением Rails.

BRAKEMAN: Rails Security Scanner — сканер безопасности Brakemanобнаруживает уязвимости в приложениях Rails с помощью статического анализа. И, что очень удобно, после сканирования он создает отчет обо всех проблемах безопасности, которые он идентифицировал.

Awesome Data Science with Ruby — список туториалов, библиотек и разнообразных источников о различных приложениях Data Science с использованием языка программирования Ruby.

Релизы

JRuby 9.1.13.0 Released — в сентябре вышла новая версия JRuby.

Welcome Release of Webpacker 3.0 — новости по недавнему релизу гема Webpacker.

Rubies 2.2.8, 2.3.5, and 2.4.2 are now available — в сентябре вышли обновления на Ruby. Версии 2.2.8, 2.3.5 и 2.4.2.

Rails 5.1.4 and 5.0.6 released — 7 сентября вышли обновленные версии Ruby on Rails. Полный список изменений можно посмотреть на GitHub.

Rails 4.2.10 released — также в сентябре обновилась версия Rails 4.2. Как заявляют разработчики, эта версия больше не будет поддерживаться, за исключением серьезных исправлений безопасности.

Karafka (Ruby + Kafka) framework 1.0.0 Release Notes — вышел релиз Karafka 1.0 — это относительно свежий фреймворк, авторам которого удалось реализовать множество новых функций и исправить ошибки. Если вы хотите как можно быстрее познакомиться с фреймворком и начать с ним работать, предлагаем вам эти примечания к релизу.

Книги

Рекомендуемые

Effective Testing with RSpec 3 has been released!— в этом месяце вышла книга о тестировании «Effective Testing with RSpec 3: Build Ruby Apps with Confidence». Заказать можно на Amazonи PragProg.

Релизы

The Unhappy Path. Failure Management Patterns in Ruby and Rails — книга от Benjamin Roth«The Unhappy Path. Failure Management Patterns in Ruby and Rails» еще в процессе написания, но предзаказ уже открыт.

События

International Ruby Conferences Fall 2017 — список международных Ruby-конференций, которые охватываю земной шар от Японии до Бразилии этой осенью.

Coderetreat — 6 октября в Киеве Ruby Meditation устраивает тренинг «Coderetreat» с Сергеем Сержиенко — представителем минского Ruby-сообщества.

RUBY Meditation #18 — 7 октября в Киеве будет проходить митап Ruby Meditation #18. Полный список спикеров и расписание пока ожидается, но уже можно регистрироваться.

SphereCon — Ruby and Go Conference — 28 октября в Киеве пройдет конференция по технологиям Ruby, Go и Front-End. Вход свободный, но не забудьте зарегистрироваться.

RUBY Meditation #19 — митап Ruby Meditation #19 также проводится в Киеве 4 ноября. Билеты уже в продаже.

RUBY Meditation — 20th Anniversary — 2 декабря в Киеве пройдет юбилейный митап Ruby Meditation #20. Новости по организации мероприятия можно отслеживать на странице в Facebook. Также уже есть возможность приобрести билеты.

Курсы

Курсы от Codaline — с 16 сентября по 1 октября 2017 объявлен набор на третий сезон курсов от Codaline, где одним из направлений будет язык программирования Ruby. Курсы будут проводиться в режиме offline в Черкасском государственном технологическом университете.


Касательно тем/материалов/ивентов, которые стоит добавить в следующий выпуск дайджеста, пишите в комментариях или на volodymyr.vorobiov@rubygarage.org. Спасибо за помощь в подготовке дайджеста команде RubyGarage.


← Предыдущий выпуск: Ruby дайджест #9

Без хайпа и маркетинга: нужен ли вам Kotlin?

$
0
0

В рамках QAFest 2017автор блога automation-remarks.comи Lead QA Automation Engineer в Ciklum Сергей Пирогов рассказал, как он докатилися до Kotlin и что из этого вышло. Для читателей DOU, которые не присутствовали на конференции, Сергей изложил этот опыт в авторской статье.

Меня зовут Сергей Пирогов. Уже более пяти лет я занимаюсь вопросами автоматизации тестирования на проектах различного масштаба и сложности. В основном я занимаюсь автоматизацией тестирования с использованием технологий из мира Java.

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

Предыстория: Java, Groovy и другие альтернативы

Java является самым старым и популярным языком на JVM. Отличный язык и инфраструктура. Бесспорный фаворит различных рейтингов среди языков программирования. На Scala мы проектов писать не пробовали из-за излишней сложности, а вот на Groovy писали и достаточно успешно. Этим опытом я делился на конференции Selenium Camp 2016. Увы, Groovy умирает и появление Kotlin его агонию лишь ускоряет.

Откуда взялся этот ваш Kotlin?

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

Язык начал набирать популярность после того, как на конференции JavaOne 2015 Hans Dockter, CEO of Gradle, заявил, что Kotlin получает официальную поддержку для написания Gradle билд-скриптов. Тогда Kotlin все еще был в бете, но новость всколыхнула всех неравнодушных. Волна хайпа начала подниматься уже в тот момент. На пике популярности язык оказался в мае этого года на конференции Google I/O, где было объявлено о том, что Kotlin наряду с Java становится официальным языком разработки под платформу Android. Тут-то всех и «лупануло»: весь Twitter был в постах о Kotlin, появилась куча блог-постов с признаниями в любви языку. Представители JetBrains в различных источниках стали заявлять, что Kotlin — это будущее разработки на JVM.

В целом если смотреть на ситуацию здраво, то причины хайпа вполне понятны. Джава развивается слишком медленно. Java 8 появилась аж в 2014 году, Java 9 на момент публикации уже вышла, но в самом языке слишком мало вкусных фишек. Более того, с Java 9 у многих все в момент перестало работать. И тут людям дают язык, наполненный фичами, часть из которых появится только в 10-ке (и то с оговоркой «может быть ...»).

Чем этот ваш Kotlin круче?

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

C более полным списком можно ознакомиться по ссылке.

И что? Как оно помогает жить?

Null safety — это selling point Kotlin. Проверка на nullable type осуществляется еще во время компиляции.

var a: String = "abc"
a = null // compilation error

var b: String? = "abc"
b = null // ok

Это очень удобно и помогает избежать многих багов.

Extension functions — это фича, которой мне лично очень не хватает в Java. Ниже пример, как с помощью всего пары функций можно улучшить существующий Selenium API.

fun WebDriver.open(url: String) {
    get(url)
}

fun WebDriver.all(cssselector: String): MutableList<WebElement>? {
    return findElements(By.cssSelector(cssselector))
}

fun List<WebElement>.shouldHave(size: Int) {
    assert(this.size == size)
}

По итогу мы можем писать тесты в таком формате:

val driver = ChromeDriver()
driver.open("http://automation-remarks.com")
driver.all(".post").shouldHave(size = 9)

Еще одной фишкой являются функции типа .apply, .with. C их применением можно сделать код более компактным.

ChromeDriver().apply {
        open("http://automation-remarks.com")
        all(".post").shouldHave(size = 9)
}

String template — позволяет удобно форматировать строки. Мы очень часто пользуемся этим в тестах.

fun findCustomerById(id:Long): CustomerEntity{

    val query = """
                SELECT *
                FROM customer
                WHERE id = $id;
                """

    return findOne(CustomerEntity::klass, query)
}

Как видите, SQL запрос не содержит уродливых переносов строк и конкатенаций. Его просто читать, копировать и редактировать.

Reified type — фишка, которая позволяет сделать ваш код очень красивым и лаконичным. Например, мы в тестах часто пользуемся библиотекой Apache DBUtils. С ее применением код получается таким:

val beanHandler = BeanHandler<City>(City::class.java)
val city: City  = QueryRunner().query("SELECT * FROM city", beanHandler)

Но, применив уже знакомые нам extension functionи reified type, мы можем сделать так:

inline fun <reified T> QueryRunner.findOne(sql: String): T {
    return BeanHandler(T::class.java).run { query(sql, this) }
}

и получить следующий код:

val city : City = QueryRunner().findOne("SELECT * FROM city")

В этом случае тип, в который конвертируется результат запроса, будет браться из типа объявленной переменной. Это гораздо удобнее, чем Java Generics.

Совместимость с Java

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

Так ли это на самом деле? Давайте разбираться.

Kotlin vs Rest Assured

Для написания тестов для API мы используем одну из лучших библиотек — Rest Assured. Посмотрим, как она будет работать в Kotlin.

Опа-опа, whenзарезервированное слово. Обойти такое ограничение можно, обернув его в такие вот интересные кавычки. Скажу честно, я даже не сразу нашел эти символы на своей клавиатуре :-)

Kotlin + Selenide

Для написания UI тестов мы используем Selenide. Давайте посмотрим на совместимость.

И снова неудача — $ нельзя, valтоже нельзя.

Kotlin + Hamcrest (AssertJ)

Все мы при написании тестов активно используем такие библиотеки, как Hamcrest и AssertJ. Что с совместимостью?

Здесь нас тоже ждут ограничения.

Все через костыли

Когда начинаешь натыкаться на такие ограничения, то напрашивается вполне логичная мысль...

Чиним Kotlin и Rest Assured

На самом деле все предыдущие примеры можно в какой-то степени починить. Смотрим на пример с Rest Assured:

fun RequestSpecification.When(): RequestSpecification {
        return this.`when`()
}

@Test
fun basicPingTest() {
   given()
      .When()
      .get("/garage")
      .then().statusCode(200);
}

Делаем extension function, в который оборачиваем вызов when. Работает? Работает. Да, это костыль, но рабочий.

Чиним Kotlin vs Selenide

В случае с Selenide нам нужно просто обернуть вызовы функций $и $$, a вместо .val()вызывать .setValue().

fun get(selector: String) : SelenideElement {
     return `$`(selector);
 }
 fun all(selector: String) : ElementsCollection {
     return `$$`(selector);
 }

Результат:

@Test fun usingDollarsWithBackticks() {
        get(By.name("q")).setValue("selenide")
        all("#ires .g").shouldHave(size(10))
        get("#ires .g").shouldHave(text("Kotlin"));
 }

Чиним Kotlin + Hamcrest (AssertJ)

Увы, по этому пункту нас ждет разочарование. Если Hamcrest еще как-то совместим с Kotlin, то AssertJ починить не получится из-за несовместимости в Generic types. Здесь нам нужно просто взять и заменить библиотеку. Благо, в GitHub уже есть энтузиасты, которые написали порт — assertk.

@Test fun example(){
    assertThat(1).isEqualTo(1)
}

assert {
    throw Exception("error")
}.throwsError {
    it.hasMessage("wrong")
}
// -> expected [message] to be:<["wrong"]> 
                         but was:<["error"]>

Следует отметить, что assertk обладает более удобным API и полностью совместима с Kotlin.

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

Чем же все-таки хАрош Kotlin?

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

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

Еще одним примером является Gradle Kotlin-DSL. Уже сейчас gradle.build файл можно писать более приятным способом, получая автодополнения и статическую компиляцию. Эта фича пока что не достигла стадии релиза, но я больше чем уверен: когда будет 1.0, Groovy DSL можно будет помахать ручкой и полностью перейти на Kotlin.

Что имеем в итоге?

Kotlin — очень приятный язык. Все, что уже реализовано у конкурентов Java, в нем есть. Конвертировать существующий код на Java в Kotlin немного проблематично. Нет еще пока полной совместимости со всеми самыми популярными Java-фреймворками и библиотеками. Лично я получаю удовольствие от работы с языком. В заключение я не буду давать явных советов — писать или не писать, учить Kotlin или хейтить и идти учить JavaScript. Я просто оставлю вам ссылочку на свежий репорт от Rebel Labs о состоянии Java-экосистемы, в котором Kotlin назван самым любимым языком c коэффициентом удовлетворенности 9.1 из 10.

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

Физик-ядерщик — об адронном коллайдере в Германии и роли программирования в жизни ученого

$
0
0

Максим Бородин — Java-разработчик, живет и работает в Германии. По образованию Максим — физик-ядерщик, с 2006 по 2009 год он занимался научными исследованиями на адронном коллайдере.

В интервью для DOU Максим рассказал об экспериментальной науке, ускорительном центре DESY в Гамбурге, а также о роли программирования в жизни ученого.

— Максим, вы много занимались и экспериментальной физикой, и программированием. Кем вы себя считаете — программистом или физиком?

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

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

— Есть ли в Украине работа после физфака? Куда можно трудоустроиться?

Все зависит от того, каким направлением физики вы занимаетесь. У нас на ядерной физике было 2 направления — энергетики и экспериментаторы. Энергетики в основном идут в компании и организации, связанные с атомными электростанциями, ядерной безопасностью. Экспериментаторы — в Институт ядерных исследований или куда-нибудь за пределы Украины. Я выбрал последний вариант.

— Как вы попали в Германию? Уехали во время учебы или уже по окончании университета?

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

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

Я отправил резюме, прошел собеседование со своим будущим начальником, и в середине ноября я уже уехал в Германию — в научно-исследовательский центр DESY (Deutsches Elektronen-Synchrotron).

— Уехав в Германию, вы не успели окончить университет. Как удавалось совмещать учебу с работой в другой стране?

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

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

— Расскажите подробнее о DESY. Как там все устроено?

DESY — это крупный ускорительный центр. Основные ускорители стоят в Гамбурге. Скажем так, каскад ускорителей. Прежде чем частицы попадают в основное кольцо, Hera, они проходят через несколько различных предускорителей, которые их разгоняют до определенной энергии. Длина Hera — 6,3 км. Для сравнения, длина главного кольца Большого адронного коллайдера (БАК) в CERN — 26,6 км.

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

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

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

На фоне детектора Zeus в день закрытия ускорителя в DESY

— А чем именно занимались вы? Что исследовали?

Я исследовал неупругое фоторождение Upsilon-1s мизонов. Занимался проверкой существующей теории из нерелятивистской квантовой хромодинамики, которая описывает сечение рождения заданных частиц в различных процессах. Измеряли экспериментальные значения и с точностью до погрешности сверяли их с теоретическими.

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

— Какие технологии использовали в исследованиях?

Главный язык — это С++. Многие коллеги старшего возраста использовали Fortran, потому что он им привычнее и удобнее. Исходя из языковых предпочтений, использовался один из двух фреймворков: PAW или ROOT. PAW — это очень старый фреймворк для физики высоких энергий, написанный на Fortran и имеющий похожий на него скриптовый язык. ROOT — более новый фреймворк, написан на С++. Его создал тот же разработчик, который написал PAW. Даже ходила шутка, что первая версия ROOT была получена с помощью программки f2c, которая конвертирует Fortran в С :)

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

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

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

— Насколько большая команда работала над экспериментами? Сколько украинцев?

Суммарно — около 500 человек, но многие уезжали и приезжали. Онсайд работало 100-150 специалистов.

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

— Если говорить об Украине, что сейчас происходит с отечественной наукой?

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

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

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

Ускорители на территории DESY (image source)

— Чем вы занялись, когда закончился контракт с DESY?

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

Этим направлением меня заинтересовал товарищ-армянин, с которым мы подружились на DESY. Ускорительная физика — это, можно сказать, фишка армян :) Во всех ускорительных центрах основа группы — это представители Армении. У них эта отрасль очень хорошо развита.

Но с аспирантурой не сложилась: по семейным причинам мне пришлось вернуться в Украину и по-быстрому найти работу в Киеве. Так я попал Samsung, где проработал 4 года.

— На какую должность пришли в Samsung?

Начал с позиции Middle-разработчика, через год стал Senior. C физикой эта работа связана не была, но интересно, что большинство тогдашних сотрудников нашего отдела были физиками и математиками.

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

— Легко удалось освоить новый для себя стек технологий?

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

— Что было после Samsung?

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

Спустя 7 месяцев я решил вернуться в Германию. Нашел себе работу и переехал. Пришел на позицию Java Developer в компанию Silbury Deutschland GmbH.

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

— Что можете рассказать об IT-индустрии в Германии?

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

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

— Чем вам нравится жизнь в Германии?

Немцы мне близки по менталитету. Мне комфортно жить в обстановке, когда я знаю: чтобы быть на работе в 9:00, я должен проснуться в 8:09 минут, потому что даже расписание движения транспорта просчитано с точностью до минуты. Нравится стабильность.

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

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

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

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

— А за наукой не скучаете?

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

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

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

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

DOU Проектор: Штрафы UA - в помощь водителям при нарушении ПДД

$
0
0

В рубрике DOU Проекторвсе желающие могут презентовать свой продукт (как стартап, так и ламповый pet-проект). Если вам есть о чем рассказать — приглашаем поучаствовать. Если нет — возможно, серия вдохновит на создание собственного made in Ukraine продукта. Вопросы и заявки на участие присылайте на editors@dou.ua.

Привет, я Денис Дмитров, основатель и руководитель сервиса «Штрафы UA». Работаю в сфере IT c 2006 года. 2 года назад мне в голову пришла идея создать сервис для водителей по проверке штрафов за нарушение ПДД. Что из этого получилось, читайте ниже.

Команда проекта

Денис Дмитров — основатель, автор идеи, эксперт UX/UI, более 11 лет в сфере IT.
Дарина Жеребилова — координатор сервиса.
Дмитрий Салахиев — сооснователь, партнер.
Константин Михайлюк — технический консультант.
Ольга Манушко — UX/UI.

Идея

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

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

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

В 2016 году мы узнали об Open Data Incubator 1991, инкубационная программа которого предоставляет возможность работать с открытыми реестрами данных государства. Команда «Штрафы UA» успешно прошла отбор в хакатон, выиграла его и попала в летнюю инкубационную программу.

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

Название

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

В итоге мы назвали наш сервис «Штрафы UA». Так он называется и по сей день.

Реализация

Для реализации проекта была выбрана технология ASP.Net и база данных MS SQL. Это позволило снизить скорость разработки и повысить безопасность проекта. В свою очередь, облачная платформа Microsoft Azure позволила быстро и гибко проводить тестирование продукта и осуществить его последующий запуск. Проект построен по модульному типу, связь между модулями осуществляется через api. Это дало возможность оперативно подключать дополнительные программные решения, например, приложения Android или iOS, объединять данные в одном хранилище, снижать нагрузку на сторонние сервисы.

Также благодаря инкубатору 1991 нам удалось провести многократные переговоры с руководством МВД о запуске функции онлайн-проверки наличия штрафов. Запуск был запланирован на конец 2016 года (позже в МВД перенесли дату на 2017 год, чтобы запустить эту функцию вместе с дорожной полицией).

Проблемы

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

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

Работа сервиса

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

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

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

В качестве оператора процессинга платежей мы выбрали сервис онлайн-платежей LiqPay (продукт «ПриватБанка»), потому что:

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

Безопасное вождение

Повышая оплачиваемость штрафов, мы никак не влияем на их количество, а ведь именно из-за нарушений ПДД чаще всего происходят ДТП. 90 % происшествий тесно связаны с низкой культурой вождения в Украине (только за последние 1,5 года в ДТП получили травмы и погибли 54 000 чел.). Десятки опросов показывают, что осознание опасности может стать хорошим стимулом для водителей водить более безопаснее.

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

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

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

С этой идеей в июне 2017 мы приняли участие в первом украинском Open Data Challenge и победили, заняв третье место и получив финансирование на реализацию и развитие продукта.

Продвижение

Первый пуш нашего сервиса был осуществлен благодаря PR-кампании, проведенной командой 1991 Open Data Incubator (Victory RP). В результате наша база пополнилась на несколько тысяч пользователей буквально за сутки, однако со временем посещаемость стала падать.

Мы провели базовое SEO силами команды проекта и обратились к Google Adwords как к дополнительному каналу привлечения пользователей. Но в случае с Google Adwords мы очень быстро уперлись в потолок, после чего было решили расти в органической выдаче. За этим мы обратились к друзьям в компанию iConsult Agency. В итоге за 9 месяцев работы (декабрь 2016 — сентябрь 2017) органический поисковый трафик увеличился на 531 %.

SEO-видимость проекта в ТОП-3 Google.com.uaвыросла с 37 % до 88 %.

Это значит, что 88 % всех запросов входят в ТОП-3.

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

Результат

Платежно-информационный сервис «Штрафы UА» уже ровно год помогает водителям Украины оплачивать штрафы за нарушение правил дорожного движения и быть уверенными в их погашении. За этот год проект превратился из стартапа в качественный и эффективный сервис. Нам удалось заработать для государства почти 1,5 млн грн, обслужить более 4000 водителей и собрать базу сервиса из 15 000 активных пользователей.

Планы по развитию

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

Также на основе исследований мы определили, что наиболее смежный продукт со штрафами — полис обязательного страхования авто (автогражданка). Мы придумали сервис информирования водителей об окончании текущего полиса ОСАГО как дополнительную функцию в сервисе «Штрафы UA». Проведя переговоры со страховыми компаниями, мы выделили несколько сильных игроков рынка страхования Украины, с которыми планируем сотрудничать. Этим мы добавим еще большей ценности нашему приложению, а после введения электронного полиса сервис обретет особенную актуальность.

Наблюдения и выводы

1. Простота

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

2. Анализ

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

3. Сбитые летчики

При каждом неудавшемся платеже мы отправляли пользователям письмо с вопросом: «Почему не оплатили штраф?». Это было красивое письмо с графикой, цитированием законов, описанием правил погашения штрафов, ссылками. Конверсия такого письма была практически нулевая. Далее мы попробовали раз в неделю отправлять вручную письма не оплатившим пользователям. Это было личное письмо менеджера сервиса с вопросом и просьбой рассказать о причине неоплаты. Это был обычный plain-text. И, к нашему удивлению, его конверсия составила около 30 %. Таким образом, сменив красивое письмо с графическими изображениями на обычное личное обращение, мы получили результат, который помогает нам делать сервис удобнее и качественнее. Также хочу отметить, что 20 % получивших такое письмо пользователей все-таки оплачивают штраф.

4. Цифры

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

5. Коммуникация

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


Контакты:

Мейл: shtrafua@gmail.com
Сайт: www.shtrafua.com
Фейсбук: www.facebook.com/shtrafua

Будьте внимательны на дорогах!


Релокейт-опрос 2017

$
0
0

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

Наша цель — оценить, насколько хорошо там, где нас нет.

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

Прямая ссылка на анкету: goo.gl/forms/IvF9GPnxlEu4ztid2

Результаты опроса будут опубликованы на DOU в конце октября.

Боль и страдания перехода на Java 9

$
0
0

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

Production instance после перехода на Java 9

Проект у нас довольно простой в плане стека технологий. Мы, например, не используем Spring, Hibernate. А всю модель храним в памяти. Поэтому память — довольно критический для нас ресурс, как и CPU. Текущая нагрузка в 13к req/s каждый месяц становится все больше и больше и иногда не дает мне спать.

Помимо типичных http/s, websockets, mqtt мы также используем собственный полубинарный, полутекстовый протокол на netty. Поэтому идея перехода на 9-кубыла оправданной. Так как JEP 254: Compact Stringsи JEP 280: Indify String Concatenation.

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

<maven-release-plugin.version>2.5.3</maven-release-plugin.version><maven-compiler-plugin.version>3.7.0</maven-compiler-plugin.version><maven-shade-plugin.version>3.1.0</maven-shade-plugin.version><maven-surefire-plugin.version>2.20.1</maven-surefire-plugin.version><maven-checkstyle-plugin.version>2.17</maven-checkstyle-plugin.version><netty.version>4.1.16.Final</netty.version><netty.boring.ssl.version>2.0.6.Final</netty.boring.ssl.version><log4j2.version>2.9.1</log4j2.version><jackson-databind.version>2.9.1</jackson-databind.version><disruptor.version>3.3.6</disruptor.version><async-http-client.version>2.1.0-alpha25</async-http-client.version><twitter4j-core.version>4.0.2</twitter4j-core.version><postgresql.version>42.1.4</postgresql.version><HikariCP.version>2.7.1</HikariCP.version><qrgen.version>2.2.0</qrgen.version><bcpg-jdk15on.version>1.57</bcpg-jdk15on.version><acme4j-client.version>0.12</acme4j-client.version><javaee-api.version>8.0</javaee-api.version><javax.mail.version>1.6.0</javax.mail.version><javax.activation.version>1.2.0</javax.activation.version>

Это очень важный шаг. Без апдейтов плагинов и либ на новую версию явы лучше не переходить.

Настроил maven-compiler-plugin на девятку:

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.7.0</version><configuration><source>9</source><target>9</target></configuration></plugin>

И вуаля — все завелось. Единственное, что при запуске JVM вываливалось сообщение в консоль:

WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by io.netty.util.internal.ReflectionUtil (file:/home/azureuser/server-0.28.0-SNAPSHOT.jar) to constructor java.nio.DirectByteBuffer(long,int) WARNING: Please consider reporting this to the maintainers of io.netty.util.internal.ReflectionUtil WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release

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

public static void disableWarning() { 
    try { 
        Field theUnsafe = Unsafe.class.getDeclaredField("theUnsafe"); theUnsafe.setAccessible(true); 
        Unsafe u = (Unsafe) theUnsafe.get(null);
        Class cls = Class.forName("jdk.internal.module.IllegalAccessLogger");
        Field logger = cls.getDeclaredField("logger");
        u.putObjectVolatile(cls, u.staticFieldOffset(logger), null);
    } catch (Exception e) {
        // ignore
    }
 }

Но он сработал.

Создание module-info.java

Теперь предстояло создать ява-модули (module-info.java) для моих мавен-модулей, чтобы по настоящему мигрировать на 9-ку,а не просто скомпилить под нее весь код.

И тут сразу начались проблемы. Первый же модуль:

module cc.blynk.acme {
    requires acme4j.client;
    requires acme4j.utils;
}

Модуль, который генерит Let’s Encrypt сертификаты, отказывался собираться:

Error:java: the cc.blynk.acme module reads package org.shredzone.acme4j.util from both acme4j.client and acme4j.utils

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

Вторая неприятность ждала меня в модуле отправки писем.

module cc.blynk.server.notifications.mail {
   requires log4j.api;
   requires javaee.api;
   requires java.activation;

   exports cc.blynk.server.notifications.mail;
}

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

<dependency><groupId>javax.activation</groupId><artifactId>activation</artifactId><version>1.1</version><dependency>

на

<dependency><groupId>com.sun.activation</groupId><artifactId>javax.activation</artifactId><version>1.2.0</version></dependency>

P. S. Обычно javax.activation пакет идет в зависимостях к

<dependency><groupId>com.sun.mail</groupId><artifactId>javax.mail</artifactId></dependency>

Сразу после добавления первого модуля отвалился maven-checkstyle-plugin:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-checkstyle-plugin:2.17:check (default-cli) on project email: Failed during checkstyle configuration: NoViableAltException occurred during the analysis of file /home/xxx/IdeaProjects/blynk-server/server/notifications/email/src/main/java/module-info.java. unexpected token: module 

Оказалось, плагин еще не готов к девятке, поэтому нужно добавить module-info.java в исключения при чекстайле:

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-checkstyle-plugin</artifactId><configuration> <excludes>**/module-info.java</excludes> </configuration></plugin>

Теперь пришел черед модулей, которые зависят от netty. У нас в проекте есть, например, такая зависимость:

<dependency><groupId>io.netty</groupId><artifactId>netty-transport-native-epoll</artifactId><version>${netty.version}</version><classifier>${epoll.os}</classifier></dependency>

Для библиотек, которые еще не перешли на девятку, ява автоматически генерирует имя на основе имени jar-файла. Поэтому для jar-файла транспорта выше получилось имя:

netty.transport.native.epoll

Но есть один нюанс: native — зарезервированное слово в яве. Его нельзя использовать в названии пакетов и модулей. Попытка скомпилировать этот модуль:

module core { 
    requires netty.transport.native.epoll;
 }

выдает:

module not found: netty.transport.<error>

Можно также проверить это из командной строки:

jar --file=netty-transport-native-epoll-4.1.16.Final-linux-x86‌​_64.jar --describe-module

выдает:

Unable to derive module descriptor for: netty-transport-native-epoll-4.1.16.Final-linux-x86‌_64.jar netty.transport.native.epoll: Invalid module name: 'native' is not a Java identifier

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

<Automatic-Module-Name>netty.transport.epoll</Automatic-Module-Name>

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

Еще парочка проблем

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

<profile><id>java9</id><activation><jdk>9</jdk><activeByDefault>true</activeByDefault></activation><properties><jarClassifier>java9</jarClassifier><source>9</source><target>9</target><!-- just fake property. means do not exclude anything --><version.specific.exclusions>**/ccxxyy.java</version.specific.exclusions></properties></profile><profile><id>java8</id><activation><jdk>1.8</jdk></activation><properties><jarClassifier>java8</jarClassifier><source>1.8</source><target>1.8</target><version.specific.exclusions>**/module-info.java</version.specific.exclusions></properties></profile>

С наскоку собрать multi-jarне получилось. Поэтому если у кого-то есть готовая конфигурация — буду рад ознакомиться.


На этом, собственно, все. Делитесь своими историями в комментах. Мы уже перевели все наши ~20 серверов на Java 9, хоть и с частичной модуляризацией. А вы?

P. S. Благодаря раннему переходу на девятку мы попали на слайд Марка Рейнхольда (head of Java) на проходящей сейчас JavaOne конференции.

Лучший тестировщик года — о карьере, достижениях и о том, как стать профессионалом в QA

$
0
0

Александра Ковалева — Head of Softengi Training Center, Senior Testing Consultant и мама двоих детей получила награду Ukrainian IT Awards 2017 в номинации Best Professional in Quality Assurance. Она рассказала, как ей удалось стать лучшим тестировщиком года, карьерных решениях и о том, что значить быть профессионалом в тестировании.

Карьерный путь в тестировании

Я училась в ІТ-вузе на факультете компьютерных наук. Закончила Харьковский национальный университет радиоэлектроники по специальности «Системная аналитика». На свое первое собеседование я попала случайно. На вопрос, почему я решила стать тестировщиком, ответила: «Потому что в аналитики сразу не возьмут, а тестирование — это хотя бы интересно». И, как ни странно, меня взяли :) Так я 7 лет назад попала в Softengi, хоть вообще не собиралась жить и работать в Киеве.

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

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

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

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

Я выросла в компании с традициями: у нас были посвящения в тестировщики, «отмороженные» четверги, фруктовые пятницы. Мы ездили на разные конференции по тестированию в Украине и за рубежом, сдавали сертификации, в том числе ISTQB. Когда-то в 2011 году моя куратор спросила, слышал ли кто-то про такую сертификацию. Никто не слышал, но мы ее нашли, подготовились и сдали — просто так. И только пару лет спустя, занимаясь проектом внедрения сертификаций в компании, я поняла, зачем «вот это все» было.

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

Со временем таких специалистов стало много. Они стали основателями Softengi Training Center и начали обучать будущих тестировщиков. За 3 года это переросло в отдельное направление работы компании Softengi. На данный момент я являюсь руководителем тренингового центра, занимаюсь консалтингом по внедрению и улучшению процессов тестирования на проектах, готовлю начинающих и помогаю развиваться уже опытным тестировщикам, веду комьюнити по подготовке к сертификации ISTQB.

Очень круто, когда в компании реально работает система оценки сотрудников (evaluation / performance review), а также система тренинг-менеджмента. Это позволяет осознанно управлять обучением специалистов, пользой от этого для проектов, бюджетом и помогает мотивировать сотрудников. Чаще всего эту роль несет в себе HR. Если повезет, то есть отдельный Training Manager или Career Advisor.

Достижения в работе

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

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

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

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

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

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

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

Впечатления от IT Awards

На IT Awards мою кандидатуру подали коллеги. Было несколько этапов отбора. От заполнения заявки на сайте, где меня попросили ответить на самый важный вопрос о челленджах в карьере тестировщика и достижениях на проектах. До интервью с судьями, среди которых были Юлия Полищук (Engineering Manager, Lohika), Александр Майданюк (Head of Testing Center of Excellence, Ciklum), Алена Черненко-Дыба (QA Manager, Astound Commerce), Ярослава Багрий (Senior Testing Engineer, Epam), Иван Лешко (VP of Client Success, SoftServe).

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

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

Теперь я для себя могу ответить, зачем все эти награды и церемонии, ведь у них очень много противников. Это такой взгляд на себя и коллег со стороны. Это ответ на вопрос: «А ты что-то сделал для тестировщиков своего проекта, компании, страны?». Можно и без награждений ответить на этот вопрос. Просто прийти в понедельник на работу и спросить: «А чем я крут? А что я сделал? А кем я вижу себя в тестировании через 3 года? А каким я хочу видеть тестирование через 3 года в Украине?». Но кто так делает?

Семья и работа

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

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

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

Планы на будущее

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

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

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

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

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

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

У меня в планах на будущее — сдать Full Advanced ISTQB. Сейчас в Украине есть всего один такой специалист (прим. ред. — Екатерина Несмелова)и, к сожалению, она живет не в Украине. Поэтому формально у нас есть Full Advanced, но практически — нет. Скоро, буквально через месяц, к нам приедет единственный Full Advanced из Белоруссии — Андрей Ладутько. Знакомство, обучение, совместная работа с такими специалистами, это огромный шаг вперед.

Графические акселераторы для высокопроизводительных вычислений. Часть 1

$
0
0

Эта статья подготовлена на основе доклада Андрея Чередарчука и Александра Судакова на Root Linux Conference 2017 — ежегодной конференции embedded- и Linux-разработчиков.

Андрей Чередарчук — ИТ-инструктор и администратор. Сертифицированный инструктор учебных программ HP, IBM, VMware, ранее также и Cisco. Разрабатывает авторские учебные курсы. Занимается поддержкой HPC-инфраструктуры в НАН Украины.

Александр Судаков — глава лаборатории параллельных вычислений, доцент КНУ им. Тараса Шевченко. Одно из основных направлений его научной деятельности — высокопродуктивные вычислительные компьютерные системы. Александр является разработчиком и руководителем вычислительного кластера информационно-вычислительного центра КНУ им. Тараса Шевченко. Принимал участие в создании первых в Украине сайтов Grid-систем.


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


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

Задача данной статьи — рассмотреть основные характеристики современных акселераторов, а также привести примеры совместного использования центрального процессора (CPU) и графического акселератора (GPU). В дальнейшем будем рассматривать графический акселератор Nvidia. Он самый популярный для промышленных вычислений, хотя и не единственный.

Наиболее известный продукт для мощных вычислений — Nvidia Tesla. Строго говоря, Tesla — это название первого поколения вычислительных акселераторов. Именно тогда были заложены основные направления их развития. Каждое следующее поколение получило свое наименование в честь известных ученых — Tesla, Fermi, Kepler, Maxwell, Pascal, Volta. Каждое имя обозначает новые технологии, новые возможности. В этом году на рынок вышли изделия последнего поколения — Nvidia Volta.

Параметры выбора

Итак, мы выбираем графический акселератор для параллельных вычислений или машинного обучения. На что нужно обратить внимание? Параметр № 1 — computing capability или же SM version. Это набор функционала, который вы можете потом на этом акселераторе использовать. Информация о значении параметра для каждого адаптера указана на основномсайте компании Nvidia. Подробное описание возможностей можно найти на сайте Nvidia для разработчиков. Независимо от того, планируете ли вы использовать готовое решение или же разрабатывать свои программы с использованием стандартных библиотек — определите минимальное значение параметра и доступный класс устройств.

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

CUDA

Давайте рассмотрим основные возможности адаптеров. Каждый акселератор поддерживает набор решений Nvidia CUDA. CUDA — набор инструментов для работы с акселератором, который позволяет писать программы, выполнять либо высокоуровневые, либо низкоуровневые запросы и обеспечивает API для работы с различными языками программирования. Программные CUDA от Nvidia поддерживают C/C++. Некоторые коммерческие компиляторы других производителей поддерживают Fortran. Существуют разработки инструментов для высокоуровневых языков, таких как Python. Также доступны средства для отладки и оптимизации. CUDA тоже меняется: в новых версиях больше функционала и возможностей, исправлены старые ошибки.

Streaming multiprocessor

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

Точность

Каждый SMX-модуль содержит счетные блоки с разным уровнем точности: Floating point 16, FP 32, FP 64. В каждом акселераторе разное количество таких элементов. Что лучше? На самом деле тут нет единого ответа. Если вам не нужна максимальная точность, используйте точность поменьше. Почему? Это будет гораздо быстрее. Если вам нужно считать быстро, но не очень точно, самый правильный вариант — это использовать точность поменьше. Используйте максимальную точность вычислений только тогда, когда она вам действительно необходима. Для Tesla K40 производительность между FP 32 и FP 64 отличается почти в три раза.

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

Dynamic parallelism

Какие методы оптимизации доступны? Например, dynamic parallelism. Чтобы GPU работал более эффективно, необходимо дать ему больше свободы. GPU будет сам определять конкретные ядра для выполнения задач. Получаем более быстрое параллельное выполнение инструкций.

Nvidia Unified Virtual Memory

Следующий метод — Nvidia Unified Virtual Memory. Нам очень бы хотелось быстро и удобно обмениваться данными с нашим GPU. Как это сделать? Единый блок памяти, который одновременно доступен и центральному процессору, и нашему графическому акселератору. Метод используется не только для синхронизации данных между памятью акселератора и основной оперативной памятью, но также и для обмена данными между двумя акселераторами в одном сервере.

Оперативная память

Объем оперативной памяти — одно из узких мест графического акселератора. Небольшой объем платы, проблемы с отводом тепла не позволяют использовать десятки или сотни гигабайт памяти, как на обычном сервере. Но новый стандарт позволит увеличить объем ресурсов. Использование более плотной упаковки элементов памяти, не только на плоскости, но и в объеме, позволит увеличить и общий размер памяти, и скорость доступа, особенно при конкурентном доступе. Сегодня развиваются два стандарта — HBM и HMC, которые имеют один принцип работы, но несовместимую аппаратную реализацию. Nvidia Volta использует память стандарта HBM2.

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

Tensor Core

Использование нейронных сетей для обработки данных снова в тренде. И новое поколение акселераторов Nvidia Volta использует новый аппаратный подход — Tensor Core, позволяющий на уровне железа выполнять задачи TensorFlow, Caffe2, MXNet. При этом обеспечивается как высокая скорость вычислений, так и низкое потребление энергии.

Современные чипсеты поддерживают больше одного GPU. Совместное использование шины PCI Express позволяет подключить до 10 адаптеров в одном сервере. Нужно учитывать, что пропускная способность шины гораздо меньше, чем нескольких адаптеров, поэтому задачи должны быть спроектированы так, чтобы минимизировать поток данных по каналах CPU-GPU и GPU-GPU.

NVLink

Технология NVLink увеличивает общую пропускную способность шины и поддерживает до 8 акселераторов на одну плату. Количество соединений NVLink позволяет создавать схему Full-Mesh или partial Mesh c минимальным количеством хопов между устройствами.

Какой выбрать

Мы рассмотрели основные возможности акселераторов. Но остался вопрос: что же приобрести для работы?

Вам нужно проверить работоспособность программы? Тогда достаточно обычной видеокарты с нужным значением computing capability. Нужно быстро классифицировать ближайшие объекты автомобильным компьютером? Тогда вполне устроит SoC-плата, например, NVidia Jetson TK1 (192 ядра CUDA, полная совместимость, довольно много памяти, гигабит Ethernet и даже PCI express порт) или TX1, где и ядер побольше и вычислительная мощность — один терафлопс.

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

А может у вас серьезный проект по deep learning с хорошим бюджетом? Nvidia предлагает уникальное решение: DGX-1. До 8 акселераторов, производительность одного DGX-1 для задач машинного обучения превышает производительность 48 узлов с двумя Intel Xeon.

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

QA дайджест #30: настоящая история термина Bug, перезагрузка ПК во время теста, нагрузочное тестирование с Gatling с нуля

$
0
0

Меня зовут Максим, я работаю тестировщиком ПО, с интересом слежу за событиями в мире тестирования и IT. Самое полезное собираю вместе и с радостью делюсь с вами. Приятного чтения! :)

Новости

Вышел релиз Selenium 3.6.

Skype представил функцию «Интервью»для технических работников.

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

Почитать

А вы знали, что слово баг впервые появилось не 9 сентября 1947? А значительно раньше!И факты вполне правдоподобные.

Принципы тестирования программного обеспечения. Личный перевод из книги «Искусство тестирования» Г. Майерса.

Асинхронный веб, или что такое веб-сокеты.

Обзор инструментариядля нагрузочного и перформанс-тестирования.

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

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

Ты ж тестировщик или как правильно составлять Bug report.

Postman — ваш помощник в тестировании API.

Самодельные аддоны к браузерамна службе тестировщика.

Найм тестировщиков — по обе стороны баррикад.

Обучаться тестированию, обучая других.

Шпаргалка по тестированию требований к мобильным приложениям.

Мобильные приложения и их тестировщики: all you need to know.

Генерация родословного деревана основе данных Wikipedia с помощью Selenium Webdriver.

Selenium для всех: как мы учим QA-инженеров работать с автотестами.

Нагрузочное тестирование PostgreSQL, используя JMeter, Yandex.Tank и Overload.

Ticket Trick: взлом сотен компаний через службы поддержки пользователей.

Тестирование требований. Особенности.

Автоматизация

Алексей Баранцев рассказывает о недавнем баге в новой версии Selenium Webdriver и о модульных тестах.

Хорошая статья о мутационном тестировании. Покажите программистам.

Allure 2: тест-репорты нового поколения.

10 интересных нововведений в JUnit 5.

7 правил хорошего тонапри написании Unit-тестов.

Maven. Как освоить. По каким материалам изучать.

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

Стратегия автоматизации тестирования для Agile-проектов.

Как перестать писать @Step аннотации для Allure.

Автоматизация нагрузочного тестирования банковского ПО для терминалов.

18 бесплатных онлайн-игр, которые обучат вас программировать.

Как строить хорошие локаторы.

Atata — фреймворк для автоматизации на C#/.NET.

Без хайпа и маркетинга: нужен ли вам Kotlin?

Десктопные GUI-тесты на Python.

Подкаст «Как Делают Игры» — мобильный QA.

Видео. Нагрузочное тестирование с Gatlingс нуля.

Оживляя динозавров: TDD vs Test-Last.

SilkTest: перезагрузка компьютера во время исполнения тест-кейса.

Юмор

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

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

Спасибо Владиславу Костюбе, Евгению Шухевичу и Мефодию Макги за интересные материалы!


Все желающие делиться интересным — пишите на почту salnikov.maksim@gmail.com, обсудим, опубликуем, скажем, спасибо :)


← Предыдущий выпуск: QA дайджест #29

Viewing all 8435 articles
Browse latest View live