Forwarded from Лаборатория Математики и Программирования Сергея Бобровского
Как NET-разработчик заваривает кофе.
Входные данные: C# программист не может просто налить кипяток. Нужен ICoffeeService, иначе это "антипаттерн".
DI Container: всё должно быть интерфейсами:
- ICoffeeService (но реализация OutOfMemoryCoffeeService)
- ISugar (опционально, как Nullable<Sugar>)
- IBoilingWater (но только если лицензия Azure позволяет)
Middleware/AOP:прежде чем выдать кофе:
- обязательно залогировать (ILogger<Coffee>)
- замерить время (Stopwatch + метрики в Prometheus)
- добавить RetryPolicy (потому что WaterAPI тормозит)
Exception Handler: если кофемашина сломалась:
- вернуть 503 Service Unavailable
- или CoffeeMachineException (с подсказкой "Обновите NuGet-пакет")
Внешний сервис: обязательно:
- HttpClient с таймаутом в 1 секунду (но ждём 10)
- Polly с 5 попытками (хотя после 3-ей уже пора писать в саппорт)
- обязательно ConfigureAwait(false), иначе deadlock
Выходной результат: кофе со StackTrace:
- "NullReferenceException: Sugar was not injected"
- "AzureTimeoutException: WaterAPI не ответил за 365 дней"
...из обсуждений в рабочем чате:
"Почему кофе холодный? 🤮 Потому что был async void BrewAsync()"
"Почему в чашке StackOverflowException? 💩 Рекурсивный вызов AddSugar()"
"Кто-то забыл Dispose() чашку 🤡 — теперь в памяти утечка кофеина"
+ тимлид сразу подкидывает новых проблем, AFAIK!!1 💥
- Блок с [Obsolete] методами ("Старый кофеварка")
- BackgroundService для автоматического кофепития
- .gitignore для сбежавшего кофе
(1я серия про java)
Входные данные: C# программист не может просто налить кипяток. Нужен ICoffeeService, иначе это "антипаттерн".
DI Container: всё должно быть интерфейсами:
- ICoffeeService (но реализация OutOfMemoryCoffeeService)
- ISugar (опционально, как Nullable<Sugar>)
- IBoilingWater (но только если лицензия Azure позволяет)
Middleware/AOP:прежде чем выдать кофе:
- обязательно залогировать (ILogger<Coffee>)
- замерить время (Stopwatch + метрики в Prometheus)
- добавить RetryPolicy (потому что WaterAPI тормозит)
Exception Handler: если кофемашина сломалась:
- вернуть 503 Service Unavailable
- или CoffeeMachineException (с подсказкой "Обновите NuGet-пакет")
Внешний сервис: обязательно:
- HttpClient с таймаутом в 1 секунду (но ждём 10)
- Polly с 5 попытками (хотя после 3-ей уже пора писать в саппорт)
- обязательно ConfigureAwait(false), иначе deadlock
Выходной результат: кофе со StackTrace:
- "NullReferenceException: Sugar was not injected"
- "AzureTimeoutException: WaterAPI не ответил за 365 дней"
...из обсуждений в рабочем чате:
"Почему кофе холодный? 🤮 Потому что был async void BrewAsync()"
"Почему в чашке StackOverflowException? 💩 Рекурсивный вызов AddSugar()"
"Кто-то забыл Dispose() чашку 🤡 — теперь в памяти утечка кофеина"
+ тимлид сразу подкидывает новых проблем, AFAIK!!1 💥
- Блок с [Obsolete] методами ("Старый кофеварка")
- BackgroundService для автоматического кофепития
- .gitignore для сбежавшего кофе
(1я серия про java)
НеСерьезный шарпист
https://youtube.com/shorts/srJ8Kc_9i68?si=Ir0Np9fzIRAxb2Fj Егор Георгиевич - человек база
Единственный базированный джавист
Я один из тех бедолаг, которым нужно в конце дня писать отчёт по задачам на списание времени... Подписываюсь под каждым словом.
https://habr.com/ru/articles/902390/
https://habr.com/ru/articles/902390/
Хабр
Вcё ещё трекаете? Почему контроль часов мешает работе команды (и что с этим делать)
За последнее время я слишком часто сталкиваюсь с практикой, когда сотрудников заставляют трекать время, вести отчёты по задачам, сколько часов на что потратили. Более того — от этих цифр зависит их...
👍2
Forwarded from StringConcat - разработка без боли и сожалений (Евгений)
Кажется, вы уже заметили, найм в айтишечке — это не просто сломанная система, это кома. ИТ-рекрутинг сегодня — это олимпиада по унижению кандидата, причем очень часто оторванная от жизни. На собеседовании ты вертишь деревья, пишешь алгоритмы, а потом выходишь на работу… и месишь ЖСОНы.
Секция системного дизайна поближе к реальности, хотя давайте добавим еще немного реализма. Для этого нужно всего лишьвзять простой советский добавить парочку условий, например:
• В команде — джуны-аутстафферы, проданные по прайсу помидоров. Их погоняют два уставших старшака, один из которых ушёл в отпуск и, возможно, уже не вернётся.
• Верховный архитектор в перманентной войне с вашим менеджером. Каждый созвон заканчивается словами «мне не нравится, переделывайте» без каких либо аргументов.
• Критичные зависимости и сервисы? Их нет, есть только клятвенные уверения, что они появятся к вашему релизу (нет).
• Бюджета на информационную безопасность нет. Можно повесить амулет на сервер.
• Девопс — это человек-загадка, которого выделили вам на 0,2 ставки и он их тратит на дейлик.
Вот теперь это похоже на нормальный проект, а не на глянцевый бред с хабра. И теперь, внимание, вопрос в студию: как будет выглядеть архитектура в таких условиях? Где ваши микросервисы теперь? Лихо всё порежете на деплоймент-юниты или, может, лучше собрать монолит и молиться, чтобы никто ничего не разломал?
ИМХО вот об этом неплохо бы спросить на уровне хотя бы сеньора. А не “сколько времени займет разворот бэ-дерева, если вы к нему привязаны”.
Секция системного дизайна поближе к реальности, хотя давайте добавим еще немного реализма. Для этого нужно всего лишь
• В команде — джуны-аутстафферы, проданные по прайсу помидоров. Их погоняют два уставших старшака, один из которых ушёл в отпуск и, возможно, уже не вернётся.
• Верховный архитектор в перманентной войне с вашим менеджером. Каждый созвон заканчивается словами «мне не нравится, переделывайте» без каких либо аргументов.
• Критичные зависимости и сервисы? Их нет, есть только клятвенные уверения, что они появятся к вашему релизу (нет).
• Бюджета на информационную безопасность нет. Можно повесить амулет на сервер.
• Девопс — это человек-загадка, которого выделили вам на 0,2 ставки и он их тратит на дейлик.
Вот теперь это похоже на нормальный проект, а не на глянцевый бред с хабра. И теперь, внимание, вопрос в студию: как будет выглядеть архитектура в таких условиях? Где ваши микросервисы теперь? Лихо всё порежете на деплоймент-юниты или, может, лучше собрать монолит и молиться, чтобы никто ничего не разломал?
ИМХО вот об этом неплохо бы спросить на уровне хотя бы сеньора. А не “сколько времени займет разворот бэ-дерева, если вы к нему привязаны”.
👍7 1