41
Вопросы, комментарии, предложения: http://twitter.com/squadette 2015-03-11 Мульти-блиц Меня зовут Алексей Махоткин, я стою на фейс-контроле в московском ночном клубе, который называется undev.ru. Сегодня сбылась моя мечта, я выступаю на разогреве у Валкина. Некоторые темы преследуют меня всю мою профессиональную жизнь. Я хочу обсудить сразу несколько таких тем, потратив на каждую приблизительно по семь с половиной минут. Я не собираюсь рассказывать об успехах, потому что их нет, или о технических деталях, потому что они мне не интересны. Я, скорее, хочу обратить ваше внимание на несколько вещей, на которые, как мне кажется, имеет смысл обратить внимание.

Мульти-блиц выступление на Стачка-2012

Embed Size (px)

Citation preview

Page 1: Мульти-блиц выступление на Стачка-2012

Вопросы, комментарии, предложения:http://twitter.com/squadette

2015

-03-

11

Мульти-блиц

Меня зовут Алексей Махоткин, я стою на фейс-контроле вмосковском ночном клубе, который называется undev.ru.

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

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

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

Page 2: Мульти-блиц выступление на Стачка-2012

Документирование для программиста

2015

-03-

11

Мульти-блиц

Для начала я хочу рассказать кое-что о документированиипрограммного кода для снижения bus-factor. Это одно израспространенных мечтаний среди программистов —

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

подстерегает ряд опасностей.

Page 3: Мульти-блиц выступление на Стачка-2012

Документация к коду — это текст.

2015

-03-

11

Мульти-блиц

Вообще, любой текст будет существенно проще писать, если у негоесть цель. Это что-то вроде сильной типизации — если перед

написанием текста сформулировать ответы на несколько простыхвопросов, то текст часто начинает вытекать из-под пальцев

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

Page 4: Мульти-блиц выступление на Стачка-2012

Для кого конкретно мы пишем текст?

2015

-03-

11

Мульти-блиц

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

Ему, в общем, даже не нужно объяснять что-то в духе «здравствуй,малыш! ты оказался в лабиринте!» — ему это ваш же менеджер

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

опыта — вопрос только в том, о каком проценте сюрпризов вы емурасскажете на раннем этапе.

Page 5: Мульти-блиц выступление на Стачка-2012

Что этот человек знает заранее?

2015

-03-

11

Мульти-блиц

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

описания работы функции max() или класса File, и им жезаканчивается, не добравшись до функции «n-мерная сверткакластеризованных коэффициентов». Не надо документироватьфункции, которые соответствуют всяким стандартам языка —вашему читателю очевидно, что делает функция to_json.

Page 6: Мульти-блиц выступление на Стачка-2012

Документируйте сюрпризы

2015

-03-

11

Мульти-блиц

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

избыточному.

Page 7: Мульти-блиц выступление на Стачка-2012

Напишите план сочинения, как учили в школе.

2015

-03-

11

Мульти-блиц

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

второй группе.

Page 8: Мульти-блиц выступление на Стачка-2012

Что этот человек узнает, прочитав текст?

2015

-03-

11

Мульти-блиц

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

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

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

т. п.

Page 9: Мульти-блиц выступление на Стачка-2012

Pidgin English, ч. I.

2015

-03-

11

Мульти-блиц

У программистов есть несколько способов продемонстрироватьзнание английского языка. Один из них — написать на нем

документацию. Это порочная идея (если, конечно, вы не работаетена западного работодателя). Скорее всего, ваш преемник будет

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

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

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

Однако — не надо обманывать себя.

Page 10: Мульти-блиц выступление на Стачка-2012

Pidgin English, ч. I.

2015

-03-

11

Мульти-блиц

Либо подключитесь к опен-сорсу и начните разрабатывать тамкакую-то нетривиальную фичу — и тогда у вас моментально

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

будут переводить ваш текст обратно на русский язык.

Page 11: Мульти-блиц выступление на Стачка-2012

Самодокументируемый код

2015

-03-

11

Мульти-блиц

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

правая ручка. также его нельзя отключать от вот этого вотпроводочка. число, подпись.»

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

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

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

области возможного рефакторинга.

Page 12: Мульти-блиц выступление на Стачка-2012

Самодокументируемый код

2015

-03-

11

Мульти-блиц

Завершение секции про документирование

Page 13: Мульти-блиц выступление на Стачка-2012

Отслеживание требований

2015

-03-

11

Мульти-блиц

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

делает (а на самом деле он тратит внимание разработчиков,всплывает в выдаче grep’а и т. п.). Конечно, в таких проектах всегда

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

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

файл со списком «требований», и размечать с помощьюспец-комментариев отдельные функции, участки кода, классы и

файлы на предмет их принадлежности к требованию.

Page 14: Мульти-блиц выступление на Стачка-2012

Отслеживание требований

2015

-03-

11

Мульти-блиц

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

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

юзкейс, который должна поддерживать наша программа; поддержкакакой-то третьейсторонней системы, которая в какой-то момент

может оказаться ненужной, и т. п.

Page 15: Мульти-блиц выступление на Стачка-2012

Метрики

2015

-03-

11

Мульти-блиц

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

оно затрагивает) и проч.Если требование устарело, то его можно удалить из

соответствующего файла и тогда автоматически соответствующийкод можно диагностировать как «устаревший».

Page 16: Мульти-блиц выступление на Стачка-2012

Метрики

2015

-03-

11

Мульти-блиц

Завершение секции про отслеживание требований

Page 17: Мульти-блиц выступление на Стачка-2012

SELECT * FROM <tblname> — плохой способ организацииконтента

2015

-03-

11

Мульти-блиц

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

«LIMIT и OFFSET». Очень легко придумать интерфейс, основанныйна этих двух идеях. В этот момент включается эволюционныймеханизм экономии энергии — в глазах возникает характернаячерно-белая спираль и голос «ЭКОНОМЬ ЭНЕРГИЮ». Таким

образом получается привычная всем пагинация.

Page 18: Мульти-блиц выступление на Стачка-2012

Страница обсуждения 1, 2, 3, 4, ..., 6740, 6741, 6742

2015

-03-

11

Мульти-блиц

Этот интерфейс очень эффективно нагружает базу данных, носпускает в унитаз всю структуру контента, который он призван

визуализировать.

Page 19: Мульти-блиц выступление на Стачка-2012

Придумайте что-нибудь

2015

-03-

11

Мульти-блиц

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

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

календарь и ограничиться этим (экономим энергию).Может быть, можно сделать что-то еще — например, что-то вродеheat-map активности на линии времени. Шарики разного размера ицвета? Учитывать как количество сообщений, так и количество

участников?Может быть, это гистограмма активности, как в графиках

статистики посещений, как в Google Analytics? График активностиможно аннотировать, «подсвечивая» причину всплеска — сезонные

обострения? важные события в жизни сообщества? тренды?

Page 20: Мульти-блиц выступление на Стачка-2012

Emotion mining

2015

-03-

11

Мульти-блиц

Вообще говоря, вся эта история — она про data mining. Она пропостроение производных структур поверх некоторого первичного

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

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

Page 21: Мульти-блиц выступление на Стачка-2012

Emotion mining

2015

-03-

11

Мульти-блиц

Завершение секции про пагинацию

Page 22: Мульти-блиц выступление на Стачка-2012

Деградация глобального контента

2015

-03-

11

Мульти-блиц

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

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

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

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

форумах, описания продуктов и многое другое.

Page 23: Мульти-блиц выступление на Стачка-2012

Деградация глобального контента

2015

-03-

11

Мульти-блиц

Проблема не только с технологическими статьями, но и с другойфактографией — информация о визах, юридические консультации,

рассказы о медицинских технологиях (например, технологиялазерной коррекции зрения радикально меняется за пару лет, и

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

Понятно, что никто ничего не будет менять, потому что контент невырубить топором.

Page 24: Мульти-блиц выступление на Стачка-2012

Таймлайны

2015

-03-

11

Мульти-блиц

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

который ведется совместно в духе Wiki. Таймлайн можноподключить к тому или иному сайту — форуму и т. п. Глядя на

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

мажорные версии рельсов. Обратите внимание, что визовые правилашенгенского соглашения изменились.» и т. п.

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

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

Кстати, домен timewiki.ru свободен )

Page 25: Мульти-блиц выступление на Стачка-2012

Таймлайны

2015

-03-

11

Мульти-блиц

Завершение секции про таймлайны

Page 26: Мульти-блиц выступление на Стачка-2012

Future shock.

2015

-03-

11

Мульти-блиц

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

применении. Есть классическая теория, которая лежит в основемногих решений.

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

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

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

историй, честно говоря, сложно читать без слез.

Page 27: Мульти-блиц выступление на Стачка-2012

Future shock.

2015

-03-

11

Мульти-блиц

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

ВНЕЗАПНО перезагрузили сервер и оказалось, что то что мыпринимали за персистентный сторадж, оказалось RAM-based

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

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

морковки из альтернативных решений.

Page 28: Мульти-блиц выступление на Стачка-2012

Коммодитизация технологии

2015

-03-

11

Мульти-блиц

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

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

аудиторию.

Page 29: Мульти-блиц выступление на Стачка-2012

нижележащая структура данных;первые производные структуры;возможные алгоритмы;алгоритмическая сложность;конкурентное поведение (блокировки);классификация по CAP-теореме;распределение нагрузки и отказоустойчивость ×алгоритмы;ad-hoc решения;список внедрений;родственные связи;протокол доступа;20

15-0

3-11

Мульти-блиц

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

вместе песенку.Ad-hoc решения — это например про то, что Redis позволяет

работать в режиме message queue.На сайты решений сложно смотреть без слез. Больше всего менябесит фраза про «высокую производительность» и «надежность»,

которая повторяется на всех сайтах.У меня есть идея сделать СбербанкДБ. Это такое nosql-решение, вкотором каждый запрос обрабатывается минут по 15-20, и еще

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

Page 30: Мульти-блиц выступление на Стачка-2012

Таймлайны снова

2015

-03-

11

Мульти-блиц

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

— про первичную информацию, это будет темой одной изследующих частей.

Page 31: Мульти-блиц выступление на Стачка-2012

Сообщество

2015

-03-

11

Мульти-блиц

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

увеличить свою техническую эффективность.Если вы чувствуете, что в моих словах есть смысл — давайте

свяжемся и попробуем стартовать этот проект.

Page 32: Мульти-блиц выступление на Стачка-2012

Сообщество

2015

-03-

11

Мульти-блиц

Завершение секции про классификацию NoSQL

Page 33: Мульти-блиц выступление на Стачка-2012

Немного о резюме программистов

2015

-03-

11

Мульти-блиц

Давайте немного поговорим о чем-нибудь попроще, например орезюме. Я нанял наверное человек 80 для Undev.ru, то есть я

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

Page 34: Мульти-блиц выступление на Стачка-2012

Сопроводительное письмо (cover letter)

2015

-03-

11

Мульти-блиц

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

к личности нанимающего менеджера (если, конечно, компанияустроена так, что у нанимающих менеджеров есть личности).Идеально, если вы хотите работать в той или иной компании,например, в Undev.ru. Тогда вы пишете в кавер-леттер, почему

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

под работодателя.

Page 35: Мульти-блиц выступление на Стачка-2012

Сопроводительное письмо (cover letter)

2015

-03-

11

Мульти-блиц

Понятно, что вы можете и не быть таким мотивированным (хотя тутнадо бы задать себе вопрос — а почему?) Тогда вы рассылаете одно

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

мешало нам его читать.

Page 36: Мульти-блиц выступление на Стачка-2012

резюме должно быть;

обратный хронологический порядок работ;

не пишите туда ерунду;не надо устраивать балаган;заполните moikrug.ru;пишите по-русски;

2015

-03-

11

Мульти-блиц

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

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

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

я вычеркиваю этот пункт.

Page 37: Мульти-блиц выступление на Стачка-2012

резюме должно быть;

обратный хронологический порядок работ;

не пишите туда ерунду;не надо устраивать балаган;заполните moikrug.ru;пишите по-русски;

2015

-03-

11

Мульти-блиц

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

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

максимально полные резюме.

Page 38: Мульти-блиц выступление на Стачка-2012

Pidgin English, ч. II

2015

-03-

11

Мульти-блиц

Зачем вы присылаете мне резюме, записанное латинскими буквами?Присылайте в российские компании резюме на русском языке,

пожалуйста.

Page 39: Мульти-блиц выступление на Стачка-2012

Начало карьеры

2015

-03-

11

Мульти-блиц

Завершение секции про резюме

Page 40: Мульти-блиц выступление на Стачка-2012

Вопросы, пожелания, предложения?

2015

-03-

11

Мульти-блиц

Вопросы

Page 41: Мульти-блиц выступление на Стачка-2012

UNDEV.RU

2015

-03-

11

Мульти-блиц

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

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

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