Пришло время очередного брейнсторминга на тему "как еще можно развеселить айтишников на конференции, кроме как докладами". Все в том же контексте. Сегодня я нахожусь выше облаков (Ciklum SkyPoint). Время 14:00. Я тут с самого утра. Много ребят - все хакатонят. А я покодил уже и собрался побрейнстормить. Как и положено во фрирайтинге - будет много буков. Где-то глупости, где-то недоработано. Уж простите.
Пока я кодил, заметил, что ребята совсем не слушают доклад своего удаленного колеги. Его презентация была на проекторе, а голос звучал из наушников. Ребята просто что-то делали на своих ноутбуках. Но кое-что их все же отвлекло от ноутов. Это был вопрос "найдите ошибку в коде". Все подняли свои глаза и призадумались. На экране светился кусок кода.
И тут я вспомнил сериал, что смотрел недавно - социальные сети. Там Цукерберг придумал аппку в которой предлагались две девушки на выбор - выбери красивую... А что, если выводить два варианта кода - правильный и неправильный. Выбери правильный. А примеры кода пусть будут из разных фреймворков/технологий. На проекторе в это время пусть будет отображаться прогресс каждого участника и его суммарный бал. +1 за правильный ответ и 0 за неправильный. И пусть гуглят. Можно сделать так же бонус за быстрый ответ. Я бы посоревновался :)
Что еще можно сделать продолжительностью час-два? Веселые рефакторинги. Ивент на котором я побывал, но ответ так и не получил... Есть сервер. На нем есть несколько легаси классов. Ты выбираешь свободный сейчас и рефакторишь его 5 минут, потом ранишь тесты и заливаешь обратно. После берешь другой код и его тоже рефакторишь. И так пока не попробуешь все примеры, так же и любой другой участник. Потом с попкорном препарируем результат.
Мега TDD пингпонг. Играют группами. Группа тестеры и группа кодеры. T-группа шустро имплементят свои тесты и добавляют их в систему. D-группа старается так же быстро реализовать эти тесты от простого к сложному. Общий репозиторий. Все работают с одним и тем же исходным кодом. Посмотрим кто быстрее.
Или так - тесты уже заготовлены. Они все заигнорены. Каждый участник их по очереди их имплементит. У каждого свой репозиторий. Но задачи одни и те же. Выигрывает тот, кто быстрее всех сделает тесты зелеными. Потом смотрим код, меряем насколько он легаси получился. Как тут визуализировать результат? Какой-то CI сервер после каждого коммита ранит все тесты и выводит информацию о билде и количестве тестов, а так же начисляет штрафные очки за сваленные билды.
Апельсин? Что если соединить апельсин с джавой?... А макака? Макака с клавиатурой...
А что, если в комнате тусит ряд ноутбуков в ряд. Каждый их участников подходит к своему ноуту, ему дается IDE с кодом и тестами. В руках у него USB клавиатура, к которой он привык. Он должен запилить то, что написано в тесте. Успел он или нет, через 5 минут все шифтятся на 1 и он работает уже над другим кодом, возможно незаконченным предшественником, а за его код садится другой специалист. Вот тебе и макака. Полная макака! Кстати классное название для формата "Макака"...
Говнокод. при каких таких условиях его будет становиться больше? Зачем? Ну а просто так для фана. Быть может если ребята будут писать говнокод и при этом дико смеяться над этим, то в следующий раз на продакшене сработает условный рефлекс и кодер одмается? А может и нет. Не это ловим. Фан! Итак говнокод, как его продуцировать больше? И так, чтобы говнокод этот продуцировался всеми сразу.
О! Кто первый того и тапки. Все разбиваются на пары. Каждая пара работает с одним репозиторием. Один напарник стремится запутать код путем лжерефакторинга. Упирается при этом на тесты. Второй же его пытается разрабатывать следуя четко намеченному пути (список заигноренных тестов). За этим всем грозно смотрит CI. Кто свалит первый билд - тот и проиграл. Нужно фигачить как можно быстрее, потому что сосед тоже фигачит антирефакторингом и усложняет код. Из всех, конечно же выигрывает тот, кто первым реализует весь функционал.
Что еще? Телевизор. Что нам дает на ивенте телевизор? Кто-то кодит, а все смотрят за его работой на большом экране. Что тут нового? Все его троллят :)
О! А что если замутить редактор, на котором смогут кодить сразу все участники? Есть купа тестов, которые надо имплементить. Есть час времени на все про все. Есть несколькодесят человек и полный хаос. Пусть и рефакторят и тесты прогоняют и фичерят одновременно. Хех...
Так телевизор прошли. Теперь радиосигнал. Радист морзе. Морзянка. Ребята просто берут свои программы и как-то в примитивном виде передают их друг другу. Интересно и что дальше? Ладно пока оставим...
Так, а как на счет дивана? Ведется разработка по намеченному плану. Тесты пишем сидя, а код педалим стоя. Причем ноут стоя надо держать в руках :) Пусть неудобное положение сократит время на написание кода в пользу рефакторинга и написания тестов.
О! Я всегда хотел посчитать кто сколько пользуется копипастом! А что если мы будем визуализировать количество комбинаций Copy-Past на клавиатуре? И на общий экран в лидерборд :)
Или вот еще ивент - "мышку в топку". Все кодят на своих ноутах без мышек и тачпадов. Хехе. Хоть хоткеи поизучаем новые.
А как на счет покодить верх ногами? Я помню пару раз я флипал экран на своем HP. Надо бы вспомнить как это делается :) Вот смеху то будет. Особенно мышка тут очень ктстати :) Опять же на время.
Ну а если ребята без ноутов? У них есть телефны. Что с ними можно сделать? О! Можно сделать как на телепередачах, где двое опонентов общаются на какую-то тему. Либо ++ либо --. А на графике на проекторе рисуется обще настроение :) Можно это применить к одному спикеру. Пусть что-то рассказывает а ему опля и обратная связь. Если упал ниже 0 - надо спеть песенку из детства. Хотя нет - всем захочется, чтобы спикер пел песенку и будут читерить :) Но с песенкой - это весело.
Детство. Песочница. Что дальше? ОО!! Давно хотел. Есть купа роботов всяких. У них джава апи. Каждому рендомно причисляется свой роботик. У каждого роботика свои особенности. Нужно сделать что-то прикольное. Пусть детки внутри нас поиграются в игрушки. Только по бюджетику может получится круто. Кстати роботами можно управлять по вайфаю. Как-то так :) От я бы оторвался... Так, где мой ардуино застрял?... Кстати то же можно сделать и с вертолетиками...
Полетать. Как еще можно полетать с джавакодом?
А что, если вместе закодить музыку? Каждому дается какой-то midi инструмент и он на нем кодит какую-то свою часть. Как-то все вместе синхронизируемся и тадам! У нас джава-оркестр!
Как можно джава использовать нестандартно? Ну например спринг или джиюнит? О! А что если с джиюнита сделать елочку - красные и зеленые лампочки и все такое. Ну и? Кстати на счет визуализации тестов в виде краснозеленых светодиодов это идея прикольная. Только железяку надо... Потом пригодится идея.
О! Есть джарник. ХЗ что он делает. Надо разобраться что с ним делать, потом починить его и интегрировать на место. И код, чтобы его не было понятно перед компиляцией заобфусцировать. Мммм....А результате успешной работы должно получиться что-то красивое. Пусть это будет музыка или какое-то световое шоу. Но если код не работает, то пусть будет полный треш...
Что еще? Можно порешать головоломки. Взять какой-то сайт и попробовать пройти его. Например http://codingbat.com/java
Продолжение как всегда следует...
Пока я кодил, заметил, что ребята совсем не слушают доклад своего удаленного колеги. Его презентация была на проекторе, а голос звучал из наушников. Ребята просто что-то делали на своих ноутбуках. Но кое-что их все же отвлекло от ноутов. Это был вопрос "найдите ошибку в коде". Все подняли свои глаза и призадумались. На экране светился кусок кода.
И тут я вспомнил сериал, что смотрел недавно - социальные сети. Там Цукерберг придумал аппку в которой предлагались две девушки на выбор - выбери красивую... А что, если выводить два варианта кода - правильный и неправильный. Выбери правильный. А примеры кода пусть будут из разных фреймворков/технологий. На проекторе в это время пусть будет отображаться прогресс каждого участника и его суммарный бал. +1 за правильный ответ и 0 за неправильный. И пусть гуглят. Можно сделать так же бонус за быстрый ответ. Я бы посоревновался :)
Что еще можно сделать продолжительностью час-два? Веселые рефакторинги. Ивент на котором я побывал, но ответ так и не получил... Есть сервер. На нем есть несколько легаси классов. Ты выбираешь свободный сейчас и рефакторишь его 5 минут, потом ранишь тесты и заливаешь обратно. После берешь другой код и его тоже рефакторишь. И так пока не попробуешь все примеры, так же и любой другой участник. Потом с попкорном препарируем результат.
Мега TDD пингпонг. Играют группами. Группа тестеры и группа кодеры. T-группа шустро имплементят свои тесты и добавляют их в систему. D-группа старается так же быстро реализовать эти тесты от простого к сложному. Общий репозиторий. Все работают с одним и тем же исходным кодом. Посмотрим кто быстрее.
Или так - тесты уже заготовлены. Они все заигнорены. Каждый участник их по очереди их имплементит. У каждого свой репозиторий. Но задачи одни и те же. Выигрывает тот, кто быстрее всех сделает тесты зелеными. Потом смотрим код, меряем насколько он легаси получился. Как тут визуализировать результат? Какой-то CI сервер после каждого коммита ранит все тесты и выводит информацию о билде и количестве тестов, а так же начисляет штрафные очки за сваленные билды.
Апельсин? Что если соединить апельсин с джавой?... А макака? Макака с клавиатурой...
А что, если в комнате тусит ряд ноутбуков в ряд. Каждый их участников подходит к своему ноуту, ему дается IDE с кодом и тестами. В руках у него USB клавиатура, к которой он привык. Он должен запилить то, что написано в тесте. Успел он или нет, через 5 минут все шифтятся на 1 и он работает уже над другим кодом, возможно незаконченным предшественником, а за его код садится другой специалист. Вот тебе и макака. Полная макака! Кстати классное название для формата "Макака"...
Говнокод. при каких таких условиях его будет становиться больше? Зачем? Ну а просто так для фана. Быть может если ребята будут писать говнокод и при этом дико смеяться над этим, то в следующий раз на продакшене сработает условный рефлекс и кодер одмается? А может и нет. Не это ловим. Фан! Итак говнокод, как его продуцировать больше? И так, чтобы говнокод этот продуцировался всеми сразу.
О! Кто первый того и тапки. Все разбиваются на пары. Каждая пара работает с одним репозиторием. Один напарник стремится запутать код путем лжерефакторинга. Упирается при этом на тесты. Второй же его пытается разрабатывать следуя четко намеченному пути (список заигноренных тестов). За этим всем грозно смотрит CI. Кто свалит первый билд - тот и проиграл. Нужно фигачить как можно быстрее, потому что сосед тоже фигачит антирефакторингом и усложняет код. Из всех, конечно же выигрывает тот, кто первым реализует весь функционал.
Что еще? Телевизор. Что нам дает на ивенте телевизор? Кто-то кодит, а все смотрят за его работой на большом экране. Что тут нового? Все его троллят :)
О! А что если замутить редактор, на котором смогут кодить сразу все участники? Есть купа тестов, которые надо имплементить. Есть час времени на все про все. Есть несколькодесят человек и полный хаос. Пусть и рефакторят и тесты прогоняют и фичерят одновременно. Хех...
Так телевизор прошли. Теперь радиосигнал. Радист морзе. Морзянка. Ребята просто берут свои программы и как-то в примитивном виде передают их друг другу. Интересно и что дальше? Ладно пока оставим...
Так, а как на счет дивана? Ведется разработка по намеченному плану. Тесты пишем сидя, а код педалим стоя. Причем ноут стоя надо держать в руках :) Пусть неудобное положение сократит время на написание кода в пользу рефакторинга и написания тестов.
О! Я всегда хотел посчитать кто сколько пользуется копипастом! А что если мы будем визуализировать количество комбинаций Copy-Past на клавиатуре? И на общий экран в лидерборд :)
Или вот еще ивент - "мышку в топку". Все кодят на своих ноутах без мышек и тачпадов. Хехе. Хоть хоткеи поизучаем новые.
А как на счет покодить верх ногами? Я помню пару раз я флипал экран на своем HP. Надо бы вспомнить как это делается :) Вот смеху то будет. Особенно мышка тут очень ктстати :) Опять же на время.
Ну а если ребята без ноутов? У них есть телефны. Что с ними можно сделать? О! Можно сделать как на телепередачах, где двое опонентов общаются на какую-то тему. Либо ++ либо --. А на графике на проекторе рисуется обще настроение :) Можно это применить к одному спикеру. Пусть что-то рассказывает а ему опля и обратная связь. Если упал ниже 0 - надо спеть песенку из детства. Хотя нет - всем захочется, чтобы спикер пел песенку и будут читерить :) Но с песенкой - это весело.
Детство. Песочница. Что дальше? ОО!! Давно хотел. Есть купа роботов всяких. У них джава апи. Каждому рендомно причисляется свой роботик. У каждого роботика свои особенности. Нужно сделать что-то прикольное. Пусть детки внутри нас поиграются в игрушки. Только по бюджетику может получится круто. Кстати роботами можно управлять по вайфаю. Как-то так :) От я бы оторвался... Так, где мой ардуино застрял?... Кстати то же можно сделать и с вертолетиками...
Полетать. Как еще можно полетать с джавакодом?
А что, если вместе закодить музыку? Каждому дается какой-то midi инструмент и он на нем кодит какую-то свою часть. Как-то все вместе синхронизируемся и тадам! У нас джава-оркестр!
Как можно джава использовать нестандартно? Ну например спринг или джиюнит? О! А что если с джиюнита сделать елочку - красные и зеленые лампочки и все такое. Ну и? Кстати на счет визуализации тестов в виде краснозеленых светодиодов это идея прикольная. Только железяку надо... Потом пригодится идея.
О! Есть джарник. ХЗ что он делает. Надо разобраться что с ним делать, потом починить его и интегрировать на место. И код, чтобы его не было понятно перед компиляцией заобфусцировать. Мммм....А результате успешной работы должно получиться что-то красивое. Пусть это будет музыка или какое-то световое шоу. Но если код не работает, то пусть будет полный треш...
Что еще? Можно порешать головоломки. Взять какой-то сайт и попробовать пройти его. Например http://codingbat.com/java
Продолжение как всегда следует...
>А что, если выводить два варианта кода - правильный и неправильный
ОтветитьУдалитьесть такой проект. http://www.plsqlchallenge.com/
там проводятся викторины (Quiz) по SQL, PL/SQL, APEX, логике и database design.
вариантов ответов несколько (правильные и неправильные). скорость ответа влияет на заработанные очки.
Весьма увлекательно!