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

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

Я - @rsakutin

РКН - https://www.gosuslugi.ru/snet/67d8231025b58f3d79091b83
Download Telegram
Проблема же не в том, что у Хауди код плохой.

Он делает развлекательный контент, он может делать как хочет.

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

Но Хауди уверен что код у него хороший.

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

Он действительно уверен что он пишет хоть и не ужасно, но нормально.

А фактически там уровень дошкольной группы яселек «Ромашка».
👍2
Уже завтра буду выступать на тему: "Как стать хорошим программистом?"

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

Если у вас хватит духу увидеть свою проблему и не закрыть глаза, то следом я вам покажу путь. Это будет бесплатный набор материала, который переведёт вас из говнокодеров в профессионалы своего дела.

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

Зарегистрируйтесь чтобы попасть на прямой эфир - https://napilnik-first.minisite.ai/
👍2
Тут в комментариях опять понабежали ребята с советами, что если я буду не только критиковать но и показывать реализацию по лучше, то будет круто.


Напомню что я так делаю с первого видео.

Карта:

1) Обзор: "Программист круче Cакутина и берёт в 5 раз меньше Ревью его кода!"
1.1) Перепись: "Переписываем код программиста круче Сакутина в 5 раз"

3) Обзор: "Заказал скрипт для Unity у четырёх разных программистов и смотрю их код"
3.1) Перепись: "Переделываю скрипты в Unity после фрилансеров"

4) "3 разных реализации одной и той же задачи в Unity на C#" - отдельное видео с разбором конкретной ситуации и различных решений.

5) Обзор: "Говнокурс по Unity? Углублённый курс по разработке игр от UnityStudy"
5.1) Перепись: "Переписал C# код "учителя" за 2 часа"

6) "Даже с таким кодом можно побеждать. Детские ошибки!" - внутри есть точечная перепись.

7) Обзор: "Гоша Дударь опять лезет к нам в реп | Обзор кода C# и Unity"
7.1) Перепись: "Переписал игру Гоши Дударя на Unity | Она стала в 10 раз лучше!"

8) "Ужасный код на C# и WPF - Гоша Дударь опять в телеке
" - перепись и обзор в одном видео.

9) "Заказал УЖАСНЫЙ код у фрилансера за 500 рублей. Unity + C# рефакторинг" - перепись и обзор в одном видео.

10) "Обзор треш-кода программиста с Авито | Подписчики унизили мой код | Оптимизировал игру в 3 раза!
" - перепись и обзор в одном видео.

Рубрика код-патруль. Полностью сосредотачиваемся на переписи кода:

11) "Переписываем ИИ на Unity и другой дикий говнокод | КодПатруль #1"
12) "Говнокод из популярной игры, частая ошибка и криптостойкие алгоритмы в C# и Unity | КодПатруль #2"
13) "YandereDev один из худших проектов на Unity и C# что я видел | КодПатруль #3"
14) "Переписываю код подписчиков, рефакторинг от профессионала | КодПатруль #4 | C# и Unity"

Рубрика Unity Best Practices. Разбираем отдельные мелкие проблемы:

15) "Как работать с полями? Зачем _ и SerializeField? / Unity Best Practices #1"
16) "Пиши методы как профессионал в Unity / Unity Best Practices #2"
17) "Убейте менеджеров, контроллеры и системы. Декомпозиция компонентов в Unity / Unity Best Practices #3"
👍2
Очень рад что такая выдающаяся личность как Абрахам упомянула меня.

Без шуток.

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

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

Приходите завтра на бесплатный семинар от меня, расскажу за искусство и как быть нормальным разработчиком - 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