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

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

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

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

Ютуб https://www.youtube.com/@steponeit
Download Telegram
ИИ не виноват в сокращении числа вакансий

Людям в интернете свойственно путать тёплое с мягким

Такое особенно вспоминается, когда видишь подобные новости, где в очередной раз кричат как всем пора перестать учиться программированию

Мол, уже поздно, поезд ушёл, злой робот нейросеть отберёт у всех работу

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

Например, многие любят связывать кризис мирового IT рынка труда с наступлением псевдо-Скайнета 🤣

Есть график статистики по открытым айти вакансиям в реальном времени

Если на него взглянуть, то даже жертве ЕГЭ станет очевидно, что активная фаза спада началась, когда на последствия вертолётных ковидных денег наложилось влияние СВО на мировую экономику

И в момент начала популярности ChatGPT (декабрь 2022) фриз найма и увольнения достигли пика скорости

Так что псевдо-ИИ оказывает не бОльшее влияние на судьбу профессии программиста, чем ваш знак зодиака на сумму оффера

Что интересно, дно было пройдено уже в 1 квартале 2023 года, а с того момента всё отросло на 30%

Так что не дайте себя обмануть очередными заявлениями людей, которым выгодно их делать
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥43
StepOne Batfleck
🔥22❤‍🔥3🤩2
ТОП-10 АКРОНИМОВ CODE REVIEW

Стань профи и получи заветный аппрув!

1. LGTM - Looks good to me
2. NIT - Nitpicking | Вкусовщина
3. PTAL - Please take a look
4. WIP - Work in progress
5. MR - Merge Request | GitLab
6. PR - Pull Request | GitHub
7. ACK - Acknowledged | Согласен
8. NACK - Not Acknowledged | Не согласен
9. DRY - Don't repeat yourself
10. KISS - Keep it stupid simple
👍14🔥32
Стать сеньором очень просто

Вы могли в этом убедиться, прочитав историю о том, как я это сделал в 21

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


Речь конечно же о технике: с точки зрения задаваемых вопросов и требуемых знаний всё максимально идентично

Остаётся только обновить резюме, выйти на рынок и сделать всех

Старший/ведущий/главный - всё это может быть в вашем оффере, стоит лишь договориться об интервью.

Если вы мне не верите или вам не хватает отцовского наставления…😅

Загляните на канал Александра "Папочка Дотнета" @dotnetdad. Он прошел совершенно другой путь, не заканчивал топовый ВУЗ, не выигрывал олимпиад и рассказывает как стать синьором из таких исходных данных
👍113🔥3
Бро дропнул самый жёсткий StepOne эдит и думал что мы не заметим 😨

https://youtube.com/shorts/ZUQuS19-niI
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥104😁2😍2👍1
Сентябрь 2024 точно будет гореть 🔥

Ведь StepOne выступит аж на трёх конференциях!!!
Настоящий дотнет тур!

1️⃣5-8 сентября, DevFest в Омске
Искусство unit-тестирования. Сокращаем Arrange до нуля


2️⃣10-11 сентября, DotNext в Москве
Как в C# 11 появилась обобщенная математика


3️⃣ 27-28 сентября, Стачка в Санкт-Петербурге
Такого "Посетителя" вы ещё не видели - Visitor NET


Сохраняй этот пост, чтобы не потерять расписание ❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16🤩43👍1
Всем привет, коллеги!

Прямо сейчас у вас есть уникальная возможность получить опыт контрибута в опен-сорс проект!

При чём не за счёт обновления библиотек или правки опечаток, а благодаря разработке фичей и проектированию архитектуры!

Приглашаю всех желающих в свой репозиторий https://github.com/Stepami/hydranoscript

Это учебный проект, начинавшийся как недоJS, и пришедший в состояние смеси TypeScript и Go

Я наконец-то закончил годовалый рефакторинг, и готов открыть миру его исходный код без стыда)

Помимо этого, получился публичный реверс инжиниринг статического анализа современных ЯП: как реализуется вывод типов, синтаксический сахар разный и тд

Проект движется в сторону интерпретатора на DDD и Clean Architecture - эксперимент по упрощению понимания и без того архисложной предметки

Также из интересного: получилось изобрести велосипед структуру данных для адресации, которая при изменении набора элементов пересчитывает адреса за O(1)

Что это значит?

Например, есть список инструкций, и у каждой инструкции есть адрес, например, некоторое число:
0: a = 0
1: x = 2
2: y = a
3: print x

Мы видим, что инструкции с адресом 0 и 2 можно выкинуть, они являются мёртвым кодом.
Тогда останется:
1: x = 2
3: print x

Но теперь виртуальная машина ах*еет , потому что старт у неё ноль, следующий шаг плюс 1 - она просто не сможет пройтись по оставшемуся набору, нужно пересчитать адреса:
0: x = 2
1: print x

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

Сейчас там есть две горящих задачки, с которыми справится даже джун:


1️⃣https://github.com/Stepami/hydranoscript/issues/29

2️⃣ https://github.com/Stepami/hydranoscript/issues/30

С меня опыт на интересном, уважаемом и перспективном проекте, с вас - звёздочка репозиторию)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍63😁2
HR не нужны или нужны?

Наткнулся в интернетах на очередной кейс дискредитации современного найма в айти и института подбора кадров в целом

Азиат, который лучше всех нас во всём, по имени Джерри Ли решил проверить на практике мой гайд по резюме на бусти

Данную мной структуру иностранный специалист сохранил, а опыт он решил придумать 👀
При этом намеренно абсурдным:
Запускал новые продукты под ЛСД и грибами


Результаты, каких я не мог обещать даже в своём гайде - из 100 откликов 40 приглашений на собеседование

Естественно, это в очередной раз доказывает то, насколько левой пяткой правого полупопия выполняется просмотр резюме отдельно взятыми специалистами сферы рекрутинга

Так что мои фразы про 6 секунд в гайде нисколько не драматизация

Всё это уже было доказано научно в рамках исследования

Прикладываю в виде пдфок полный кейс и исследование

P.S. ИЧСХ, об этом изначально написала другая рекрутерша 🤣
Please open Telegram to view this post
VIEW IN TELEGRAM
6🔥3👍2😁2🤩2
Ловите ещё одну красивую картинку, которая возможно пригодится на собесе
👍109🔥2
StepOne | Степан Минин
Меня зовут Степан Минин, мне 23 и я - один из самых успешных 📱 программистов в медийной сфере Моя история настолько исключительная и уникальная, что её нельзя описать двумя предложениями Поэтому, я сделал целую трилогию постов, ознакомиться с которой можно…
Дорогие подписчики 💔

Мне кажется, я вас обманул(

Это настолько фундаментальное противоречие, что молчать невозможно!

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

Но путь в эту точку был другим.

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

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

А опыт не надо было накручивать, так как трудовую книжку получил в 18 лет.

Наоборот, его так много, что пора уже скрывать лишнее!)

Каждый день в голове проскакивают строчки, и не рэперские, а на C#!)

Программирование для меня не просто работа, а образующее дело, за пределами которого себя не вижу...

Да, мне в кайф этим жить и дышать, как бы душно и скучно моментами это не казалось.

Только вдумайтесь, три поста, три простыни текста потрачено на описание моей пахоты, а вы так и не поняли, что у вас было прямо под носом...

Верно говорят - хочешь что-то спрятать, положи у всех на виду.

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

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

Чему вас точно могу научить, так это:
- Мужественно встречать жизненные испытания
- Воле к победе
- Труду вопреки слабости и обстоятельствам
- Упорству не меньше бычьего

Так что, vision перенастроен.
Идём дальше, надеюсь вы со мной💪

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

🙏🙏🙏
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍9😁53🥰1
Строго типизированные теории в xUnit

Для передачи данных в тест есть много способов: [InlineData] [MemberData] [ClassData]

Последние два способа оперируют контрактом IEnumerable<object[]>

Встаёт вопрос - как надавать по рукам тем, кто засунет в object[] то, что в тест попадать не должно?

Для этого существует класс TheoryData<>

Он даёт все преимущества строгих проверок типов C# на этапе компиляции

Использовать можно по-разному, например так:
public class CalculatorTestData : TheoryData<int, int, int>
{
public CalculatorTestData()
{
Add(1, 2, 3);
Add(-4, -6, -10);
Add(-2, 2, 0);
Add(int.MinValue, -1, int.MaxValue);
Add(1.5, 2.3m, "The value"); // will not compile!
}
}


И далее в тесте:

[Theory]
[ClassData(typeof(CalculatorTestData))]
public void CanAdd(int value1, int value2, int expected)
{
var calculator = new Calculator();
var result = calculator.Add(value1, value2);
Assert.Equal(expected, result);
}


А пример с мембер датой можно подсмотреть в моём репозитории hydranoscript:
https://github.com/Stepami/hydranoscript/blob/master/tests/HydraScript.IntegrationTests/SuccessfulProgramsTests.cs
👍132🔥2
Контроль архитектуры компилятором вместо тестов

Наконец-то окончательно завершён многолетний рефакторинг моего интерпретатора - архитектура настолько проработана, хороша и не противоречива, насколько это возможно и задумывалось изначально

ООП, DDD, Clean Architecture, изолированные поддомены, независимые контракты, слабосвязанные компоненты и сильносвязные модули

В этом посте расскажу об одном приёме, который помог мне добиться этого архитектурного успеха

Остальную историю проекта расскажу чуть позже в статье на Хабре

Секрет в использовании проектов вместо папок 😱

Это настоящая архитектурная статическая типизация

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

Так гораздо проще, чем писать тесты на ArchUnitNET и потом внедрять их в CI/CD
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥43
Разрабатывай HydraScript

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

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

Сейчас хочется увеличить покрытие проекта unit тестами, да и в целом написать их)

Какие-то тесты есть, и часть из них использует библиотеку Moq

Чтобы не погружаться корнями в зависимость от этого инструмента - сейчас надо перейти на другой, пока переезд будет стоит дёшево (очень)

Поэтому приглашаю забрать этот issue и помочь мне переехать на NSubstitute
👍41🤩1
Забыл написать, если вы хотите знать какие задачи лёгкие и брать сейчас, то в Issues проекта hydranoscript выбираете:
- milestone 2.0.0
- label "good first issue"

https://github.com/Stepami/hydranoscript/issues?q=is%3Aopen+is%3Aissue+milestone%3Av2.0.0+label%3A%22good+first+issue%22
👍41🔥1
StepOne | Степан Минин
Контроль архитектуры компилятором вместо тестов Наконец-то окончательно завершён многолетний рефакторинг моего интерпретатора - архитектура настолько проработана, хороша и не противоречива, насколько это возможно и задумывалось изначально ООП, DDD, Clean…
StepOne - Senior DevOps???
GitHub Actions CI/CD Expert


На выходных сделал две вещи:

1️⃣Дописал статью на Хабр с подробным рассказом про свой пет-проект hydranoscript.
Там появился логотип кстати, прикладываю к посту!
Выйдет в конце августа - начале сентября

Как раз добью рейтинги перед конфами

2️⃣ Провозился с пайплайнами и построил свою маленькую автоматизацию мечты 🥰
Разобрался с автоматическим версионированием и сборкой GitHub релиза (не путать с паблишем исполняемых файлов)

Версионирование на плечах GitVersion: версия не прописывается руками, а подставляется при билде!

Теперь разработка ведётся согласно GitHubFlow - каждый мёрж в master == Patch increment.

Каждый пуш триггерит workflow (она же pipeline в GitLab), где происходит:
- сборка и прогон юнит тестов
- создание и загрузка отчёта о покрытии
- прогон интеграционников
- загрузка windows билда (для фича веток)

При мерже в мастер если есть инкремент, то происходит пуш тега

Чтобы не релизить на каждый тег, было принято решение запускать релизный workflow при пуше в ветку release

Там происходит автоматическое создание и заполнение релиза тулзой GitReleaseManager, которая считывает milestone и связанные issues

А в артефакты загружаются исполняемые файлы для четырёх платформ: винда, линух, мак интел, мак м1

Подсмотреть yml можно тут -> https://github.com/Stepami/hydranoscript/tree/master/.github/workflows

UPD Автоматически сгенерированный релиз выглядит так https://github.com/Stepami/hydranoscript/releases/tag/v2.0.0
Please open Telegram to view this post
VIEW IN TELEGRAM
👍121🔥1
Долой микросервисы!
Даёшь монолиты с монорепами!!!
❤‍🔥10🔥9👍51
😁18👍7🤩1