Роман Сакутин
103K subscribers
1.34K photos
140 videos
18 files
735 links
Основатель студии разработки игр Агава и школы ЯЮниор. Настоящий программист с опытом 10+ лет.

Служба поддержки школы - @ijuniorSupportBot

Я - @rsakutin

РКН - https://www.gosuslugi.ru/snet/67d8231025b58f3d79091b83
Download Telegram
Очень рад что такая выдающаяся личность как Абрахам упомянула меня.

Без шуток.

Ну пишет код как дурак какой-то, ну ничего страшного.

Не собак же еб*т, уже хорошо.

Приходите завтра на бесплатный семинар от меня, расскажу за искусство и как быть нормальным разработчиком - https://napilnik-first.minisite.ai/
👍2
Нам в штате не хватает 20 человек, моим партнёрам нужно ещё около 140 программистов.

Помимо этого мне каждый день пишут новые компании которым нужно пару человек.

И после этого вы говорите, что на рынке нет вакансий?

Мы джунам Unity + C# даём от 56 000 рублей в месяц, некоторые компании готовы стартовать оффер от 70 000.

Так почему вы не можете найти работу?

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

Но он не соответствует стандартам и написан ПЛОХО.

Реально плохо.

И если вас не берут на работу, то признайтесь уже что вы ПЛОХОЙ программист.

Если хотите стать хороши, то добро пожаловать на мой новый курс "Напильник" в нём я вас за месяц превращу из плохого программиста в хорошего и помогу найти работу с достойной стартовой ЗП.

Сейчас действует скидка в 30% для моей аудитории и старых клиентов, с 22-го числа начнутся общие продажи и цена поднимется.

Успейте записаться - https://ijunior.ru/napilnik?utm_source=telega&utm_medium=social&utm_campaign=promo01
👍2
Регулярно задаёте один и тот же вопрос, на который я уже устал отвечать.

Зачем _ в названии переменных?

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

Можете обвинять меня в снобизме, но на том же собеседовании вас будут оценивать такие же снобы, и в ВАШИХ интересах им понравиться и получить хороший оффер.

Не компании нужно, вам нужно.

Да, они могут упустить хорошего специалиста, но пострадаете вы, и вы будете безработным дураком с самомнением размером с дом.

Поэтому в ВАШИХ интересах соблюдать общепринятые правила, иначе вы будете как слон в посудной лавке, который неправильно оценивает свой размер и громит всё вокруг.

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

Ну и собственно _ закреплён в стандартах CoreFx. Если вы попали в такую студию, то делайте так, как принято у них. Но это ошибка связанна с двумя вещами:

1) Большая часть примеров кода на Unity не следует стандарту CoreFx и написана слабыми разработчиками;
2) Есть старая редакция Microsoft Design Guidline, которая ранее рекомендовала не использовать _ при именовании приватных полей.

В новых рекомендациях от Microsoft рекомендуется использовать _.

Например, редакция за 2008 год содержит (General Naming Conventions ): "Use camel casing ("camelCasing") when naming private or internal fields, and prefix them with _."

А уже за 2021 (C# Coding Conventions): "Use camel casing ("camelCasing") when naming private or internal fields, and prefix them with _."

Но если мне не изменяет память, то исправления входили в рекомендации уже с года так 2011-го. Да и вообще первая не про C# вовсе.

Если интересно могу рассказать почему приняли использовать _

Про другие фишки профессионального кода вы можете узнать из моего курса "Напильник" где всего за месяц я превращу вас в профессиональные программисты - https://ijunior.ru/napilnik?utm_source=telega&utm_medium=social&utm_campaign=promo02
👍2
Печально то, что происходит с XYZ.

Меня тоже раз в пару месяцев посещает мысль: "А давайте ещё пару направлений откроем?". Но я отказываюсь, сейчас у нас хорошо одно направление и один флагманский курс. Ещё два маленьких.

Это позволяет тонко всё контролировать и на 100% выполнять обещания.

Да это трудно превратить в большую историю, но зато на руках у меня один хороший курс в котором я уверен.

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

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

Goodnight, sweet prince
👍2
Объектно-ориентированное программирование - это как секс у подростков. Все подростки в нём разбираются, но никто так и не занимался.

Про ООП много сказано и написано, но, к сожалению, не всё понято. Давайте разомнемся на небольшой загадке про инкапсуляцию.

Я вам сразу скажу, что считаю, что текущая теория программирования уже давно отошла от допотопного определения инкапсуляции как механизма соединения данных с функциями (методами).

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

Короче инкапсуляция - это защита состояния объекта. И тут действительно есть о чём подумать. Особенно если обратиться к контрактному программированию и понятию инварианта.

Инвариант - это определенное условие, которое всегда истинно для объекта.

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

Допустим у нас есть класс “Инвентарь”, в инвентаре хранятся предметы. Есть инвариант - суммарный вес предметов в инвентаре не может превышать силу игрока * 100.

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

Давайте посмотрим на такой код, который пытается решить эту задачу - https://gist.github.com/HolyMonkey/164a6b05eb869781b4562985237f9fa2

Соблюдает ли он наше правило?

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

if (currentWeidth + count > MaxWeidth)
throw new InvalidOperationException();

Но что если я сделаю так:

var bag = new Bag();
bag.MaxWeidth = 10;
bag.AddItem(“Sword”, 5);
bag.MaxWidth = 4; //всё, объект в некорректном состоянии :)

Можно же закрыть MaxWidth от изменения и назначать через конструктор? Да, можно. Но если вы додумаетесь сделать метод по типу SetMaxWidth - вы опять оставите открытой форточку, через которую вломятся в ваш объект и поломают его.

Поэтому инкапсуляция - это не просто закрытие полей для изменения. Инкапсуляция - это контроль за своим состоянием. А его не всегда можно добиться, поэтому если объект не может что-то контролировать, то он не считает это частью себя. Это важная концепция, подумайте над ней.

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

Ах да, ещё, если вы закроете на изменение MaxWidth, объект всё равно можно поломать. Кто скажет как?

К слову, на моём новом курсе “Напильник” мы целую неделю посвятим вопросам “правильного” ООП, где на практике разберём особенность инкапсуляции и прочих столпов. Записывайтесь - https://ijunior.ru/napilnik?utm_source=telega&utm_medium=social&utm_campaign=promo05
👍2
Конечно же, если просто приватить всё до чего дотягиваются вашу руки, то инкапсуляцию вы не достигните.

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

Сегодня выпущу большое видео с детальным разбором как достигается инкапсуляция на основе иммутабельности, ограничивающих интерфейсов и агрегатов из DDD.
👍2
Ищем 3D моделера на проектную работу

Мы разрабатываем Hypercasual игры в которых нужна точечная работа над контентом. Ищем человека Middle+ уровня и готовы предложить ставку в 1000-1500 рублей в час.

В основном нам нужно делать гуманоидных персонажей и риг к ним + бывает надо накидать анимации.

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

Оформление возможно как по ГПХ так и самозанятых, если заинтересует full-time то делаем полное ТК.

Требования:
1) Большое количество работ в Toon стиле;
2) Умение делать риг и залипательные анимации.

Пишите в ЛС или на почту - [email protected]

В письмо пожалуйста сразу указывайте портфолио и сколько ожидаете ставку в час.
👍2
Мой новый курс максимально авторский, в конце каждой записи думаю что бы ещё рассказать и рассказываю.

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

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

Курс так сказать для своих - https://ijunior.ru/napilnik
👍2
167 мыслей по книге "Чистый код"

Собираю конспекты по книгам которые я использую в новом курсе "Напильник"

Старт кстати уже послезавтра, кто не успел тот сильно пожалел.

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

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

К курсу постараюсь сделать несколько таких конспектов но уже к следующим потокам. Пока будет доступен 1-2. Курс хоть и идёт 1 месяц но доступ к материалу пожизненный так, что если будут обновления - вы их получите. 1 месяц идут только проверки домашек.

Записаться на курс - https://ijunior.ru/napilnik
👍2
Не функция а метод
👍2
Открыли офис для сотрудников из Питера, скоро будет блог со всеми деталями :)

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

Всего мы сделали в сотрудничестве с дизайнером 25 штук, 5 подарили лучшим сотрудникам моей студии разработки.

Сейчас вы можете купить худи с 50% скидкой - https://ijunior.ru/wear
👍2
Сейчас у нас трудоустроено около 33 человека наших учеников.

13 человек находится на full-time и ещё 20 на проектной основе.

Я очень рад, что мы наконец-то начали собирать ребят в офиса в разных городах. Сейчас открылся офис на 6 человек в Питере и я не хочу на этом останавливаться.

Надеюсь к концу года мы уже будем в трёх городах и не меньше чем с 40 разработчиками в full-time.

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

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

Присоединяйся к нам, научим с нуля и гарантируем трудоустройство - https://ijunior.ru/unity-start
👍2
👍2
Делаю большое исследование про архитектурные подходы в Unity и варианты решения проблемы с отсутствующим конструктором.

Любители ECS могут идти пососаться за другими гаражами, здесь увлечённо теребят пенисы любители ООП. Прошу нам не мешать.

В курсе Напильник будет целая глава на эту тему, хотя я не собирался её добавлять. Люди просят, а мне не жалко.

Чуть позже и на канал общие мысли запишу.

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

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

В общем предлагаю занять места ушедших - https://ijunior.ru/napilnik

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

Мне сказать нечего.

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

И я ставлю перед собой цель сконцентрироваться на работе и выпустить что-нибудь разрывное.

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

Лучшей его защитой будет когда мы заработаем много бумажных денег.

Всё остальное пердеть в лужу.
👍2