Библиотека шарписта | C#, F#, .NET, ASP.NET
22.6K subscribers
2.41K photos
39 videos
85 files
4.6K links
Все самое полезное для C#-разработчика в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/b60af5a4

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead
Download Telegram
🆚 Как не ошибиться в процессе выбора

Один из наших подписчиков недавно задал вопрос:
Как вы принимаете технические решения в команде? Как правильно выбрать то, что действительно полезно и угодит всем?


Технические решения — это не просто выбор между «лучше» и «хуже». Это баланс между бизнес-целями, ограничениями технологии, ресурсами и командной динамикой.

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

1️⃣ Четкое понимание проблемы

Прежде чем что-то решать, нужно понять, с чем имеешь дело. Собираем данные, уточняем требования, учитываем ограничения.

Тут важно не упустить детали: от анализа текущей архитектуры до учета бизнес-задач.

2️⃣ Обсуждения с командой

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

3️⃣ Структурирование обсуждений

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

4️⃣ Принятие решения и консенсус

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

В разногласиях роль лидера — взять ответственность и объяснить выбор.

5️⃣ Ретроспектива

После того как решение внедрено, важно его оценить. Что сработало? Что не так? Это шанс извлечь уроки и в следующий раз сделать процесс принятия решений еще более четким.

Открытость, системность и готовность анализировать результаты — вот что помогает работать слаженно и минимизировать конфликты в команде.

💬 Как в вашей команде принимаются решения? Делитесь опытом в комментариях 👇

🐸Библиотека шарписта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
3😁2👍1🌚1
📣 Исключения или Result — что выбрать для обработки ошибок

Когда речь заходит о том, как лучше обрабатывать ошибки в C#, многие разработчики оказываются в двух лагерях.

• Исключения — классический подход

Исключения используются в C# с самого начала. Они позволяют немедленно прерывать выполнение программы в случае ошибки и предоставить стек вызовов для диагностики проблемы.

Многие считают это стандартом, потому что исключения чётко отображают сбой, который требует внимания.

• Result-типы — альтернатива

С другой стороны, есть подход с явным использованием Result-типа, который помогает разработчику контролировать ошибки через возвращаемые значения.

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

💬 Когда вы предпочитаете использовать исключения? А когда лучше использовать Result? Делитесь мнениями в комментариях 👇

🐸Библиотека шарписта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
3🤔1
🤔 Такие ли айтишники проблемные

Многие думают, что айтишники наполовину состоят из проблем с головой. Кто в этом виноват и стоит ли переживать?

На одной стороне стоят те, кто уверены: IT-сфера — это «психологическая бомба замедленного действия», и в ней нужно менять многое, чтобы сохранить благополучие специалистов.

Возможно, нужна более гибкая и заботливая рабочая среда?

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

Наш админ думает так:
Как тут не свихнёшься, когда тебя каждый день спрашивают одно и то же в надежде на изменения? Как попугаи «Какой статус? Какой статус?»


💬 Что думаете об этом? Как у вас обстоят дела с головой? Делитесь в комментариях 👇

Понравился пост? Поделитесь бустом, а мы взамен поделимся топовым контентом.

🐸Библиотека шарписта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
😁91
🎮 Снова сеньор без клавиатуры

Сеньору запретили писать откровения на ревью, поэтому он опять наказан использованием эмодзи.

Пишите в комментарии, что это он написал на картинке 👇

🐸Библиотека шарписта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
💬 Техдолга много не бывает

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

Один из наших подписчиков недавно спросил:
Как определить, когда стоит принимать новый функционал, а когда — гасить технический долг


На практике подход к техдолгу зависит от контекста проекта, команды и бизнес-целей. Вот основные моменты, которые помогут выбрать стратегию:

— Регулярно формируйте список всех известных проблем: устаревшие библиотеки, неочищенный код, отсутствие тестов.

— Делите техдолг на «осознанный» (trade-off ради скорости) и «неосознанный» (ошибки, хаотичный рост).

— Используйте метрики: время на исправление багов, количество инцидентов, сложность новых фич.

— Включайте небольшие задачи по техдолгу в каждый спринт (например, 10–20 % времени).

— Установите критерии «не допуска к продакшену» для новых заимствований (например, доля покрытия тестами).

💬 Как вы балансируете новые фичи и погашение техдолга? Поделитесь своим опытом в комментариях 👇

P.S. Если хотите задать вопрос сообществу или поделиться историей, заполните нашу гугл-форму.

🐸Библиотека шарписта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
1
var в C# — удобство или маска

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

Вместо явного написания громоздких типов можно писать лаконичный код:
// Вместо List<Dictionary<string, List<Tuple<int, DateTime>>>> data = ...
var data = GetComplexData();


Также var не делает переменную динамической, это всё тот же строго типизируемый код.

Но есть и сильный аргумент против использования var. На примере кода выше:
// Вместо List<Dictionary<string, List<Tuple<int, DateTime>>>> data = ...
var data = GetComplexData(); // каков тип data? int, string, CustomType?


Тип, получаемый из функции неочевиден и это в разы ухудшает читаемость кода.

var — полезный инструмент, но требует дисциплины. При очевидном типе он упрощает код, при неочевидном — мешает пониманию.

💬 Вы используете var в коде или сторонник явного? Делитесь мыслями в комментариях 👇

🐸Библиотека шарписта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
🌚10💯93😢2🤩2
👨‍💻 Бесполезные знания для работы

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

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


💬 Есть ли у вас знания, которые так и не пригодились в работе? Делитесь в комментариях 👇

P.S. Если хотите задать вопрос сообществу или поделиться историей, заполните нашу гугл-форму.

🐸Библиотека шарписта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🤔5🌚5🥱3😢1
✏️ Кроссворд на выходных

Отвлечёмся от работы, но не совсем. Сегодня будем отгадывать термины из разработки.

1. Специальный оператор, возвращающий имя переменной, метода или типа как строку.

2. Модификатор метода, обозначающий его асинхронное выполнение в сочетании с await.

3. Специальный член класса, позволяющий обращаться к экземпляру как к массиву: obj[i].

4. Модификатор, позволяющий объявить один класс/метод/структуру в нескольких файлах.

5. Ключевое слово, позволяющее из метода-итератора возвращать значения по одному.

6. Модификатор поля, гарантирующий свежесть данных при многопоточном доступе.

7. Контекст или модификатор, разрешающий небезопасный (низкоуровневый) код с указателями.

Пишите под спойлер свои варианты в комментариях 👇

🐸Библиотека шарписта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
4👾2🌚1
💡 ИИ в обучении: возможности и ловушки

Сегодня технологии позволяют нам учиться с помощью нейронных сетей, но как не превратить процесс в бессмысленный «вайбкодинг» с GPT и действительно прокачать навыки.

Один из наших подписчиков недавно спросил:
Как вообще можно учиться у нейронки, если обучение превращается в вайбкодинг? Вопрос больше про процесс обучения, нежели про конкретную задачу.

Самый главный совет в такой ситуации — это тренировать выдержку. Если вы можете держать себя в руках, то у вас два пути:

1. Вместо нейросети пользоваться документацией.

Когда вам нужно что-то реализовать сначала подумайте что вам нужно. Декомпозируйте проект на модули а модули на функции.

После декомпозиции можно погуглить как это реализовать. Например, вы хотите принимать данные по REST, значит вам нужна точка входа в сервис.

Гуглите как это сделать. Буквально: «Как передать данные по REST в приложение на .NET». Бегло смотрите по выдаче и находите названия библиотек или инструментов, небольшие куски реализации и ищите по ним документацию.

Первое время это может быть тяжело, особенно после вайбкоддинга.

2. Просить у нейросети пояснение, а не решение.

Прежде чем начать работу с нейросетью можно подготовить промпт. Если вы не хотите видеть реализацию, то так и напишите: «Мне не нужна реализация или готовые куски кода, я хочу увидеть тезисы, которые натолкнут меня на решение. Подсказывай мне библиотеки или паттерны».

💬 Как вы поддерживаете баланс между помощью нейронки и самостоятельным погружением? Поделитесь опытом в комментариях 👇


P.S. Если хотите задать вопрос сообществу или поделиться историей, заполните нашу гугл-форму.

🐸Библиотека шарписта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
🚦 Долгосрочное планирование: мираж или необходимость

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

Почему планирование — это опасная ловушка:

• Сложно предсказать технологические тренды.

• Чаще требуется гибкость и быстрота изменений, чем спланированный ком задач.

• Конкуренты не спят и могут испортить ваши планы.

Когда планирование полезно:

• Крупные проекты не могут плавать вечно, им нужен фундамент и горизонт запланированных действий.

• Долгосрочные планы показывают инвесторам, что компания думает о будущем и готова к масштабированию.

💬 Какой у вас горизонт планирования? Нужно ли долгосрочное планирование в IT? Делитесь мыслями в комментариях 👇

🐸Библиотека шарписта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔2