Download - Мульти-блиц выступление на Стачка-2012
Вопросы, комментарии, предложения:http://twitter.com/squadette
2015
-03-
11
Мульти-блиц
Меня зовут Алексей Махоткин, я стою на фейс-контроле вмосковском ночном клубе, который называется undev.ru.
Сегодня сбылась моя мечта, я выступаю на разогреве у Валкина.Некоторые темы преследуют меня всю мою профессиональнуюжизнь. Я хочу обсудить сразу несколько таких тем, потратив на
каждую приблизительно по семь с половиной минут. Я не собираюсьрассказывать об успехах, потому что их нет, или о технических
деталях, потому что они мне не интересны.Я, скорее, хочу обратить ваше внимание на несколько вещей, накоторые, как мне кажется, имеет смысл обратить внимание.
Документирование для программиста
2015
-03-
11
Мульти-блиц
Для начала я хочу рассказать кое-что о документированиипрограммного кода для снижения bus-factor. Это одно израспространенных мечтаний среди программистов —
«документировать программу», чтобы пойти в отпуск илиуволиться. К сожалению, на дороге к этой прекрасной цели нас
подстерегает ряд опасностей.
Документация к коду — это текст.
2015
-03-
11
Мульти-блиц
Вообще, любой текст будет существенно проще писать, если у негоесть цель. Это что-то вроде сильной типизации — если перед
написанием текста сформулировать ответы на несколько простыхвопросов, то текст часто начинает вытекать из-под пальцев
самостоятельно и без напряжения.
Для кого конкретно мы пишем текст?
2015
-03-
11
Мульти-блиц
Кто конкретно тот человек, для которого мы документируем код?Например, наша задача сильно облегчится, если мы признаем, чтоэтот человек не уступает нам в компетентности и квалификации.
Ему, в общем, даже не нужно объяснять что-то в духе «здравствуй,малыш! ты оказался в лабиринте!» — ему это ваш же менеджер
объяснил на собеседовании. Он умеет бегать не хуже вас — простоон пока еще не знает, где именно в этом лабиринте разложенысюрпризы. Он все равно узнает об этом так или иначе из своего
опыта — вопрос только в том, о каком проценте сюрпризов вы емурасскажете на раннем этапе.
Что этот человек знает заранее?
2015
-03-
11
Мульти-блиц
Что этот человек должен знать заранее? Не надо документироватьничего, кроме сюрпризов. Часто документирование начинается с
описания работы функции max() или класса File, и им жезаканчивается, не добравшись до функции «n-мерная сверткакластеризованных коэффициентов». Не надо документироватьфункции, которые соответствуют всяким стандартам языка —вашему читателю очевидно, что делает функция to_json.
Документируйте сюрпризы
2015
-03-
11
Мульти-блиц
Я думаю, что эта манера программистов взята из разного родадокументации на разного рода API — именно эту документациюпрограммисты читают чаще всего и подражают ей. Там, конечно,надо стремиться к стопроцентному документированию, порой даже
избыточному.
Напишите план сочинения, как учили в школе.
2015
-03-
11
Мульти-блиц
Попытка документировать кодовую базу похожа на марафон —необходимо планировать время и энергию. Соберите, например,список классов. Разложите их на три группы — бизнес-логика, непойми что и утилиты. Документируйте бизнес-логику. Не тратьтевремя на утилиты. На следующей итерации сфокусируйтесь на
второй группе.
Что этот человек узнает, прочитав текст?
2015
-03-
11
Мульти-блиц
Представьте себе, что у вас через три часа поезд. Теперьдокументируйте то, что приходит на ум и не тратьте время на
шелуху.Представьте себе, что вы даете человеку ключи от дачи. Вы небудете рассказывать ему о том, что в вашей даче есть дверь соступеньками и три окна. Вы расскажете, как включить газ и
электричество, где ближайшие электрички (и какую из них частоотменяют), где покупать по дороге продукты, какой ключ заедает и
т. п.
Pidgin English, ч. I.
2015
-03-
11
Мульти-блиц
У программистов есть несколько способов продемонстрироватьзнание английского языка. Один из них — написать на нем
документацию. Это порочная идея (если, конечно, вы не работаетена западного работодателя). Скорее всего, ваш преемник будет
говорить на одном с вами языке. Скорее всего, и вам будет труднописать, и ему будет трудно восстанавливать смысл из чужого языка.Я так понял, что у многих программистов есть некое стремление
интегрироваться в мировую инфраструктуру. Обычно этовыражается в некоем полуоформленном стремлении «когда-нибудьподключиться к опен-сорсу». Готовясь к этой мечте, они пытаются
писать тексты на английском языке. Почему при этом они неподключаются собственно к опен-сорсу — вопрос открытый.
Однако — не надо обманывать себя.
Pidgin English, ч. I.
2015
-03-
11
Мульти-блиц
Либо подключитесь к опен-сорсу и начните разрабатывать тамкакую-то нетривиальную фичу — и тогда у вас моментально
вырастет искомый английский язык от дискуссий с коллегами. Либоперестаньте самообучаться на безвинных людях, которые потом
будут переводить ваш текст обратно на русский язык.
Самодокументируемый код
2015
-03-
11
Мульти-блиц
Хорошо, если код прозрачен, как слеза программиста, сидящего наего поддержке. Тяжело документировать код, который вообще-тонадо бы частично переписать, переименовать несколько функций,убрать коросту и прочее. Однако, в этот момент лучше включитьрежим патологоанатома: «у ребенка три ножки, зато отсутствует
правая ручка. также его нельзя отключать от вот этого вотпроводочка. число, подпись.»
Это тяжело. Часто программист, сформулировав очередной абзац обустройстве какого-нибудь очередного компонента, с мучительнойясностью осознает, насколько далеко его детище от одного из
идеалов, которые он носит в сердце. Его окружают демоны, онивоют и призывают то покаяться, то рефакторить, то бросить этобессмысленное занятие и пойти почитать что-нибудь утешающее.
Скорее всего, ситуация сейчас такова, что ничего трогать не нужно.Лучше потратьте это время на то, чтобы хотя бы классифицировать
области возможного рефакторинга.
Самодокументируемый код
2015
-03-
11
Мульти-блиц
Завершение секции про документирование
Отслеживание требований
2015
-03-
11
Мульти-блиц
В долгоживущих проектах некоторые требования с течениемвремени отмирают. Однако, зачастую код, поддерживавший этитребования, остается в кодовой базе и в лучшем случае ничего не
делает (а на самом деле он тратит внимание разработчиков,всплывает в выдаче grep’а и т. п.). Конечно, в таких проектах всегда
есть процесс рефакторинга, который постепенно позволяетизбавляться от такого кода.
Интересно было бы подумать и поэкспериментировать с разметкойкода по определенным требованиям, чтобы превратить требования внекоторый объект первого класса. Например, можно было бы вести
файл со списком «требований», и размечать с помощьюспец-комментариев отдельные функции, участки кода, классы и
файлы на предмет их принадлежности к требованию.
Отслеживание требований
2015
-03-
11
Мульти-блиц
Маркапить можно и нужно все что угодно — яваскриптовые файлы,CSS-файлы, картинки и проч.
Требованием могут быть разные вещи — инфраструктурная фича,обеспечивающая надежность и отказоустойчивость; конкретный
юзкейс, который должна поддерживать наша программа; поддержкакакой-то третьейсторонней системы, которая в какой-то момент
может оказаться ненужной, и т. п.
Метрики
2015
-03-
11
Мульти-блиц
Все это великолепие можно парсить и проводить глобальный анализкодовой базы. Процент покрытия, относительные объемы каждоготребования, степень изолированности требования (сколько файлов
оно затрагивает) и проч.Если требование устарело, то его можно удалить из
соответствующего файла и тогда автоматически соответствующийкод можно диагностировать как «устаревший».
Метрики
2015
-03-
11
Мульти-блиц
Завершение секции про отслеживание требований
SELECT * FROM <tblname> — плохой способ организацииконтента
2015
-03-
11
Мульти-блиц
Экономия энергии — эволюционно обусловленный механизмразвития человека, и разработчики интерфейсов — не исключение.Все знают про оператор «SELECT *», все знают ключевые слова
«LIMIT и OFFSET». Очень легко придумать интерфейс, основанныйна этих двух идеях. В этот момент включается эволюционныймеханизм экономии энергии — в глазах возникает характернаячерно-белая спираль и голос «ЭКОНОМЬ ЭНЕРГИЮ». Таким
образом получается привычная всем пагинация.
Страница обсуждения 1, 2, 3, 4, ..., 6740, 6741, 6742
2015
-03-
11
Мульти-блиц
Этот интерфейс очень эффективно нагружает базу данных, носпускает в унитаз всю структуру контента, который он призван
визуализировать.
Придумайте что-нибудь
2015
-03-
11
Мульти-блиц
Рискуя гибелью от нехватки ресурсов, можно попробовать придуматьчто-нибудь. Например, многие виды контента размещаются на
некотором таймлайне, и можно попытаться визуализировать именноего. Эволюционный инстинкт настаивает на том, чтобы придумать
календарь и ограничиться этим (экономим энергию).Может быть, можно сделать что-то еще — например, что-то вродеheat-map активности на линии времени. Шарики разного размера ицвета? Учитывать как количество сообщений, так и количество
участников?Может быть, это гистограмма активности, как в графиках
статистики посещений, как в Google Analytics? График активностиможно аннотировать, «подсвечивая» причину всплеска — сезонные
обострения? важные события в жизни сообщества? тренды?
Emotion mining
2015
-03-
11
Мульти-блиц
Вообще говоря, вся эта история — она про data mining. Она пропостроение производных структур поверх некоторого первичного
контента.С одной стороны, наверняка половина обсуждений, для пагинациикоторых требуется 649 страниц — представляет из себя шум на 95процентов. С другой стороны, это надо еще доказать. С третьейстороны, получение такого механизма обратной связи можетулучшить качество обсуждения, улучшить само сообщество.
Я буду еще говорить про производный контент в приложении кклассификации стартапов.
Emotion mining
2015
-03-
11
Мульти-блиц
Завершение секции про пагинацию
Деградация глобального контента
2015
-03-
11
Мульти-блиц
Интернет полон устаревшей информации. Гугл покупает все большедисков, заполняя свой поисковый индекс. Индустрия не стоит на
месте, и почти каждый текст о ее фактическом состоянии рано илипоздно устаревает.
Иногда при поисках решений некоторых вопрос программированияна рельсах в первых позициях серпа находятся блог-посты,
датированные 2006 годом, то есть где-то районом версии 1.2.Понятно, что указанные в них советы давно и невероятно устарели.Понятно, что так же устаревают аналитические статьи, переписка в
форумах, описания продуктов и многое другое.
Деградация глобального контента
2015
-03-
11
Мульти-блиц
Проблема не только с технологическими статьями, но и с другойфактографией — информация о визах, юридические консультации,
рассказы о медицинских технологиях (например, технологиялазерной коррекции зрения радикально меняется за пару лет, и
читать ужасающие отзывы делавших операцию пять лет назад нетникакого смысла).
Понятно, что никто ничего не будет менять, потому что контент невырубить топором.
Таймлайны
2015
-03-
11
Мульти-блиц
Мне кажется, что можно было бы ввести в оборот такую идею, кактаймлайн событий. Таймлайн это некий объект первого класса,
который ведется совместно в духе Wiki. Таймлайн можноподключить к тому или иному сайту — форуму и т. п. Глядя на
время написания текста, можно выводить некие, что ли, подсказки— «На всякий случай сообщаем, что с тех пор вышло уже две
мажорные версии рельсов. Обратите внимание, что визовые правилашенгенского соглашения изменились.» и т. п.
Подобные напоминания может также выдавать расширение кбраузеру, так или иначе анализируя содержимое страницы (илипросто позволяя пользователю выбирать нужный таймлайн).
В любом случае, мне кажется, что таймлайны какструктурированный объект первого класса — это перспективная идея.
Кстати, домен timewiki.ru свободен )
Таймлайны
2015
-03-
11
Мульти-блиц
Завершение секции про таймлайны
Future shock.
2015
-03-
11
Мульти-блиц
Меня бесит ситуация, на мой взгляд сложившаяся в мире NoSQL.Отсутствует единый согласованный корпус знаний о теории ипрактике. Есть много разрозненных сведений о практическом
применении. Есть классическая теория, которая лежит в основемногих решений.
Есть удивительная инженерная культура, которая помогает людямнаходить остроумные и свежие решения для актуальных проблем.
Нет целостности. Тысячи, десятки тысяч человеко-часов тратятся наподбор решения опытными специалистами. Тысячи, десятки тысячменее опытных разработчиков могли бы получить десятки мощныхинструментов в свое распоряжение. Однако, сообщество продолжает
накапливать все новые реализации, все новые отчеты обиспользовании, отчеты о переходах и миграциях. Половину этих
историй, честно говоря, сложно читать без слез.
Future shock.
2015
-03-
11
Мульти-блиц
Я понимаю, что все в стрессе, у всех внезапный успех или внезапноеизменение требований, или внезапная недооценка необходимости ипереоценка возможностей. Однако, от выслушивания историй о том,что сначала мы пользовались MongoDB, а потом оно ВНЕЗАПНОвдруг стала работать со скоростью один запрос в час, поэтому мы впанике поставили Redis, и все работало хорошо, пока однажды мы
ВНЕЗАПНО перезагрузили сервер и оказалось, что то что мыпринимали за персистентный сторадж, оказалось RAM-based
решением, и поэтому мы...Я с ужасом понимаю, что я не застрахован от всей этой истории. Янабираю команду из полудюжины высококлассных разработчиков, и
я понимаю, что мы будем идти по всем текущим граблям всехтекущих решений, и перед нашим носом снова будут маячить
морковки из альтернативных решений.
Коммодитизация технологии
2015
-03-
11
Мульти-блиц
Лично мне для возможности принимать чуть более предсказуемыетехнические решения не хватает очень простой вещи — актуального,
поддерживаемого сообществом экспертов, нейтральногоклассификатора NoSQL-решений. Хорошо структурированный текст,который без соплей излагает факты, с расчетом на компетентную
аудиторию.
нижележащая структура данных;первые производные структуры;возможные алгоритмы;алгоритмическая сложность;конкурентное поведение (блокировки);классификация по CAP-теореме;распределение нагрузки и отказоустойчивость ×алгоритмы;ad-hoc решения;список внедрений;родственные связи;протокол доступа;20
15-0
3-11
Мульти-блиц
Вообще хочется обойтись в этом тексте без историй типа здравствуймалыш! сейчас я расскажу тебе, что такое графы, а потом мы споем
вместе песенку.Ad-hoc решения — это например про то, что Redis позволяет
работать в режиме message queue.На сайты решений сложно смотреть без слез. Больше всего менябесит фраза про «высокую производительность» и «надежность»,
которая повторяется на всех сайтах.У меня есть идея сделать СбербанкДБ. Это такое nosql-решение, вкотором каждый запрос обрабатывается минут по 15-20, и еще
перерывы на обед с двух до трех по часовому поясу сервера. Такжеоно иногда отвечет фразой «ой а мы ваш ключик потеряли».
Таймлайны снова
2015
-03-
11
Мульти-блиц
Как мы все понимаем, вся эта история — снова во многом протаймлайны как механизм устаревания контента. Также эта история
— про первичную информацию, это будет темой одной изследующих частей.
Сообщество
2015
-03-
11
Мульти-блиц
Никто не в состоянии в одиночку поддерживать такой корпус знанийв одиночку. Однако, мы могли бы поработать вместе, объединитьнаш опыт и знания и создать вещь, которая позволит нам всем
увеличить свою техническую эффективность.Если вы чувствуете, что в моих словах есть смысл — давайте
свяжемся и попробуем стартовать этот проект.
Сообщество
2015
-03-
11
Мульти-блиц
Завершение секции про классификацию NoSQL
Немного о резюме программистов
2015
-03-
11
Мульти-блиц
Давайте немного поговорим о чем-нибудь попроще, например орезюме. Я нанял наверное человек 80 для Undev.ru, то есть я
прочитал около 1000 резюме, или может быть тысячи полторы.Процентов двадцать этих резюме я предпочел бы никогда не видеть.
Сопроводительное письмо (cover letter)
2015
-03-
11
Мульти-блиц
Некоторые почему-то считают, что кавер леттер — этоформальность. Наоборот, кавер леттер — это специальный формат,который был придуман для того, чтобы обратиться непосредственно
к личности нанимающего менеджера (если, конечно, компанияустроена так, что у нанимающих менеджеров есть личности).Идеально, если вы хотите работать в той или иной компании,например, в Undev.ru. Тогда вы пишете в кавер-леттер, почему
именно там, и фокусируете внимание на те или иные аспекты своегоопыта которые, как вам кажется, должны быть особенно интересныкомпании. Идеально, конечно, если вы еще и подстраиваете резюме
под работодателя.
Сопроводительное письмо (cover letter)
2015
-03-
11
Мульти-блиц
Понятно, что вы можете и не быть таким мотивированным (хотя тутнадо бы задать себе вопрос — а почему?) Тогда вы рассылаете одно
и то же резюме без всякого кавер-леттера на двадцать разныхадресов и ждете ответа. Постарайтесь организовать свое резюме,как и всякий целенаправленный текст, так, чтобы оно хотя бы не
мешало нам его читать.
резюме должно быть;
обратный хронологический порядок работ;
не пишите туда ерунду;не надо устраивать балаган;заполните moikrug.ru;пишите по-русски;
2015
-03-
11
Мульти-блиц
Даже если вы адский специалист, который никогда не ходит пособеседованиям, я все равно скорее всего захочу увидеть ваше
резюме. Оно нужно мне для того, чтобы сориентировать коллег ируководство.
До сих пор встречаются резюме, в которых самое свежее местоработы находится в конце списка. Это настолько отвратительно, что
я вычеркиваю этот пункт.
резюме должно быть;
обратный хронологический порядок работ;
не пишите туда ерунду;не надо устраивать балаган;заполните moikrug.ru;пишите по-русски;
2015
-03-
11
Мульти-блиц
Не надо присылать смешные резюме — в виде кода на Ruby, в видекомиксов, а особенно — в виде resumup (этот стартап занял первоеместо на проведенном мною конкурсе самых идиотских стартапов).К сожалению, чистая статистика заставляет меня относиться с
подозрением к смешным резюме — я видел может быть один случай,когда под таким резюме скрывался адекватный профессионализм.Мы очень любим moikrug.ru, и мы хотели бы, чтобы в нем былобольше активных на рынке труда людей, и чтобы у них были
максимально полные резюме.
Pidgin English, ч. II
2015
-03-
11
Мульти-блиц
Зачем вы присылаете мне резюме, записанное латинскими буквами?Присылайте в российские компании резюме на русском языке,
пожалуйста.
Начало карьеры
2015
-03-
11
Мульти-блиц
Завершение секции про резюме
Вопросы, пожелания, предложения?
2015
-03-
11
Мульти-блиц
Вопросы
UNDEV.RU
2015
-03-
11
Мульти-блиц
Несколько заключительных объявлений.На стенде undev.ru можно купить экземпляр книги БенджаминаПирса «Типы в языках программирования». Из-за особенностейкнижной дистрибуции он продается слишком дорого в Москве,
Санкт-Петербурге и интернет-магазинах книга-почтой. Я постепеннораспространяю эту книгу среди еще неохваченных слоев общества.
Там же можно получить по листу прикольных лопающихсяпупырышков, у нас их почти четыре квадратных метра.