Есть ли в компании внутренняя разработка (собственные библиотеки, фреймворки)?

Ответ

В моей практике на предыдущих проектах внутренняя разработка была ключевым элементом. Мы создавали собственные библиотеки и инструменты для стандартизации и ускорения разработки.

Например, в одном из .NET-проектов мы разработали внутренний NuGet-пакет Company.Core для общих утилит:

// Company.Core/Logging/StructuredLogger.cs
namespace Company.Core.Logging;

public class StructuredLogger : ILogger
{
    public void LogEvent(string eventName, Dictionary<string, object> properties)
    {
        // Единый формат логов для всех сервисов
        var logEntry = new
        {
            Timestamp = DateTime.UtcNow,
            Event = eventName,
            Properties = properties,
            Service = "PaymentService"
        };

        // Отправка в централизованную систему логов
        _logClient.Send(logEntry);
    }
}

Преимущества, которые я наблюдал:

  • Стандартизация: Все команды используют одинаковые подходы к логированию, кэшированию, валидации
  • Скорость разработки: Готовые решения для типовых задач (аутентификация, работа с БД, интеграции)
  • Качество: Централизованный контроль качества и безопасности
  • Обновления: Одновременное обновление зависимостей во всех сервисах

Мы использовали приватный NuGet-сервер для распространения пакетов и Semantic Versioning для управления версиями.

Ответ 18+ 🔞

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

Вот, например, был у нас один .NET-проект — ёперный театр, масштабы! Так мы сделали внутренний NuGet-пакет, Company.Core назывался. Туда все общие утилиты засунули, чтобы не повторяться.

Смотри, вот кусочек кода, я его как свои пять пальцев помню — мы его, блядь, всем впендюривали:

// Company.Core/Logging/StructuredLogger.cs
namespace Company.Core.Logging;

public class StructuredLogger : ILogger
{
    public void LogEvent(string eventName, Dictionary<string, object> properties)
    {
        // Единый формат логов для всех сервисов
        var logEntry = new
        {
            Timestamp = DateTime.UtcNow,
            Event = eventName,
            Properties = properties,
            Service = "PaymentService"
        };

        // Отправка в централизованную систему логов
        _logClient.Send(logEntry);
    }
}

И знаешь, в чём был главный кайф? А в том, что преимущества были просто овердохуища:

  • Стандартизация, ёпта! Раньше каждая команда — как мартышлюшка с гранатой: у одного логи в JSON, у другого — в тексте, третий вообще в БД пишет. А тут — все как один используют одинаковые подходы. И к логированию, и к кэшированию, и к валидации. Красота!
  • Скорость разработки взлетела. Не надо каждый раз думать, как аутентификацию прикрутить или с базой по-умному работать. Бери готовое решение из коробки и вперёд. Экономия времени — просто пиздец.
  • Качество контролировать стало в разы проще. Всё централизованно: безопасность проверил один раз в ядре — и все сервисы защищены. Никаких левых дыр.
  • Обновления — вообще песня. Выкатил новую версию библиотеки с фиксом — и все команды разом подтянули. Никакого геморроя с тем, что в одном сервисе баг пофиксили, а в десяти других он ещё живёт.

А самое главное — организовали мы это дело не абы как. Запустили приватный NuGet-сервер, куда эти пакеты выкладывали, и строго по Semantic Versioning версии вели. Чтобы никто не пришёл и не спросил «какого хуя всё сломалось». Всё чётко, по-взрослому. После такого опыта, чувак, на проекты без внутренней разработки смотреть больно — сразу видишь эту хитрожопую архитектуру, которая развалится от одного чиха.