Если нельзя, но очень хочется, то нужно обязательно и ничего в мире не стоит того, чтобы делать из этого проблему!


Интересна Java? Кликай по ссылке и изучай!
Если тебе полезно что-то из того, чем я делюсь в своем блоге - можешь поделиться своими деньгами со мной.
с пожеланием
столько времени читатели провели на блоге - 
сейчас онлайн - 

четверг, 31 октября 2013 г.

Продолжаем генерить бредовые форматы для айтишнков




А теперь побуду стенографистом. Еще одно собрание и еще два десятка бредовых идей для веселых ивентов.  На этот раз нас было четверо. Собрались мы снова Выше облаков в офисе Ciklum. Готовились к предстоящему java Сiklum субботнику. Итак поехали! Прошу не воспринимать это все слишком серьезно, а послушать какие мысли приходят и их записать в комменты - быть может вместе придумается что-то стоящее.

Аудитория большая. Около 100 человек. Все, что работает для 20 не работает для 100. Что делать? Можно давать ребятам право выбора и организовать для них несколько параллельных тусовок, каждая со своим форматом – разделяй и властвуй. Теперь у нас не 100 человек а 5 групп по +/- 20 человек. Супер! 

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

Доклад-визитка. Когда каждый имеет 5 минут на то, чтобы встать, представиться и рассказать о том, что у него на поверхности, какие у него есть в загашнике идеи, какая помощь требуется, в чем он готов сам помочь? Вытягивать ребят можно рендомом, каждый знает свой номер, заходим на http://www.random.org/ и просим последствия большого взрыва указать на участника. 

Распечатать сложный код на одном листочке A4, разрезать код на части. Завернуть конфетки в полученные бумажки и расскидать по всему периметру. Сразу после доклада сказать ребятам - тут повсюду есть конфетки, обертки их содержат строки кода. Соберите паззл и решите, что код делает. Пусть будет несколько команд и на каждую из них будет свой A4 листик с кодом. Листочки могут быть цветные, чтобы легче было понимать что искать. Попал тебе в руки цвет не твоей команды? Можешь поторговаться. Первый кто, соберет паззл и поймет что делает код - победители.

 Битва титанов. Группа ребят посредством джавы пытается заддосить сервер команды конкурента. Заддосить тут стоит понимать асбтрактно - это может быть игрулька в которой надо генерить флуд и отстреливаться от флуда команды противника. Например пол команды генерит какой-то текстовый контент, а половина отстреливается от такого же контента противников. Отстреливается - значит решает задачу поставленную в этом раунде - например подсчитать количество букв "а" в каждом запросе.  Может быть что-то еще - суть игры в том, чтобы ребята друг друга флудили хитромудрыми запросами пытаясь как можно больше из них оставить без ответа, параллельно с этим стараться чтобы запросы посланные им обрабатывались максимально быстро. Как-то так...

Есть локальный сайт, подготовленный заранее. Взломайте его! Пусть сделают что-то веселенькое с ним :) 

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

WTF? Перед командами показываются куски кода. Они должны отгадать что код делает. Код сложный и запутанный :) 

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

Испорченный телефон. 5 минут тебе рассказывают какую-то тему (например о вреде jUnit), рендомный участник, а ты ему свою тему. Потом ты новую для себя тему рассказываешь кому-то дальше за тех же 5 минут. А он тебе то, что услышал сам. И так далее. После каждый участник выступает со всем, что он запомнил за несколько сеансов передачи перед общей аудиторией.

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

Можно организовать костюмированную вечеринку типа хелоуина, только на тему джава технологий. Например я бы пришел в костюме test first. А кто-то быть может в костюме IoC. 

Имитация собеседований. Разбиваемся на группы по 5 человек. Обсуждаем стратегию. После отдаем своего одного участника на растерзание другим группам. Или сами друг друга ревьюваем по очереди. Надо дудумать.

Можно взять любое тв шоу и сделать то же но на тему технологий Java: Минута славы, Украина имеет талант, Что Где Когда, Брейн Ринг, Утренняя звезда (а чё?)...

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

Найди аналог. Я говорю jUnit - мне отвечают testNj. Дальше кто отгадал - говорит свою шутку, например Jsp а ему JS + Ajax.... Можно решать вполне реальные вопросы. Естественно троллинг приветствуется...

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

Comedy Clab - Самая смешная история - твоя.

WAT? Но на тему технологий Java.... Много всяких ляпов есть у нее...

Конкурс лучшего тролля. Смотрим видяшку. Слушаем троллей :) 

Готовится фейковый доклад, бессмысленный и беспощадный, а потом дается аудитории на расстерзание. Дайте фидбек. Тема пришла из мира математики, в котором очень легко придумать левую теорию, липово доказать ее и сделать нереальные выводы. МОжет что-то такое же можно сделать и в мире джава? 

Пригласить на доклад специалиста с Дотнета. Раздать всем попкорн. Смотреть что будет.

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

Продолжение следует...

воскресенье, 27 октября 2013 г.

Как еще можно развеселить айтишников на тусовке?

Пришло время очередного брейнсторминга на тему "как еще можно развеселить айтишников на конференции, кроме как докладами". Все в том же контексте. Сегодня я нахожусь выше облаков (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

Продолжение как всегда следует...

пятница, 25 октября 2013 г.

Стартапы - другая точка зрения

Хочу поделиться новыми впечатлениями. В среду был на IBM Mentors day. Был не то слово. Пригласили как ментора-технаря. За что большое спасибо. И еще одно Большое Спасибо за то, что показали другой мир - мир стартапов. Тут еще стоит разобраться кто кого в итоге заменторил. По своим заметкам спешу написать этот пост. На память.

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

Очень хорошо, если ты будешь пилить что-то для себя. Пусть это будет твоим хобби - так больше шансов на успех. Но вместе с этим не забываем про другое замечание - стоит решать проблемы людей. "С чем люди сталкиваются каждый день/раз в неделю/раз в месяц?" "Как много людей сталкиваются с этой проблемой?" Миллион заработать можно многими способами: 1000 человек каждый день по 3$ или 10000 человек раз в неделю по 2$ или 100 человек раз в месяц по 800$ или еще как-то. "Выбери модель и думай, какие проблемы ты там можешь решить". Как пример приводился DropBox. Ребята писали для себя...

Говорили и о пассивном доходе. Как один из вариантов - наделать купу простых но полезных тулов и выставить их на продажу, прицепив что-то вроде http://payproglobal.com/. Или какие-то несложные веб приложения, навешав на него рекламу. Где-то тут и было записано замечание "Если за день ничего не запилил - день прошел зря". Можно пойти и путем стартапа, но есть шанс заморочить себе голову большой идеей и сильно утонуть, все усложняя и усложняя решение. И не факт, что инвестор заплатит. Кому-что ближе к телу.

Конечно же можно устроиться на работу на уже готовый продукт или попроситься на проект в аутсорс. Но это практически не рассматривалось ребятами как вариант, потому как в этой компании чувствовалось свободолюбивость и независимость в достижении целей - стартап, фриланс, свое дело - да, "работать на дядю" - нет, спасибо. Были даже замечания типа "испорченные аутсорсом". И в этом что-то есть - что-то для тех, кто лично знает, что надо дать миру и хочет это сделать самостоятельно. Но "работа на дядю" это не плохо - позже соглашались ребята. В работе на компанию есть свои плюшки - тут ты можешь сосредоточиться на решении технических задач в команде толковых ребят - все остальное сделает за тебя компания, тут есть масса возможностей расти по технической ветке. Ну а со стартапом в начале пути будет так, как сказала одна участница "стартапер должен быть всегда голодным". Но в подобных условиях прокачиваются все скилзы, а не только те 5-10% технических, необходимых для написания качественного кода. Каждый сам себе выбирает дорогу - продукт, аутсорс, фриланс, стартап. Везде есть и плюсы и минусы.

Но все же было приятно наблюдать за молодыми ребятами-напарниками с прототипами в руках с огнем в глазах и урчащим желудком. На их визитках часто было написано или CEO или CTO. И тут стоит решить, кто ты, а кто твой напарник. Если любишь кодить - знчит технарь - CTO, если договариваться и продавать - CEO. Только программисты - не катит, потому как код - это всего лишь 5-10% от успеха компании. Команде чисто программистов нужна помощь того, кто будет думать как сделать на этом бизнес.

А еще было одно замечание "в вашей команде слшиком много co-владельцев". Лучше начинать с 2х ребят, а расширяться только, если научились зарабатывать деньги. Часто задавался вопрос "сколько вы уже сейчас кушаете?". Ведь эта сумма расходов на начальном пути должна быть как можно меньше.

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

Спасибо всем хорошим ребятам, кто в этот день делился своими знаниями. IBM Mentors Day удался!

Отдельное спасибо Антону Карпенко (Karpolan) нетворкеру, генератору идей, CTO бизнес инкубатора

вторник, 22 октября 2013 г.

Как мечтать?

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

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


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

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


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


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


Вслед за завтраком каждый отправляется по своим делам. Папа работать. Мама хозяйничать. Дети играть во дворе. Для них я построил домик на дереве.


Обед и мы снова все в сборе. Кто что успел исследовать? Кто что знал нового? Забивая за обе щеки еду - самое время обсудить. И дальше в бой - еще столько предстоит открыть...


День прошел. Солнышко провожаем все вместе. А потом на ужин. Сказки на ночь у костра.


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


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


пятница, 18 октября 2013 г.

Есть проблема - как найти напарника?

Вот эта картинка очень кстати будет сейчас


Много друзей. Очень много контактов на фейсбуке/скайпе и других соцсетях. Очень хорошие и талантливые все ребята. Конечно же все заняты. Конечно же все перегружены информацией - айтишники жеж. И вот у тебя появляется идея - ты ее осторожно вынашиваешь, потом крайне осторожно озвучиваешь вслух в соцсетях. И тут трахбах! Бабах тудух! "Это все уже было" "Зачем изобретать колесо" "Это неудобно" Или более нейтральное "Ну не знаю..." "А ты пробовал заюзать qwe" "А какую проблему ты решаешь?" Омг. Я нахожусь сейчас на этапе, где необходима помощь и поддержка, а не отговоры. Самое лучшее, что может быть - это помощь в виде некоторых рекомендаций что можно было бы улучшить и как, если не услышал идею или попытаться понять идею, увидеть ее такой какой ее вижу я. Но это дано не всем для этого есть лучший друг. Ему спасибо!

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


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


Иногда я хочу быть как тот пес на картинке. Чтобы не видеть ничего, кроме той мечты, к которой меня манит. В это время не хочется никого видеть и ничего слышать, чтобы не дай бог не сбили с пути истинного. По крайней мере, пока не наберешь достаточно кинетической энергии, чтобы услышанное "позвольте возразить!.." меня уже не остановило. Если на начальном пути если есть красивая картинка впереди что манит, стоит сократить внешний шум до 0 и пилить, пока не будешь готов. Готов к чему? Ну во первых стоит обработать большую часть своих же замечаний. А потом приготовиться получать фидбек и конструктивно превратить внешние "нет, это не будет работать" в "список задач, выполнив которые это заработает".


Вот тут то и надо рассказать всем кому только можно о своей идее, и внимательно записывать все, что они говорят как конструктивное, так и неконструктивное. Позже разберемся. Самое страшное, что тут может случиться - это безразличие. Не гнев, не отговорки, чтобы не изобретал колесо, не эйфория от увиденного, а тупо безразличие. И хорошо, если оно связано с тем, что непонятно что ты решаешь и зачем. Тут стоит задуматься - если это не понятно, значит стоит упрощать. Если и после детального объяснения уровень эмоций остался на отметке 0 - значит ты не решаешь проблемы этого человека. Если так со всеми - может ты вообще не решаешь ничьи проблемы. Тогда оставь этот проект для себя, если ты от него получаешь fun (или что-то еще) и не стремись его показывать кому-то. Оставь людей в покое. Просто для себя.


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



Но если проблемы нет, ее можно создать. Все думали что оно "вот так", а теперь оказывается оно совсем иначе! И это даже очень круто, потому как тогда вообще непонятно, что будет и как оно будет. А ты типа в курсе. Как вот было с интернетом или соцсетями. Но могут сжечь. Будь готов. Никто не хочет вот так вот просто выходить из зоны комфорта. Щас.


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


Что еще может помочь? Напарник. Тот, из числа немногих ребят, кто думает так же как и ты, кто понимает проблему, тобой решаемую, тот, кто так же хочет ее решить. Я писал и об этом. Посуди сам. Сколько гениальных идей у тебя возникало и сколько из них ты уже реализовал? Прочитал книгу по  Кийосаки про финансовую независимость, подумал что надо делать то-то и се-то, но прошло 5 лет, а воз и ныне там. Прочитал статью про здоровое питание, отметил в мыслях, что хорошо бы, но лишний вес никуда не делся. Придумал интересную концепцию, нарисовал диаграммку но дальше дело не пошло. Собрал группу, обсудил кой-че и так больше ничего не произошло. И так далее... Продолжать можно бесконечно. Все как-то откладывается на завтра. Может быть. Как-нибудь. А время идет. Вот мне например скоро 30. Недавно, кажется, было только 20. Найти напарника-единомышленника.  Вы инструменты в руках друг друга. Дела сдвинутся с места. И с кем обсудить будет. И кому похвастать. С кем порадовать за успех.


Как его найти? Вот эту проблему я и хотел обнажить. Есть идеи. Но есть и неуверенность. А еще все вокруг отговаривают. Или заняты. Дела (твои, а не компании) стоят на месте. Многое из этого решилось бы, но нет напарника. Мечты не приближаются. Жизнь течет. Мама говорит, что пенсия приходит очень быстро. Там будет ретроспектива. Печалька. Проблема? Если да - идем дальше.

У меня есть большая идея пересажать всех айтишников в пары один относительно другого. Пусть Его Величество Нетворкинг все сделает сам. На каждую идею минимум по паре толковых ребят. И начинать я хочу с себя. Мне нужна тулза, в которой я буду вывешивать свое ближайшее расписание (путь это будет часть моего календарика). Скажем, в субботу с 16:00 по 19:00 я буду изучать новый фреймворк. А в воскресенье с 11:00 по 16:00 я буду пилить новую игрульку для codenjoy - реверси. В понедельник с 7 до 9 я буду (я надеюсь) пилить новую идею с тем, чтобы проверить ее чуть позже на большой аудитории. Я понятия не имею кому это интересно. Но я хотел бы, чтобы мои друзья, а так же друзья их друзей видели, чем я занимаюсь - быть может кто-то из них решает (или уже решил) подобную проблему и захочет присоединиться. И пусть в это время он будет со мной в одной комнате, или в другом городе - мы будем решать одну и ту же проблему.


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


Это тоже проблема (пускай пока только моя), которую я решаю. Провели конференцию java.io2 попробовали несколько новшеств. Уже готовим следюущую серию. И один из будущих форматов который мы попробуем - собрание ребят в определенное время в определенном месте для решения определенной задачи. Задачу пусть каждый сам себе придумает, а потом озвучит. Как показала прошлая java.io2 тем есть предостаточно. Я прийду со своей темой, но зачитав весь список быть может я примкну к кому-то решать его задачу, кто знает? Образуется несколько рабочих групп. Конечно же за 2-3 часа ничего толком не решить, но начало есть. Через два дня очередное собрание - демим результаты. Очень похоже на Хакатон, скорее всего это он и есть. Пусть Хакатонов будет на один больше! И не цель запилить какую-то аппликуху со своей командой, а понетворкать ребят, которые еще не знакомы. Пусть в этом будет отличие. И пусть решат совместно что-нибудь.



Вот это красота! Вот где рождаются идеи.

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

Итак еще раз другими словами. Я хочу иметь тулу, в которой я могу 1) описать вкратце кто такой я, чем увлечен, над чем работаю... 2) описать ближайший свой календарик задач, которые я планирую решить сам, но не хочу делать этого в одиночку 3) дождаться, когда появится заинтересовавшийся напарник (или группа людей) и 4) собраться вместе любым удобным для нас способом. Так же я хочу 5) иметь возможность поучаствовать в решении чьей-то проблемы, при условии, что мне 6) интересен опыт будущего напарника и его mind set. Вот такую тулзу я хочу. И вся трудность в том, что я уже ее пилю... И значит она совсем скоро будет. 

И пусть я буду ее первый пользователь... А там посмотрим. Но точно знаю сейчас одну штуку. Идею эту я таки попробую.

четверг, 17 октября 2013 г.

Чатофорум

Только что меня добавили в группу java экспертов. Скайп группа. Одна из многих, в которых я состою. Надеюсь не такая же как все прошлые - поскольку все скайп группы рано или поздно умирают. Посыл был очень полезный "для обсуждения технических вопросов по жава", "главное чтобы не было кучи одинаковых нубовых вопросов". Звучит заманчиво. Взрослые ребята, быть может не будут флдчить. Кроме того будет модерация. Кроме того можно отключить нотификацию командой скайпа "/alertsoff" Посмотрим.

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

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

Есть ли такие сервисы нынче? 

Тестируем на Groovy: Шаблончик Spring MVC веб приложения (Maven + Jetty) но с тестами на Groovy (WebDriver)

Такой же как и вчера примерчик, только теперь там тесты на груви (скачать исходник).

Немного статей собрал по ходу. Для создания чистого groovy проекта с нуля может помочь статья. Вот тут можно прочитать о том как добавить Groovy maven plugin в pom.xml для компиляции скриптов groovy в своем приложении. Можно качнуть (и распаковать в c:/java рядом с jdk) Groovy SDK, только я не уверен нужна ли она для maven проекта - один раз IDEA меня спросила про него, я и указал место жительства. Вот тут можно найти несколько книг по Groovy. А вот еще много быстрой инфы о Groovy.

Самое печальное, что потребуется сделать - вернуться к старой версии запуска юнит тестов (< 4) и экстендится от GroovyTestCase а так же начинать названия тестовых методов с test.
import groovy.util.GroovyTestCase

class MyTest extends GroovyTestCase {
 
  void testMyTestMethod() {
  }

}
Но это мелочи по сравнению с теми возможностями, какие дает groovy. Вот хорошая вводная статья по возможностям groovy .

Зачем это все?  Вот немного замечаний из прошлого опыта:

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

+ для начала достаточно создать source/test папку groovy, после в нее можно переместить часть классов/тестов переименовав расширение файлов c java на groovy. И продолжить работу. Обычно скомипилированный java код не вызывает ошибок компиляции на groovy.

+ все что можно было делать на java - все библиотеки доступны так же и для groovy.

для любителей дебага - IDEA хорошо справляется и с этой задачей.

+ используя такую архитектурку я укрепляюсь в зании еще одного языка программирования. Это плюс, как ни крути.

- не все рефакторинги доступны. А ты точно всеми-пре-всеми пользовался? Я нет, мне главное самые примитивные (extract method/variable/constant/class, move ..., inline ...) чтобы были.

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

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

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

Простой пример, зачем это. Вот метод на джаве
    public List<Item> getItems() {
        List<String> result = new LinkedList<String>();
        List<WebElement> elements = getFlightElements();
        for (WebElement element : elements) {
            result.add(new Item(element.getText()));
        }
        return result;
    }
А вот тот же метод на groovy
    List<Item> getItems() {
        getFlightElements().collect {
            new Item(it.text)
        }
    }
И это только цветочки...
Дальше возьмемся за Scala - говорят она круче!

среда, 16 октября 2013 г.

Шаблончик Spring MVC приложения с WebDriver в качестве тест фреймворка + Maven + Jetty

Вот недавно кодили с другом на тему ТДД веб приложение и конечно же первым делом, мы на час зависли на самом старте - начинать с нуля веб приложения на Java не так чтобы сложно, но муторно - с другими площадками попроще будет.

Так что предлагаю простой шаблончик Spring MVC приложения с WebDriver в качестве тест фреймворка и Maven в качестве резолвера зависимостей, который ранится на Jetty.


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

Очень рекомендую IDEA - в нее стоит импортировать проект как Maven. запустить все тесты - они должны пройти. После целью jetty:run можно запустить приложение.


Дальше уже сами...

вторник, 8 октября 2013 г.

Уходить ли из компании? А если уходить то как?

Работаю со студентами. У всех первый год реальной коммерческой работы. Проекты не всегда интересные. После полу года появляются мысли "а может в соседней компании жизнь лучше?". Только что состоялся разговор в скайпе на эту тему. По горячим следам решил нафрирайтить пост.  Конечно же с разрешения собеседника. А все сходства с реальными компаниями  и людьми стоит считать совпадением. 

Q: Привет! я сейчас работаю в QWE и есть возможность перейти в ASD... Можешь хоть что-то сказать о ASD, я там не работал, но отзывы не очень

A: Как долго ты работаешь в QWE?

Q: 7 месяцев, не много

A: Почему не остаешься там? скажем еще годиков так на 5?

Q: Проект в плане роста над собой ну совсем никакой. Да и в ASD курсов много, и проект по крайней мере предлагает больше знаний

A: А в саму компанию собираешься еще возвращаться в будущем?

Q: Хм, сложно сказать. не уверен

A: А ты хорошо уходишь из компании?

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

A: Это не очень хорошо. Через несколько лет ты поймешь, что айти на Украине - это небольшая деревня. Если и у ходить то это стоит делать красиво. Но решать тебе.

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

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

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

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

Q: Вообще менеджер с понимаем отнесся

A: Это он тебе дал понять так. Ты уходишь с проекта на котором нет роста, а он остается разгребать этот проект дальше. Он не уходит не потому, что ему не предлагают - о нет! Он остается потому что взял ответственность за это дело. Он решает проблемы. "Говорят что дорога будет для меня закрыта назад" - вот это больше похоже на правду. Если все было бы ок, тебе бы сказали - велкам всегда! А так как проблем и так хватает на проекте, менеджер попросит рекрутинг найти более стабильного (пусть даже менее опытного) специалиста.

Кстати про рекрутинг. Эти ребята знают про айтишников если не все, то очень и очень много. И они тоже меняют компании, но связи с прошлыми компаниями остаются. Пеняй на себя, если после ряда компаний тебя без всяких видимых причин перестанут брать на работу. А пока в новой компании тебя спросят, че так слабенько - полгода-то? И поставят на полях галочку, рисковый парень. Знаешь правило вчерашней погоды? Если вчера был дождь, то вероятнее всего сегодня тоже будет дождь... Вот так и с людьми, как говорил Хаус в сериале - люди не меняются. 

Q: ну в ASD нормально к этому отнеслись, но думаю чем больше в резюме будет таких "пол года", тем хуже)

А: Опять же тебе не все говорят, что думают. Вопрос в лоб - ты думаешь ты отработал те деньги, что получил за пол года? Вот сейчас мой коллега увольняется из компании, в которой проработал 7 лет... Вот он увольняется с почестями. Он был в компании. Он есть компания. А тебя в компании QWE не было. Прости, если жестко, но это так. Решать опять же тебе. Быть может твоя стратегия приведет вскоре к созданию нового гугла или фейсбука (это не сарказм). Я лишь могу тебе показать другую точку зрения, свою и немного тех ребят с которыми общаюсь. Знаешь, как моя подруга называет ребят, которым все хорошо, а потом трах бах и увольняются. Фу, трус. Вот так и называет.

Q: Моя вообще цель не сидеть на месте, но расти над собой. Не делать только рутинную работу.

A: Ты как часто об этом говорил своему менеджеру?

Q: Да говорил, но зашевелился только когда сказал, что ухожу

A: Сейчас есть как минимум два пути - ты воспользуешься этим и посмотришь что еще есть в пока еще твоей компании QWE, или уйдешь и вычеркнешь еще одну компанию из списка будущих своих компаний. Если останешься, опять же есть несколько вариантов - тебе понравится новый проект или тебе не понравится. Если пойдешь в ASD - есть тоже минимум варианта - тебе понравится новый проект либо тебе он не понравится.

Кстати, что учить и в чем расти - это тебе решать. Бери книгу, читай. Пили домашний проект. Ходи на конференции. Общайся с людьми такими, у которых сходные проблемы. Решайте их вместе.

Q: Но ещё и практика нужна, а практике на работе - вообще клас!)

A: Ну ты хочешь учиться на работе, и получать высокую зарплату и чтобы еще мотивацию кто-то держал в своих заботливых менеджерских руках? Мне недавно один студент написал, хочу у вас учиться. Ок, давай... - ответил я... а потом он мне - а вы мне заплатите? чЕ?!!! Заплатим?!!... В какой сфере есть еще такие условия, кроме как в айти? Да заплатим конечно - сейчас тренинги при компаниях поощряются стипендиями. Таково наше IT сейчас. Но блин... Платить за учебу? А потом еще терпеть ляпы на проектах? Cейчас часто так. Разбаловали нас.

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

Q: давай досвидания)

А: Это хорошо, что айтишникам сейчас в попу дуют. Может быть это будет еще очень долго. Но где-то тут идет деградация... Учиться можно вечно - технологии меняются регулярно. Все что ты знал пару лет назад, можно выкинуть смело на помойку - этого больше не будет. Но то, что тебя будут спрашивать через 10 лет опыта в айти - а что вы, батенька, сделали за это время? Не "делали" а "сделали". А "сделать" что-то можно если достаточно долго работаешь на проекте в команде. Если прыгать с проекта на проект (я люблю метафору блох и собак) - можно только увидеть как кто-то что-то делает, конечно же за счет компании и этого человека поучиться, прикрутить 2 скрина к админке и уйти на другой проект. Решать тебе..

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

Лан, загрузил тебя наверное... Много тут буков написал. Хочу это в блог выложить, этот вопрос часто поднимается. Пригодится еще кому-то

Q: Ок, я не против, разве что имена компаний убери. Cпасибо за много буков. Буду решать, буду думать)

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

понедельник, 7 октября 2013 г.

Как я собираю кубик Рубика

Когда-то давно я ходил с кубиком Рубика везде. За пару месяцев отточил мастерство сборки до рекордного 1 минута 20 секунд.

Не так давно я заказал себе кубик для спидкубинга DaYan5 и снова стал его курить (в перерывах между работой,  по дороге из точки А в точку Б). Для начала потребовалось вспомнить все те алгоритмы, что я когда-то выбирал на просторах сети и сам придумывал.

Воспроизведение заняло некоторое время, а  потому я запишу алгоритмы тут, на будущее... Этими алгоритмами я вчера собирал в среднем за 2 минуты (руки уже не те).

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

Кстати, если интересно вот как быстро это происходит на соревнованиях


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

Решил поискать в сети, что коллеги-программисты уже реализовали на javascript. И нашел вот эту работу. Спасибо Автору. Именно ее я и взял за основу.

И вот что получилось