Показаны сообщения с ярлыком Мысли. Показать все сообщения
Показаны сообщения с ярлыком Мысли. Показать все сообщения

вторник, 12 марта 2019 г.

О пользе ведения блога

Пришло время ответить на вторую часть вопроса, который я поднял в предыдущем посте «Я выгорел?: Насколько полезно вести блог: с профессиональной, финансовой и других точек зрения?

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

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

Но здесь важно не путать корреляцию и казуацию. Видимая активность в интернете помогает в создании связей, которые можно использовать в поиске работы, но большинство MVP – это талантливые люди, и они в состоянии найти работу путем прямого инвестирования времени в этот процесс.

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

Блоггинг, опен-сорс и публичные выступления – это не единственный способ получения хорошей работы. Есть случаи, когда все это сработало, но ведь на каждого MVP, который нашел хорошую работу, есть десятки не-MVP, которые нашли работу не хуже.

Так стоит ли вести блог для карьерных целей? Я бы сказал, нет.

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

Позитивная сторона блоггинга

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

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

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

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

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

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

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

Негативная сторона блоггинга

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

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

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

Остерегайтесь своих собственных коммитментов. Я ставил себе цель: публиковать посты раз в 2 недели. И вокруг этого строил все свое самообразование. Но такой темп стимулирует более глубокое изучение уже известных тем и не дает сосредоточиться на новом.

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

Так стоит ли мне вести блог?

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

вторник, 19 февраля 2019 г.

Я выгорел?

Или почему я намного меньше пишу в блогах.

Мне недавно задали два вопроса: 1) не выгорел ли я, поскольку стал совсем мало блогать, и 2) стоит ли вести блог вообще и какие в этом преимущества?

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

Где-то год назад я начал слушать в дороге разные подкасты и самым моим любимым был (и остается) Hello Internet. В одном из первых выпусков, CGPGrey привел довольно любопытную аналогию. Человек – это такой себе аккумулятор, к которому параллельно через резисторы подключены несколько лампочек: семья, работа, спортивная форма, хобби, друзья и т.д. И человек может менять сопротивление определенного резюка и, таким образом, тратить больше жизненной энергии на одну лампочку, уменьшая свечение всех остальных.

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

Хоть аналогия и не идеальна она прекрасно иллюстрирует главную сложность в жизни: поиск баланса между разными аспектами жизни и правильное распределенные нашего времени и энергии.

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

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

Когда у нас появляется наша собственная семья распределение энергии меняется.

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

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

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

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

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

Рассмотрим донорство органов в Германии и Дании. Эти страны достаточно похожи с точки зрения уровня жизни и культуры, но в Германии донорами органов становятся на порядок меньше людей, чем в Дании. Вопрос: почему? Дело в том, что в Дании донорство осуществляется по принципу opt-out, а в Германии – по принципу opt-in. Т.е. в Дании нужно отказаться от донорства, а в Германии – наоборот, с ним нужно согласиться.

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

Теперь давайте возьмем такое когнитивное искажение как «якорение» (anchoring). Вот небольшой пример. Давайте проведем опрос о том, в каком возрасте умер, ну, не знаю, Ницше. И для первой группы вопрос будет таким: «В каком возрасте умер Ницше, при учете, что он пережил свое тридцатилетие?», а второй – «В каком возрасте умер Ницше, при учете, что он не дожил до 100 лет?». Мы увидим, что ответы будут сильно отличаться. В первом случае средний возраст будет существенно ниже, чем во втором случае.

Я на личном опыте столкнулся с проблемой якорения. Мы были с семьей в ресторане и семья за соседним столиком, услышав, что мы говорим по-русски, рассказала о возможной скидке в 10% с чека, если мы зачекинимся на фейсбуке. Мы их поблагодарили, но «трюком» не воспользовались. Но в момент выписывания чаевых, вместо 20% я неосознанно выписал 10%.

Якорение часто проявляется во время планирования задач. Если один из разработчиков первым сказал, что фичу можно сделать за 2 дня, то все будут отталкиваться от этой «оценки» и будут стараться лишь ее скорректировать. Именно с этим борется planning poker, когда каждый член проекта записывает свою оценку на листочке и лишь когда все готовы, «карты вскрываются».

Напоследок, мы можем взять экономическое понятие – sunk cost fallacy. Идея этого явления в том, что чем больше мы вкладываем сил и средств во что-то, тем тяжелее нам быть по этому поводу объективным. Это явление проявляется на уровне человека, который спорит, что старый язык программирования или технология все еще лучшее средство для решения всех проблем. На уровне команды, которая уперлась рогом в текущие архитектурные ограничения и не в состоянии сделать шаг назад и посмотреть на проблему с другой точки зрения. Или на уровне организации, которая не может уйти от старой бизнес-модели, которая уже не применима.

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

Мне очень понравилась идея изучения чего-то нового кусками по 20 часов (The first 20 hours – how to learn anything): ты берешь какую-то тему, находишь вменяемые источники по ней и изучаешь ее 20 часов, применяя всякие там deliberate practice и т.п.

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

Ну а теперь мы можем вернуться к вопросу выгорания. Так что же такое?

Как по мне, выгорание – это уменьшение запасов нашей батарейки с жизненной энергией. Выгорание – это когда ты тратишь меньше времени на изучение языков программирования, *и* проводишь меньше времени с семьей и друзьями, *и* не занимаешься своим здоровьем, *и* ничем другим не интересуешься.

Выгорание – это порочный круг уменьшения жизненной энергии. Видимое же уменьшение яркости одной «лампочки» не является признаком выгорания. Это вполне может говорить о перераспределении энергии и что сейчас она направлена в другие русла.

среда, 8 августа 2018 г.

О мотивации

Я не могу делать вещи, которые мне не интересны. От слова совсем.

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

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

Как и для многих других, меня в общем случае мотивируют три вещи: автономность (autonomy), мастерство (mastery) и цель (purpose). Но они для меня играют разное значение.

Цель для программиста – это не красивый код и не расширябельная архитектура. Это решение некоторой проблемы пользователей. Наличие цели для меня важно, но не сверх критично. Я занимался довольно активно проектами, цели которых были мне не совсем ясны, поскольку я был оторван от конечных пользователей довольно сильно. Аутсорс, видите ли.

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

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

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

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

Возьмем, к примеру, саморазвитие.

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

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

вторник, 3 июля 2018 г.

Welcome, так сказать, back:)

Мне вот тут подумалось, что блоггинга мне не хватает. Причем не очень хочется писать чего-то длинное и сильно умное. Для этого, у меня теперь на английском блог есть. Хочется чего-то простого и легковесного, типа журнала живого. Вроде бы есть всякие Г+ и фейсбуки, но их формат мне все равно не нравится. Если захочешь чего-нить своего потом найти там, заморишься.

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

Вот и сейчас просто хочется поделиться загадкой, которую вчера решал:

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

четверг, 24 декабря 2015 г.

О трудозатратах на саморазвитие

У меня к вам внезапный вопрос: а сколько вы тратите времени в неделю на саморазвитие? Час? 5, 10, 20? Я спрашиваю не из праздного интереса. Мне самому довольно часто задают этот вопрос и мне бы хотелось собрать некоторую статистику.

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

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

вторник, 1 декабря 2015 г.

О дружбе значимых типов с ООП

Камрад @ViIvanov в своем блоге поднял интересный вопрос о значимых типах и ООП. По сути, это был развернутый комментарий к моему посту «Пишем простой анализатор с помощью Roslyn», в котором я упомянул, что структуры плохо дружат с ООП. Вячеслав высказал очень разумную мысль, что наследование не является ключевой особенностью ООП, а значит ограничение значимых типов в этой части не должны делать из них граждан второго сорта. Ну что ж, пришло время развернуть мою мысль поглубже.

Начнем с того, чем же для меня является и не является ООП. Мое ИМХО в том, что ООП, как и проектирование в целом, основано на двух китах – абстракции и инкапсуляции (а не только на инкапсуляции, как выразился Вячеслав). Абстракция позволяет выделить существенные аспекты поведения, а инкапсуляция является тем инструментом, который позволяет спрятать ненужные подробности и детали реализации с глаз долой.

четверг, 26 ноября 2015 г.

Как я изучаю английский язык

Один из читателей прислал следующий вопрос:

«Вы переводили много статей с английского, читаете свободно книги, а сейчас работаете в англоязычной стране. Не могли бы Вы немного рассказать о Вашем пути в изучении английского языка. Хорошая школьная/университетская база? Или перевод статей позволил настолько прокачаться? :)»

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

Ну, если что, я вас предупредилJ

среда, 8 апреля 2015 г.

Как правильно развиваться?

Это несколько расширенная версия ответа на похожий вопрос, который был задан в русскоязычном ru.stackoverflow.com. А поскольку повторное использование – это наш все, к тому же, этот вопрос мне задают с завидным постоянством, то я решил оформить свои мысли отдельным постом.

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

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

  1. Хорошие источники
  2. Упор на получение стабильных знаний
  3. Итеративность обучения и практика
  4. Относительно четкий план развития
  5. Разнообразие тем
  6. Мотивация

Теперь по порядку.

четверг, 26 июня 2014 г.

Как проводить технические собеседования?

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

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

clip_image002

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

Блогу 5 лет

clip_image002

Да, все верно, первый пост был опубликован ровно 5 лет назад, 2 декабря 2008 года и назывался “LINQ to Objects. VS2008 SP1 Bug” и был посвящен тому, что в VS2008 следующий код:

UPDATE (заменил Select на Cast), спасибо Eugene Ivanchenko:

var bytes = Enumerable.Range(1, 5).Cast<byte>().ToList();

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

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

вторник, 12 марта 2013 г.

Как я читаю книги?

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

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

понедельник, 13 февраля 2012 г.

Повторное использование знаний

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

Если оглядеться вокруг, то может сложиться впечатление, что отрасль разработки ПО шагает такими громадными шагами, что угнаться за ней нет никакой возможности. И если рассматривать всю отрасль в целом, то действительно это так и есть. Как-то сразу вспоминается старина Брукс со своим «Мифическим человеко-месяцем», когда он в заключении к своей книге пишет о том, как изменилась индустрия ПО в середине 90-х по сравнению с 50-ми годами. В те далекие годы (да, 90-е тоже уже далеки, так что уж говорить за эпоху зарождения индустрии сорока годами ранее) можно было прочитать все журналы (!),компьютерной тематики, которые выходили в свет. Сейчас же ежемесячно появляется десятки книг только по одной из популярных технологий, а количество статей просто не поддается счету.

воскресенье, 17 апреля 2011 г.

С юбилеем, RSDN!

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

- Ничего, Серега, еще годик-другой поработаешь, и отношение к работе у тебя изменится.

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