Как стать автором
Обновить
38
0.3

Senior Back-End Developer .NET Core C#

Отправить сообщение

Релокация — не просто переезд

Время на прочтение10 мин
Количество просмотров50K

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

Меня зовут Тимур Рахматуллин и я программист c более чем 10 летним опытом. Год назад наша IT-команда переместилась в Таиланд. Сегодня я, наверное, уже могу считать себя опытным “релокантом” и давать полезные советы тем, кому это только предстоит.

Читать далее
Всего голосов 54: ↑32 и ↓22+20
Комментарии123

«Приказать или научить?». 4 уровня постановки задач сотруднику, которые имеют абсолютно разный развивающий эффект

Время на прочтение5 мин
Количество просмотров10K
image

Всякое ли задание, которое руководитель делегирует сотруднику имеет одинаковый развивающий эффект? Можно ли смело сказать, что работа на какой-то должности n-ное количество лет обязательно сделает из сотрудника эксперта? Нет, это не так. Время не превращает любителя в профессионала! Почему? Все потому, что профессионал — это человек, который не просто умеет делать, но и:
  • понимает, что он делает;
  • понимает, почему он именно это делает;
  • понимает (видит) и учитывает последствия от своих действий.

Каждое ли поставленное задание включает в себя все вышеописанные знания? Нет, не каждое. В качестве примера, давайте рассмотрим такой пример задания: “Ваня, прошу каждый день выгружать с CRM-ки всех клиентов сегмента “Мясо” и проводить сверку по количеству заказов. У кого будет меньше 15 — присылать мне”. Что делать сотруднику для выполнения задания в целом понятно. Но зачем, почему именно так и что будет происходить с отобранным клиентами дальше — совершенно не ясно. И если мы говорим просто про какого-то штатного специалиста клиентской поддержки — ок, вопросов нет. Но когда такое задание ставится ответственному за доходность клиентов сегмента “мясо” — это уже выглядит немного странно.

Получение результата от выполненного задания — не единственная цель, которую может и должна преследовать компания. Более существенной целью (в долгосрочной перспективе) должна быть цель “развитие сотрудника”: возможность его в будущем самостоятельно выполнять сложные задания и принимать правильные решения. И для достижения этой цели стоит выбирать правильный уровень делегирования. Рассмотрим их все…
Читать дальше →
Всего голосов 10: ↑7 и ↓3+6
Комментарии5

Валютный резидент РФ — обязанности, требования и ограничения валютного законодательства 2023 г

Время на прочтение12 мин
Количество просмотров37K

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

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

Читать далее
Всего голосов 11: ↑7 и ↓4+6
Комментарии32

История о том, как мы монолит с .NET Framework на .NET 6 и Kubernetes переводили

Время на прочтение10 мин
Количество просмотров10K

В 2011 году 2 разработчика начали создавать свою информационную систему, чтобы через неё принимать заказы в Додо Пицце. 2 года назад мы рассказывали про раннюю архитектуру Dodo IS здесь и здесь. За это время монолит нашей системы пережил немало изменений, самое значительное произошло в этом году — мы перевели его весь на .NET 6 и переехали в Kubernetes. Переход оказался непростой задачей и длился в общей сложности год.

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

Читать далее
Всего голосов 38: ↑38 и ↓0+38
Комментарии19

Микросервисы для чайников: как на них перейти с монолита с нуля

Время на прочтение12 мин
Количество просмотров72K

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

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

Читать далее
Всего голосов 23: ↑21 и ↓2+25
Комментарии31

Когда и как переходить с монолита на микросервисы. Миграция данных

Время на прочтение8 мин
Количество просмотров3.9K

В серии из трех статей рассказываем о переходе с монолитной на микросервисную архитектуру. Разбираемся, когда и кому это действительно нужно, рассматриваем 7 миграционных шаблонов и самый больной вопрос: «Как быть с данными?».

Читать далее
Всего голосов 1: ↑1 и ↓0+1
Комментарии2

Как мы перешли с Elastic на Grafana stack и сократили расходы в несколько раз

Время на прочтение8 мин
Количество просмотров30K

Привет! Хочу поделиться историей миграции сервисов логирования и трейсинга с компонентов Elastic Stack на Grafana Stack и тем, что из этого вышло. До миграции у нас в М2 использовались достаточно классические схемы:

Читать далее
Всего голосов 31: ↑31 и ↓0+31
Комментарии22

5 советов по созданию лучших диаграмм архитектуры решения

Время на прочтение6 мин
Количество просмотров7K

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

Читать далее
Всего голосов 9: ↑5 и ↓4+2
Комментарии1

Сделай так, чтобы оно больше не падало

Время на прочтение8 мин
Количество просмотров7.5K

Привет, меня зовут Ярослав Иссинский, я руководитель Технической платформы в группе «М.Видео-Эльдорадо». Сегодня я хочу рассказать про переход в публичное облако на примере крупной ритейл-компании.

Читать далее
Всего голосов 27: ↑27 и ↓0+27
Комментарии11

Самописные компоненты в конвейере обработчиков ASP.NET Core: подключение и доступ к сервисам

Время на прочтение26 мин
Количество просмотров6.5K


В этой статье я хочу рассказать о том, как расширяются возможности ASP.NET Core по обработке запросов к веб-серверу с помощью самостоятельно написанных компонентов конвейера обработки.


Обычно для разработки серверной части веб-приложений (по-простому — бэка) с помощью ASP.NET Core имеет смысл использовать базирующиеся на нем фреймворки высокого уровня: MVC Core, Razor Pages и т.д.: они позволяют с минимумом усилий решать типовые задачи. Но встречаются задачи нетиповые, которые требуют для своего решения перейти на более низкий уровень (или, по крайней мере, понимать, что на этом уровне происходит) — на уровень базовых возможностей ASP.NET Core. И в этой статье как раз рассказывается об использовании одной из этих базовых возможностей — компонентов middleware, из которых создается конвейер обработки запросов к веб-серверу. Далее в статье я буду называть их компонентами-обработчиками, потому что официальный перевод из документации от MS — "ПО промежуточного слоя" — он некрасив и не описывает их функции. Конкретно в статье рассматривается, какие средства предоставляет фреймворк ASP.NET Core для создания самописных компонентов-обработчиков. И особое внимание уделено тому, как эти компоненты могут получить доступ к другой базовой возможности ASP.NET Core — сервисам, которые зарегистрированы в контейнере сервисов (он же — "DI-контейнер"), как к стандартным для ASP.NET Core, так и к самописным.

Читать дальше →
Всего голосов 5: ↑4 и ↓1+3
Комментарии2

Разбираемся с Redis

Время на прочтение19 мин
Количество просмотров283K

Этот материал представляет собой глубокое исследование всего, что связано с Redis. В частности — речь пойдёт о различных способах организации хранилищ Redis, о постоянном хранении данных, о форках процессов.

Читать далее
Всего голосов 46: ↑45 и ↓1+62
Комментарии7

Есть ли жизнь на Go после C#?

Время на прочтение13 мин
Количество просмотров33K

Всем привет! На связи Пётр, Go-разработчик в команде Ozon, которая занимается управлением товарами торговой площадки. Всё, что загружают продавцы, обрабатывается нашими сервисами. Девять месяцев назад я сменил основной язык программирования с C# на новый для меня Go. В статье будут впечатления от Go, расскажу о некоторых различиях между языками, а в конце поделюсь своим опытом поиска работы на новом языке. Ведь вопрос смены стека технологий рано или поздно встаёт перед каждым разработчиком.

Читать далее
Всего голосов 50: ↑40 и ↓10+35
Комментарии50

Типы таблиц в PostgreSQL: clustered, foreign, partitioned и inherited tables

Время на прочтение14 мин
Количество просмотров20K

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

Читать далее
Всего голосов 17: ↑16 и ↓1+19
Комментарии12

Разбираемся в Apache Kafka: подборка полезных статей и кейсов

Время на прочтение3 мин
Количество просмотров16K

Разрабатываете приложения с применением Apache Kafka? Мы собрали для вас статьи, которые помогут освоить инструмент, познакомят с рабочими кейсами с использованием ПО. Делимся пользой и свежими идеями, подборками книг и реализованными задумками.

Читать далее
Всего голосов 12: ↑11 и ↓1+11
Комментарии1

Требования не меняются, это мы их недовыявили. 10 техник проверки полноты требований

Время на прочтение26 мин
Количество просмотров21K

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

В этой статье я опишу примеры подобных ситуаций и расскажу о техниках, позволяющих задать нужные вопросы, выявить максимальное количество требований на ранних этапах анализа, обсудить со стейкхолдерами нужность этих требований и их приоритеты. Как правило, после применения всех техник в 1,5−2 раза возрастает объём требований и юзкейсов для обсуждения — и это одна из основных задач аналитика: задать все вопросы и выяснить все детали до начала проектирования и разработки системы.

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

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

Читать далее
Всего голосов 13: ↑13 и ↓0+13
Комментарии5

Обзор паттернов интеграции микросервисов. Часть 1

Время на прочтение7 мин
Количество просмотров29K

Недавно мы проводили вебинар «Обзор паттернов интеграции микросервисов». На нём энтерпрайз архитектор Пётр Щербаков рассказал, зачем IT-специалистам нужны шаблоны интеграции, и разобрал, для каких задач они подходят, а для каких нет. Для тех, кто пропустил или предпочитает читать, а не смотреть подготовили текстовый обзор интеграционных паттернов: Circuit Breaker, Sidecar, Ambassador, Anti-Corruption Layer и Async Request-Reply.

Читать далее
Всего голосов 23: ↑20 и ↓3+18
Комментарии1

Обзор паттернов интеграции микросервисов. Часть 2

Время на прочтение5 мин
Количество просмотров15K

Продолжаем обзор паттернов интеграции микросервисов. В первой части мы рассказали, зачем IT-специалистам нужны шаблоны интеграции, и для каких задач они подходят. Подробно остановилисьна Circuit Breaker, Sidecar, Ambassador, Anti-Corruption Layer и Async Request-Reply. Сегодня по плануразобрать Backends for Frontends, Cache-Aside, Gateway, Gateway Aggregation и Gateway Routing. 

Читать далее
Всего голосов 17: ↑15 и ↓2+15
Комментарии1

Не трогайте разработчиков. Отстаньте. Просто не беспокойте

Время на прочтение13 мин
Количество просмотров75K


Всем привет! Меня зовут Ян, я руководитель разработки Департамента ИТ инвестиционного бизнеса Газпромбанка. Совершенно неожиданно я занял первое место на конференции Highload++ с докладом про то, как организована работа в наших командах разработки.

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

В результате из простой задачи «не трогайте разработчиков» получилось сделать и очень правильное обучение (если вы дежурите, то у вас нет шансов не разбираться во всех процессах команды), и снижение техдолга (дежурный не берёт таски по фичам на спринты, но может заниматься документацией и всякими вещами в наведении порядка, до чего обычно не доходят руки), и много чего ещё. Сначала казалось, что за это мы платим снижением эффективности команды на 8–10 % (ведь мы выключаем дежурного из разработки), но на деле оказалось, что эффективность даже растёт. Есть ряд вещей, которые очень поменялись и в управлении такими командами в лучшую сторону.

Естественно, такой подход имеет кучу подводных камней и подходит далеко не всем и не каждому типу команд.

Сейчас расскажу про практический опыт.
Читать дальше →
Всего голосов 157: ↑139 и ↓18+154
Комментарии79

Иммутабельность в C#

Время на прочтение13 мин
Количество просмотров20K

В разработке программного обеспечения иммутабельным (immutable — неизменяемым) называется объект, который после своего создания не может быть изменен. Зачем вам может понадобиться такой объект? Чтобы ответить на этот вопрос, давайте проведем анализ проблем, которые могут возникнуть в результате мутации (изменения) объектов. Вернемся к основам того, что делает каждое приложение: создает, извлекает, обновляет и удаляет данные (CRUD-операции). Ядро любого приложения манипулирует объектами. Ответ на вопрос о том, работает ли приложение в соответствии со своей спецификацией, в первую очередь определяется правильностью обработки данных. Вам необходимо быть уверенными, что код работает правильно, каждый раз, когда он затрагивает какой-либо объект. 

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

Если ваше приложение является многопоточным, иммутабельность должна быть фундаментальной частью вашей архитектуры, поскольку неизменяемые объекты по своей природе являются потокобезопасными и невосприимчивыми к состояниям гонки. Если ваше приложение использует data transport objects (DTO — объекты передачи данных), вам также следует серьезно подойти к иммутабельности ваших объектов. Предметом дискуссий остается лишь то, как наиболее эффективно реализовать и работать с иммутабельными объектами, поскольку C# не предлагает встроенной поддержки таких объектов. Эта статья предлагает ответ на этот вопрос.

Читать далее
Всего голосов 7: ↑3 и ↓4+1
Комментарии10

Кинотерапия — более 150 фильмов, которые пересматривают

Время на прочтение6 мин
Количество просмотров53K

Фильмы - это лекарство для психики. Что включается у нас в голове, когда мы смотрим фильм? Возможно превратить просмотр кино в индивидуальную психотерапию?

Для начала отделим мух от котлет. Психолог, психотерапевт, психиатр и невролог чем они отличаются? Самое простое отличие в том, что психолог не является врачом. Психотерапевт, психиатр и невролог - это врачи.

Читать далее
Всего голосов 48: ↑24 и ↓24+6
Комментарии141

Информация

В рейтинге
2 101-й
Откуда
Россия
Зарегистрирован
Активность

Специализация

Backend Developer
Senior
C#
.NET Core
SQL