StepOne | Степан Минин – Telegram
StepOne | Степан Минин
3.42K subscribers
245 photos
35 videos
6 files
310 links
StepOne by Степан Минин @ststphn

Твой первый шаг к успеху в программировании

Закрытый тг канал https://news.1rj.ru/str/tribute/app?startapp=slOA

По вопросам рекламы @Spiral_Yuri

Ютуб https://www.youtube.com/@steponeit
Download Telegram
Использование MediatR - это одна из самых острых и горячих тем в .NET разработке.

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

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

Бегите на Хабр, читайте и ставьте плюсы!

#хабр
🔥13👍31🐳1
abstract class vs interface

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

Фишка в том, что вопрос риторический. Ответ «одно лучше другого, потому что…» будет неправильным, ведь цель вопроса узнать ваше понимание инструмента.

Если прислушаться к постановке вопроса интервьюером в том видео, ссылку на которое оставлена, то можно услышать подсказку: «а зачем нам и то, и другое, если это одно и тоже?»

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

Суть различия даже не в том, что в класс можно засунуть данные, а в интерфейс - нет. Это как раз сделать можно с помощью свойств или get/set методов.

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

Когда мы проектируем интерфейс, то подразумеваем, что существует набор никак не связанных друг с другом сущностей, похожих по выполняемым действиям. Например, объект, который может говорить: человек, робот, попугай, инопланетянин и так далее.
👍171🔥1🤯1
C# vs Java

Как много в этом звуке для сердца энтерпрайзера слилось…

Все знают, что Java вышла и раньше, да и у её создателя большая борода. Значит она круче!

Хотя в C# была проведена большая работа над ошибками (устройство памяти, дженерики, value types), потом вообще LINQ завезли. Значит он круче!

Так в Java завезли stream API, в конце концов, может она круче? Да нет же, TPL + async/await - киллер фича C#, он вне конкуренции!!!

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

Поэтому, в последнее время популярны вопросы и публикации: «Что есть в C#, чего нет в Java?»
Я же вам скажу, что есть очень крутые вещи, которые подчинённые Гейтса ещё не успели перенести и, в некоторых случаях, очень зря.

Об этом мой новый пост на Хабре. Скорее туда - читать, ставить плюсы и повышать рейтинг!
🔥61👍1
Если кто-то до сих пор думает идти в Я

Настоятельно рекомендую посмотреть вот этот подкаст.

Рекорд Гиннесса по уходам от ответа на вопрос и переобуванию на скорость. Феноменально раздражающая личность.

Помните, что есть множество других способов заработать крутую строчку в резюме.
👏6👍1🙏1
Очень жду C# 11

Самая важная feature, на мой взгляд, это обобщённая математика вкупе с abstract static. Она открывает миллион возможностей не только для научных инструментов и расчётов, но и для неожиданных, ранее неизвестных, архитектурных решений.

Раньше я сам пытался ступить на поле этих открытий в своих статьях на Хабре «Абстрактная алгебра в действии» и «Властелин Структур».

С новой версией языка описанные конструкции можно будет реализовать гораздо проще и лаконичнее.
🔥6😐31👍1
Refit

Делюсь с Вами, мои дорогие подписчики, крутой находкой из мира .NET!

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

С помощью Refit можно пилить интеграции с апишками, просто объявляя интерфейсы. Весь бойлерплейт реализации Refit сгенерирует сам в рантайме. Кроме этого, там есть:

▪️Поддержка XML, JSON

▪️Гибкая настройка HttpClient

▪️Поддержка Polly

▪️Интеграция с DI и HttpClientFactory

▪️и многое многое другое

Ссылочка на GitHub проекта
👍8🤔2🔥1
Command Line Parser

Если вы пишете консольные утилиты и не знаете, как быстро и эффективно разработать API для CLI, то обязательно приглянитесь к библиотеке Command Line Parser.

Благодаря проекту, у CLR приложений есть возможность ясно и выразительно решать задачи по работе с аргументами командной строки:

▪️определение параметров (обязательных/необязательных, именованных, позиционных)

▪️создание команд (в том числе со своими собственными параметрами)

▪️гибкая настройка сообщения со справочной информацией и сообщения об ошибке

CommandLineParser прост в использовании, не имеет никаких сторонних зависимостей и позволяет пользоваться всей мощью ООП при проектировании параметров своего консольного приложения.

Ссылка на GitHub
🔥3👍2🤩1
System.IO.Abstractions

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

Тогда обратите внимание на пакет System.IO.Abstractions. И тогда проверка операций ввода/ввода станет проще!

Его суть довольна проста: статические методы из System.IO по типу File.WriteAllText теперь доступны через ряд специальных абстракций. Код под капотом тот же самый, только теперь он внедряемый и тестируемый.

И конечно, ссылка на GitHub
🔥4💔1
Техдолг в pet project

Последние две с лишним недели потел над pet project. Хотел выпустить киллер фичу, но, когда начал копать, просто выпал в осадок

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

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

Потом рефакторинг доменки и вообще попытка её описания: в PR изменёнными оказались почти все файлы проекта.

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

Параллельно с этим настроил CI/CD через GitHub Actions - сижу и радуюсь жизни. А также пишу все свои мысли, замечания и выводы в issues и pull requests.

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

Опыт правильной коммерческой разработки показал, как можно писать код клёво и удобно. Я сделал выбор в пользу собственного комфорта и не прогадал.
Правда к фиче ещё даже не приступил)
👍7🤣3🐳2🤯1
Немного о pet project

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

Отвечаю.

Сейчас мой основной open source contribute - это попытка создать JavaScript без изъянов. Точнее TypeScript без изъянов.

Для описания мотивации, цели, причин и следствий нескольких абзацев telegram поста не хватит. Но, небольшой спойлер: готовлю материал об этом для новой медиа-площадки.

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

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

В общем, чтобы проникнуться кодом и поднять мне мотивацию продолжать его писать, вы можете зайти на GitHub и поставить звёздочку!
👍62🔥2🤩1
Про найм

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

Не знаю, может там были проблемы с резюме, но позавчера открыл своё и расписал собеседования на неделю вперёд.

Поделитесь в комментариях своим опытом в текущей ситуации
👏4😁1🤔1
StepOne | Степан Минин pinned «Немного о pet project В прошлом посте я написал про то, как опыт коммерческой разработки повлиял на мой стиль его ведения. Однако, может возникнуть закономерный вопрос: «Так чем ты там занимаешься?» Отвечаю. Сейчас мой основной open source contribute -…»
Нестандартная ситуация

История без имён и скриншотов, потому что я добрый и этичный.

Вечером пятницы открыл личку в LinkedIn. Там сообщение от рекрутёрши с очередным предложением рассмотреть вакансию. Задал уточняющий вопрос, закрыл ноутбук и ушёл наслаждаться выходными.

Проходит некоторое время и наступает воскресенье. Неожиданно, в мои личные сообщения в мессенджере прорывается та самая рекрутёрша.

Слово за слово что-то накидывает про вакансию, условия, грейды, ожидая, что я отвечу. В выходные.

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

Во-первых, такая активность сотрудника в выходные многое говорит о процессах и транслируемых ценностях внутри компании.
Во-вторых, отсутствие границы между личным и профессиональным - верх некомпетентности и непрофессионализма.
👍15👎3🤡3😢1
Про беженцев

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

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

Нет, вы только прочитайте формулировку: «давно созрело желание пожить в цивилизованном государстве с работающими социальными институтами»

Насколько же это субъективно и эмоционально. Видимо, вместо занятия разработкой такие «специалисты» проходят уроки в школе сарказма Тони Старка.

Тоже хотел бы посетить пару уроков, ведь потом оказывается, что:

▪️Покупательская способность зарплаты падает на несколько порядков

▪️Уровень развития b2c сервисов где-то в каменном веке

▪️Совершенно другой и непонятный ландшафт как рынка труда, так и социума

В общем, не поддавайтесь истерии новостного фона.
👍16👎3🤔2🤡2🤨2👏1
Последние пару недель проходил собеседования

Как и многим другим специалистам в индустрии, мне нужен инструмент для объективной оценки себя и исследования конъюктуры рынка.

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

Помимо этого, можно узнать запросы рынка. Какие навыки в тренде, какие устарели. Узнать свои точки роста, в чём плаваешь, в чём спец.

Одним словом, мастхэв.

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

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

Поэтому, мне тоже надо, в своём роде, провести собеседование. Узнать стек, процессы, проблемы, вызовы, задачи. Сделать выводы. И пока обо всём спрашиваю, из-за вовлечённости в процесс, дико устаю.

Но даже ощущение выжатого лимона не сможет затмить той пользы, которую приносит процесс. Поэтому, не бойтесь и собеседуйтесь.
🔥14👍41🐳1
Кто такой senior?

Этим вопросом задаётся каждый в it. Компания, джун, миддл, сам сеньор.

Кто-то отвечает на этот вопрос необходимым количеством лет опыта. Другие говорят, что это определённый уровень отвественности. Третьи про технические знания.

Однако, после выхода на рынок оказывается, что у всех разные критерии к этому грейду, и нельзя объективно ответить на этот вопрос. Попытки сделать это - суть записать следствия в причины.

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

Поэтому, сеньор это тот, кому сказали: «<Имя>, рады вам сообщить, что вы приняты в <компания> на должность senior <что-то там> developer!»

А ещё, можете поздравить меня - получил такое сообщение!
👍20🔥9🎉5🤩3👏1
Counter-offer is a bad practice

Сотрудник уходит из компании. Или он ценный кадр, или на рынке дефицит (привет, айти) - не важно. Поиск и замена стоит где-то два его оклада в месяц.

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

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

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

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

Как вы могли понять, согласие остаться автоматически ставит работника в слабую позицию. Поэтому, будьте тверды и решительны. Собрались уходить, уходите. И каждое решение должно быть выверенным и взвешенным, доказывая осознанный подход к жизни.
👍15🔥1👏1🤯1
JetBrains облажались

И признались в собственной стагнации и творческой импотенции. Недавно вышел preview release нового продукта Fleet. Но нужен ли он?

Многие ожидали от Fleet «убийство» Visual Studio Code. Давайте пройдёмся по пунктам и разберёмся кого убьёт новая IDE.

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

Fleet позиционируется как легковесный редактор, но в реальности дела обстоят иначе. Для установки надо скачать некий JetBrains Toolbox, уже в котором надо выбрать желаемый продукт. Спасибо компании за лишнюю головную боль.

А ещё спасибо за то, что теперь пользователей компьютеров больше не волнует вопрос, куда девать лишнюю ОЗУ. Ведь теперь её не будет. Fleet потребляет от 2 до 3 ГБ оперативной памяти.

Smart mode - это вообще не киллер фича. Мне предлагают довериться некоторому чёрному ящику в вопросах удовлетворения потребностей при разработке, использующей конкретную технологию.

Лучше скачаю подходящую IDE и допилю её соответствующими плагинами, или сделаю это в том же VS Code. А текущая модель расширения Fleet также, всё ещё в разработке, и нет гарантии, что её не свернут.

В общем, ребята выкатили на всеобщее обозрение сырой неэффективный продукт, не привносящий ничего нового на рынок. Так что, Fleet не убийца VS Code, а убийца JetBrains.
👍12🤯3👎1👏1💯1
Это прозвучит странно…

Но Microsoft знает толк в «импортозамещении»! Сейчас объясню, что это значит.

На языке программирования C# написана одна из самых популярных библиотек по работе с JSON - Newtonsoft.Json.

Я бы сказал, сверхпопулярная - почти 2.5 миллиарда скачиваний. Дошло до того, что платформа .net core (до версии 3.0) включала в себе различные адаптеры и коннекторы под этот инструмент. Под стороннюю библиотеку!

Так появился пакет System.Text.Json, который покрывает 100% потребностей ежедневных задач при работе с форматом. Так ещё и имеет нативную поддержку платформы и работает эффективнее, как по времени, так и по памяти.
👏9👍4😁3🔥1