Forwarded from darerror
итак, отзыв на кабанчика
«Высоконагруженные приложения. Программирование, масштабирование, поддержка» Клеппман Мартин
книга в оригинале была прочтена без надлежащей сложности: Мартин очень умело доносит свои мысли. шикарный труд. но этим я никого не удивлю. хочу пояснить, почему он оказался хорош для меня:
> в тех вещах, которые я знаю, я смогла получить еще больше широты (как в учебнике истории)
> в тех вещах, в которых я осведомлена должным образом, я смогла получить более качественное понимание (например, идеальнее описания проблем уровней изоляции не встречала: после Егора Рогова целая услада)
> в тех вещах, в которых у меня не было опыта, (например, data engeenering), я смогла получить понятное представление (забавно, что в этот же момент под эти главы у меня на работе сложилась практика)
книга не предлагает рецептов, а развивает умение анализировать и принимать обоснованные решения — ключевой навык опытного инженера.
очень рекомендую для мидлов и выше.
и очень рекомендую в оригинале (в противном случае будьте готовы к тому, что json - это подмножество java) .
для кого:
1. основная аудитория - бэкендеры (особенно те, кто работает с распределёнными системами)
2. архитекторы (что выбрать и почему, что нужно учитывать)
3. devops/sre (важно понимать, почему консенсусные алгоритмы могут "зависнуть", что такое кворум, как поведение распределённой системы зависит от сети, времени и задержек)
4. техлиды/руководители проектов
5. системные аналитики (книга помогает понимать ограничения и компромиссы, с которыми сталкиваются разработчики, объясняет что можно ожидать от систем, а что — нет, помогает лучше формулировать технические требования и ограничения в системных документах)
6. дата-инженеры (особенно зайдут последние главы)
а чем вас покорил кабанчик и почему?
«Высоконагруженные приложения. Программирование, масштабирование, поддержка» Клеппман Мартин
книга в оригинале была прочтена без надлежащей сложности: Мартин очень умело доносит свои мысли. шикарный труд. но этим я никого не удивлю. хочу пояснить, почему он оказался хорош для меня:
> в тех вещах, которые я знаю, я смогла получить еще больше широты (как в учебнике истории)
> в тех вещах, в которых я осведомлена должным образом, я смогла получить более качественное понимание (например, идеальнее описания проблем уровней изоляции не встречала: после Егора Рогова целая услада)
> в тех вещах, в которых у меня не было опыта, (например, data engeenering), я смогла получить понятное представление (забавно, что в этот же момент под эти главы у меня на работе сложилась практика)
книга не предлагает рецептов, а развивает умение анализировать и принимать обоснованные решения — ключевой навык опытного инженера.
очень рекомендую для мидлов и выше.
и очень рекомендую в оригинале (
для кого:
1. основная аудитория - бэкендеры (особенно те, кто работает с распределёнными системами)
2. архитекторы (что выбрать и почему, что нужно учитывать)
3. devops/sre (важно понимать, почему консенсусные алгоритмы могут "зависнуть", что такое кворум, как поведение распределённой системы зависит от сети, времени и задержек)
4. техлиды/руководители проектов
5. системные аналитики (книга помогает понимать ограничения и компромиссы, с которыми сталкиваются разработчики, объясняет что можно ожидать от систем, а что — нет, помогает лучше формулировать технические требования и ограничения в системных документах)
6. дата-инженеры (особенно зайдут последние главы)
а чем вас покорил кабанчик и почему?
❤🔥3❤2👍1
Forwarded from darerror
прочитала «Чистую архитектуру» меньше, чем за неделю — шла она очень легко.
наверное, потому что я запоздала с ней. книга — про погружение в архитектурное мышление, идеально на уровне junior/middle. сейчас — всё понятно, очевидно, немного изъезженно и старовато местами.
если коротко, «Чистая архитектура» — это набор принципов, правил и рекомендаций о том, как строить долгоживущие системы. как отделять бизнес-логику от фреймворков, как не слипаться с базой данных, как не превращать контроллеры в болото. много про зависимостями, границы, инверсию, SOLID и круги.
вообще, «чистый код» Дядюшки Боба мне явно больше зашел в свое время. конечно, вокруг него сейчас много хейта ходит, но холивар на то и холивар. но «совершенный код» Макконнелла я бы прочитала в будущем все-таки для сравнения.
кто читал? как вам?☀️
наверное, потому что я запоздала с ней. книга — про погружение в архитектурное мышление, идеально на уровне junior/middle. сейчас — всё понятно, очевидно, немного изъезженно и старовато местами.
если коротко, «Чистая архитектура» — это набор принципов, правил и рекомендаций о том, как строить долгоживущие системы. как отделять бизнес-логику от фреймворков, как не слипаться с базой данных, как не превращать контроллеры в болото. много про зависимостями, границы, инверсию, SOLID и круги.
“Если вы думаете, что хорошая архитектура стоит дорого, попробуйте плохую архитектуру”
“Модуль должен иметь одну и только одну причину для изменения”
“В один компонент должны включаться классы, изменяющиеся по одним причинам и в одно время. В разные компоненты должны включаться классы, изменяющиеся в разное время и по разным причинам”
“Главная стратегия - как можно дольше иметь как можно больше вариантов”
“Хороший архитектор максимизирует количество непринятых решений”
вообще, «чистый код» Дядюшки Боба мне явно больше зашел в свое время. конечно, вокруг него сейчас много хейта ходит, но холивар на то и холивар. но «совершенный код» Макконнелла я бы прочитала в будущем все-таки для сравнения.
кто читал? как вам?
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from darerror
смотрю сейчас большое свежее интервью одного из основных мейнтейнеров Postgres и сооснователя Postgres Pro 🐘
нравится слушать именно такие подкасты на стыке простых жизненных вопросов и технической составляющей
подобные истории вдохновляют. оставляю сноску из описания видео:
нравится слушать именно такие подкасты на стыке простых жизненных вопросов и технической составляющей
подобные истории вдохновляют. оставляю сноску из описания видео:
поговорили про то, кто стоял у истоков Postgres, проблемы мирового опенсорса, как изменились отношения среди Postgres сообщества после начала СВО. А также про то, какое место в этих процессах занимал Олег Бартунов, про компанию Postgres Pro, сколько зарабатывает компания и в частности Олег Бартунов в год, про изменения с приходом AI, а еще зачем он писал Сергею Брину в 1995 году и почему нужно вкладываться в обучение сегодня, чтобы иметь сильное IT в России завтра
Forwarded from darerror
когда только начинаешь карьеру в разработке, сложно понять, на что опираться. особенно если кажется, что все вокруг умнее, быстрее, опытнее.
с самого начала работы я получала очень тёплую и честную обратную связь от коллег. благодаря этому у меня выстраивалась опора — на себя, на процесс, на рост. ниже — пару выдержек из отзывов.
«коллеги очень высоко оценили твою активность, инициативность и желание качественно делать задачи»
«ты справляешься с уже достаточно сложными задачами, проявляешь инициативу и не боишься брать на себя ответственность»
«успешно решаешь сложные проблемы, задаешь правильные вопросы, стремишься к лучшему коду»
«отмечают твой вклад в разработку фич, внимание к деталям и постоянное стремление улучшать решение»
«серьёзно подходишь к проектированию, выстраиваешь коммуникации с командой и заказчиком, быстро адаптируешься и делаешь качественный код»
эти слова давали мне не только поддержку, но и пищу для анализа: а что именно я делаю правильно? а что работает?
сформировались принципы, которые я бы с радостью отдала себе-джуну в первый рабочий день. делюсь ими здесь.
1. всегда проверять реализацию
даже если всё супер и тесты зелёные — всё равно делать смоук-проверку руками. лучше я поймаю баг, чем QA будет разбираться, почему не работает. *в некоторых командах это является зафиксированным процессом, а в некоторых - нет
2. быть пессимистом — полезнее, чем оптимистом
научись сразу думать о худших сценариях. особенно в сроках и оценках. лучше успеть раньше, чем провалить дедлайн. без навыка оценивать дальше никуда.
3. самостоятельность — мышца, которую надо качать
если нет идей — это не повод молчать. я старалась озвучить хоть что-то, и старшие коллеги подхватывали. не страшно быть неуверенной — страшно не учиться на этом.
4. не обижаться на «тщательное» ревью
знаю, что некоторые воспринимают ревью как критику, но это в корне не так. это не про «ты плохо сделал», а про то, как сделать лучше. хорошее ревью - это подарок. я всегда просила меня жестче ревьюить.
5. нужно бороться с иллюзией «все всё знают, а я — нет»
вечно кто-то да обсуждает какую-нибудь сортировку креветками. да, большой пласт незнания на старте - это естественно, но существует категория людей, которая буквально вчера прочитала что-то заумное и редкое на хабре и теперь хочет, чтобы об этом знал весь мир. никто не знает всё. часто задачи специфичны. это просто иллюзия восприятия.
6. ошибаться — нормально
«человек, который ошибался много и часто – но никогда не совершал одну и ту же ошибку дважды, – более надежен, чем тот, кто не ошибался никогда»
— если доделываю задачу вечером, утром обязательно перепроверю на свежую голову
— если не знаю, с чего начать, - пытаюсь сформулировать вопрос: ответы самому себе часто приходят в процессе формирования вопроса другому
— сначала пишу код средне, чтобы просто работало. а потом улучшаю до состояния «нравится»
если пост понравился - оставляйте реакцию
Please open Telegram to view this post
VIEW IN TELEGRAM
❤22 1
https://freedium.cfd/ стал однажды моим большим открытием в бесконечном скроллинге медиум страниц
🔥3
зачем?
сейчас я работаю на проекте с микросервисной архитектурой, но так было не всегда. до этого у меня был опыт с SOA. понятно, что ни одна архитектура не является универсальной — у каждой свои плюсы и минусы. но дело не в сравнении подходов.
хочется не просто уметь пользоваться инструментом, а понимать, зачем он был создан, какие задачи решает. даже если сейчас очень многое делается с помощью k8s.
Spring Cloud — это не просто фреймворк. это набор обёрток над проверенными архитектурными решениями: Resilience pattern, API Gateway pattern, Distributed events, dynamic configuration и другие.
изучение этих проектов даёт не только новые инструменты для решения нетривиальных задач, но и понимание того, как выстраивать систему более осознанно:
— как автоматизировать CI/CD с помощью contract-тестирования
— почему используют Vault для безопасного хранения секретов
— какие trade-off’ы стоят за выбором: Bus vs manual refresh
это помогает делать более обоснованный выбор решений, понимать чужой код глубже и трезво оценивать уровень зрелости проектов.
в конечном счёте, цель — прокачка архитектурного мышления.
не просто использовать аннотации, а видеть за ними реальные паттерны, инженерные компромиссы и логику. в том числе — лучше понимать open source и, возможно, однажды внести вклад в него
Please open Telegram to view this post
VIEW IN TELEGRAM
Spring Cloud
Level up your Java code and explore what Spring can do for you.
👍3❤2🔥2🗿1
девопсы, к вам вопрос: что делали разработчики, что вас прямо выбешивало??
❤2
моя жизнь в разработке сейчас очень насыщенная — и это настоящая отдушина🧋
особенно когда то, что ты делаешь «в рутине», прокачивает тебя и снаружи
если коротко — около 80% моего времени уходит на технические задачи. осенью, скорее всего, возьму паузу в сторону бизнеса, но пока держу курс на «харды». чуть подробнее:
а) продолжаю заниматься миграцией с oracle на postgres без простоя. у нас есть четкий поэтапный план по всем микросервисам, проработанный лично мной. где-то я просто отслеживаю прогресс как фича-лид, где-то пишу руками. стараемся давать всем поучаствовать — чтобы знания не застаивались. для миграции данных используем debezium, и недавно я занималась оптимизацией kafka: настраивала сжатие и schema registry.
б) изначально не очень понравилась система отчетности в проекте: видно было, что там много узких мест, но времени обычно не хватает. сейчас наконец дошли руки до анализа и поиска реальных точек улучшения. про техдолг не забыли — и это радует.
в) в следующем спринте беру миграцию одного из микросервисов с java 11 на 17. часть уже перевели, я решила не упускать возможность и тоже выцепила задачку — хочу набить руку в этом процессе. он идет параллельно с переходом на postgres, но там другой фича-лид, мой коллега.
г) по мелочи — баги, продовые вопросы, локальные задачки.
вообщем, очень кайфую от работы❤️
особенно когда то, что ты делаешь «в рутине», прокачивает тебя и снаружи
если коротко — около 80% моего времени уходит на технические задачи. осенью, скорее всего, возьму паузу в сторону бизнеса, но пока держу курс на «харды». чуть подробнее:
а) продолжаю заниматься миграцией с oracle на postgres без простоя. у нас есть четкий поэтапный план по всем микросервисам, проработанный лично мной. где-то я просто отслеживаю прогресс как фича-лид, где-то пишу руками. стараемся давать всем поучаствовать — чтобы знания не застаивались. для миграции данных используем debezium, и недавно я занималась оптимизацией kafka: настраивала сжатие и schema registry.
б) изначально не очень понравилась система отчетности в проекте: видно было, что там много узких мест, но времени обычно не хватает. сейчас наконец дошли руки до анализа и поиска реальных точек улучшения. про техдолг не забыли — и это радует.
в) в следующем спринте беру миграцию одного из микросервисов с java 11 на 17. часть уже перевели, я решила не упускать возможность и тоже выцепила задачку — хочу набить руку в этом процессе. он идет параллельно с переходом на postgres, но там другой фича-лид, мой коллега.
г) по мелочи — баги, продовые вопросы, локальные задачки.
вообщем, очень кайфую от работы
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤30❤🔥8👍6
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥41❤7💯2
потихоньку появляются темы докладов предстоящего Joker🍇
уже для себя отметила парочку интересных.
но встал вопрос: ребята-разработчики (бэк), а как у вас отношения с девопс-обязанностями?
сейчас прикреплю опрос
уже для себя отметила парочку интересных.
но встал вопрос: ребята-разработчики (бэк), а как у вас отношения с девопс-обязанностями?
сейчас прикреплю опрос
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8
касаемо меня: прожала 3 вариант.
почти каждый день общаюсь с devops-инженерами на работе. базовое понимание их процессов сильно помогает говорить на «одном языке».
не считаю, что разработчику нужно уметь это все, но в некоторых проектах роли всё-таки смешивают — и это сразу можно считать по вакансиям.
у самой есть интерес чуть глубже разобраться в практической части. возможно, ближе к четвёртому кварталу что-то поделаю руками — просто чтобы расширить картину мира.
но цели идти в devops-команду нет.
всё-таки проды, падающие в три ночи, — это не та романтика, которая меня пленит😒
почти каждый день общаюсь с devops-инженерами на работе. базовое понимание их процессов сильно помогает говорить на «одном языке».
не считаю, что разработчику нужно уметь это все, но в некоторых проектах роли всё-таки смешивают — и это сразу можно считать по вакансиям.
у самой есть интерес чуть глубже разобраться в практической части. возможно, ближе к четвёртому кварталу что-то поделаю руками — просто чтобы расширить картину мира.
но цели идти в devops-команду нет.
всё-таки проды, падающие в три ночи, — это не та романтика, которая меня пленит
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👍7🤝1
всё чаще сталкиваюсь с тем, что рефакторинг — это задача, которую всегда можно отложить. она вроде бы важна, но на фоне продуктовых фич или багфиксов теряет приоритет.
и это ловушка. потому что когда накопившийся долг взрывается, правки начинают вноситься в несколько мест, флоу становится непрозрачным, а тестировщики получают задачу “мы поправили тут и тут, но проверьте на всякий случай всё”.
в итоге трудозатраты растут, а доверие падает.
мне близко правило “сделай чуть лучше, чем было до тебя”. не перегружая, просто оставить после себя место чище.
и я уже не раз видела, как это “чуть-чуть” срабатывает. и спустя месяц — оказывается, что именно оно помогло не утонуть.
а как у вас с рефакторингом?
и это ловушка. потому что когда накопившийся долг взрывается, правки начинают вноситься в несколько мест, флоу становится непрозрачным, а тестировщики получают задачу “мы поправили тут и тут, но проверьте на всякий случай всё”.
в итоге трудозатраты растут, а доверие падает.
мне близко правило “сделай чуть лучше, чем было до тебя”. не перегружая, просто оставить после себя место чище.
и я уже не раз видела, как это “чуть-чуть” срабатывает. и спустя месяц — оказывается, что именно оно помогло не утонуть.
а как у вас с рефакторингом?
❤32
близка мне концепция «жим-жим» — «отдых» в работе.
смысл простой: стабильно беру себе такую задачу, что и страшно, и интересно. когда не до конца понимаешь, что делать, и от этого внутри чуть ёкает. когда нужно выжать из себя больше, чем обычно, за те же часы. но зато — растёшь.
а между такими «жим-жимами» — отдых. лёгкие задачи, поток быстрый, почти не устаёшь, но всё равно делаешь полезное.
сейчас у меня снова прокачка мышц: перевожу микросервис на более свежую Java.
хоть перечитай все статьи на эту тему, но всё равно опыт будет у всех разным.
приложение просто не стартует. «не могу найти бин» — какой-то системный. без конкретики. вот и сиди, верти этот кубик рубика.
нравится!
а какой у вас подход к рабочим задачам? просите сами или берете что дают?
смысл простой: стабильно беру себе такую задачу, что и страшно, и интересно. когда не до конца понимаешь, что делать, и от этого внутри чуть ёкает. когда нужно выжать из себя больше, чем обычно, за те же часы. но зато — растёшь.
а между такими «жим-жимами» — отдых. лёгкие задачи, поток быстрый, почти не устаёшь, но всё равно делаешь полезное.
сейчас у меня снова прокачка мышц: перевожу микросервис на более свежую Java.
хоть перечитай все статьи на эту тему, но всё равно опыт будет у всех разным.
приложение просто не стартует. «не могу найти бин» — какой-то системный. без конкретики. вот и сиди, верти этот кубик рубика.
нравится!
а какой у вас подход к рабочим задачам? просите сами или берете что дают?
❤31💋4
поделиться ли с вами чуть позже своим опытом переезда с java 11 -> java 17 (sb 2.* -> 3.*)?
посмотрю на количество реакций❤️
посмотрю на количество реакций
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥92😭8👍6🔥4❤1😢1
и также своим опытом перевоза всего проекта на postgresql??
❤77🔥16👍8😭4😢2
давайте соберем под этим постом все конференции/митапы/суету, которые посещали/хотите посетить?
❤8
спросили недавно: «как глубже погрузиться в кодинг?»
решила поразмышлять.
включать режим «великий почемучка». на первых порах я без конца спрашивала у авторов кода: «почему именно так, а не иначе?», «почему выбрали это решение?», «как можно сделать лучше?». и это касается не только команды, но и смежных проектов. этот навык нужен на всех грейдах: можно разбирать хорошие практики в открытых репозиториях на гитхабе, читать статьи, смотреть доклады.
в разработке есть мем «крудошлёп» — и он не случайный. json гонять действительно приходится всем. и это нормально, это база. другое дело — наполнять рутину более нетривиальными вызовами: просить задачи посложнее или предлагать улучшения в системе. опыт и уверенность помогают со вторым, но первое доступно сразу.
залезать в чужие pr — отдельное удовольствие. я этим часто занимаюсь: можно найти много интересного.
ютуб для меня — лавина. с одной стороны, кладезь знаний, с другой — вечный поток, где невозможно получить конечное понимание. код проекта можно изучить вдоль и поперёк, а ютуб — нет. поэтому я стараюсь держать баланс и не уходить в фанатизм.
чтение — отдельная история. узкая теория, которая «приносит деньги», работает до определённого уровня. дальше без качания хардов никуда. но широта мышления всегда зависит от того, насколько готов выходить за пределы привычных задач. книги тут — отличный тренажёр: нейроны прокачиваются, но важно не просто читать, а разбирать и прорабатывать материал.
ещё одно: уходить от копипаста с ии или гугла к настоящему пониманию. пока копируешь — кажется, что понял. но это иллюзия, остаётся только в кратковременной памяти. закрепить можно только через осознанную проработку.
и, наверное, самое базовое — это окружение. коллеги, которые пишут хорошо и интересно. тут не нужно прилагать специальных усилий — со временем скилл подтягивается сам.
а у вас какие наблюдения?
решила поразмышлять.
включать режим «великий почемучка». на первых порах я без конца спрашивала у авторов кода: «почему именно так, а не иначе?», «почему выбрали это решение?», «как можно сделать лучше?». и это касается не только команды, но и смежных проектов. этот навык нужен на всех грейдах: можно разбирать хорошие практики в открытых репозиториях на гитхабе, читать статьи, смотреть доклады.
в разработке есть мем «крудошлёп» — и он не случайный. json гонять действительно приходится всем. и это нормально, это база. другое дело — наполнять рутину более нетривиальными вызовами: просить задачи посложнее или предлагать улучшения в системе. опыт и уверенность помогают со вторым, но первое доступно сразу.
залезать в чужие pr — отдельное удовольствие. я этим часто занимаюсь: можно найти много интересного.
ютуб для меня — лавина. с одной стороны, кладезь знаний, с другой — вечный поток, где невозможно получить конечное понимание. код проекта можно изучить вдоль и поперёк, а ютуб — нет. поэтому я стараюсь держать баланс и не уходить в фанатизм.
чтение — отдельная история. узкая теория, которая «приносит деньги», работает до определённого уровня. дальше без качания хардов никуда. но широта мышления всегда зависит от того, насколько готов выходить за пределы привычных задач. книги тут — отличный тренажёр: нейроны прокачиваются, но важно не просто читать, а разбирать и прорабатывать материал.
ещё одно: уходить от копипаста с ии или гугла к настоящему пониманию. пока копируешь — кажется, что понял. но это иллюзия, остаётся только в кратковременной памяти. закрепить можно только через осознанную проработку.
и, наверное, самое базовое — это окружение. коллеги, которые пишут хорошо и интересно. тут не нужно прилагать специальных усилий — со временем скилл подтягивается сам.
а у вас какие наблюдения?
❤40
помню, что во времена университета мне не хватало чего-то реального: правдивых задач, невыдуманных сценариев и серьезных вызовов.
сейчас на работе я этого получаю слихвой.
вот, например, недавняя ситуация: попросили перевести мс-ы на балансер постгреса. казалось бы, смена портов — и готово. но не все так тривиально. спустя время в логах заметила ошибки, что таблицы не находятся. и это плавающее поведение, не при старте.
что ж.
я предполагала, что дело было в схемах, но всегда нуждаюсь в доказательной основе, подтверждении теорий и т.д. пришлось разворачивать и воспроизводить локально.
включать логи хикари, писать их в файлах. аспекты вспомогательные делать.
в итоге вот что было: со временем балансер может отрубать неиспользуемые соединения, подрубать новые — и выставлять им настройки по умолчанию без указания нужной схемы. а потом к этому соединению цепляется хикари и… падает. повезет, если подцепится по новой к нужному из пула. и часть свойств, которые были указаны в конфигурации - не спасали от этого мракобесия.
одно дело — воспроизвести, другое — починить. благо хватило немного гуглинга да новых наблюдений.
вот такие вот лабораторные работы.
сейчас на работе я этого получаю слихвой.
вот, например, недавняя ситуация: попросили перевести мс-ы на балансер постгреса. казалось бы, смена портов — и готово. но не все так тривиально. спустя время в логах заметила ошибки, что таблицы не находятся. и это плавающее поведение, не при старте.
что ж.
я предполагала, что дело было в схемах, но всегда нуждаюсь в доказательной основе, подтверждении теорий и т.д. пришлось разворачивать и воспроизводить локально.
включать логи хикари, писать их в файлах. аспекты вспомогательные делать.
в итоге вот что было: со временем балансер может отрубать неиспользуемые соединения, подрубать новые — и выставлять им настройки по умолчанию без указания нужной схемы. а потом к этому соединению цепляется хикари и… падает. повезет, если подцепится по новой к нужному из пула. и часть свойств, которые были указаны в конфигурации - не спасали от этого мракобесия.
одно дело — воспроизвести, другое — починить. благо хватило немного гуглинга да новых наблюдений.
вот такие вот лабораторные работы.
❤40