Найти в Дзене
IT-сокращения 2025: от краха иллюзий до новых возможностей
В этом году цифры выглядят жёстко: только за первые семь месяцев 80 250 человек лишились работы в ИТ ( nerdwallet ) В июле — ещё 16 142 увольнения И это не только стартапы — под нож идут и Microsoft, и Google, Amazon и многие другие крупные компании. Почему это происходит Если почитать пресс-релизы, то причина почти всегда одна: «Мы внедряем AI, автоматизируем процессы». Звучит как будущее, но по факту — это часто прикрытие для куда более банального: рост издержек, падение прибыли, давление инвесторов на показатели...
1 месяц назад
Чистая архитектура: избавляемся от хаоса с помощью DDD и SOLID
В Clean Architecture, как учит Роберт Мартин (он же Uncle Bob), работает чёткое правило: внешний код всегда зависит от внутреннего, но не наоборот. Всё просто — если у тебя есть сервисы или репозитории, они должны взаимодействовать с бизнес-логикой через абстракции (интерфейсы), которые определяет ядро приложения. Это значит, что доменная или прикладная логика сами формулируют, что им нужно (например, интерфейс получения пользователя), а вот как это будет реализовано — не их забота, этим занимается инфраструктура...
2 месяца назад
Монолит против микросервисов: разбор архитектурных решений и выбор оптимального подхода для вашего проекта
В современном мире разработки веб-приложений выбор архитектуры становится критически важным для успеха проекта. Одни проекты начинают с монолита, а затем вынуждены переходить на микросервисную архитектуру из-за роста масштабов и усложнения бизнес-логики. Другие же сразу выбирают распределённую систему, чтобы обеспечить гибкость и масштабируемость. В этом посте мы разберём, в чем состоят ключевые различия между монолитом и микросервисами, каковы преимущества и недостатки каждого подхода, а также какие компромиссы и проблемы возникают при миграции...
7 месяцев назад
Вредные советы для начинающих разработчиков C#
Если вы вдруг решили стать великим разработчиком C#, вот вам список вредных советов. Следуя им, вы гарантированно обеспечите своему коду головную боль, а себе – славу главного разрушителя продуктивности! Зачем вам эти скучные буквы? Вместо них пишите один огромный класс, который будет и базу данных обновлять, и PDF-документы генерировать, и еще отправлять письма . Чем больше ответственности у одного класса, тем лучше – ведь так его можно гордо назвать "МегаГлобальныйКласс". Зачем вам внедрение зависимостей? Создавайте все экземпляры классов внутри методов...
9 месяцев назад
SOLID: Понимание Принципа Инверсии Зависимостей (DIP)
Мы подошли к последнему принципу из набора SOLID — Принципу Инверсии Зависимостей (Dependency Inversion Principle, DIP). Этот принцип является ключевым для создания гибких и легко расширяемых систем, позволяя уменьшить зависимость высокоуровневых модулей от деталей реализации. Определение DIP: Модули верхнего уровня не должны зависеть от модулей нижнего уровня. Оба типа должны зависеть от абстракций. Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций. Проще говоря, это...
9 месяцев назад
SOLID: Понимание Принципа Разделения Интерфейса (ISP)
Продолжая наше путешествие по принципам SOLID, мы подошли к четвертому принципу — Принципу Разделения Интерфейса (Interface Segregation Principle, ISP). Этот принцип помогает разработчикам создавать более гибкие и поддерживаемые системы, особенно когда дело касается работы с интерфейсами и абстракциями. Определение ISP: Клиенты не должны зависеть от интерфейсов, которые они не используют. Проще говоря, интерфейсы должны быть разделены на более специфичные, чтобы клиенты зависели только от тех методов, которые им действительно нужны...
9 месяцев назад
SOLID: Понимание Принципа Подстановки Барбары Лисков (LSP)
Продолжая наше знакомство с принципами SOLID, теперь мы рассмотрим третий принцип — Принцип Подстановки Барбары Лисков (Liskov Substitution Principle, LSP). Этот принцип играет ключевую роль в построении надежных и гибких объектно-ориентированных систем. Определение LSP: Объекты в программе должны быть заменяемы экземплярами их подтипов без нарушения корректности работы программы. Проще говоря, если у вас есть класс Base, и класс Derived наследуется от Base, то вы должны иметь возможность использовать Derived вместо Base без каких-либо проблем...
9 месяцев назад
SOLID: Понимание Принципа Открытости/Закрытости (OCP)
Если вы интересуетесь разработкой программного обеспечения, вы, вероятно, слышали о принципах SOLID. Это пять основополагающих принципов объектно-ориентированного программирования, которые помогают создавать гибкие, масштабируемые и поддерживаемые системы. Сегодня мы рассмотрим второй принцип — Принцип Открытости/Закрытости (Open/Closed Principle, OCP). Определение OCP: Программные сущности (классы, модули, функции и т.д.) должны быть открыты для расширения, но закрыты для изменения. Это означает, что вы должны иметь возможность расширять поведение системы, не изменяя существующий код...
9 месяцев назад
SOLID: Понимание Принципа Единственной Ответственности (SRP)
Если вы когда-нибудь сталкивались с разработкой программного обеспечения, возможно, вы слышали термин "SOLID". Это набор из пяти принципов, которые помогают разработчикам создавать более гибкие, масштабируемые и поддерживаемые системы. Сегодня мы погрузимся в первый из этих принципов — Принцип Единственной Ответственности (Single Responsibility Principle, SRP). Определение SRP: У класса должна быть только одна причина для изменения. Это означает, что каждый класс или модуль в вашей программе должен отвечать за одну и только одну часть функциональности...
9 месяцев назад
Шаблоны успеха: как паттерны проектирования делают ваш код лучше
В мире разработки программного обеспечения понятие "паттерны проектирования" занимает особое место. Это проверенные временем решения общих проблем, с которыми сталкиваются разработчики при создании приложений. Будучи архитектором на .NET с 15-летним стажем, я неоднократно убеждался в важности знания и правильного применения этих паттернов для создания масштабируемого, поддерживаемого и эффективного кода. В процессе развития программирования стало очевидно, что многие проблемы повторяются из проекта в проект...
9 месяцев назад
Паттерн Null Object в C#: Когда отсутствие объекта — это решение
Null Object Pattern (паттерн «Нулевой объект») — это поведенческий шаблон проектирования, который предоставляет объект со стандартным нейтральным поведением вместо null. Вместо того чтобы возвращать null и заставлять клиентский код проверять на наличие значения, используется специальный объект, который не выполняет никаких действий или выполняет действия по умолчанию. В объектно-ориентированном программировании часто возникает ситуация, когда методы или функции могут возвращать null вместо объекта...
9 месяцев назад