суббота, 21 марта 2015 г.

Отчет с конференции PiterPy#2

20 марта 2015 прошла 2-я ежегодная конференция PiterPy. Давненько я не был на чисто программерских конференциях. И напрасно - именно здесь заряжаешься энергетикой от большого количества увлеченных людей. На менеджерских или специализированных конференциях я такого не наблюдал.
Возможно еще сказывается достаточно камерный (пока?) формат PiterPy: 2 потока, 2 зала рядом, удобно, спокойно и без суеты.
Но коллега (Леха, привет), вернувшийся недавно с C++ Russia, отметил тот же эффект подзарядки от большого количества программеров в одном месте.
Поэтому, хочу сделать заявление: программеры (хочется верить большая их часть) очень позитивные и общительные люди, особенно когда это касается их любимой работы.

Твит-лента конфы.

Я волновался за свой текущий уровень знания Python, но, как оказалось, в голове еще что-то осталось и большинство докладов я спокойно переваривал. Правда был мега-deep доклад Александра Кошкина про кишки yield'а и тут мозг дал слабину :). Но почему то мне кажется, что я такой был не один - это действительно были кишки, мясо и расчлененка Питона в дизассемблере :) Кстати, доклад похоже один из лучших был.
Рейтинг докладов по версии афтерпати :) (с)
Заканчиваем прелюдию, ближе к теме. Здесь я уже набрасывал себе программу и получалось так, что почти все эти доклады и послушал.

Итоговую программу конференции можно найти здесь. Все видео тут.

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

"Сверхоптимизация кода на Python"
Иван Ремизов
Доклад про то, как можно ускорить питоновский код в 30 раз. Очень рекомендую посмотреть тем, кого волнует тема. Еще раз прозвучало мое любимое "преждевременная оптимизация - зло". Оптимизацией они занимаются по факту обнаружения проблем. Часто мониторят логи продукта, чтобы держать руку на пульсе.
Видео доклада. Пара слайдов с советами и полезными ссылками:



(с)
"Beyond grep: Practical Logging and Metrics"
Hynek Schlawack
Интересный доклад про то, как можно собирать ошибки, логи и метрики. Ключевые слова и линки: Sentry + Raven, InfluxDB, StructLog, LogStash. Видео запись с конфы.


"Легковесный Dependency Injection"
Алексей Пирогов  разобрал на примерах существующие DI-контейнеры и рассказал о своей библиотеке yadic (yet another DI container). И тема была интересная и Алексей очень хорошо рассказывает. Приятно слушать. Слайды можно найти тут, видео тут. Если кому интересно, то у Алексея есть мастер-классы на его youtube-канале.

"Контроль за качеством кода"
Кирилл Борисов
Общепрограммерская история, было очень интересно. Видеозапись. Чувствовалось, что докладчик болеет темой :) Кирилл рассказал, как они в Яндекс-Паспорт работают с кодом: ревью, утилиты в IDE, утилиты в pre-commit хуках. Большая часть всего этого в нашем родном C++ встроена в компилятор, но есть интересные фишки по поиску FixMe, TODO, WTF :) (библиотека сейчас на апруве для выкладки в открытый доступ) или, например, сортировки import'ов

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

Выбор следующего доклада предопределила такая характеристика докладчика

Я купился и не пожалел (хотя доклад Armin Ronacher "Developing an Open Source Library" надо обязательно посмотреть в записи).
Петр рассказывал про то как они в Wargaming разрабатывают тулу для конвертации одного дизайнерского формата в другой. Внутренности и проблемы взаимодействия Python и .Net (C#), проблемы и достоинства IronPython. Итого: WPF с IronPython дружит плохо (знаем - плавали), поэтому UI пишут на C#+WPF, а бизнес-логика на Python (потому что много Python-библиотек от UI-сред, в которых работают дизайнеры). Взаимодействие через stdin|stdout o_O. Вот так вот забавно. Но работает :) Видеозапись.


Про доклад Гриши Петрова я уже упоминал выше, будем смотреть запись. Хочу сказать пару слов об этом человеке. Я не был знаком с ним и его работой до этой конференции. Зря :) Очень умный и интересный собеседник. Хороший рассказчик. Получает удовольствие от того, что делится своими знаниями. Побольше бы таких людей. Рекомендую почитать его небольшой цикл статей про управление разработкой (открываем первую, дальше кликаем "Следующая статья" и получаем удовольствие).
это я после доклада Саши

"Знай и люби свой yield. Корутины и генераторы за гранью for loop."
Александр Кошкин
ААА..., ну вы поняли (см пояснения в самом начале). Это надо смотреть, объяснить я не смогу. Интересно много людей в зале врубилось в тему? :) Очень надеюсь, что такие были. Интервью Саши про yield после конференции.

"Анатомия автоматизации тестирования"
Алексей Тремаскин старательно отвечал на вопрос зачем городить свой велосипед, если вокруг и так много средств передвижения. Обожаю рассказы про новые конструкции велосипедов :) Алексей отвлек мое внимание упомянув Sikuli и и я налажал - увлекся этим вопросом и забыл спросить про Robot Framework. В итоге ребята действительно запилили свой велосипед и проверяют им UI в World of Warships.
Эхх, единственное, что может их оправдать это то, что по словам автора, он занимает около 150 строк. Если так, то может и не так страшно. Жаль не посмотреть - разработка внутренняя. Но способ использования yield для локализации ассерта интересен. Ждите слайдов и видео если кому интересны детали.

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

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

Все слайды с конфы уже можно найти на ее странице.
"Как это было в лицах" - фотки с PiterPy#2
Отчет не про доклады, а про организацию конференции от Сергея Матвиенко

Короткий видеоотчет от ребят из LoftBlog

пятница, 13 марта 2015 г.

Размышлизмы про то, как часто пишется софт

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

Ребята-разработчики это с грустью подтвердили.

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

Знаете почему? Правильно - времени не хватает. А еще их начальник говорит, что тесты должны писать тестировщики. А тестировщиков у них тоже нет.

Занавес.

PS компания-разработчик, кстати, делает реально крутые ноу-хау вещи, но вот how это все делается, наводит на грустные мысли.
тут (с)

четверг, 5 марта 2015 г.

Сборная солянка видеодокладов для самообразования на разную тематику - Выпуск 2

Scott Meyers - Keynote @ Meeting C++ 2014

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

Первая часть - это история про главу из книги, посвященную разнице между insert & emplace в STL-контейнерах. На этом примере Скотт показывает важность пунктов из своего списка:

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

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


Добавляем докладик про автоматическое тестирование, для остроты вкуса солянки.
Никита в свое время проехался по нему танком легким броневиком. Собственно с тех времен доклад видимо у меня в запасниках и пылился. Пришло и его время.
Помнится был у меня опыт построения тестов, подобных тем, что описывает докладчик. Вспоминаю с ужасом. Мокировали все, что "движется"... Но, возможно тогда мозг еще не был готов и опыта не хватало.
Доклад в первую очередь для разработчиков, потому что у тестировщиков возникают резонные вопросы про проблемы, возникающие в реальном окружении (см. комментарии Никиты). Но разработчикам действительно важнее проверить максимально возможное количество сценариев (пресловутое покрытие) за минимальное время. А это можно сделать только через unit-тесты. Это действительно можно завести, но будет ли это эффективно?
Есть сомнения. Особенно если ваши тестировщики придерживаются legacy-взглядов на тестирование и никакой автоматики у них нет.
Использование юнит-тестов для проверки как раз исключительных ситуаций (обработка ошибок, граничных условий и тп) действительно оправдано. Часто воспроизвести такое в реальном стенде сложно (или приближается к невозможному). Но жизненные и простые ситуации (success path) проще и правильнее проверять на пользовательских сценариях с использованием всего продукта.
Итоговое резюме: классический пример случая "гладко было на бумаге, позабыли про овраги".


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

среда, 4 марта 2015 г.

Как прошел 4-й IT Global Meetup, Питер


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

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

Я выступал на островке Питерского IT talk. Мне понравилось, надеюсь тем кто слушал - тоже.

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

Видео


Для тех кому проще послушать аудиозапись (например в машине) - "их есть у меня". Там бонусом еще и ответы на вопросы (+10 мин).

Потом был интересный доклад Жени Ефимова (см.отчет DataArt), про то как работа может нас сожрать.

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

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

Про ретроспективы. Полезные ссылки

Доклад Бори Вольфсона "Эффективные ретроспективы" (видео, слайды)

Цикл статей Никиты Макарова "Ретроспективы в командах"

Презентация Макса Дорофеева "Правила хорошей ретроспективы или ключ к непрерывным улучшениям"

Хорошая статья про оценку ретроспектив Александра Селяева