Александр Гранин

Александр Гранин

Неделя
Mar 8, 2021 → Mar 14, 2021
Темы
Книги
Математика
Haskell
Карьера
Кулстори

Архив недели @graninas

Понедельник


Всем привет! На этой неделе с вами я, Александр Гранин, @graninas. Возможно, вы бывали на моих докладах, читали мои статьи, а кто-то, вероятно, даже приобрел мою книгу Functional Design and Architecture, повествующую о том, как на Haskell писать реальные программы.

План на неделю: Что делать, если ты автор книги Еще не поздно стать профессионалом! Синяя или красная? Ваш путь в IT Выгораем вместе Творчество в IT и не только Это вообще законно - любить математику и не знать ее? Эмерджентные системы

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

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

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

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

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

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

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

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

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

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

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

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

Буквы складываются в слова, слова в предложения, но в тексте нет глубины. Он поверхностен, банален, сообщает не о том, о чем должен, не в том стиле и не с тем настроением. Текст не работает, и вы это чувствуете. 7/

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

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

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

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

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

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

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

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

@itunderhood Да, чаще всего пиар без автора - очень странное мероприятие. Тут идеально работает только золотая середина. Когда издатель делает стратегию продвижения и органичности встраивает в неё автора. А вообще кажется будущее отраслевой литературы именно за самиздатом
Не исключено! Существуют много разных сервисов самиздата литературы. Я опубликовал "Functional Design and Architecture" на LeanPub, и собираюсь сделать то же самое со второй книгой - "Pragmatic Type Level Design". Но иметь книгу от издательства все же приятнее. twitter.com/AlexKazakova/s…

Позвольте пару слов о том, зачем я написал "Functional Design and Architecture". 1/

Начал я ее писать в декабре 2015 / январе 2016 годов по контракту с Manning Publications. Я хотел, чтобы в мире Haskell появился наконец материал про Software Engineering, Software Design & Architecture - про то, как создавать реальные приложения в индустриальном масштабе. 2/

На тот момент в Haskell были, по большей части, только академические и новичковые материалы, икнига Real World Haskell, устаревшая уже тогда. Software Engineering как дисциплина (методологии, подходы, лучшие практики, паттерны, и т.п.) отсутствовала в дискурсе совсем. 3/

Это очень сильно помешало Haskell стать популярнее, потому что в индустрии важно снижать риски, важно использовать проверенные инструменты, и хочется иметь готовые решения главных задач: БД, логгирование, работа с сетью, веб, управление состоянием. 4/

Я хотел писать программы на Haskell, и я даже мог их писать, но это был кустарный подход. Из своей практики C++ и C# разработчика я понимал, что я не знаю, как на Haskell делать тестируемую и надежную архитектуру ПО, как писать поддерживаемый код, как работать со сложностью. 5/

Так было 5 лет назад, и все эти 5 лет я непрерывно работал над тем, чтобы подобное знание в Haskell появилось. В частности, я начал писать книгу, делать доклады на конференции, создавать showcase приложения, писать статьи. 6/

А с 2017 года, когда моя книга была готова на половину, мне еще и повезло попасть на удаленную работу хаскеллистом. Я пересел с С++ на Haskell, и, внезапно оказалось, что мои знания очень нужны, и очень помогают. 7/

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

Несмотря на то, что с 2017 по 2019 год моя книга лежала в недописанном состоянии, я наработал много нового материала, и вторую половину книги уже дописывал с еще большей уверенностью, что это уникальный для мира ФП материал, которого так недоставало. /10

@itunderhood А на Manning вы сами вышли с предложением?
Тут тоже имеется история, которую я, как водится, рассказываю при каждом удобном случае. В 2015 году я исследовал тему функционального С++. Опять же, делал доклады и писал статьи. И в один момент мне приходит предложение от Manning поревьюить заявку на книгу. 1/ twitter.com/ex3lero/status…

Это была заявка от Ivan Čukić на книгу "Functional Programming in C++". Ума не приложу, как они на меня вышли, но я с радостью поревьюил! Написал очень положительный отзыв, с разными конструктивными предложениями. Книга в итоге получилась замечательной, рекомендую! 2/

А еще я там же в опроснике ответил на вопрос "нет ли у вас идеи собственной книги". Такая идея у меня была. Я описал идею, и редакторы Manning заинтересовались. И всё заверте... 3/

Эту историю, а также многие другие подробности того, как пишутся книги по Haskell, и книги для Manning, вы можете послушать в этих двух видео. Рассказывают @_bravit, @dshevchenko_biz, Холомьев и я. youtu.be/hXnPkIvQtZo youtu.be/P3VCTonbMAs /4

Прямо сейчас я работаю над вторым изданием (FDaA SE) для Manning, и надеюсь, что второй заход будет успешным. Первый контракт они расторгли после года нашего сотрудничества, и точные причины мне неизвестны. 1/

Однако я подозреваю, что главной причиной было слишком большое количество отрицательных отзывов от внешних ревьюеров. Мне не повезло, что редакторы выбрали крайне opinionated и biased мейнстримных программистов из Java и Scala стека. 2/

Также было несколько ужасных отзывов от функциональщиков, которые написали, что это в Haskell не нужно и неприменимо, и незачем тащить эти практики из мейнстримных языков. 3/

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

Похожее сопротивление я получал и в ответ на свои доклады и статьи. Конечно же, это не помогало, а наоборот, заставляло сомневаться еще больше. Ты постоянно задавал себе один и тот же вопрос: "Может быть, это они правы, а не я. Может быть, действительно, это не нужно". 5/

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

По ежегодным опросникам от Taylor Fausak мы видим, какие темы самые востребованные в мире Haskell: application architectures design patterns best practices 7/
notion image

Это исследование проводится уже четвертый год, и можно проследить изменение запросов сообщества. Ссылки на результаты по годам вы можете найти здесь: github.com/graninas/softw… 8/

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

И уже в этот раз, в рамках проекта FDaA SE, я получил подавляющее большинство очень положитеьных отзывов от внешних ревьюеров. Времена меняются, меняется и отношение сообщества к идеалам, которые я исповедую. Haskell заслуживает большей популярности! /10

А вот прямо сейчас, сию минуту, у меня стоит задача от Manning отредактировать первую главу согласно рекомендациям от ревьюеров, и подготовить документ MQR - Minimally Qualified Reader. Документ о минимальной квалификации читателя, и что книга ему даст. Пойду поработаю!

Параллельно с FDaA Second Edition, я также пишу свою вторую книгу - Pragmatic Type Level Design. И если первая предлагает собственную методологию разработки приложений на Haskell, то вторая должна переосмыслить то, как мы используем систему типов. 1/

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

Эти материалы учат меня чему-то математически глубокому, теоретически прекрасному и замечательно умному, но когда я остаюсь один на один с кодом, я не понимаю, как мне решать типичные задачи, возникающие на практике. 3/

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

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

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

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

Могу сказать, что даже сейчас, когда у меня готова только первая глава Pragmatic Type Level Design, я уже нашел подход дизайна на уровне типов, относительно простой и весьма эффективный, которую я могу использовать для решения почти что любых практических задач. 8/

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

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

Сегодня тредов я уже не напишу, но предлагаю пообщаться в режиме Ask Me Anything. Задавайте ваши вопросы под этим сообщением (или где-то еще), высказывайте ваши мысли, у нас есть время подискутировать. И да, всех причастных с международным женским днем!

@itunderhood Си Шарп или джава? Хаскель не предлагать
C#. Несмотря на большую лимитированность самой платформы (даже проект .NET Core не такой вездесущий как JVM), сам язык по своим фичам и удобности для программиста ушел гораздо дальше, чем Java. Один LINQ чего стоит! twitter.com/igor_maslik/st…

Кстати, в свежем выпуске C# добавили Records и паттерн-матчинг для них. Еще один шаг, и будут алгебраические типы данных, совсем как в Scala!

@itunderhood Раз уж неделя в той или иной степени связвна с ФП, то что думаешь про Clojure? Если конечно имел дело с этим языком.
Я теоретический полиглот! Знаю самое важное про многие языки, даже если не написал ни строчки. Clojure молодец. Маленький красивый ФП язык. Я видел, как на нем пишут мастера: Clojure в одной руке, REPL в другой, это впечатляет. Но я персонально совсем не хочу в динамику. twitter.com/4rontender/sta…

По Clojure рекомендую ходить на митапы от сообщества @fprog_spb. Посмотрите на их Ютубе, там очень много занимательных видео от известных кложуристов. youtube.com/channel/UCrCO7…

Как вы думаете, от каких ревьюеров из каких языков я получал самые отрицательные отзывы? Подсказка: они представляют себя как архитекты с 10+ и 15+ опыта. И комментарии там вот такие, очень все похожие.
notion image

@itunderhood Подходы из книги Functional Design and Architecture можно использовать в любом языке или только в haskell?
Отличный вопрос! Конечно же, Haskell там модельный язык, но большинство подходов более чем применимы в Scala и F#. Даже более того, в Scala идет параллельная дискуссия о подходах, которые переносятся почти 1:1 из Haskell. 1/ twitter.com/polemius/statu…

Моя книга универсальна в том же смысле, в каком смысле универсальна книга Scott Wlaschin "Domain modeling made functional" (которая про F#). Идеи о дизайне систем с использованием функциональных подходов могут быть перенесены в другие языки с хороший поддержкой ФП. 2/

Я уже упоминал, что у меня много исследований функционального С++? Много - это: - 7+ докладов - 3+ showcase проектов - несколько статей И везде в этих работах я проверял все те же идеи, которые описал в книге. В частности, Free monads и Final Tagless / mtl. 3/

По функциональному С++ у меня есть подборка материалов. Если у вас в жизни не хватает экстрима, можно углубиться! github.com/graninas/cpp_f… /4

@itunderhood Как жить с теми ревью, которые были упомянуты? Не демотивирует? Мне иногда сложно читать критические рецензции на свои работы
Демотивирует еще как! И даже не само ревью, а ужасный bias ревьюера, которому, по большому счету, все равно, и его не волнует, что после такого отзыва могут проект закрыть совсем. К сожалению, люди часто мыслят в рамках своих догм и не заботятся о более общем взгляде на вещи. twitter.com/KebabKhan1/sta…

Параллельно с FDaA Second Edition, я также пишу свою вторую книгу - Pragmatic Type Level Design. И если первая предлагает собственную методологию разработки приложений на Haskell, то вторая должна переосмыслить то, как мы используем систему типов. 1/
В Новосибирске 3:00 ночи, день первый подошел к концу. Здесь перечислены все важные треды дня. twitter.com/itunderhood/st… twitter.com/itunderhood/st… twitter.com/itunderhood/st… twitter.com/itunderhood/st… twitter.com/itunderhood/st… twitter.com/itunderhood/st…

Вторник


@itunderhood А сомнения в нехватке опыта применения высказанного в крупных проектах, они безосновательны?
Это важный вопрос, и я бы хотел дополнить свой рассказ. Я получил свою первую работу хаскеллистом, когда половина книги FDaA уже была написана, и все основные идеи уже были так или иначе обозначены. 1/ twitter.com/akenoweb/statu…

В индийской финансовой компании, куда меня пригласили работать, стояла задача: организовать кодовую базу на языке PureScript (Haskell-подобный язык) так, чтобы над ней можно было работать командой потенциально менее квалифицированных разработчиков. 2/

Но язык был для них новый, и не было понимания, как решать реальные задачи, потому что готовых методологий не было, по большому счету, ни в Haskell, ни тем более в PureScript. И поэтому компания стала нанимать экспертов из Европы, и их выбор пал на меня и еще пару человек. 3/

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

И я предложил им идеи из своей книги (в частности, архитектуру, основанную на Free monads), потому что я видел, как решить многие их проблемы. Я сделал им фреймворк PureScript Presto.Core для написания мобильных приложений, - он, кстати, в open source: github.com/juspay/purescr… 5/

Этот фреймворк в разы облегчал написание кода, и добавлял уверенности в PureScript. Все, что нужно, было предоставлено из коробки, приложение аккуратно разделено на слои, можно было тестировать код и развивать его, как если бы это был код на eDSL. 6/

Технология настолько зашла, что в последствии они взяли этот фреймворк для мобильных приложений и, сохранив мой изначальный дизайн, сделали из него версию для бэкенда - PureScript Presto.Backend. Тоже в open source" github.com/juspay/purescr… 7/

Я (и, в последствии, моя команда) также приложил руку к этому второму фреймворку и дорабатывал для него многие функции. Сейчас Presto.Backend лежит в основе огромной кодовой базы (200K LOC) финансовых сервисов и является, пока еще, основным источником дохода для компании. 8/

В те же полгода, когда как я сделал им PureScript Presto.Core, я сделал движок для distributed persistable resumable serializable workflows, тоже на PureScript, и тоже основанный на методологии из моей книги (над его NodeJS-частью работал мой напарник из Индии) 9/

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

В какой-то момент руководители компании захотели перевести основную кодовую базу с PureScript на Haskell, чтобы получить более надежную и быструю инфраструктуру, и им для миграции, конечно же, нужен был аналог Presto.Backend, только на Haskell. 11/

У меня уже была команда из 4х хаскеллистов, и мы сделали для них еще один фреймворк, он называется EulerHS, и стали переводить на него бизнес-логику. Работа непростая, и еще идет. Я передал свою команду другому тимлиду, и они за год достигли впечатляющих результатов. 12/

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

Наш хаскельный фреймворк, кстати, также выпущен в Open Source виде: github.com/juspay/euler-hs 14/

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

И это не считая тех 10 лет, когда я работал в больших компаниях над огромными проектами на языках С++ и C#. Так что претензии этого ревьюера не только необоснованы, но и крайне оскорбительны. Пользы от таких ревью совершенно никакой. /16

Если вам интересно, что представляет моя саомизданная книга, откуда у меня печатная версия, и как она выглядит, мы с Тагиром обсудили это здесь. twitter.com/tagir_valeev/s…

@itunderhood Предположу что возможно в книгах был недостаточно передан опыт внедрения, который бы отвечал на вопросы скептиков. Это нормальная ситуация, потому можно встретить отдельно работы описывающие концепцию и работы с рекомендациями по внедрению
А вот эта беседа, на самом деле, подводит нас к теме сегдоняшнего дня. Поговорим о том, что такое профессионализм разработчика, и почему разные силы на рынке IT постоянно деклассифицируют это понятие, что ведет к профанации и размыванию понятия о профессионализме. twitter.com/akenoweb/statu…

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

В мире IT невооруженным взглядом видны несколько трендов, которые в ближайшее десятилетие переопределят понятие профессионального разработчика, примерно так же, как это было на рубеже 90х и 00х. 2/

Напомню, что в 90х мировой IT сектор начал расти как сумасшедший, и стали формироваться основные доминанты на рынке разработки. Как доминанты технологические, так и доминанты мировоззренческие. 3/

Если проследить историю до 60х, то мы выясним, что функциональное программирование появилось примерно на 10 лет раньше, чем объектно-ориентированное, но даже эта фора не позволила ФП выстрелить так, как выстрелило (не Алан Кеевское) ООП в 90х. 4/

Причина была только одна: ООП предложило различные решения к новоприходящим задачам бизнеса, и, по сути, перевело разработку ПО в разряд инженерных дисциплин. И так как рос коммерческий сектор IT, вместе с ним росло и ООП, позволяющее ему решать бизнесовые задачи. 5/

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

ФП просто не могло расти так же, как росло ООП, потому что capacity академической части сообщества оставалось примерно тем же самым. Миллионы ученых в области Computer Science были просто не нужны. А вот миллионы разработчиков - нужны стали, и нужны до сих пор. 7/

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

Это и определило понятие профессионального разработчика на добрые двадцать, а то и тридцать лет. Считалось, что профессионал должен знать ООП, потому что это доминантная парадигма, используемая повсеместно. 9/

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

IT как индустрия сформировался именно тогда. До 90х многим еще не было понятно, что за большими калькуляторами есть огромный потенциал; в 90х резко поменялось само мировоззрение всего человечества, а в 00х все новые идеи информационного общества нашли свое логичное развитие. 11/

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

В последние десять-пятнадцать лет в сообществах стала видна усталость от ООП, которое, при всех его достижениях, остановилось в развитии и уже не могло предложить ничего нового. ООП не стремилось упростить жизнь разработчика. 13/

При этом все простые задачи молодого IT сектора уже были решены, и стали приходить задачи несравненно более сложные. Объемы данных выросли. Количество потребителей цифровых услуг выросло. Стало видно, что ООП не справляется с удержанием сложности систем на приемлемом уровне. 14/

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

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

Сегодня функциональная парадигма все еще далека от законченности. В отличие от ООП, эта область знаний оказалась настолько глубокой, что исследований хватило на 60-70 лет, и впереди еще не менее десяти, но скорее всего - больше. 17/

С точки зрения индустрии, ФП решило ряд вопросов, которые ООП решить не смогло, как-то: более удобная разработка data flow программ; параллелизм и конкурентные вычисления; а также ряд вопросов надежности и корректности ПО. 18/

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

Здесь, вероятно, стоит упомянуть два языка: JavaScript и Scala, которые в совокупности и затянули ФП в мейнстрим. И, что характерно, оба активно исследуют вопрос мультипарадигменности ООП+ФП, и являются в некоторой степени зеркальным отражением друг друга. 20/

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

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

В условиях конкуренции компаниям нужно, чтобы было быстро и дешево, и с исчерпанием свободных ниш в 2010х, это стало критичным условием. Уже нельзя просто так взять и зайти в рынок IT со своим продуктом, потому что вчера тебя уже обогнал конкурент. 23/

Теперь вам должно быть ясно, как ситуация меняется со временем, и что она не может не менять наше представление о профессиональном разработчике. 24/

В 90х и 00х это был ООП программист, знающий паттерны и подходы, умеющий в методологии. В 2000х и 2010х на первый план вышла командная разработка и владение профессиональными инструментами. В 2020х это будет, без сомнений, знание нескольких языков и парадигм. 25/

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

И пока еще не вполне ясно, какое из двух определений в конечном счете станет главным в 2020х. 27/

(P.S. Однако лично мне ясно одно: ни в какой из двух трендов Haskell не попадает. Он не стремится быть проще, и он не является достаточно мультипарадигменным. И к тому же, он долгое время чурался решать задачи бизнеса. И это делает его крайне уязвимым перед другими языками.) /28

@itunderhood Так почему бы не использовать Scala и поставить точку? :) А хаскель пусть остается академическим эталонным ФП ориентированным языком. Описанный факт мультипарадигм как раз и реализуется в Scala а недавно уже и в Java и других языках (даже php чуточку могёт)
Это уже вопрос частностей, индивидуальных особенностей человека и его предпочтений. Каждый отвечает на этот вопрос сам. На чьи-то мозги лучше ложится Scala, на чьи-то Haskell. А совокупность подобных решений и формирует общую картину. twitter.com/akenoweb/statu…

@itunderhood Считаю нормальным после многих лет пиратства донатить авторам или спонсировать запись альбомов. Отдаю долги ))))
Подход, достойный уважения! twitter.com/rzr_boyan/stat…

@itunderhood I think C++ has a lot to answer for. It gave many developers who were proficient in C a way to get into the "exciting" OOP world. However, it yielded a lot of software that was brittle and hard to maintain (mix inheritance, mutability, unsafe memory mgmt. and templates). /1
Yeah, because neither of technologies gives you code quality automatically. There is still a need of following software design practices. Excitement and enthusiasm is a good emotion, but it shouldn't substitute common sense. twitter.com/RustyF/status/…

Unfortunately, we may see this in Haskell a lot. People are easily getting being excited about something (eg effect systems or interesting type features), and the very relation to this makes them happy... while doing the code worse because it's more art than engineering design

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

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

Прежде всего, я хочу видеть в разработчике осознанность. Он должен для себя понимать, зачем он в IT, чего он хочет добиться здесь, какие у него цели и интересы. И он должен быть достаточно честным, высказывая о своих устремлениях, чтобы не вводить меня в заблуждение. 3/

Даже если это интерес “зарабатывать бабло, а на остальное плевать”, он должен быть явным, чтобы я мог очень быстро понять, что такой разработчик не станет вместе со мной развивать IT, и чтобы я мог не тратить время на пустые разговоры с ним. 4/

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

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

И когда человек более здраво мыслит, больше шансов, что мне будет интересно с ним общаться. Я знаю, что мы в любом случае будем уважительно друг к другу относиться, даже если каждый из нас opinionated. 7/

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

И безусловно, я бы хотел видеть больше open minded людей. Таких, которые, используя свою осознанность и рациональность, мыслят глубоко, понимают последствия своих слов и имеют четкие цели. И если разработчик именно такой, это чувствуется, и он становится интересен лично мне. 9/

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

@itunderhood Знание нескольких (универсальных?) языков типа go и c# или знание одного универсального языка (js) и нескольких специфичных для предметной области (hlsl, solidity, sql)?
JS универсальным можно назвать только в том смысле, что на нем пишут фронт и бэк. Но это никак не универсализм в подходах и идеях. Одно то, что он динамический, уже наполовину сужает кругозор и ограничивает доступный инструментарий. Учите языки из разных категорий! twitter.com/rystsov/status…

- низкоуровневый язык с ручным управлением памятью (Си, С++, Rust) - высокоуровневый managed язык (Java, C#, Scala) - динамический (Python, JavaScript, Clojure, Ruby) - ООП (Java, C#, Ruby, C++, JavaScript) - ФП (Haskell, Scala, Clojure, Erlang) - логический (Prolog)

@itunderhood А по какому принципу категории выбирать? Или чем больше тем лучше? (Вопрос от фуллстака ;))
Принципов может быть очень много, но, кажется, нет ничего лучше одного - чтобы вам было интересно! На самом деле, будет очень продуктивно попасть в мультиязычный проект. Сама необходимость работать с другими языками заставляет вас учиться быстрее. 1/ twitter.com/oi_masha/statu…

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

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

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

И это очень освобождающее чувство. Теперь вы можете видеть куда больше возможностей, и будете способны решать более сложные, более высокоуровневые задачи, и с лучшим качеством. Но конечно же, это возможно, только если вы подходите к учебе со всей осознанностью. /5

@itunderhood - Изучение разных языков программирования - это как жонглирование ножами, сначала ты ранишься, затем постепенно осваиваешь, наконец становишься мастером. И потом думаешь, и зачем я ими вообще жонглировал?
Когда становишься мастером, и осознаешь этот факт (и не слушаешь тех, кто пытается тебя принизить), ты начинаешь ценить то, чего достиг. 1/ twitter.com/a3519fb/status…

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

Вы ведь тоже испытывали это чувство? Что есть удивительные мокрецы, а ты, простой человек, не только не можешь стать мокрецом, но даже и не представляешь, как они делают то, что делают. И так становится грустно, так одиноко. 3/

Это очень острое ощущение - ощущение отчуждения, недостойности и невозможности быть среди лучших, - оно очень ранит и демотивирует. 4/

Но если вы все-таки начинаете что-то делать, что-то создавать, вести какую-то осозннанную и общественно полезную деятельность, то через пять-десять лет вы вдруг обнаружете, что это все были предрассудки. 5/

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

И не сомневайтесь, каждый из них начинал с малого, и двигался вперед понемногу, и часто заходил в тупик. Но 10 лет - это очень, очень много. За столько лет каждый может сделать себя, создать что-то важное и большое. 7/

И знаете, что для этого нужно? Цель, осознанность, усидчивость и персональный интерес. И вовсе не нужно быть гением. /8

И не сомневайтесь, каждый из них начинал с малого, и двигался вперед понемногу, и часто заходил в тупик. Но 10 лет - это очень, очень много. За столько лет каждый может сделать себя, создать что-то важное и большое. 7/
Сегодня был насыщенный день. Увидимся завтра! Вот 4 треда дня: twitter.com/itunderhood/st… twitter.com/itunderhood/st… twitter.com/itunderhood/st… twitter.com/itunderhood/st…

Среда


А вы знаете, про что на самом деле фильм “Матрица”? 1/

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

А потом посмотрите на Нео в конце: он подтянут, целеустремлен, преисполнен достоинства. Он прошел многие испытания, обрел мудрость и хладнокровие, и теперь он точно знает, зачем он здесь. 3/

Фильм “Матрица” - про осознанность. Нео принимает красную пилюлю, которая заставляет его взглянуть на привычный мир Матрицы по-новому, осознать, что Матрица была сном, и что ему нужно проснуться, выйти из безвременья и обрести себя. 4/

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

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

Фильм “Матрица” показывает, каких высот может достичь человек, если встанет на путь обретения осознанности, обретет цель и смысл своего существования, и начнет следовать тому, что является его предназначением. /7/

P.S. Друзья, к сожалению, я сегодня вынужден пропустить день в силу плохого самочувствия (нарушение сна). Я хотел поговорить о том, что я верю в осознанность, и верю, что с ее помощью каждый из вас может достичь больших высот. 8/

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

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

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

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

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

И прямо сейчас, буквально вот этими тредами, я хочу вызвать определенную реакцию у вас. Я хочу, чтобы мой текст зажег в вашей голове лампочку: "Чорт возьми!". И вы увидели то, что всегда было совсем рядом, прямо у вас под носом, но никак не попадало в фокус вашего внимания. 5/

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

@punknavsegda @itunderhood зацени @dsunderhood как минимум одна беха там есть
Богатые идут в @dsunderhood, умные идут в @itunderhood! twitter.com/moof_kit/statu…

Четверг


Клинически у меня никогда не было диагноза “выгорание”, но длительные периоды полного упадка сил были. Я думаю, они бывают у всех и по несколько раз, и часто мы “болеем”, не отдавая себе в этом отчет. 1/

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

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

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

Я не могу сказать, что это - выгорание или нет, - лучше пойти к специалистам, или, на худой конец, почитать множество материалов в Интернете, в том числе свидетельства очевидцев и потерпевших. 5/

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

Каждый автор какого-то большого свершения не раз слышал вопрос “как вам удается быть таким продуктивным”. Возможно, они спрашивают “как в такой короткий срок можно сделать так много”. Но часто имеют в виду другое: “где вы в принципе берете свободное время”. 1/

Каким-то образом некоторые люди умудряются сделать больше, чем все остальные. Разрабатывают pet-проекты, коммитят в open source, пишут статьи и книги, делают ролики на Ютубе, ведут подкасты. Ну явно же, есть какой-то подвох. 2/

Как это возможно, что при постоянной 8-ми часовой работе у людей еще есть силы и время, чтобы делать что-то дополнительно. Точно-точно, здесь есть подвох. Может, эти люди ничего и не делают, а, например, просто плагиатят у других (у инопланетян?). 3/

(Вам такое положение кажется нелепым, но в одном телеграммном чате уже усомнились, что книгу FDaA написал именно я, а не кто-то еще, кто, без сомнений, более квалифицирован в Haskell и в разработке. Крутых хаскеллистов полно, а книгу почему-то написал Гранин. Подозрительно.) 4/

Давайте я попробую оценить, сколько времени я провел в других занятиях за время своей сознательной (осознанной) жизни. Я играю в компьютерные игры, и достаточно много. В среднем за год я играю 1-2 часа в день. 5/

В подходящую погоду я гуляю. Летом случается гулять до 2-3 часов в день. В среднегодовом это, вероятно, около 1 часа в день. Я готовлю доклады. На большой доклад уходит от двух недель до месяца. Кейноут на C++ Siberia я готовил 2-3 месяца. В среднем - 1 час/неделя. 6/

Я смотрю сериалы. Возможно, 4 часа/неделя. Я поглощаю Ютуб в огромных количествах. Еще больше я смотрю Тик-Ток. В сумме - 2-3 часа в день. 7/

Уже как-то по среднему не получается, да? Пять-семь часов в день на развлечения. У обычного человека просто не может быть столько свободного времени. И это, в общем-то, правда. У обычного человека свободного времени и нет, в силу его обычности. 8/

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

Даже не мечтайте создать что-то большое и важное и при этом остаться в “обычном” режиме жизни. Это невозможно. Можете попробовать. Вы увидите, как ваше дело начнет у вас требовать выйти из обычного образа жизни и действовать иначе. 10/

Вы почувствуете резкую нехватку времени. Даже если вы еще только подумали о деле, она вас уже гнетет и действует на вашу психику. Начнете заниматься делом, и гнет только усилится. Это давление на психику не может не пройти даром, и вот - привет-привет, выгорание. 11/

Обычный режим жизни не подразумевает избытка времени, потому что это время нужно на поддержание неэффективности режима. 12/

Именно здесь кроется причина, почему люди не могут продвинуться дальше начальных этапов. Ситуация требует от них перестать быть обычными, поменять не только обстановку, но и мировоззрение, но это - качественный перелом. Люди подсознательно избегают радикальных изменений. 13/

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

Чет ничё писать не буду, сорян. Там еще пару каток в доту2 надо, потом надо машину заправить и продуктов купить, а еще надо с друганами пивасик вечером, и там еще по телеку футбол сёдня, а еще я ремонт делаю, сверлю вторую стену короч, завтра буду третью сверлить.

В общем-то, это всё, что вам надо знать про свободное время. Моя продуктивность идет не от того, что я делаю что-то быстрее, а от того, что я не делаю ерунду. Но чтобы эту ерунду не делать, нужно еще и перестать думать всякую ерунду. 1/

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

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

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

Люди плохо понимают смысл. Видят не то, интерпретируют не туда, отвечают не так. Где-то был текст с фразами “что они хотели сказать”, “что они думали”, “что они сказали”, “что они имели в виду”, “как они хотели, чтобы ты понял”, и еще набор таких же для другой стороны. 5/

И вот здесь как раз можете поиграть в эту игру: что хотел сказать Гранин, что он сказал, что он имел в виду и о чем он на самом деле думал. 6/

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

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

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

Свободное время - это время, освободившееся от всякой ерунды. А поскольку ерунда у каждого своя, то и как ее убирать из жизни, вам придется решать самим. И хотите ли вы этого на самом деле, - тоже. 3/

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

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

Если вы еще не на удаленке, и просто просиживаете по 8 часов в день в офисе, то вы теряете кучу времени на неэффективности. А если вас при этом выжимают как лимон, что ж, желаю вам более хороших условий. Профессиональным программистам в IT с этим не проблема. 6/

А еще мне как-то сказали, что со стороны выглядит, как будто я организую вокруг себя водоворот. Всё со всем связано, я использую разные ресурсы, продвигая свою повестку на разные лады, и это затягивает. Как раз после того, как я отвел неделю в @backendsecret. 7/

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

Для статей по Haskell. Я переиспользую идеи из предыдущей работы, чтобы сделать что-то еще. Например, я реализовал библиотеку монадического Software Transactional Memory для доклада на C++, через идею Free monads, взятую из Haskell. 9/

Ту самую идею, которую я потом перенес в рабочие проекты. А потом описал в книге, и сделал десяток докладов. 10/

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

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

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

И тут мы снова возвращаемся к осознанности, смотрите предыдущие дни. /14

@itunderhood Да камон, хочешь что то сделать? Сделай! вместо этого не сделай что нибудь другое. Или сделай что нибудь быстрее, что бы время освободилось. К чем изотонические рассуждения?)
Ну в общем, вот, все просто, треды можете не читать. Писать я их тоже не буду больше, пожалуй, а то они скучные получились twitter.com/tygeddar/statu…

@itunderhood Возможно, я проглядел этот момент, и он был освящён в предыдущие дни. Есть ли какие-нибудь бюрократические подходы или техники, которые вы используете для структурирования времени? Планирование дня, какая-нибудь автоматизация.
Ничего не использую. Есть общие задачи на неделю и примерный объем работы. Распеределяю как получится. Опыт подсказывает, сколько времени потребуется twitter.com/terbiyarchitec…

Пятница


Сегодня давайте сделаем наоборот. Я буду отдыхать, а вы будете рассказывать о своем IT и не IT творчестве. Это то, за что я люблю айтишников. Они очень креативные! Считается все: от ваших pet-проектов до литературного и рукодельнеческого творчества, и вообще, всё что угодно.

Самое лучшее будем обсуждать все вместе. Я даже сделал гист со списком "Творчество читателей паблика itunderhood", чтобы сохранить для истории: gist.github.com/graninas/c5c5b…

Раскрою вам секрет: - Недоделывать pet-проекты - нормально! - Недочитывать книги - нормально! - Недописывать произведение - тоже нормально! (Только если это не контракт с издательством, конечно) И вообще, быстрая смена интересов - это нормально, хоть и менее продуктивно twitter.com/olegchir/statu…

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

Есть те же опасения и по поводу иных сфер. Даже мне становится сложнее фокусироваться, потому что я тоже переформатируюсь под клиповое мышление, под раздробленное между десятками источников внимание. Опять же, Тик-Ток, он меня не доведет до добра. 2/

И это, на самом деле, проблема. Как создавать что-то большое и глубокое, если не можешь подолгу фокусироваться на задаче? /3

@itunderhood Одни тикток бизнес-тренеры научат других тиктокеров фокусироваться ахах
Тонко, тонко! twitter.com/pavbox/status/…

@itunderhood Переписываю стихи и песни на IT-шный лад. Иногда пишу своё с нуля jmorozov.gitbook.io/rhymes-rus/
Отлично, посмотрите, люди, как оно? twitter.com/eug_morozov/st…

@itunderhood рисую, печатаю открыточки и стикеры, мечтаю об артбуке со своими иллюстрациями _ https://t.co/YCfKEDzI0l
Здорово! Обожаю творческих людей и их удивительный внутренний мир! twitter.com/Sacret19/statu…

@itunderhood Пытаюсь вести свой ютуб-канал про IT :) youtube.com/channel/UCbBfT…
И это тоже важно! Пусть будет больше ITшных каналов! twitter.com/GamePad64/stat…

@itunderhood Я веду блог про архитектуру решений и мобильную разработку: vvsevolodovich.dev

@itunderhood В свободное от работы время пилю автономного голосового ассистента, не требующего интернета: youtu.be/IAASoRu2ANU
Еще и видеоотчеты! P.S. @ss_korol, рекомендую писать в ТикТоки. Там уже есть ряд достаточно популярных ITшных каналов. Короткие видео как раз самый формат twitter.com/ss_korol/statu…

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

Про себя могу добавить, что творчеством я занимаюсь давно и основательно. В 2019 году меня прорвало, и я написал десяток-полтора стихотворений про IT и Haskell. Некоторые я написал, чтобы потроллить русскоязычное хаскельное сообщество, потому что... были причины :) 2/

Ссылок приводить не стану, кому интересно, найдут сами. А на сегодня всё, встретимся завтра. Будет одна из моих любимых тем - математика. Жаль, что не с кем поговорить на эту тему. Вот и поглядим, почему. /3

эта неделя @itunderhood хороша, даёт как раз ту временную мотивацию, с которой начинаешь вспоминать о заброшенных pet projects
Поощрение саморазвития и мотивирование на интеллектуальные подвиги - моя главная задача! Потому что не заниматься же здесь скучными техническими лекциями. twitter.com/miterial/statu…

Суббота


Вы когда-нибудь задумывались о том, что имеют в виду люди, когда говорят “ты не знаешь алгоритмы данных!” (и поэтому тебе позор)? Подставьте сюда что угодно: “ты не знаешь паттерны проектирования!”, “ты не знаешь физику!”, “ты не знаешь математику!”. 1/

В университете у меня был десяток дисциплин высшей математики. Матанализ, линейная алгебра, теория вероятности, дискретная математика, матлогика и статический анализ, ТФКП и что только не. 3/

И у меня есть диплом, где написано, как я “знаю” математику. “Удовлетворительно”, местами “хорошо”, и нигде не “отлично”. В школе у нас тоже был предмет “математика”, распавшийся на “алгебру” и “геометрию”, и там у меня тоже “хорошо”. 4/

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

Но вопрос гораздо серьезнее. Что это вообще значит - “знать что-то”? Когда начинается “вы уже это знаете”, а когда еще длится “вы этого не знаете”? И что от вас хотят, когда говорят “вы же не знаете математику!” 6/

Математику не знает никто. Это слишком общее положение, и нет никакого стандарта, когда математику еще не знают, а потом, прочитав еще одно предложение или найдя еще одно доказательство теоремы Пифагора, уже начинают ее знать. 7/

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

Математику нельзя “знать”. Ее можно знать в достаточной мере, чтобы что-то. И это касается не только математики, но и других дисциплин тоже. Но в социуме вы, конечно, можете услышать, что Смирнов математику знает, ведь он Филдсовский лауреат. 9/

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

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

(И если вам кто-то говорит, что у вас недостаточно базового образования, чтобы вообще заикаться о математике, - это прозвучит грубо, но - шлите этого человека вместе с подобными стереотипами куда подальше.) 13/

(И я должен еще сказать, что чтобы писать на Haskell полезные программы, знать Лямбда Исчисление, Теорию Категорий или какую-нибудь из теории типов - не нужно.) 14/

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

Так вот. Вам не рассказали главного. Это не математика. Точнее, это не то, что ею может быть. Система математического образования чудовищно ущербна. Она скрывает от вас самое важное в математике. То, что в компьютерных играх называется exploration. 16/

В университете вам дают набор уже установленных знаний, рафинированных и не имеющих какой-либо истории. Однако задумывались ли вы, как эти знания появляются? Что делают математики, когда придумывают и открывают математику? Математика - это игра. 17/

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

И, к сожалению, об этом почти не говорят. Но даже и это не все, что есть математика, в самом общем смысле этого слова. А что же еще есть математика, мы с вами сегодня и поговорим. /19

@itunderhood Всю неделю хочется кинуться изучать что нибудь функциональное erlang или Haskell к примеру 😁
Надо поднажать, чтобы у человека совсем выбора не оставалось! twitter.com/elephmoon/stat…

@itunderhood А в DS ещё грустнее, ибо тебе могут говорить практически все: “ты не знаешь алгоритмы данных!”, “ты не знаешь математику!”, “ты не знаешь статистику!”, “ты не выкатывал в высоконагруженный прод!”, “ты не тренировал новую SOTA-модель!”...
Чет в DS совсем казарма. Людей муштруют не меньше, чем вычислительные модели. twitter.com/AndLukyane/sta…

@itunderhood Люблю математику это не шутка😁
Любите математику, друзья, это не шутка! twitter.com/willowsvet/sta…

Друзья, не волнуйтесь, я не пропал, у меня немножко субботняя активность. Но будет еще тред сегодня, а то и два

Мне нравится сериал “Числа”. Это сериал про гениального математика, выступающего в качестве независимого консультанта полиции. Его познания помогают искать преступников, делать неожиданные умозаключения и приходить к полезным выводам. 1/

А еще больше мне нравится, что в титрах сериала звучит такая фраза: “Математика - это не только уравнения и формулы, это логика и рациональность”. 2/

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

Математика везде и во всем. Математика так хорошо объясняет явления природы именно потому что ход событий не может выйти за пределы логики своего существования. 4/

Очень сложно представить себе вселенную, в которой наравне с математически действующим пространством соседствует пространство нематематическое, в котором отсутствует сама возможность закономерностей, даже выраженная в виде идей. 5/

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

Постулат 2+2=4 осуществляет логику связи между тремя числами двумя операциями. В системах отсутствия логики эта связь не должна существовать, потому что при отсутствии логики невозможны сами математические законы. 7/

Но даже если этот постулат нарушается, он должен нарушаться нелогичным образом. Это не может быть каждый раз одно и то же нарушение, которое строго приводит к другому, но всегда естественному и закономерному постулату, например, 2+2=5. 8/

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

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

Другими словами, в системе с отсутствующей логикой логика должна и отсутствовать, и присутствовать одновременно. В корне такой системы, вероятно, должен лежать и одновременно не лежать некий парадокс. 11/

Конечно, это все спекуляции и досужие рассуждения, и попытки на языке логики нашей вселенной описать вселенную с отсутствующей логикой, скорее всего, провальная идея изначально. 12/

Мы не знаем, является ли наша вселенная принципиально математичной и познаваемой, или же мы видим только некоторую часть, складывающуюся в математически объяснимую систему, а за пределами лежит неизмеримое море из парадоксов. 13/

Физики ищут этот ответ уже давно. Бытует мнение, что самые фундаментальные законы физической вселенной должны выражаться математическим языком, который бы, помимо прочего, выражал саму необходимость быть вселенной такой и никакой другой. 14/

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

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

Одни возможности. Как и сама математика. Математика - это реализовавшаяся возможность существования логически обусловленной системы в рамках нашего человеческого восприятия. /17

В книге “Гарри Поттер и методы рационального мышления” Элиезера Юдковского есть одна воистину потрясающая ситуация. Гарри, овладев времяворотом, придумал изощренный эксперимент, как получить ответ на один из главных вопросов математики: P=NP? 1/

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

Гарри таким образом хотел получить простые множители числа 181 429, то есть, провести факторизацию числа без необходимости ее проводить. Если бы это удалось, то можно было бы получать любой ответ на любую математическую задачу без необходимости ее решать. 3/

Что произошло на самом деле, почитайте сами. Спойлерить эту сцену было бы кощунственно. Да и в целом, книга мне очень понравилась. 4/

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

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

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

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

Так что, господа программисты, если хотите, чтобы у вас по-прежнему было много работы, и за нее платили еще больше, просто решите одну конкретную математическую задачу тысячелетия: P=NP? /9

@itunderhood Во-первых, это типичное решение средствами паттерн матчинга и фп. Во-вторых, гпимрм переоценена, потому что не морская и не свинка (не худлит и не попсаенс)
Очень интересная интерпретация! Эксперимент Гарри - это паттерн-матчинг исхода на конкретную временную петлю. Классно! twitter.com/norrittmobile/…

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

Я даже не уверен, что их нужно упоминать. Но всё же: 3blue1brown mathologer numberphile standupmaths А также материалы Савватеева и других. 2/

Я бы очень хотел порассуждать о разных красивых идеях и математических фактах, но лучше популяризаторов математики я вряд ли расскажу. Тем не менее, наша завтрашняя тема - emergent systems - это одно из проявлений математики, да и сама математика - такая система. 3/

Поговорим об этом и о многом другом в заключительный день. Всем спасибо за внимание! /4

@itunderhood Я правильно понимаю, что вы предлагаете ради наживы погрузить мир в хаос? )
За отдельную плату я этого делать не стану! twitter.com/darkfelex/stat…

@itunderhood Я бы лучше посмотрел как гипотезу Римана докажут
Можно лечь в криокапсулу на двести лет! twitter.com/4rontender/sta…

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

@itunderhood Подскажи, пожалуста, как и где набраться опыта в математике, если изначально ты гуманитарий? Сейчас медленно, но верно пробираюсь через KhanAcademy. Цель - продвинуться до уровня любви и самостоятельности в обучении
KhanAcademy мне понравилась, хотя я слишком далеко не шел. Видел еще похожие ресурсы. Я так думаю, имеет смысл посмотреть, что вообще бывает в математике доступного уровня. Ролики на Ютубе помогут понять, что более интересно по форме, потому что везде свои подходы. 1/ twitter.com/dinakazakevich…

Не будет, пожалуй, моветоном упомянуть книгу Савватеева "Математика для гуманитариев". Название такое, но содержание для всех. (Да и не думаю я, что "гуманитарии" вообще валидная характеристика). 2/

Очень людям нравится теория чисел. Для обычного человека 1, 2, 3, 4, 5... - просто числа, все равны. Но внезапно оказывается, что среди них есть более фундаментальные, и на них строятся все остальные, без исключения и со строгой необходимостью. Отсюда растет много красивого. 3/

Можно зайти со стороны теории групп. Идея там относительно простая, но какова история этой теории! И каковы последствия! А потом посмотреть, как теория групп работает в разных моментах жизни (кубик Рубика, например) 4/

Различных путей в математике очень много. Можно, например, посмотреть материалы про число Грэма и вдохновиться на изучение степеней. Или, что еще более полезно, взять окружность и увидеть, как за ней кроется безумно богатый мир числа Пи.

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

А число e? До него тоже можно добраться десятком способов, самых неожиданных. Вот почему оно такое? И есть ли еще числа, столь же фундаментальные и вездесущие как Пи и e? Может быть, "золотое сечение"? Загадка. /7

А история с так называемым хроматическим числом плоскости? Красиво же! В общем, помимо, скажем прямо, массивных академических дисциплин: матан, линейка..., есть куда более маленькие и локальные истории, с которых можно начать, и двигаться, как нравится. 8/

@itunderhood Не забудьте и про 0! Почему третье тысячелетие началось не с 2000 года, а с 2001? Потому что не было нулевого года, был сразу первый! А нулевого не было потому что не было такой концепции в момент подсчёта текущего года от рождения Христа.😄
Да, изобретение "ничего" очень сильно продвинуло человеческую цивилизацию. Ох уж эти математики. Даже из "ничего" выведут пользу. twitter.com/terbiyarchitec…

Воскресенье


Роман Азимова “Конец Вечности” стал для меня замечательной метафорой главного из моих жизненных интересов, который влияет на то, как я живу, какие книги читаю, в какие игры играю, каким творчеством занимаюсь, зачем изучаю то, что я изучаю. 1/

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

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

Логика существования таких мест столь отлична от того, к чему мы привыкли, что для их изучения приходится мыслить нестандартно и искать необычные решения. 4/

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

Это то, что разработчики игр иногда называют emergent gameplay. 6/

Чаще всего emergent gameplay появляется, когда в игре есть небольшое количество функций, сочетание которых приводит к комбинаторному взрыву возможностей. Таков, например, Minecraft с его Тьюринг-полным языком redstone. 7/

Такова игра Dwarf Fortress, в которой также есть несколько способов сделать тьюринг-полную систему и запрограммировать на ней что угодно. Но в отличие от Майнкрафта, разработчики даже не думали о том, что несколько странно сочлененных элементов игры могут быть Тьюринг-полны. 8/

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

Часто приводят еще один пример игры, в которой была доказана Тьюринг-полнота, игры, чьи правила столь просты, что невероятно, как из них вообще может получиться столь сложный и глубокий мир. Я говорю, конечно же, о клеточном автомате “Игра Жизнь” Конвея. 10/

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

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

И, если смотреть еще глубже, то мне нравится не только и не столько сама эмерджентная система, сколько ее математическая красота, поражающая воображение. 13/

Ведь и математика сама по себе - такая же emergent system, и даже более того, мы можем найти тысячи таких систем внутри самой математики. Тысячи дверей в необычные, нестандартные и удивительно богатые миры. /14

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

Посмотрите, например, что такое ЕГОГГОЛОГИЯ, и вы узнаете историю, как был открыт совершенно неожиданный и богатый мир внутри обычного калькулятора, и как непросто оказалось его изучить. 2/

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

“Райские сады” интересны уже тем, что, открыв необычный мир в игре жизнь, мы никак не ожидали увидеть что-то вне его, другое измерение, другое пространство, недоступное для изучения но доказано существующее. 4/

Меня давно занимает вопрос, сколько “райских садов” еще не открыто в других системах, и что будет являться их аналогом в каждом конкретном случае. 5/

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

А вот что будет аналогом “райских садов” для игры Го, для меня остается загадкой. 7/

Уверен, есть такие карты мира Dwarf Fortress, которые можно создать в редакторе, которые будут стабильными и даже производить какую-то полезную работу, но которые невозможно получить в ходе игры. И было бы очень забавно посмотреть, как они выглядят. 8/

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

Это последний содержательный тред в itunderhood. Я еще оформлю тред с тредами и выложу к концу дня. Было очень здорово, спасибо за ваши лайки и комментарии! Желаю всем радости познания! Ваш @graninas. /10

Друзья, я бы мог еще долго писать в научно-популярном стиле и на эту тему, и на другие темы тоже. Мог бы еще много интересного рассказать, о чем узнал сам путем экспериментов и изучения материалов. 1/
Два сегодняшних треда: twitter.com/itunderhood/st… twitter.com/itunderhood/st…

Всем привет! На этой неделе с вами я, Александр Гранин, @graninas. Возможно, вы бывали на моих докладах, читали мои статьи, а кто-то, вероятно, даже приобрел мою книгу Functional Design and Architecture, повествующую о том, как на Haskell писать реальные программы.
Все треды @graninas План: twitter.com/itunderhood/st…

Позвольте пару слов о том, зачем я написал "Functional Design and Architecture". 1/
День 1 "Что делать, если ты автор книги", 6 тредов twitter.com/itunderhood/st… twitter.com/itunderhood/st… twitter.com/itunderhood/st…

Параллельно с FDaA Second Edition, я также пишу свою вторую книгу - Pragmatic Type Level Design. И если первая предлагает собственную методологию разработки приложений на Haskell, то вторая должна переосмыслить то, как мы используем систему типов. 1/

И не сомневайтесь, каждый из них начинал с малого, и двигался вперед понемногу, и часто заходил в тупик. Но 10 лет - это очень, очень много. За столько лет каждый может сделать себя, создать что-то важное и большое. 7/
День 2 "Еще не поздно стать профессионалом!", 4 треда twitter.com/itunderhood/st… twitter.com/itunderhood/st… twitter.com/itunderhood/st… twitter.com/itunderhood/st…

А сейчас я расскажу, как осознанность влияет на мое творчество, как она помогает делать доклады, писать книги, и в целом - формулировать мысли именно в том ключе, в котором мне нужно. 1/
День 3 "Синяя или красная? Ваш путь в IT", 2 треда twitter.com/itunderhood/st… twitter.com/itunderhood/st…

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

День 5 "Творчество в IT и не только" - без тредов День 6 "Это вообще законно - любить математику и не знать ее?", 5 тредов

KhanAcademy мне понравилась, хотя я слишком далеко не шел. Видел еще похожие ресурсы. Я так думаю, имеет смысл посмотреть, что вообще бывает в математике доступного уровня. Ролики на Ютубе помогут понять, что более интересно по форме, потому что везде свои подходы. 1/ twitter.com/dinakazakevich…

Друзья, я бы мог еще долго писать в научно-популярном стиле и на эту тему, и на другие темы тоже. Мог бы еще много интересного рассказать, о чем узнал сам путем экспериментов и изучения материалов. 1/
День 7 "Emergent systems", 2 треда twitter.com/itunderhood/st… twitter.com/itunderhood/st…

Ссылки