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


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

четверг, 30 января 2014 г.

Кто не знает Вику, Вику знают все!

Вика. Человек - путешествие. Человек - клей для людей. Дружит Людей между собой. Во всевозможных контекстах и комбинациях. Делает мир лучше. Каждый день. Прикрывается рекрутинг☺м Очень успешно! С размахом и на всю Украину. Сильно любит свою работу.
Кто еще не знаком - все бросай и бегом знакомиться. Нет повода? "Привет я Qwe занимаюсь Asd" - этого достаточно! А видео пусть тут полежит - потом посмотришь...


Хотелось выпендрится

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

Пишу на ночь глядя эмулятор КР580ВМ80 - ну такое, just for fun. Конечно же по ТДД. Тесты рефакторю, как положено. И вот я в тесте пишу как-то так ассерт
    assertEquals("DEh", registry.m().toString());
При том, что
public class ProcessorTest {

    private Memory memory;
    private Processor processor;
    private Registry registry;

    @Before
    public void setup() {
        memory = mock(Memory.class);
        processor = new Processor(memory);
        registry = processor.registry();
    }
а интерфейс
public interface Registry {
    AByte b();
    AByte c();
    AByte d();
    AByte e();
    AByte h();
    AByte l();
    AByte m();
    AByte a();
}
а AByte содержит че-то умное и toString. Но мне хотелось выпендрится и сделать вот так в тесте, чтобы на at(). вываливались аутокомплитером IDE методы интерфейса Registry


Проверил, может ли такое Mockito. Оказалось может!
    private RegistryAssert assertValue(String data) {
        return new RegistryAssert(data);
    }
    
    class RegistryAssert {

        private String data;

        public RegistryAssert(String data) {
            this.data = data;
        }

        public Registry at() {
            // создаем шпиона для registry
            Registry spy = spy(registry); 
            // и следим за каждым его чихом
            setup(spy).b(); 
            setup(spy).c();
            setup(spy).d();
            setup(spy).e();
            setup(spy).h();
            setup(spy).l();
            setup(spy).m();
            setup(spy).a();
            return spy;
        }

        private Registry setup(Registry spy) {
            return doAnswer(new Answer<Object>() {
                @Override
                public Object answer(InvocationOnMock invocation) throws Throwable {
                    Object actual = invocation.callRealMethod();
                    assertEquals(data, actual.toString());
                    return actual;
                }
            }).when(spy);
        }
    }
Не делайте так ☺

среда, 29 января 2014 г.

Байтбит на java

Друг сегодня скинул видяшку.

Вот и продолжение
Не удержался, нашел способ услышать это на java.
import sun.audio.AudioData;
import sun.audio.AudioPlayer;
import sun.audio.ContinuousAudioDataStream;

public class Main {

    public static void main(String[] args) {
        byte[] byteArray = new byte[10000000];

        for (int t=0; t < byteArray.length; t++) {
            byteArray[t] = (byte)( (t>>13|t%24)&(t>>7|t%19));
        }

        AudioData audioData = new AudioData(byteArray);
        ContinuousAudioDataStream continuousStream = new ContinuousAudioDataStream(audioData);
        AudioPlayer.player.start(continuousStream);
    }
}
Для работы sun.audio.* надо jdk7.

А вот для разгона подборка семплов на С++ (почти как java).

А вот еще синтезатор-визуализатор с множеством семплов. 

Enjoy!

четверг, 23 января 2014 г.

К чему приводят ожидания

Сегодня утром встречались с Другом в одной из кафешек Киева, поайтишничать. Говорили о многом, и одна из тем, которой я хотел бы поделиться - ожидания. Что такое (по моему) ожидания и почему/как они портят отношения между людьми. Выделю два типа ожидания.

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

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

Если я прошу (а не требую), значит я допускаю, что есть отличная от нуля вероятность ему мне помочь и (по моему) очень близка к 1. Близко к 1 не значит 1, а потому допущение подразумевает ответ "нет". "Нет", даже без объяснения почему Друг не может (не хочет, не будет и т.д.) этого сейчас делать. И если это была просьба основанная на допущении, значит ответ "нет" будет воспринят мной нормально, без всяких последствий для отношений. Но если это было ожидание (почти требование), то оно может повлечь за собой обидку в виде "ну понятно, потом сочтемся". Причем обидка эта может отложиться без озвучивания Другу вслух ни во время формулировки просьбы ни после получения от него "нет".

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

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

Ожидая, можно поймать потенциальный loose-loose - в отношениях я могу занять роль обиженного, а Другу может быть неудобно от осознания этого. Допускать и быть готовым к отказу - win-win в плане отношений, потому как никто не чувствует себя обиженным/виноватым, а так же win-win в плане решения задачи - я что-то новое узнал об окружающем мире, а друг знает, что я этот вопрос сейчас решаю и ко мне можно будет вскоре обратиться за помощью, если (когда) я ее решу. Да да, вот так - он не сделал того чего мне хотелось, а я ему потом помогу с подобным вопросом, или не помогу - ведь у нас говорить друг другу "нет" - обычно и нормально. 

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

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

На примере времени. Договорились встретится в 12:00. Друг опаздывает. Или еще круче - вообще продинамил меня. Но обещал жеж! Мне есть повод обидеться, решив, что он необязательный и больше (после серии таких опозданий) не иметь с ним дела. Ну и кто после такого решения выиграл? loose-loose - я теперь ему уделяю меньше своего внимания - ему loose, но и сам потенциально потерял возможность в будущем когда-нибудь принять решение от него - мне loose.

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

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

Феном сушить носки можно, и может показаться, что он для этого и придуман, так же как и колоть орехи микроскопом. Но это не всегда так. Человек уникальное по своей натуре устройство (извини, продолжаю метафору с феном) и научиться им пользоваться так чтобы и ему было хорошо/полезно и тебе тоже (win-win) без руководства по эксплуатации - это надо хорошо поэкспериментировать и быть готовым к тому, что первых 10-100-1000 раз не получится. А хочется сразу и с 1 раза (потому что я такой-сякой, спешу-бежу, мне надо! Ну и чьи это проблемы? Хочешь, ищи).

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

Слушать. Слушать и наблюдать за тем, что уже делает человек. Может он осознает это и гордится своими достижениями, а может даже и не осознает того, в чем талантлив. Наблюдать за людьми с которыми он взаимодействует и услышать их. За что они его ценят? Это может быть совсем не то, чем он сейчас занимается (пытается это делать или чем зарабатывает на жизнь), это может быть совсем не то, что указано в его позиции/статусе, это скорее всего не то, что он сам про себя говорит. Но это где-то там, что уже сделано им. Спросить о его хобби. Спросить его о том, что драйвит по жизни (дрйвило вчера, на прошлой неделе, за прошлый год). Спросить его о том, чем он гордится, о чем мечтает. Потом слушать (долго причем). Потом подумать, как ему помочь (да да, не решать свои авралы, а помочь ему чем можешь). Согласился посотрудничать? Посмотреть, как он это делает - не получается у него. Мы снова ошиблись в своих предположениях - уточняем. Получилось? Супер! Продолжаем в том же духе.

И да, очень необязательно, когда мы найдем такое совместное дело считать, что увеличив занятие им с 2 часов в неделю до 40 часов в неделю оно останется таким же результативным. Не все масштабируемо (даже если очень-очень хочется и надо). Вот сколько проработает фен, если им прогревать комнату 8 часов в сутки? Не пробовал? А я пробовал - 1,5 часа. Потом он вероятнее всего сгорит (а может и нет). Так и с людьми - с ролью можно определиться, но остается еще много неизвестных, одна из которых - как часто/сколько времени заниматься этим так, чтобы оно было все еще продуктивно.

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

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

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

вторник, 21 января 2014 г.

Играем на фортепиано на Java: Шаг 4 - Арпеджиатор

Не перестаю получать кайф от программирования midi синтезатора на своем компьюетере c с помощью java midi api. В прошлых постах раз я писал о том, что учу сольфеджио путем кодирования новых знаний в коде (тынц, пумц, бамц). А недавно я попал на видео 4 chords и решил закодить их. Родился новый класс, который я назвал Арпеджиатор. Сейчас там два паттерна по проще и один - как компиляция двух предыдущих.

public class FourChords {
    public static void main(String[] args) {
        Синтезатор синтезатор = new Синтезатор(new RealMidiChannelFactory());

        Шаблон r = Арпеджиатор.get3(E5, H4, Cis5, A4);
//        Шаблон r = Арпеджиатор.get3(G5, D5, E5, C5);

        синтезатор.звучать(r.повтор(10));
    }
}
Прикольно, что не все комбинации аккордов звучат (большинство режет слух). А вот описание шаблонов
public class Арпеджиатор {       
    public static Шаблон get(List<Нота> ноты) {
        Нота n1 = ноты.get(0);
        Нота n2 = ноты.get(1);
        Нота n3 = ноты.get(2);

        Звук звук1 = Доля.четверть(n2, n3);
        Шаблон l1 = Шаблон.подряд(звук1, звук1, звук1, звук1);

        Звук звук2 = Доля.четверть(n1);
        Шаблон l2 = Шаблон.подряд(Пауза.восьмая(), звук2, звук2, звук2, звук2);

        Шаблон l3 = l1.вместе(l2);
        return l3.частьДо(1/l3.длинна());
    }

    public static Шаблон get2(Нота нота) {
        Нота нота2 = нота.ниже(Интервал.ЧистаяОктава);

        Звук звук1 = Доля.половина(нота, нота2);

        return Шаблон.подряд(звук1, Пауза.четверть(), звук1.увеличить(0.5));
    }

    public static Шаблон get2_2(Нота нота) {
        Нота нота2 = нота.ниже(Интервал.ЧистаяОктава);

        Звук звук1 = Доля.восьмая(нота);
        Шаблон s1 = Шаблон.подряд(звук1, звук1, Пауза.восьмая(), звук1, звук1, звук1);

        Звук звук2 = Доля.восьмая(нота2).увеличить(3);
        Звук звук3 = Доля.восьмая(нота2).увеличить(5);
        Шаблон s2 = Шаблон.подряд(звук2, звук3);

        return s1.вместе(s2);
    }

    public static Шаблон get3(Нота n1, Нота n2, Нота n3, Нота n4) {
        Шаблон l1 = Арпеджиатор.get(Трезвучие.Мажорное.get(n1));
        Шаблон l2 = Арпеджиатор.get(Трезвучие.Мажорное.get(n2));
        Шаблон l3 = Арпеджиатор.get(Трезвучие.Минорное.get(n3));
        Шаблон l4 = Арпеджиатор.get(Трезвучие.Мажорное.get(n4));

        Шаблон s1 = l1.потом(l2, l3, l4);

        Шаблон r1 = Арпеджиатор.get2(n1.ниже(Интервал.ЧистаяОктава));
        Шаблон r2 = Арпеджиатор.get2(n2.ниже(Интервал.ЧистаяОктава));
        Шаблон r3 = Арпеджиатор.get2(n3.ниже(Интервал.ЧистаяОктава));
        Шаблон r4 = Арпеджиатор.get2(n4.ниже(Интервал.ЧистаяОктава));

        Шаблон s2 = r1.потом(r2, r3, r4);

        return s1.вместе(s2);
    }
}
Как-то так. Вот исходники. Проект Maven.

Есть Хакер, а есть Конструктор. Кто ты? (часть 2)

Итак продолжение. В прошлом посту я нафигачил много буков, сделал это по нескольким причинам. Я хотел:
- простимулировать себя, ведь я писал не просто бла-бла, а переживал в процессе, до мурашек в теле. Да я хочу быть Хакером! Хочу удивлять! А там, где я Конструктор я хочу отработать то, что в меня вложил Заказчик и делать это лучше всех.

- спровоцировать читателя, ведь Гнев это хорошая штука - это сигнал готовности что-то менять в своей жизни. Зацепил пост, разозлил? Значит есть зацепка - подумай над ней.  

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

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

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

Эта часть будет немного более конструктивной, в смысле че мне делать дальше.

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

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

- буду накапливать экспертизу по тому, чем занимаюсь - программированию, так чтобы делать свою работу быстрее, потом еще быстрее, потом еще быстрее. Я как Конструктор должен мочь конкурировать не на Украинском рынке, а везде.

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

Да будет так!

Утром случается магия

Где в киеве можно поайтишничать в 6 утра? Если сутра сделал что-то вдохновляющее, целый день потом заряжен драйвом. Ну у меня так, по крайней мере.

Ресторанчик 27/7. Под утром там вряд ли кто-то будет кроме. Можно каждый раз в новом месте митится. Примеры тут.

Можно встретить рассвет, если ты на машине, на берегу какого-то водоема с красивым видом. Рассвет жеж как раз утром! Я в этом году еще не встречал. С другом мы так делали, он заезжал на машине, мы ехали по городу, находилось какое-то место с красивым видом, и там останаваливались. Общались в машине. Так необычно... Чем не коворкинг? 

А вообще сколько чудных мест есть в Киеве, только не все работают так рано.

Какие еще идеи появляются?

понедельник, 20 января 2014 г.

Самопознайка

Только что в чате общался с другом. Он задал вопрос и я ответил, первое предложение, Enter, второе, третье, Enter... Так не заметил, как провалился в легкий транс, строчил быстрее и быстрее, сознание же с удивлением наблюдало мультик в голове и оборачивала его в буквы, слова. Сознание просто наблюдало - для него комбинация этих образов это что-то новое. А образы появлялись ХЗ откуда. 

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

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

И этот пост так же был написан за 1 проход, во втором я исправил всего 5 очепяток и 3 запятые.

воскресенье, 19 января 2014 г.

Дурачьтесь

Серьезные вещи можно делать с лицом по проще....

На разгрузку...



И еще купа видяшек тут

Есть Хакер, а есть Конструктор. Кто ты?

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

Аутсорсинг (outer-source-using) - некогда маленькие, сейчас это большие заводы работающие по такой схеме. И чем больше они становятся, чем больше людей вовлечены в производство - тем больше разнообразных ярлыков можно навешать. Я хочу это сделать сейчас.

Какие ярлыки существуют сейчас? Trainee, Junior, Middle, Senior, TechLead, Architect. Есть еще ветка менеджмента, но не о ней сейчас. Сейчас о технической ветке. Похали - trainee - тот кто учится и еще не имеет комерческого опыта. Тут все просто. Junior - тот кто, только-только стал решать комерческие задачи, но еще больше проблем порождает (пока). Middle - на него можно положиться, он рабочая лошадка. Senior - наиболее опытный решатель вопросов в команде. TechLead - лидер команды, обычно Senior+. Architect - думает об архитектуре, такой себе метроном команды, вероятно даже занимается несколькими командами - видит все с высока. 

Все вроде как хорошо, но есть но. Феномен, который называется "Сеньйор в 23". Вместе с тем я знаю Junior разработчика, который из за скромности своей не сильно пинает менеджера о своем повышении, а просто красиво делает свою работу. И он при том, что по ощущению Middle+, по тайтлу пока еще Junior. Потому я больше не верю в метрику Ju-Mi-Se потому как она показывает больше качества меня как продажника, чем меня как технря. Такие реалии. 

(ничего против С/С++ не имею, в java все гораздо хуже) 
 
Винят в этом те же компании, которые пылесосят сотрудников друг у друга за +500$. Но стоп! Эти же компании нам дали возможность развиваться. Потому я пост начал с благодарности им за эту возможность. Тот % ребят, который хотел развития - он его продолжает и будет продолжать при любых условиях, даже если вдруг Айти рухнет. Есть настоящие Senior в наших рядах. Но большая компания хочет стать еще большей, а Senior в достаточном количестве нет - отбирают тех, что остались, снижая порог вхождения. 

Введу новый ярлык. Хакер - тот человек, у которого программирование - это хобби. Он будет этим заниматься, даже если прийдется днем разгружать кирпичи, чтобы оплатить инет и купить булку хлеба. Но вечером он будет делать свое хобби! Каждый день. Это Хакер. Хакер может быть начинающий, а может и опытный. Часто слышу, говорят рекрутерам заказы "хочу, чтобы глаза горели", "чтоб проект домашний был". Хакера хотят. Молодого. Почему? А потому что у него рост стремительный. В то время, как Сеньор-в-23 наберет опыта и так и останется на своем плато. 

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

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

Где тут мотивация?  Притяну сюда пирамидку Маслоу, и пусть не серчает на меня.  Он говорит о том, что без закрытия нижних уровней потребностей сознание человека не будет меняться в сторону более высоких. Просто если ты хочешь кушать и не делал это уже пару дней, то о катании на санях с горки и речи быть не может. Убирать снег, да! Что угодно - лишь бы покормили. Когда сыт - хочется чтобы тебе ничего не угрожало. Если вокруг бьют/стреляют - следующая мысль, как бы укрыться от всего этого. Тут на санях не покатаешься в свое удовольствие - ну не до этого просто сейчас. И вот только, если ты сыт, а тело в безопасности хочется следующего уровня - быть принятым в комьюнити. Тупо хочется чтобы тебя взяли и сказали (в переносном смысле), что любят тебя, что теперь ты не сам, а есть МЫ. И так далее, по пирамидке вверх. Представь, что это сосуд, который по капле наполняется - мне так легче понять модель.  

Что айти компании сделали хорошо для небольшой части Украинцев? Они быстро закрыли вопросы по нижним двум уровням. И вот теперь специалист стал работать на более высоких уровнях. У него есть Компания - потребность в принадлежности и любви так же быстро (за пол года у новичка) решается. Идем дальше. Вкалываешь, накопил опыт - вскоре тебя будут уважать или как минимум (джуники) будут прислушиваться. И где-то тут начинается то, что заставляет Хакера уйти из компании, а Сеньйора-в-23 просто остановиться в развитии. Дело в том, что Хакеру дальше надо узнавать новое в своем хобби, делать это красиво, как художник - а на проекте часто требования другие, приземленные. А чтоСеньйор-в-23? У него хобби лежит в другой области, не в айти. Он в айти закрыл первые несколько уровней, а в 18:00 идет домой, ведь там ждет его его хобби. И имеет полное право! Он не плохой человек, он хороший, у него свои идеи, свои мысли, свое мировозрение, но лежат они где-то там, не в айти...

Я вот недавно был дома, в Черновцах. Гостил у Мамы. Недели две. Забилась канализация, я решил ее почистить. Будь я 20 лет назад, я бы фиг сделал это так просто как сейчас. В то время (~1990) сантехника была произведением искусства - каждая гаечка уникальная, все резьбы разные, все трубы чугунные, а стыки замазывались цементом. Сейчас у меня на демонтаж канализационнной трубы, чистку и монтаж обратно ушло 2 часа с уборкой места после работы. Дело в том, что все трубы стандартные, пластиковые - с ними легко управляться. Пока этим занимался я думал об айти. И вот какие аналогии родились. Сейчас, не надо быть опытным сантехником, чтобы сделать эту работу. Сантехники-Хакеры, придумали фреймворки для простой работы с трубами (для себя же придумали). И я простой юзер (достаточно, чтобы с руками не из попы) могу за пару часов сам управиться. А Сантехник-Хакер освободился для решения более сложных и комплексных задач. Порог вхождения уменьшился и теперь делать работу на дому могут простые-Сантехники-за-2-часа, которые быстро научатся этому и будут just do it свою работу, чтобы заработать для семьи. И не всегда их работа будет качественной, потому что дверь открылась самоучкам. Хочешь качества - плати больше и ищи сверх-занятого-Сантехника-Хакера.   

Короче в айти та же фигня сейчас. Просто есть хорошие ребята со способностью делать эту работу. И я бы не сказал, что очень сложную работу - вокруг все эти IDE, тулы, виртуальные машины, фреймворки, google, stack overflow, да и в придачу один-два Хакера на проекте - решение найти не сложно. Ну не сложно, признайся в этом. Можно просто пилить, ничем особо не выделяться, получать свои денюжки и тратить их на свое хобби. Но давай называть вещи своими именами. Ты не Хакер, ты Конструктор. Хакеры пишут свои фреймворки, а ты их используешь. Хакеры пишут ответы на stack overflow, а ты их гуглишь. Хакеры пишут книги, ты их читаешь. Хакеры создают Андроид, а ты пишешь на нем свою аппку, чтобы выложить на стор и заработать лайков. Хакеры постят в блог/хабру/доу, а ты пишешь там комменты или вообще просто читаешь. У Хакера дома книжная полка из айтишных книг, а у тебя ее нет даже на работе. Хакеры работают на выходных над своими проектами, а ты отдыхаешь (или делаешь что-то полезное но в другом домене, не в айти). Ты Конструктор.

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

Вопрос в лоб, сколько бы ты времени уделял тем задачам, которые решаешь сейчас, если бы тебе пришлось за это платить денег? Членский взнос, за пребывание в офисе. И тебе тут никто не заплатит! Прийдется где-то работать, а потом приходить в офис, отдавать деньги за то, чтобы еще немного поработать с командой над проблемами заказчика/домена. Если хоть пару часов в неделю ты бы этим занимался - поздравляю, это твое, ты - Хакер. 

Хакерспейс! Вот же оно! Ребята собрались и сами за свои деньги организовали место в котором можно делать любимое дело. Это не бесплатно, ежемесячный членский взнос тебе придется отдать из своих кровно заработанных денег. Но открываются новые возможности, новые контакты, новые знания, новые прорывы. "аааа, хачуу" - вот что ответил Друг, когда я ему рассказал о такой возможности. Вот он Хакер в этом. Его прет робототехника. А в чем Хакер ты? 

К чему же я это все растормошил? А дело в том, что моя мама может фиксить xml (тут и везде под "фиксингом xml" я понимаю работу, которая не требует выдающихся аналитических способностей и многолетнего опыта в домене). Еще 30% Украинцев может фиксить xml. Если им рассказать, как это сделать правильно. Моя Мама будет рада получить за это 200$ в месяц. Тот Бизнесмен, который недавно вмешался в наш разговор с другом и попросил ему помочь создать сайт смог бы это сам сделать, или попросить мою Сестру это сделать (если сам занят), а она получила бы своих 100$. Мой другой Друг освободился бы от "фиксинга xml" на проекте и написал бы свой язык программирования (он фанат этого), а третий Друг написал бы свой ИИ играющий в карты, а не верстал бы дизайн для очередного инет-магазина, просто потому что он может и к нему обращаются, а больше никто рядом не может. Хакеры должны заниматься задачами на передовой айти. Конструкторы пусть используют готовое решение Хакеров чтобы сделать полезные дела. А все остальные пусть просто умеют включать компьютер и гуглить решение повседневных проблем, разработанные Конструкторами. 


Среда, в которой айтишником стать будет проще имеет ряд особенностей. Сеньорам-в-23 будет все сложнее удержаться на своих позициях ничего не делая. Прийдется делать! Небольшой спуск по пирамидке Маслоу вниз не помешает, встряхнет это болотце. На Украине столько голодных потенциальных-айтишников-Конструкторов, жажущих делать пользу и заработать себе на нормальную жизнь. Те, кто сейчас расслаблены вскоре напрягутся. А Хакеры, освободившись от "фиксинга xml" бдут заняты все более высокотехнологично-важными-имзеняющими-будущее-делами. Эх!! Нравится мне время, в которое мы живем!

Напоследок несколько неприятных вопросов.

Менеджер, 
- зачем искать себе на проект Хакера, которому будет скучно там? 
- зачем Конструктору знать так много всякого, чтобы выполнять простой "фиксинг xml"? 

Первым ты перекрываешь кислород, подсаживая Хакера на зарплатную иглу и не давая возможности ни уйти с проекта ни развиваться дальше оставаясь на нем. Вторым ты так же не даешь возможности развиваться. Но но но! Перестань!

Хакер, 
- какого фига ты еще ждешь? Вокруг столько всякого рождается, а ты "фиксишь xml". Начни уже кодить свои идеи. В свободное время. Автоматизируй наконец этот "фиксинг xml". Найди в компании проект, usergroup или просто одиноких единомышленников - делайте это в паре, втроем, группами, в или за пределами компании. Но делайте! 

Интересуешься языками - напиши свой. Интересуешься роботами - иди и делай их. Все ждут твоего решения. У тебя столько гениальных идей. Будешь ждать - их кто-то реализует. Ведь идея не приходит в голову одному, она как дождь - падает сразу на всех, кто попал под дождь. Сделай что-то уже сегодня! Удивляй!  

Тренер, 
- зачем ты учишь тех, у кого и так все будет ок, с тобой или без тебя? Они уже одной ногой в айти. Студенты, эти все, профильных вузов - ты им уже не нужен. Ты нужен другим, Сестре моей, Маме, тому Бизнесмену, что в 2014 году не умеет себе блог завести на гугле. 

- зачем ты расходуешь свой уникальный талант (сочетание софт и хард скилзов, делающих из тебя айти тренера) на то, чтобы научить еще 20 человек в месяц? Как же все Украинцы, их 40 000 000. А вас, тренеров, в айти всего, ну пусть 1000. Как тебе научить 40 000 человек? Как тебе такой челлендж? Вот где магия.

Рекрутер, 
- зачем тебе спамить Хакера вакансиями, которые интересны только твоему заказчику? Хакер все равно в 99,9% случаев откажет тебе. Не так ли? Лучше, вместо того чтобы искать возможности увеличить поток спама в 2 раза, помоги Хакеру сделать то, что он надумал - найди заказчика, который поддержит его финансово и даст ему проект-возможность. Будь Продюсером Хакера. Помогай людям, а не закрывай вакансии. 

- за атришен с кого спросят? Убеди своего Заказчика, что ему не нужен Хакер на проекте, а достаточно Конструктора. Все хотят себе Хакеров на проекте. Чтобы глаза горели и все такое... Ну наймете вы его, пройдет месяц - он уволится. И в чем профит? Работай с Заказчиком, а не просто озвучивай его волю рынке as is.

- учись! Попробуй не только гуглить на википедии описания, но и ковырять технологии, ходить на тусовки. Чтобы с тобой интересно было общаться Хакеру, чтобы Конструктор к тебе прислушивался, а Заказчику ты мог дать совет и задать дельные вопросы. Пусть ты будешь Продюсером для 100 специалистов в какой-то узкой области, в которой сам что-то можешь сделать. Магия случится, поверь!   

Конструктор,
- думаешь, получать 3000$ это автоматически значит, что ты крутой разработчик? Просто сейчас так платят. Просто нехватка кадров. Там, за границей тебе мало что светит, если каждый день ты не развиваешься. Не веришь? Едь попробуй. Ну или поучаствуй на международных олимпиадах/соревнованиях. Какое место занял? То-то же. А Сертификат получить слабо? Почувствуй, как напрягутся все твои сфинктеры во время подготовки к сдаче какого-то международного сертификата. Вот как надо отрабатывать свои зарплаты. 
 
- зачем отрабатывать те деньги, которые ты зарабатываешь - спрашиваешь? Чтобы заработать еще больше. Смотри, как это делает Хакер. Он не из за денег старается. Хоть иногда и по-чуть-чуть подглядывай за ним. И выучи ты наконец эти шаблоны проектирования, коль уж кодить взялся. Кроме них есть еще 100500 других инструментов, которые ты до сих пор не использовал и никогда не узнаешь про них, пока не начнешь задавать себе вопрос "а как мне сделать мою работу в 2 раза быстрее". Задавай этот вопрос чтобы делать больше пользы - деньги не линейно, но все же зависят от твоего вклада. Менеджер увидит это, оценит. Учись! Будь экспертом в своем деле. Покажи пример. 
   
- думаешь, как сегодня будет всегда? Твоя работа сейчас возможна только потому, что ты делаешь ее с каким-то допустимым для Заказчика уровнем качества, но главное дешевле, чем это делают у него в стране. Постоянно повышая себе ЗП и понижая (не повышая его каждый день) качество своей работы, ты помогаешь заказчику осознать, что ему делать в нашей стране нечего. А ведь ты хочешь чтобы так как сейчас было еще лет 30? Я хочу! Давай постараемся вместе.   

Заказчик на Украине, 
- думаешь твои айтишники не уйдут? Рядом есть большая аутсорсинговая компания и много западных продуктовых - с ними тягаться сложно, но все же подглядывай, как это делают они. И да, отправляй своих ребят повышать квалификацию. Ты делаешь нереальное - делаешь бизнес в нашей стране. Спасибо за это! Но цени своих Айтишников. Это твой капитал, твоя инвестиция в завтра - завтра все будет в сети. Вот увидишь!

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

Фух! Выговорился. А теперь за работу!
Чтобы продолжение как всегда следовало...

Заметочки на сегодня

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

Мужик хорошую статью написал, как перебрался в деревню, провел туда нормальный интернет, коммуникации. Реально есть какая-то магия в отдалении от центра суеты. 10 км от центра и все, тишина, спокойствие и продуктивность. Пока это делают единицы, дальше - больше. И вообще пусть офисы будущего должны быть не в центрах города. Айишные городки на 2-5k человек, в 20-50 км от центра города. Со своей инфраструктурой. Чтобы там могли жить семьи разработчиков, детсады, поликлиники. 

Что хочешь получить вначале отдай.  Какое глубокое словосочетание...

Магия начинается, когда начинаешь применять знания. Знать != делать. 

А еще говорили о детях. Еще раз перечитал заметки Ошо. Тунц, пынц. Насколько необычный человек этот старикашка. Недавно нашел описание критериев зрелой личности по Маслоу. Match! 

Проект для Хакерспейса. Дивайс, который бьет меня током, если слышит негатив из моих уст.
"у меня не получится"
хдыщь!
"понял, получится!!"
...
"нет на это денег"
хдыщь! 
"ок, поищем..."
Можно ли научить его слушать только мой голос и распознавать слова? Последнее уже реализовано в смартфонах, точно. А первое - можно проигнорить. Пусть распознает голос всех собеседников. Зато у меня будет причина, по которой я хочу остановить общение с собеседником - "слушай, ты тут ноешь, а меня током бьет, давай не будешь это делать, а?"

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



суббота, 18 января 2014 г.

На равных: рекрутеры и дивелоперы. Встреча в Хакерспейсе

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

Разместились в комнате, заказали пиццу. Ваня с удовольствием взял на себя все орг.вопросы по ее материализации на нашем столе. А пока пицца ехала мы начали. Флипчарт, маркера и вопросы. Не важно в какого вопроса начинать - одно тянет другое, потом третьее. В нынешнем собрании, где на 5 девчонок-рекрутёнок было три java-хлопчака-дивелоперка было легче отвечать на вопросы без лагов. Пока кто-то один гуглил ответ на вопрос, что это за такой хитрый фреймворк QWE, другие ребята отвечали на те вопросы, которые знали наверняка, потом роли переключались - кто-то отвечал, а кто-то другой гуглил. Было продуктивненько.

Спросил фидбек у девчонок - была ли полезна прошлая встреча? Девчонки в один голос ответили - да! Было даже такое, что "в умный дивелоперский разговор на работе встряла, так ребята на работе оценили". Ну и замечательно! Ребятам-дивелоперам так же было интересно, поскольку видно было, что у них тоже была масса самых разнообразных вопросов. Я же, как всегда ушел довольный от того, что еще 10 новых связей образовалось, а так же в моем ТУДУ листе родилось 10 интересных тасков. Это стоит выходного дня! Кстати, хочу поздравить нашего коллегу - ему сегодня исполнилось 25 лет и он вместо того, чтобы делать обычные день-рожденьные дела все же пришел на встречу! Это, по-моему сигнализирует о том, что собрались хакеры.

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

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


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

Задача есть! Саша сказал, что нужны умелые руки в выполнении одной рутинной, но вместе с тем ценной задачи для Хакерспейса. Напаять из купы микросхем платы-контроллеры-типа-ардуино. В чем профит? Чипы есть в изобилии, схема есть рабочая, научиться кодить под контроллер не сложно, а главное цена получается намного дешевле заказа готовой ардуинки из сети.

Глянув на платку размером 3*3*1 см я понял, что такую штуку никогда не паял в прошлом. Под микроскопом - говорит Саша - научу, не сложно! И тут же принялся вдохновленно рассказывать о своей новой разработке...

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

Расценки наклеены на дверях. 30 грн в день, 500 в месяц. Скидки за первый-пробный месяц. Скидки для студентов. Эти деньги всецело уходят на аренду. А все, что есть в лаборатории либо смастерили, либо купили участники за свои деньги. Если оно доросло усилиями ребят до такого уровня, можно только представить что будет в этом коворкинге через год, когда желающих там поваять что-то свое возрастет в 10/100 раз. Я сам лично уже знаю троих ребят, с которыми мы договорились вот о чем - кому первому представиться возможность быть Хакерспейсе - договорится за всех остальных. Спрос есть! Будущее за робототехникой. Ближайшие лет 10 случится то, что случилось в свое время с миром программирования - кодить устройства будет престижно и высокооплачиваемо, весело и популярно. Не даром гугл сейчас скупает все разработки в этом направлении. Знает, редиска!

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

Алкоголь forbidden, и правильно! Алкоголь убивает креатив.

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

Уверен в будущем будет больше таких тематических коворкингов, в дополнения к обычным офисам. Представим будущее. Работаю в команде и получил на недельку задание по SQL-какой-то-там-оптимизации. Конечно же могу сделать это в офисе, с командой, среди которой нет ни единого эксперта в этом - и это займет у меня неделю. Но я могу так же отправиться в какой-то-SQL-коворкинг и сделать ту же задачу (с учетом NDA, конечно), но в среде, где эта задача решится за два дня, просто потому что тут аура другая. Тут экспертов больше. А еще через неделю попаду в коворкинг по Andriod просто потому, что выберу другую таску на пленинге. 


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

Я уже поспал по своей схеме после ивента и до 4х ночи точно буду бодрствовать. Вот с удовольствем бы провел это время в хакерспейсе. Интересно, он работает в ночное время суток? Спрос порождает предложение! Думаю такая возможность появится...

Готовимся к тренингу по ТДД

Почти все подготовительные моменты завершены. На следующей неделе стартует тренинг в одной уютной айтишной компании. Тренинг по Test Driven Development для специалистов С++. Это уже третий тренинг, который мы проводим с Сергеем не для java ребят (java - наш можно сказать привычный язык).

Что сделано?
  • Проведена встреча-знакомство с участниками тренинга (cпасибо SCRUMGuides, без Вас, ребята, мы бы не узнали друг про друга). 
  • Проведено портирование кода заданий, настройка фреймворков под С++ реалии (спасибо Виктор, без тебя никак!)
Что осталось?
  • Генеральная репитиция в следующую среду
  • Тренинг в конце недели
  • Коучинг на проекте через неделю после тренинга (с периодичностью, как решим)
  • Игра codenjoy немного спустя так, для fun
Для всех желающих познать TDD пару рекомендаций
Вообще магии быстро не случится. Ломать привычки все-равно прийдется. будет больно и неприятно. Будет очень много поводов спрыгнуть. Но если не сдаться, то вначале в голове случится test infected, а потом и вовсе test driven.

Сам процесс можно объяснить на пальцах за 15 минут. Все остальное, что приведет к росту продуктивности лежит в области "почему TDD в моем случае не работает и как сделать, чтобы работал" - тут нужны месяцы эксприментов.

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

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

И вот фоточка в тему - чем отличается обычный программист, от программиста практикующего TDD


На равных: рекрутеры и дивелоперы

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

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

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

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

Так же я получил на руки книгу "Никогда не ешь в одичноку 2". Эта книга наполняла свободные минутки все эти дни после первого собрания. В первый же вечер я читая ее попал на метафору "на равных" и пазл собрался.  

Что, если проводить подобные встречи "на равных" периодически. Рекрутерам всегда есть чему поучиться у разработчиков, а разработчикам всегда есть что спросить напрямую у рекрутеров. Никакого хантинга - мы собрались не за этим. Никакого пренебрежения, которое периодически слышно в кулуарах (как разработчиков, так и рекрутеров) - "Как меня достали эти предложения..." или "Какие наглые нынче программисты пошли..." Нет! Мы собираемся для того, чтобы помочь друг другу. 

И вторая такая встреча состоится завтра (или уже сегодня). Три разработчика + восемь рекрутеров. Неформальная обстановка. Хакерспейс! (наконец-то побываю там...)

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

Позже отчетик...

Еще пару мыслей сегодня

Оставлю это пока тут 

Если никто не знает, что делать дальше - у тебя есть верный шанс написать новую главу в истории компании. Не медли - не ты, так кто-то другой ее напишет. Только ему скорее всего скажут "just do it" и будет что-то так себе. А ты сделаешь это с душой. Напиши эту главу.

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

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


А теперь спатки. Завтра беру блокнот, ручку и айда на собрание с рекрутерами "на равных", уже второе. Уххх!!

Давно я не выговаривался

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

Филосовский камень - превращаем проблемы в решения

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

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

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

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

Я часто задаю себе вопрос "как?". "Как я могу это сделать?" После него идут вопросы уточнения "Кто мне поможет?" "Сколько времени потребудется?" "Когда будет первый результат?" Но самый интересный вопрос - Как? "Как еще это сделать?" "А еще как?" "Ммм, интересно..." "А как еще?..."

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

Одна картинка лучше 1000 слов. 

Это Коуч.  А еще, говорят, что:
"Человек помогающий профессии должен быть достаточно глуп, ленив и аморален. Глуп - чтоб не думать за клиента, ленив - чтоб не делать за него работу и аморален - чтоб не судить."
Вот тут хорошо написано почему именно так. Невозможно быть коучем для друга решении проблемы сходной с той, с которой столкнулся сам. Но можно по-подглядывать за тем, как Коучи делают свой коучинг и стать более осознанным, когда делишься знаниями.

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

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

Конспект: Доктор Ричард Хэмминг "Вы и Ваша работа" (часть 2)

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

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

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

Следить за собой. Почему я мечтаю об одном, а делаю другое? Может быть мне стоит мечтать о том, что делаю? Может быть пора делать то, о чем мечтаю? Синхронность.

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

Ценить процесс достижения, а результат в виде успеха не заставит себя ждать.

Ты сделаешь больше, если уходя домой забираешь с собой работу. Не потому, что потратишь на 2 часа больше времени, украденное у семьи, а потому, что ты более привержен к ней. Пусть будет не хватать 24 часов, чтобы насытиться задачей. Пусть это приведет к потребности развиваться и делать ее иначе. Пусть всем этим заправляет драйв! 

У меня могу быть большие амбиции, но я всего лишь 80 кг вещества с 24 часами в сутки, двумя глазами, двумя ушами, двумя руками и одним ртом. Мне нужна помощь. Помощь людей вокруг. Помощь системы, в которой тружусь. Чтобы сделать больше. 

Не стоит бороться с системой, стоит научиться использовать ее. А если она что-то не делает - научитесь обходить ее. Если Босс говорит "нет" на 90% ваших просьб, то стоит ли ему продолжать задавать эти вопросы? Может быть пора предоставить факты так, чтобы он не мог сказать "нет"? Как это сделать? 

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

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

Вокруг работают люди. Людям нужны простые вещи. Одобрение. Подбодрение. Знаки внимания. Девушкам цветы. Мужчинам признание. Всем веселые шутки. Дай им это.

Делая что-то думай, как проверить каким будет результат. 

Не пытаться делать реформы чужими руками - много сил потребуется, чтобы заставить систему меняться. Если дело твое реформы делать - супер, делай, но если дело твое лежит в другой области, то занятие реформами - не оптимально. Лучше делать свое дело так, как считаешь нужным. Через это, хоть чуть-чуть, менять систему. Еще раз: делать то, в чем хочешь преуспеть. Свое дело или реформы? В сутках всего 24 часа.

"Смех — да, злость — нет. Злость не туда направлена."

"Когда я говорю «О, да, я дам тебе решение ко вторнику» без малейшей идеи, как это сделать, это срабатывает". Загнанная в угол крыса сделает с обидчиком невозможное, хотя обычно она убегает. Загонять себя в угол с тем, чтобы заставить сделать невозможное. Чаще это срабатывает. 

Если спросить "Почему ты не сделал это?" - найдется купа оправданий. Но если спросить "Каким образом это будет готовым?" - найдутся решения. 

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

"Вы можете вести приятную жизнь; вы можете быть или «хорошим парнем» или великим учёным. Но «хорошие парни приходят последними», как сказал Лео Дюроше. Если вы хотите вести приятную счастливую жизнь с кучей развлечений и прочим, то ведите приятную жизнь."

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

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

Половину рабочего времени потратить на презентацию. Это много. Но это стоит того. 

"Если вы всё время читаете, что сделали другие люди, вы будете думать, как думали они." Есть люди креативные - они формулируют задачу достаточно ясно и отказываются смотреть какие-либо ответы, пока основательно не продумают задачу. "Вы читайте. Но имеет значение не сколько, а как вы читаете."

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

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

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

"Если вы хотите быть великим исследователем, вы не станете им, будучи президентом компании. Другое дело, если вы хотите быть президентом компании. Я не против того, чтобы быть президентом компании. Я просто не хочу.... Когда вы можете в одиночку воплотить то, что хотите, тогда вам следует этим заниматься. Как только ваше видение, того, что, как вы считаете, должно быть сделано, больше того, что вы можете сделать в одиночку, вам надо двигаться в менеджмент. И чем больше видение, тем дальше в менеджмент вам надо идти."

"Удача благоволит подготовленному разуму; удача благоволит подготовленному человеку. Это не гарантировано. Я не гарантирую, что успех совершенно несомненен. Я бы сказал, что удача влияет на вероятности, но есть определённый контроль со стороны человека."

"Ступайте и делайте великую работу!"

Доктор Ричард Хэмминг, профессор морской школы Монтерея в штате Калифорния и отставной учёный Bell Labs



пятница, 17 января 2014 г.

Как уже наконец выучить эти шаблоны проектирования

Шаблоны проектирования такая штука, которая у всех программистов на слуху. Это каталог готовых решений для разных случаев девжизни. Но оно как-то остается в теории или на собеседованиях. А в проекте?

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

Есть одна книга, которую в пример поставлю - Head First: Шаблоны проектирования.  Вот как она выглядит. Купи и прочти ее.


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

Спорить?

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

Недавно меня в спор унесло, увлекся. Началось все с вопроса "как ты можешь кого-то трейнить, если сам не получаешь коммерческого опыта?". Аммм, провокация. И понеслась. А и вправду как могу? Стал рассказывать - читаю больше, больше общаюсь, узнаю как сделать ту же работу быстрее - немного больше экспериментирую, кому-то посоветую, у него тоже получится - опля есть готовый инструмент, который и несу в массы. А то жеж можно get/set всю жизнь писать, не зная, что в IDE уже давно это реализовано.

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

Троллей вовсе нет. Это удобная отмазка лектора. Все тролли - твои тренеры, хоть и за тренинг свой берут немного твоих эмоций и делают это обычно не вовремя.

Что будет если на одном докладе появится человек, который будет активно не соглашаться с каждым моим доводом? Ну допустим я не готов, не владею я методиками работы с недовольными участниками. Доклад сорван. Но это уже в прошлом. В будущем будет доклад №2, №3, №4... И следующий свой доклад я подготовлю с учетом того, что в зале будет этот человек (или его напарник). Какие методы работы с недовольными участниками есть? Какие вопросы он может задать? В чем еще предлагаемый мною инструмент не совершенен?  Какие будут возражения? Как сделать недовольного участника на моем докладе счастливым? Что ему нужно?

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

Вообще слова как вирусы. Единожды попав в голову они оттуда никуда не деваются. Как это может помочь?  
 
Еду домой и думаю, почему раньше у меня было больше споров, а сейчас их стало меньше? Раньше был маленький город, небольшая компания, не много единомышленников. Что-то узнавал, хотелось это проверить - тут же находились критики. Почти все. Сейчас же картинка качественно другая - большой город, возможность выбора user-группы с большим числом единомышленников. Более того, если в замкнутой среде из 10 человек слушать не хотят об чем-то, то в замкнутой среде, участников которой в 100 раз больше - тебе за это даже заплатить захотят. 

Это одна из причин, почему люблю нетворкинг - больше друзей, больше возможностей реализовать задуманное (опять же при условии, что твоя идея близка хоть кому-то из них). Именно по этому я перестал работать в замкнутой команде, с каким-то налаженным процессом с определенным заказчиком. Заказчиком должны быть все окружающие люди, а не 1 человек. Даже, если заказчик представляет 1000 других клиентов - стоит искать связи с ними. Стоит искать другие похожие команды, в которых можно почерпнуть новые знания по проблемам, которые случаются или случались в твоей. Стоит посещать всевозможные тусовки по обмену опытом и слушать. Людей. Много.

А потом тебя спросят, а как ты делаешь. Вот тогда и расскажешь.

Как-то так. Пора бежать. 

Позже буду.

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

Конспект: Доктор Ричард Хэмминг "Вы и Ваша работа" (часть 1)

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


Буду писать тут конспект, дабы сэкономить себе в будущем время на перечитывание.

Самое первое о чем говорит Автор - наблюдение и любознательность. Ему стало интересно и он начал приставать к людям со своими вопросами. Он начал копать. И вот теперь о нем пишут на хабре :) Его доклад записали, перевели, на прочтение статьи друг уделил 40 минут, а я вот пишу пост в блоге. Автор добился своего и поиск ответа на его вопрос, а «почему так мало учёных делают значительный вклад в науку и так многие оказываются в долгосрочной перспективе забыты?» - оставил след в истории. Но для начала там было всего лишь любопытство. Или не "всего"? Продолжим чтение...

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

Удачи нет, ведь еще Ньютон сказал: «Если бы другие думали так же напряжённо, как я, они получили бы похожие результаты». Я просто должен трудиться каждый день.

Поможет, если в молодости есть независимые мысли и есть смелость ими заниматься. Так же может случиться и обратное - неуверенность в себе, которая может происходить прямо сейчас со мной, может переродится в уверенность и смелость, после одного успешного открытия. Так что все советы это как говорит Автор "и случайность и не случайность". Смелость - это то, что должно проявиться в результате. Без нее никак.

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

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

Недостатки человека - это его достоинства. Надо только поменять точку зрения. Скорее всего первая реакция на перемену будет такая: «Ууу, как все плохо...» Но лучшее, что можно сделать сразу после - искать ответы на вопрос "А почему это все же хорошо для меня?"

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

У каждого 24 часа в сутках. Чтобы сделать на 1 часа больше чего либо, надо сделать на 1 час меньше чего-либо другого. И очень важно понять, куда вкладывать этот 1 час своего времени.  Ведь "драйв, неправильно направленный, никуда вас не ведёт".

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

"Когда у вас есть действительно важная задача, вы не должны позволять ничему другому занимать центр вашего внимания — вы должны удерживать свои мысли на задаче. Надо морить подсознание голодом, чтобы ему приходилось работать над вашей задачей, чтобы вы могли мирно спать и бесплатно получить ответ утром."

Спрашивать окружающих:  «Какие в вашей области важные задачи?», «Над какими важными задачами вы работаете?», «Если то, что вы делаете, неважно, и если вы не думаете, что это приведёт к чему-то важному, почему вы работаете над этим?» Пусть они за это не любят. Потом скажут спасибо.

Быть там, где что-то может произойти.

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

Позволять команде интераптать - работать с открытой дверью. Люди приносят новости из мира, новости о проблемах и методах решения. Они в помощь!

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

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