codemonsters.log
572 subscribers
181 photos
19 videos
106 links
| Просто рассказываю про
| Научно обоснованный подход
| Рациональной и качественной разработки софта
@maxology
Download Telegram
Не предавай себя

Моё важное правило:
Вокруг много контента плохого качества.
Концентрируйся на качественных примерах, ищи первоисточники.
Предпочитай стиль и качество.
У меня получилось собрать практики в эффектное комбо и применить? Да.

Вот, что вышло вместо негатива:

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

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

2 Как не стоит писать код 

3 С чего начинать писать тесты при работе с легаси

Код финалочки прорастает здесь https://git.codemonsters.team/guides/mq-rest-sync-adapter/-/tree/feature/02-vertical-slice?ref_type=headsб

Начал писать финальный акт, написал 77 страниц с картинками, 2600 слов.
Перечитал и понял – нужна другая структура.
Фигня.
Все нужно переделать.
Нужно проще.

Не так мне математику объяснял мой гениальный препод.

Пришло время написать электрокнигу.

Давно планировал. Наконец-то родилась структура. 🔥

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

P.S. Ваня, спасибо тебе. Ты меня вдохновляешь.

#codemonsterslog #book
#software_craftsmanship
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍62🥰1
😟 Пишу Электрокнигу
с картинками :)


Опишу базовые принципы эффективного проектирования надежного софта.

Для меня это очень интересный эксперимент, давняя мечта.

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

Много интересных умных непростых книг.
Неужели столько нужно переварить, чтобы писать надежный понятный код?
Ответ ждёт меня на пути и я, надеюсь, ты мне поможешь в этом безумии разобраться. )
Кажется я нашел те самые полезные 20 из 100, которые бустанут тебя.

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

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

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

Зачем мне ждать пока отработают 100 тестов на тест-контейнерах по 20 мин. Как я могу быстрее проверить качество работы?»

Буду дропать по кускам главы здесь для монстров кода.

Поможешь ее сделать понятней и качественней?

Не предавай код 😘

#book #codemonsterslog
#software_craftsmanship
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22🤩2🍾2
Platform Engineering (PE) — социально-техническая дисциплина.

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

Исследование показало, что пользователи внутренних платформ имеют на 8% выше индивидуальную производительность и на 10% выше производительность команд.



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

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


Развиваем inner source и работаем с пользователями.

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


Хорошая статья:
State of DevOps 2024. Platform Engineering

Отдельно поговорим про shifl left и shift down

#devops #codemonsterslog
#software_craftsmanship
Сопротивление шуму, поиск тишины

Если бы мне было пофиг на то, что я делаю и оставляю после себя в гите – я бы не нашел ответы, не научился бы писать надежный код и понятные тесты.

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


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


Знай когда пошуметь

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

Бывает так, что пока кричат чайки умные интроверты афигевают от этого дерьма и делают спокойно свою работу.
Оберегают команду, делают рефакторинг людей, кода.
Умных бывает не сразу заметно, но заметен результат их работы.

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

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

У нас становится тише на болючих берегах, это радует.
Работы все ещё много.

#codemonsterslog
👍13❤‍🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
Когда согласился выступить перед джунами, прочитать лекцию для студентов.

Муд:

На каком с ними языке говорить. 🤪 Делулу буду для них с моей 🤳 Пов или 😮 FR

#codemonsterslog
🤣10👍1🤔1💯1
Шифт-Лефт удел для лохов (нет)

Крайности платформенного бога в статье клауд блога

В моем тексте есть пост-ирония

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

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

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

Обычно нужно:
| получить один json
| затем получить второй json,
| далее породить третий json на базе первого и второго
| отправить чудесный джэйсонс в очередь
Профит.

Сходить на java конференцию, послушать про тюнинг хибера.
Схоидить в другой банк, сделать same shit.
Это жизнь. Логи пишут только непонятно как и что - это пусть разбирают SRE, у них много мозгов в голове и им понятно как работает сложный суперапп в суперкорпе.

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


Я часто повторяю:
Прогерам хватает часто 20% языка, чтобы решать мэйнстрим задачи.
Часто овердохрена знаний инструментов только усложняют решения. Эта вечная погоня за Кафкой, который все пишет процесс хоть и дописал его давно.
Вместо того, чтобы требовать большего от своих текущих инженерных ресурсов — изучения новых языков, платформ и облаков — лидерам технологий необходимо создать команды по разработке платформ, которые будут относиться к своим платформам как к продуктам. Оптимизация начинается с сокращения когнитивной нагрузки на разработчиков и устранения ненужных обязательств, которые отвлекают их от инноваций.


Я за снижение когнитивной нагрузки.

У продуктового инженера сохранится знание продукта.
Инженер уже не знает как устроен http и как работает DNS.
Или знает? Ему это нужно или нет?

И внизу в крови машин под стук многогранных сердец платформ в масленистых бордовых накидках снуют редкие инженеры адептус механикус, которые уже утеряли знание предков и веру в людей.
Молятся Богам Машин и Богам Облаков.
Чтобы не Упало Облако да не слетела Красная Шляпа платформы.

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

Есть над чем подумать.
Думать нужно над балансом.
#devops #муд
👍8🤣3🤓2🤯1👻1
Герои из универа

Моя первая игра была «Принц Персии» не ibm у папы на работе.
Потом была денди.

StarCraft я запомнил особенно тепло.

Когда я учился в универе на 1-м курсе у меня не было компа.
У папы был рабочий ноут на 166mmx.
Я помню как мне взорвала мозг игра «warcraft 2»

Это было ликование и ожидание мультов после победы.

Я купил диск StarCraft и моя жизнь изменилась навсегда.
Зерги, нужно больше
SCV и кристаллов, «SCV Good To Go Sir»,
морпехи, бессонные ночи, Веспен газ.

Как бы я хотел ещё раз испытать это чувство новизны от динамики StarCraft.
Синематики.
Именно синематики warcraft меня изумили, а Start Craft полностью заворожили.
Я так хотел, чтобы вышла игра от 1-го лица и вышел изумительный Space Marine 2.
Свершилась мечта студентика.

Я бегу по окопам и сражаюсь с ксеносами, мама


И после я пришел к вахе.

Тебе нравится RTS?
Какие игры тебе взорвали мозг?

Я помню ещё одну игру типа метроида на денди и ещё кайф, когда игра с тобой общается и ты учишься всему сам у игры, а повторить это ощущение уже не могу. Оно навсегда со мной.

#codemonsterslog
🔥86😁1
Alex Xu дропнул интересное в X
The 9 Algorithms That Dominate Our World

1.Sorting
2.Dijkstra’s Algorithm
3.Transformers
http://4.Link Analysis
5.RSA Algorithm
6.Integer Factorization
7.Convolutional Neural Networks
8.Huffman Coding
http://9.Secure Hash Algorithm

#codemonsterslog
👍41🔥1🤔1
Пиши

Американская поэтесса и мемуаристка Майя Анжелу признавалась:
«Когда я пишу, я пишу. А потом муза, будто понимая, что я настроена серьезно, говорит: "Хорошо-хорошо, я иду».

Без усилий
#цитата #книга
7👍3🔥1🤔1
Супермегаукулеле

Как сделать проще? 💻🗺

Прожорливая и теплая машина

В комменты можно залить расчет сколько нужно Киловатт и как тепло будет с машиной рядом

The machine

https://fe2.net/p/themachine/

#themachine #hardware #llm
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔3
Создавай

Плодовитая Маргарет Этвуд, автор восемнадцати сборников поэзии, восемнадцати романов, одиннадцати книг в жанре нон-фикшен, девяти сборников коротких рассказов и восьми детских книг, однажды напи сала: «Слово за словом за словом это сила». Даже в пустых словах силы больше, чем в чистом листе.
В действительности в них много силы, потому что без пустых слов невозможен будущий magnum opus".


#цитата #книга #безусилий
💻 друг написал хорошую выжимку в sre_guild

SRE vs. DevOps: В чем разница? 🤔

Привет, коллеги! Сегодня поговорим о том, чем же SRE отличается от DevOps?

Когда я только начинал разбираться в теме это был один из первых вопросов который я «загуглил». Иногда трудно понять где заканчивается одно и начинается другое. Давайте разберемся!

🔗 Связь SRE и DevOps:

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

🔑 Ключевые различия:

* DevOps: Это образ мышления, ориентированный на культуру сотрудничества, автоматизацию и непрерывную поставку ПО. DevOps говорит нам "что нужно делать".
* SRE: Это конкретный подход, описывающий как именно достичь целей DevOps, с фокусом на надежность и масштабируемость систем. SRE отвечает на вопрос "как это реализовать на практике".

Тут я пишу про DevOps в его изначальном понимании. Истинный смысл DevOps сегодня часто теряется, когда вместо интеграции между разработкой и эксплуатацией создается отдельная команда "DevOps", которая по-прежнему функционирует как изолированная единица. Имеем что имеем. 🤷🏻‍♂️

🤝 Роль SRE в DevOps-команде:

SRE-инженеры — это важная часть DevOps-команд. Они привносят инженерный подход к операционным задачам, автоматизируя рутинные процессы и используя данные для принятия решений. SRE следят за тем, чтобы системы были надежными, производительными и масштабируемыми.

🎯 Подходы к работе:

- DevOps-инженер: 
Работает над ускорением процессов, оптимизирует путь от разработки до продакшена.

- SRE-инженер: 
Обеспечивает стабильность и надежность системы, применяя инженерные принципы и автоматизацию.

В то время как DevOps-инженер стремится к скорости поставки, SRE-инженер обеспечивает надежную работу системы. Они работают вместе, чтобы достичь общей цели: быстро и качественно выпускать надежное ПО.

🚀 Пример: Как SRE обеспечивает надежность в рамках DevOps-процесса:

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

1. Определяет SLO/SLI: устанавливает цели по доступности и производительности.
2. Автоматизирует мониторинг: внедряет системы для отслеживания этих показателей.
3. Автоматизирует реагирование на инциденты: создает плейбуки для автоматического восстановления сервиса в случае сбоя.
4. Анализирует данные: использует метрики для выявления узких мест и оптимизации системы.

Таким образом, SRE помогает команде DevOps не просто быстро разрабатывать и развертывать ПО, но и гарантировать его надежную работу в долгосрочной перспективе.

В заключение:

SRE и DevOps — это не конкуренты, а скорее две стороны одной медали. DevOps задает направление, а SRE дает конкретные инструменты и методы для достижения успеха.

Что почитать:
Статья от Atlassian и от IBM на тему.

До связи!

😘 sre_guild

#SRE #DevOps #база #codemonsterslogs
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥3👏1
Как Максим решил на ультах поиграть в Cyberpunk 2077 и вспомнил Horizon Zero Dawn

Пятница. Развлекаемся в комментах.

Я считаю обе игры достойными творениями индустрии и в некотором смысле кусочком современного визуального искусства

История одного компа

#codemonsterslog #chill
🔥10❤‍🔥2🍾2😁1
Какая Хорошая CAPTCHA 👋
Кэпча позволяет вам играть в DOOM®, чтобы доказать, что вы человек😏🔥

Проект работает, используя Emscripten для компиляции минимального порта Doom в WebAssembly и обеспечения взаимодействия между циклом выполнения игры на основе C (g_game.c) и пользовательским интерфейсом CAPTCHA на основе JavaScript.

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

#chill #link #netrunner
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍2
Чтобы стабильно развиваться и эффективно программировать важно уметь оставаться в фокусе и наводить фокус в команде. Код - это ещё и коммуникация и распределение энергии. Часто у нас с этим проблемы и мы считаем это нормой.

💬2024-й выдался у меня невероятно сложным и продуктивным.

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

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

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

Первый раз перевозил их из Белгорода, второй раз перевозил родителей на новую квартиру в момент неистовой яростно сложной ситуации с одной командой. Или с тремя? С тремя.
Я помню, что некоторые моменты делал как в тумане и вспоминал шедевр Феллини «Восемь с половиной».

Слушаю. Какие проблемы у нас?
Ещё одна? Опять конфликты? Через 30 мин ещё один звонок, проблема во второй команде. Класс. Туман. Потом разговор с отцом, который хочет вернуться.

Не буду гадать, но хочется 😆
Как бы я поступил в той или иной ситуации, если бы я прочитал эту книгу.

После ретро с самим собой мне эта книга помогла вернуться в ритм.
Хочу спойлерить. (Не буду)

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

К прочтению рекомендую.
Экономия на дантисте гарантирована.

жизни не обязательно быть такой сложной и запутанной, какой мы ее подчас делаем. Каждый из нас, как писал поэт Роберт Фрост, «Но должен я вернуться в срок / И до ночлега путь далек»


.

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

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

Погнал писать код.

#codemonsterslog #безусилий
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤‍🔥6
📛 Code и доверие
Ты доверяешь своему коту?

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

ВсеспутанноиНепрозрачноВязкоПахнетПлохо

Чистый код понятен, прост, предсказуем.

Качественная работа, качественный код - моя страсть. Как так вышло 😟
Ладно пусть так.

Также трепетно я отношусь к поиску людей вокруг себя.

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

Тот, за кем не надо постоянно приглядывать; кто понимает задачи команды и не меньше вашего заботится о качестве их исполнения.

Три кита характера человека с которым комфортно работать:
🍽 Честный, умный, инициативный.


при отсутствии первого качества остальные два приводят к непредсказуемым последствиям.

Три кита характера кода:
- проектирование на типах (type driven), value object — основа целостного кода. Честный код 😈

- бизнес логика отделена от операций вывода-вывода.
Луковичная архитектура прекрасно иллюстрирует этот пункт.
Умный код 🧙‍♂️

- все методы/функции чистые, возвращают на случай сбоя two track type Result<value, error>
Инициативный код 🛍

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

#codemonsterslog #code #безусилий
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9🤔3💯2👍1