Вот и закончился мой отпуск в солнечной Карелии☀️
Болота радостно встретили бесконечными комарами и неожиданно хорошей погодой (обещали дождь на все эти дни)🪷
Но как только появился интернет, на душе как кошки заскребли😩 .. и вдруг я осознал, что хорошо понимаю, тех людей, которые сбегают из IT и открывают свою пасеку🐝 ...
Темой сегодняшней статьи могло быть выгорание🔥 , но вместо того, чтобы ее писать я решил позволить себе отдохнуть😁 .
И вы тоже отдыхайте почаще🏖️ .
А спросить подробнее, как там Карелия, вы можете на
📱 стриме по Майнкрафту, уже онлайн 📱
Болота радостно встретили бесконечными комарами и неожиданно хорошей погодой (обещали дождь на все эти дни)🪷
Но как только появился интернет, на душе как кошки заскребли
Темой сегодняшней статьи могло быть выгорание
И вы тоже отдыхайте почаще
А спросить подробнее, как там Карелия, вы можете на
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7❤3 2 1 1
MVVM – ОТДЕЛЯЕМ МОРДУ ОТ ТЕЛА
Обплевав GRASP, давайте теперь поговорим о настоящих паттернах.
📯 Model-View-ViewModel
Таким образом, мы разделяем проект на два независимых друг от друга модуля➗ : картинку и данные. А между ними для сообщения кидаем мостик в виде ViewModel⛓ .
📯 Где его можно использовать?
Да практически в любом приложении с графикой💅 . Ведь он позволяет:
Во-первых, работать независимо дизайнерам👨🎨 (возможно, даже без кода) и программистам👨💻 .
Во-вторых, легко перенести часть или всю модель на другую платформу🚉. То-есть, при резком изменении интерфейса программы, нам не придется переделывать ее всю, а только View🧠 .
Также этот шаблон позволяет цеплять несколько интерфейсов к одним данным🪝(заходить Вконтактик с компьютера и телефона) : в вебе и мультиплеерных играх🌐 MVVM "включен" по-умолчанию, потому что там сервер⌨️ и морда😐 (бэкенд и фронтенд) выполняются на разных машинах🚗 .
📯 Расширяем сознание
Конкретно наш паттерн в узком смысле строго привязан📍 к платформам WPF и Silverlight (даже не гуглите, что это) , потому что использует их механизм привязки данных🧶 . Однако в такой трактовке было бы мало смысла его тут разбирать🤡 .
📯 Семья MVVM
Вообще-то, придумать, как разделить картинку и данные пытались уже давно👵 , и у MVVM есть два (не очень удачных) старших брата👨👨👦:
1. MVC – Model-View-Controller:
Контроллер изменяет модель, а модель изменяет вид♻️. Такой вот любовный треугольник получается❤️ . На мой взгляд, тут два минуса: неполное разделение модели и вида🔪 , а также лишнее разделение ввода📥 и вывода📤.
2. MVP – Model-View-Presenter:
Presenter управляет как View, так и Model. Здесь тот же MVVM, но промежуточное звено не просто адаптер, а управляющий элемент👑 . Соответственно, Model – превращается в DTO с небольшим количеством логики📦.
⬇️ Пишите в комментариях, какие еще паттерны стоит разобрать! 💬
🤡 – О да, моя программа прямо модель, и у нее такие виды🫦
🎸 – Классы MVC такие:
"Я кондуктор, я кондуктор,
Люди для меня как фрукты"
Обплевав GRASP, давайте теперь поговорим о настоящих паттернах.
– шаблон, разделяющий программу на три части:
Model – бизнес-логика🏭;
View – графический интерфейс🖼 ;
ViewModel – мостик между ними🌉.
Таким образом, мы разделяем проект на два независимых друг от друга модуля
Да практически в любом приложении с графикой
Во-первых, работать независимо дизайнерам
Во-вторых, легко перенести часть или всю модель на другую платформу🚉. То-есть, при резком изменении интерфейса программы, нам не придется переделывать ее всю, а только View
Также этот шаблон позволяет цеплять несколько интерфейсов к одним данным🪝
Конкретно наш паттерн в узком смысле строго привязан
Но стоит заменить "конкретный механизм привязки" на "любой механизм привязки", и дело становится намного интереснее😳 . Тогда нам будет безразлично, как именно организован ViewModel: хоть этим самым биндингом, хоть Observer'ом, хоть вручную🫳 .
Вообще-то, придумать, как разделить картинку и данные пытались уже давно
1. MVC – Model-View-Controller:
Контроллер изменяет модель, а модель изменяет вид♻️. Такой вот любовный треугольник получается
2. MVP – Model-View-Presenter:
Presenter управляет как View, так и Model. Здесь тот же MVVM, но промежуточное звено не просто адаптер, а управляющий элемент
"Я кондуктор, я кондуктор,
Люди для меня как фрукты"
Please open Telegram to view this post
VIEW IN TELEGRAM
Wild Russian GameDev Mentor
ВАЙБ-КОДИНГ ИЛИ ПОЧЕМУ ИИ НЕ СДЕЛАЕТ ИГРУ МЕЧТЫ ЗА ВАС Когда-то давно я пояснял за уровни языков программирования и упомянул там, что т.н. Zero-coding0️⃣ – мертворожденное направление💀 . И вот недавно всплыла💩 очередная вершина человеческой лени и жадности…
Помните пост про вайбкодинг🤔 ?
Теория теорией, но давайте на практике посмотрим, на что способен современный искусственный интеллект🤖 : попробуем навайбкодить себе простую игру и посчитаем, сколько критических багов в ней окажется😂 !
📱 Конечно, в прямом эфире на твиче 📱 ,
так что вы можете в этом поучаствовать!
Теория теорией, но давайте на практике посмотрим, на что способен современный искусственный интеллект
так что вы можете в этом поучаствовать!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2 1 1
ОСЬ ИЗМЕНЕНИЙ (НА КОТОРОЙ Я ВЕРТЕЛ ВАШ SRP)
Во многих статьях я уже упоминал ее вскользь👀 , пришло время поговорить подробнее об этом явлении💬 .
📯 Ось изменений
Сами изменения могут быть любыми, от исправления багов🪲 до удаления старых🗑 или добавления новых фич🎇 .
📯 Зачем она нужна?
Если вкратце, то для измерения соответствия SRP📐, но и не только . Ведь если у нас через модуль проходит единственная ось изменений, то у нас есть единственная причина его менять – значит, он имеет только одну ответственность🧠 .
📯 В смысле 2-3, написано же SINGLE responsibility?!
Понимаешь ли, дело в том, что всем немного насрать...
На самом деле, есть разница еще в размере класса🤏 , а так же в связности этих изменений⛓ .
Да, MVVM идет в жопу с таким подходом, однако.. а оно нам правда всегда нужно🤔 ? Как итог, я никогда не разделяю логику счета каких-то мелочей и их отрисовку🤟 .
📯 Не плодите классы
Давайте немного изменим определение:
Таким образом, как шашлык на шампур🍢 мы насаживаем всех, кто касается нашего обновления🆕 . И их тоже не должно быть слишком много. Иначе ты очень скоро запутаешься, что на чем завязано🧐 , и сам утонешь в своем же болоте🐸 .
🤡 – В моем коде нет лишних ответственностей, потому что я писал его безответственно😂 .
👌 – В мой код не нужно вносить изменения, он и так идеален!
Во многих статьях я уже упоминал ее вскользь
– это линия, проходящая через модуль/класс, когда его необходимо затронуть🫴 для внесении того или иного изменения.
Сами изменения могут быть любыми, от исправления багов🪲 до удаления старых
Если вкратце, то для измерения соответствия SRP📐
На практике, кончено, такого никто добиваться не будет😂 . Однако больше 2-3 осей на модуль свидетельствуют о том, что вам лучше встать на кухню, ведь вместо кода получается лапша🍜 .
На самом деле, есть разница еще в размере класса
Первое просто: если модуль небольшой и позволяет держать его весь в голове одновременно🤔 , можно пока что не думать о его разделении👌 .
Второе говорит о вероятности затронуть две оси вместе👋 . Например, когда мы меняем способ формирования данных👩💻 , мы наверняка захотим изменить и их вывод🖼 .В большинстве случаев.
Да, MVVM идет в жопу с таким подходом, однако.. а оно нам правда всегда нужно
Давайте немного изменим определение:
Ось изменений – это линия, проходящая через модули/классы, которые необходимо затронуть🫴 для внесении того или иного изменения.
Таким образом, как шашлык на шампур🍢 мы насаживаем всех, кто касается нашего обновления
Please open Telegram to view this post
VIEW IN TELEGRAM
КАК Я ПОБЕДИЛ БЕЛЫЙ ЛИСТ
Страх белого/чистого листа – распространенное явление. Это состояние, когда решил начать новый проект, но.. с чего начать-то🤔 ..?
📯 Ножницы бьют бумагу
Суефа дает важную подсказку: лист надо разрезать✂️ . Иначе говоря, слона надо есть по частям🐘. В общем, разбей задачу на подзадачи, эти подзадачи на еще более мелкие подзадачи, и так пока не достигнешь размера в 5-10 минут👊 . Короткое и простое дело легче начать, но главное – ты будешь знать, что делать👍 .
📯 Возьми этот лист и подотрись им
Во многом страх начать новое продиктован ответственностью, возлагаемой первым заложенным кирпичиком🧱 . Ведь от того, как начнешь, зависит ход всего проекта🏃 ! А что, если ты накосячишь в самом начале, и это аукнется так, что потом придется все переделывать😨 ?
Почти все в ИТ сделано через жопу, и ничего, работает💩 ! Вот и ты снимай белые перчатки, засучай рукава, и начинай работать👨💻 . В конце концов, ошибки – это ценнейший ресурс – опыт😎 , который как раз и нужен для (зачаровывания инструментов 📚 💎 ) успешного проекта😁 !
📯 Аппетит приходит во время еды
Подсознание обмануть не так сложно, оно сформировано для управления доисторической ящерицей🦖 , которая в разы тупее курицы🐔 .
📯 Прекрати прокрастинировать
Подробнее я напишу об этом в отдельной статье, здесь только скажу, что в белой пустой комнате📝 проекты начинаются намного проще, чем за компьютером с Майнкрафтом🦥 .
👌 – Следую только второму совету, на этом мои новые проекты и заканчиваются...
🤡 – Страх белого листа сформировался из-за многолетнего систематического угнетения ими черных листов.
Страх белого/чистого листа – распространенное явление. Это состояние, когда решил начать новый проект, но.. с чего начать-то
Суефа дает важную подсказку: лист надо разрезать
Имея список📜 (а лучше – план) действий, ты убьешь сразу двух зайцев 🚫 🐇 :
Во-первых, в маленькой задаче глаза не разбегаются👀 ;
Во-вторых, само написание плана действий – уже действие✍️ .
Во многом страх начать новое продиктован ответственностью, возлагаемой первым заложенным кирпичиком
Как хорошо, что все это не правда🙅♂️ . Мы не запускаем марсоходы, наши ошибки не стоят миллиарды долларов🪐 . Но что самое важное, наши ошибки стоят намного меньше, чем промедление🐢 в стремительном потоке рынка🤑 . К тому же, вероятность провалить проект из-за плохой идеи намного выше, чем вероятность провалить проект из-за каких угодно ошибок на старте🩼 .
Почти все в ИТ сделано через жопу, и ничего, работает
Создай проект📱 , настрой гит📱 , создай беседу в тг📱 или другом настоящем мессенджере для работы📱 , если у тебя команда. В общем, сделай вид, что ты уже начал проект🤥 .
Подсознание обмануть не так сложно, оно сформировано для управления доисторической ящерицей
Подробнее я напишу об этом в отдельной статье, здесь только скажу, что в белой пустой комнате📝 проекты начинаются намного проще, чем за компьютером с Майнкрафтом
Благодаря всему вышеперечисленному, меня больше не пускают в магазины канцелярии📎 , потому что их запасы белых листов начинают трястись и плакать при моем приближении😨 .
Please open Telegram to view this post
VIEW IN TELEGRAM
Давно меня не было в уличных гонках🏎 ...
Но все хорошее когда-то заканчивается, так и мое отсутствие в этом паблике🤷♀️ . Да-да, вы не ослышались, снова буду душнить про код и около него🎉 !!!
А пока вы ждете новый пост⏰ , посмотрите, как я делаю новую прикольную игру в прямом эфире👀 !
📱 Уже начали, присоединяйся! 📱
Но все хорошее когда-то заканчивается, так и мое отсутствие в этом паблике
А пока вы ждете новый пост
Please open Telegram to view this post
VIEW IN TELEGRAM
Как думаете, он реально умер или просто хайпит на своей смерти?
ИГРОВАРЕНЬЕ ДЛЯ ЧАЙНИКОВ
📯 Что это?
Это, конечно, в среднем, а вообще каждый пункт из определения выше может быть неправдой🤷♂️ . Геймджемы все уникальные, каждый со своими правилами и особенностями🤩 .
📯 Сначала поговорим о награде
Иногда есть денежный приз💰 , но, на самом деле, лучше, когда без него👹 . Деньги там смешные, зато вместо здоровой конкуренции будут накрутки, обиды и истерики😡 . Так что за деньги – нет🙅♂️ .
📯 Ахаха, может, мне еще и GNU-лицензией игру подписать?
Да, понимаю, делать что-то бесплатно – триггер всех работников интеллектуального труда😡 . Но что, если я скажу вам, что это не бесплатная работа, а обучение на реальных кейсах в условиях рынка🛒 , да еще и не за 180 000₽ (привет, GeekBrains 🤓 ) , а бесплатно😁 ? Глазки уже заблестели, отсюда вижу😎 !
📯 Бесплатный плейтест
Тут за три дня ты склепаешь MVP, в которую точно поиграют люди👾 ! Это может сэкономить тебе годы(!) работы над проектом💩 !
📯 Кому туда не надо
Если ты разработчик, и хочешь быть разработчиком🚣 , а не человеком-оркестром🪗 , то на геймджемы тебе путь заказан❌ . Больше всего очков опыта там дают в ветке геймдизайнерства🖥 , далее работа в команде😭 (если она есть), а вот программирование/рисование/другой спец. скилл – совсем чуть-чуть🤏. Потому что если ты в трехдневном проекте начнешь соблюдать SOLID🏗, то к концу джема у тебя будет очень красивый рисунок ключика. 🏴☠️ . А игры не будет. Делай монолит, и не выпендривайся 👊 .
🤡 – Мое любимое игроваренье – с клубничкой😏
👌 – Берем сперва укропу, потом кошачью жопу... Вот и получился проект на джем!
Game jam – мероприятие, где разработчики пытаются с нуля выстругать игру на предложенную тему👨💻 . Игровары работают соло, либо в небольшой группе🫂. Длится этот шабаш от одного до четырех дней🗓 .
Это, конечно, в среднем, а вообще каждый пункт из определения выше может быть неправдой
Иногда есть денежный приз
По-настоящему ценной наградой геймджема являются опыт и респект😂 . И да, в нашей ситуации, деньги действительно не главное😐 .
Да, понимаю, делать что-то бесплатно – триггер всех работников интеллектуального труда
А еще не стоит забывать про нетворкинг🔗 ! И, хотя комьюнити там довольно специфическое🤪 , и мало связанное с деньгами🍟 , но ребята преинтересные и опытные🧠 ! Многих сам люблю слушать, и не стыдно🤓 .
Придумал прорывную идею, но как узнать, понравится ли она публике🤮 ? Приноси ее на геймджем🍰 !
Тут за три дня ты склепаешь MVP, в которую точно поиграют люди
А организаторы приведут народ🤪 , да еще и заинтересованный поиграть в разные игры🤓 , в т.ч. и в твою. Звучит даже как-то незаконно🔐 ...
Если ты разработчик, и хочешь быть разработчиком
Также не надо туда идти, если ты хочешь побыстрее запрыгнуть на галерку🚣 . Геймджемы – путь к открытию собственной студии🔞 , а это значит жить на бабкину пенсию первые 3-5 лет👵 , и то, если повезет🤞 . То есть, конечно, если ты возьмешь проект с джема и допилишь его, хуже не будет, но первому проекту совсем не нужен джем👍 .
Please open Telegram to view this post
VIEW IN TELEGRAM
В ВУЗ НА ПРОГРАММИСТА
НУ ЧЕ БЛЯ ШКОЛЬНИЧКИ БЛЯ ДОПИЗДЕЛИСЬ НАХУЙ ЛЕТО ТО БЛЯТЬ ЗАКОНЧИЛОСЬ ЧЁ БЛЯ ЩАС КАК РАБЫ СИСТЕМЫ НАХУЙ ТОП ТОП ТОП БЛЯТЬ ПОЙДЕТЕ В ШКОЛУ НАХУЙ ОПЯТЬ УЧИТЬ ВСЯКУЮ ХУЙНЮ БЛЯТЬ ДОМАШКУ ДЕЛАТЬ
Я работаю репетитором довольно давно⏳ , и за это время прошел несколько вузовских курсов по программированию🎓 . Как ни удивительно, изучив только их, даже со всем усердием, программистом стать не получится👎 . Как будто, вы и без меня этого не знали 😮 .
📯 Что там есть
Усредняя уровень всех университетов огромной страны, вот, чему вас научат в неплохом заведении высшего образования🧑🎓 :
1.👅 Несколько языков на базовом уровне – в целом, жить можно, но без выкрутасов.
2. 🇬🇧 Технический английский – такого же качества, как в средней школе, то есть, надо самому доучиваться.
3.👁 Полезные вещи вокруг программирования, которые дадут настолько поверхностно, что вы их даже не заметите – продукт-менеджмент, git, тестирование, дизайн, БД, UML, устройство ПК, сетевые протоколы и что-то еще.
Теперь давайте в двух пунктах поговорим о том, что в универе надо доучивать самому:
📯 Архитектура
Институтская программа вообще не охватывает архитектуру🏗. Максимум, что там будет – это SOLID(👍) или GRASP(👎).
📯 Нет фреймворков
Программы и учебники к ним пишутся людьми, для которых Java – новиночка👴. В том мире можно было, выучив язык программирования, на нем и работать, однако это не так уже лет пятнадцать😔 . То есть, ты можешь написать сайт на HTML + CSS + JS, но Angular позволил бы сделать лучше и намного быстрее💨 . И так везде.
📯 Бей очкариков, поступай в ПТУ
Вообще-то, программист – рабочая специальность👨🔧, наравне с автослесарем🚘 или ветеринаром👨⚕️ . За два-три года вполне реально вырастить крепкого джуна🤓 или даже слабого мидла😎 , это не составит большого труда. Что с переменным успехом демонстрируют онлайн-помойкикурсы🗑 .
📯 Но есть нюанс
После всего вышесказанного... Я бы все равно рекомендовал попытаться поступить в ВУЗ, а не в колледж🤷♂️ . По крайней мере, в России🇷🇺 .
Во-первых, советская пропаганда, хоть и номинально была "рабочей👷♂️", на деле привила нам то, что человек без высшего образования – лох, дурачок и колхозан🤪 . Это можно преодолеть личными достижениями🏅 , но эти достижения не легче, чем просто окончить ВУЗ🤷♂️ .
Во-вторых, это нетворкинг📇 . Ты познакомишься с 20-50 людьми, которые будут работать, по большей части, в твоей области🍟 – это большое подспорье как в поиске работы, так и в поиске работников🧠 . Также на 3-4 курсе ты увидишь кучу компаний, которые с руками готовы оторвать детей с горящими глазами и неплохими результатами🫴 .
Я работаю репетитором довольно давно
Усредняя уровень всех университетов огромной страны, вот, чему вас научат в неплохом заведении высшего образования
1.
2. 🇬🇧 Технический английский – такого же качества, как в средней школе, то есть, надо самому доучиваться.
3.
То есть, это даже не интерн, это три четверти интерна👶. И то, при условии, что ты будешь старательно учиться, а небухатьпытаться понять, на что ты тратишь тут свои лучшие годы🍻 🤔 .
Теперь давайте в двух пунктах поговорим о том, что в универе надо доучивать самому:
Институтская программа вообще не охватывает архитектуру🏗. Максимум, что там будет – это SOLID(👍) или GRASP(👎).
Начинающим программистам кажется, что это мидловский сложный скилл😬 , однако это не правда🙅♂️ . На самом деле, человек, способный написать даже сложный алгоритм🤔 , но не понимающий, где и зачем он нужен, имеет не нулевую, но отрицательную ценность как работник👎 , потому что попусту тратит время более опытных коллег💰 .
Программы и учебники к ним пишутся людьми, для которых Java – новиночка👴. В том мире можно было, выучив язык программирования, на нем и работать, однако это не так уже лет пятнадцать
Это как строить дом без электроинструмента🧱 : долго, сложно, и никому не нужно. Так зачем нужен работник, который вместо отбойника берет кирку⛏ ?
Вообще-то, программист – рабочая специальность👨🔧, наравне с автослесарем
Заведения же высшего образования делают упор на другое и нужны для другого. Они – первая ступенька🪜 в научной карьере👩🔬. И, если твоя мечта – разрабатывать стандарт 6G, быть по ту сторону LLM, шарить за Computer Science, то это твой путь🛤. Денег и возможностей там радикально больше🤑 , однако не каждый осилитнаучную работу стать очкастым дрочилой в халате😑 .
После всего вышесказанного... Я бы все равно рекомендовал попытаться поступить в ВУЗ, а не в колледж
Дело в том, что, кроме, собственно, обучения, хождение в ВУЗ выполняет еще одну важную функцию – твою социализацию😕 . Выражается она в трех пунктах:
Во-первых, советская пропаганда, хоть и номинально была "рабочей👷♂️", на деле привила нам то, что человек без высшего образования – лох, дурачок и колхозан
Во-вторых, это нетворкинг
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3💅2 1 1
В-третьих, ты сможешь посмотреть "в безопасной среде🛡 ", как выполняются проекты, освоить рабочее взаимодействие🤝 и так далее. А в свободное время (ты же не будешь наслаждаться молодостью 🍻 ) можешь искать уже настоящую работу💼 . Да и ВышМат не будет лишним, если честно.
🔝 В начало поста 🔝
🤡 – Хз, я вот поступил в Синергию, и не парюсь
😭 – Я вас всех посчитал, вы все пидарасы в кубе
С другой стороны, говорят, есть еще вариант поступления в ВУЗ после колледжа, но наверняка тут есть свои нюансы и подводные камни, так что изучайте сами🌐 .
😭 – Я вас всех посчитал, вы все пидарасы в кубе
Please open Telegram to view this post
VIEW IN TELEGRAM
😭10❤1🍌1💅1 1
Поздравляю всех вас👏 , отныне наша группа друзей принимает обратную связь💬 , и даже не за звездочки🌟 (пока что).
Вы можете предложить тему для статьи💡 , записаться на занятия по Unity✍️ или просто поблагодарить админа за его базированное мнение😘 !
ПС. А звездочки вы таки-можете оставить под постами😍 .
Вы можете предложить тему для статьи
ПС. А звездочки вы таки-можете оставить под постами
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🤝3 3
ТРАНС-ДОЛЖНОСТНОЙ ПЕРЕХОД (ТАИНСТВЕННОЕ ПРЕВРАЩЕНИЕ ТЕСТИРОВЩИКА В РАЗРАБОТЧИКА)
Наслушавшись пугалок👻 про сложность вкатывания в ИТ, некоторые малютки решают выбрать путь🛤 "тестировщик > разработчик" или, не дай Бог😇 "тех.поддержка > тестировщик > разработчик".
📯 А что, звучит хайпово
В целом, нельзя сказать, что у такой "стратегии♟ " нет предпосылок: поиск работы – это долго, противно, изматывающе😪 . А тут такой лайфхак! Ну как не поддаться🥰 ?
📯 QA тоже работают
Тестировщик – это не плохой программист, это отдельная специальность🤔 . Из общего может быть только база языка👅 для автотестов, но это полторы недели учить💨 . Все остальное время ты не то что не приближаешься, а даже отдаляешься от конечной цели🎯 .
📯 За двумя должностями погонишься – ни одной не поймаешь
Но, конечно, если тестировщик не очень хороший💩 , если он вместо работы постоянно к разработчикам лезет✋ , или какие-то курсы проходит не по свой специальности⌨️ , петы свои делает🏡, тогда другое дело, тогда с радостью такого человека надо отпустить. Только не в другой отдел, а на улицу😑 .
📯 Иди работай
По-моему, в сущности, все это напоминает поиск схематоза😏 по быстрому обогащению, и не далеко ушло от формул успешного успеха😏 . Секрет же, на самом деле прост: надо на ночь положить под подушку мышь (компьютерную)🖱 , покрутиться вокруг себя🤩 , сказать трижды в зеркало "я разработчик🫵 ", а с утра пораньше встать, и идти учиться👩🎓 . Весь день☀️ . Повторять, пока не попадешь на собес😎 .
👌 – У тестировщиков не будет работы, пока есть клиент😂
😀 – Я тестировщик, сижу здесь, чтобы подсматривать за программистами👁
Наслушавшись пугалок
В целом, нельзя сказать, что у такой "стратегии
Ведь действительно, устроиться в QA проще, чем программистом😁 , а в ТП – так вообще раз плюнуть💦 ! И, действительно, внутри компании на тебя работает нетворкинг📇 , плюс, ты знаешь продукт🧠 , а значит, знаешь, какие скиллы тебе точно нужны, а какие – точно нет🚫 .
Может, для человека снаружи ИТ это не очевидно, однако тестирование – не менее квалифицированный труд, чем программирование👨💻 . И время, которое ты потратишь на освоение этой дополнительной профессии➕ – это время, которое ты мог бы потратить наборьбу с Путинымобучение программированию 👮 📖 .
Тестировщик – это не плохой программист, это отдельная специальность
Представь себя на месте руководителя💼 : у тебя есть хороший тестировщик, который хочет стать плохим программистом🤔 . Захочешь ли ты его отпускать🦮?
Но, конечно, если тестировщик не очень хороший
Был бы он нужен как программист, его бы уже взяли как программиста🧠 . А так он тратит деньги компании на то, что нужно ему, а не компании😏 . И став программистом вряд ли изменится🙅♂️ .
По-моему, в сущности, все это напоминает поиск схематоза
Please open Telegram to view this post
VIEW IN TELEGRAM
MVP ИЛИ КАК ПОНЯТЬ, ЧТО ТВОЯ ИДЕЯ – ГОВНО
📯 Minimum Viable Product
Первое, с чего начинают учебу бизнес-аналитики, продукт овнеры и прочиегады🐍 незаменимые специалисты✨ – не доверяй интуиции🙅♂️ . Твоя идея может быть бесконечно крутой, но какой в этом смысл, когда это неправда 😂 ? А на кону стоят десятки миллионов🤑 (столько стоит разработать одно качественное, большое приложение).
📯 Боль – гипотеза – MVP
📯 Я идейный, буду пилить по ночам
Ну что ж, в этом случае..тебе тоже нужно MVP 😐 . Ведь ты не хочешь потратить годы жизни на то, что в итоге схлопнется за полмесяца? Надеюсь, не хочешь🤨 . Я, конечно, верю в тебя🤞 , но история Stardew Valley, которую Эрик Барони пилил🪚 четыре года в одиночестве, на шее у своей девушки🤑 , во-первых, уникальна☝️ , а во-вторых, не совсем такова, как ее принято преподносить👉 .
📯 Каков хороший MVP?
Итак, рецепт прост:
Берем сперва укропу
1.✍️ Пишешь диздок (научу в одном из следующих постов). Сюда можешь вписать все свои хотелки, это – план-максимум👁 .
2.🔪 Вырезаешь все, чего не увидят 100% пользователей. Не 50%, не 80%, даже не 99.9%😶 . Здесь ты должен оставить только необходимые функции, то, без чего приложение не состоится🏚. Крутой побочный квест туда не относится, основной сюжетный квест туда не относится, механика рыбалки, прости Господи, туда не относится (кроме как если это игра про рыбалку🎣 )!
3.📢 Рассказываешь о себе миру. Тут ты ищешь первые 50-100 человек, которые будут твоими пользователями👾 . Для игр это может быть🫙 джем или донат/просьба стримеру📱 . Например, xkoster каждую субботу проводит стрим с разбором игр подписчиков😮 .
4.💬 Внимательно записываешь в блокнотик мнение людей. Что не так, почему не так, как исправить, и все остальное👁 . Ты же хочешь успешный успех, а не игру, в которую поиграешь только ты😎 .
5.🚪 Бросаешь проект, если он провалился. Если нет, продолжаешь разработку🚶♀️ и активно коммуницируешь со своим новым микрокомьюнити, ищешь издателя⌨️ .
6.💰 Выбираешь цвет Ламбы.
📯 ИИ-бонус
Но настоящим программистам бояться нечего😮💨 : после успешного запуска такого приложения🚀 , оно уничтожается🗑 , и разработка начинается с начала👈 , потому что поддерживать это нереально🔞 .
👌 – Ну это же MVP
🤡 – Подождите, то есть после MVP надо делать нормально??!!
(Минимально Жизнеспособный Продукт) – версия приложения, которая с горем пополам решает одну проблему пользователя🌳 . Без красивой анимации, с падающей БД, дешево и сердито🥰 . Иными словами, пилотная версия👨✈️.
Первое, с чего начинают учебу бизнес-аналитики, продукт овнеры и прочие
Мир разработки состоит из предположений и их проверок❓ : нашел проблему😖 , придумал решение💡 , проверил на малом бюджете👍 , дальше по ситуации🔍 . Не помчался брать кредиты на идею, которую в ванной придумал, а сначала убедился, что она сработает👩🔬.
Ну что ж, в этом случае..
Конечно, ему отчасти повезло🍀 , а отчасти, он создал действительно хороший продукт😎 , работая по 10 часов в день😮 . Сколько из вас готовы на такой гражданский подвиг🏅 ? А сколько из вас могут себе позволить четыре года не зарабатывать ни копейки🍽 ? Правильный ответ:никто .
Да и не было такого, что он свою игру делал в полном одиночестве👎 , надеясь на чудо, и вот оно свершилось🤚 . Эрик уже через год, имея первые наработки, начал получать огромный положительный отклик👍 с форумов и Steam Greenlight✅ (в 2012 это не было позорное сборище мусора) . И только поняв, что он идет верной дорогой🛣, Эрик продолжил работу, держа постоянный контакт с аудиторией📞 .
Итак, рецепт прост:
1.
2.
3.
4.
5.
6.
Вот здесь выходят вайб-кодеры и говорят🙊 : "Хмм, сделать говно, выполняющее кое-как свою основную функцию, но очень дешево и очень быстро💩 ? Это мы можем💩 !" И будут правы, чего скрывать😱 .
Но настоящим программистам бояться нечего
Please open Telegram to view this post
VIEW IN TELEGRAM
На следующей неделе два поста, как в старые добрые🥳 . Так что поставьте лайк на прошлый пост, и на позапрошлый, они заслуживают большего🫵 . А если хотите, чтобы я и дальше оставался безработным, то распространяйте посты среди своих одноклассников📢 .
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉2💅2
СТАТИЧЕСКИЙ КЛАСС
📯 Static
Итак, по порядку:
📯 Члены типов
Например:
Вместо:
А вот вам хрестоматийный пример с ID:
Почти такой же есть в официальной документации Microsoft🤖 , только мой написан (или, хотя бы, проверен) настоящим человеком🤦♂️ .
📯 Типы
📯 Плюсы, минусы, подводные камни
Итак, дети, для того, чтобы получить статический⚡️ класс, нам нужно взять свою эбонитовую палочку😉 , и потереть ею о микросервисную архитектуру😏 . Потом, не вытирая, об unit-тесты и многопоточность😓 .
И тем не менее, статические классы быстрее и удобнее в разработке🏎 (но не в поддержке), так что иногда не так уж и страшно написать говнокод💩 .
К тому же, в отличие от целых классов🙂 , статические свойства и методы могут обеспечить удобный глобальный доступ🌐 к определенным модулям программы.
А подробнее о том, как не кринжово использовать статику мы поговорим в следующей статье⬇️
😭 – грустить трагически
🩼 – написать класс статический
– ключевое слово, которое можно применять к типам и их членам, чтобы сделать ихстатичными . 😧
Итак, по порядку:
Добавление static перед членом класса означает, что этот член не принадлежит больше каждому экземпляру класса✋ , но принадлежит самому классу😐 . И обращаться к такому типу нужно теперь по имении отчествукласса(👍).
Например:
Proletarian.Property = "World";
Вместо:
Vasya.Property = "Bed in barrack and balanda";
А вот вам хрестоматийный пример с ID:
public class Employee
{
public readonly int id;
private static int idCounter;
public Employee()
{
id = ++idCounter;
}
public static void PrintId()
{
//Нельзя, потому что непонятно, чей id:
//Console.WriteLine("Id: " + id);
Console.WriteLine("Emps counted: " + idCounter);
}
}
Почти такой же есть в официальной документации Microsoft
Тут все просто, в статическом классе могут быть только статические члены👍 . А еще, его нельзя создать экземпляр👶 .
Все👍 .
Итак, дети, для того, чтобы получить статический
Видишь ли, никак не получится вытащить🖐 этот статический класс и зависящие от него в отдельный модуль🥚 , а значит, как ни старайся, будешь писать монолит💍.
И тем не менее, статические классы быстрее и удобнее в разработке
К тому же, в отличие от целых классов
А подробнее о том, как не кринжово использовать статику мы поговорим в следующей статье
😭 – грустить трагически
Please open Telegram to view this post
VIEW IN TELEGRAM
Wild Russian GameDev Mentor
ГАЙД ПО РЕАКЦИЯМ Товарищи! Для того, чтобы вы могли точнее выразить свое впечатление от статьи, добавил еще больше кастомных реакций, даже пришлось запариться с созданием собственного пака. И, так как они все имеют неочевидное для обывателя назначение, в…
Господа, а я вам напоминаю, предложенные реакции в конце статей существуют не для ознакомления, а для активного применения🚬 . Я, конечно, ценю ваши сердечки и огонечки, но когда их больше, чем официальных реакций, это наводит на мысли (о вас 🫵 (плохие👎 )). Не заставляйте переходить к крайним мерам👊 .
🗿 – 1984
🤡 – 1984
😐 – 1984
😭 – 1984
🩼 – 1984
😭 – 1984
Please open Telegram to view this post
VIEW IN TELEGRAM
😭5🔥2 2 2 2🌭1🤓1 1
SINGLETON – ПАТТЕРН, О КОТОРОМ НЕЛЬЗЯ РАССКАЗЫВАТЬ НА СОБЕСЕДОВАНИИ
📯 Singleton
Стоит заметить, что в определении присутствует слово "экземпляр"📖 , так что сделать такой класс статическим не получится🙅♂️ .
А вот простейший пример:
📯 Плюсы
Использовать Singleton мы можем, когда нам нужен статический класс⚡️ (для вещей, которых должно быть только одна: чтение/запись в файлы, общение с БД, настройки, глобальные переменные и др. ➡️ ) , но нам не подходит статический класс⚡️ . Например, хочется использовать наследование🤰, безопасную многопоточность⌛ , и всякое другое⚙️ .
📯 Минусы
Да, в целом, такие же, как и у статического класса:
И, несмотря на то, что многих недостатков статического класса синглтон лишен✨ , главный все же остается😱 . К тому же, в редких случаях, когда полностью оправдано использовать статику⚡️ – для хранения констант, например – синглтон оказывается перегружен🤔 .
📯 Подводные камни
Хотя Синглтон в том или ином виде применяется повсеместно, все его ненавидят😡 . Ни один разработчик не может создать приложение без него🤬 (читай: "разработать настоящую микросервисную архитектуру"). По крайней мере, за адекватное время. И это их бесит😡 .
Синглтон – это знак их беспомощности😩 .
Синглтон – это ложка горькой правды🥄 в их медовом мирке Clean Code`а🍯.
Синглтон – это кричащее напоминание😱 о том, кто они на самом деле – очень дорогие пиздаболы 💰 .
Но нам придется притвориться, что мы этого не знаем🤫 . Ведь иначе они очень расстроятся и, возможно, даже заплачут😭 . А если и нет, в любом случае обидятся и работу не дадут❌ .
😎 – Паттерн сигма, как и я
😭 – Надеюсь, он не плачет по ночам, как и я
– паттерн, гарантирующий, что в программе будет лишь один экземпляр этого класса🥇 .
Стоит заметить, что в определении присутствует слово "экземпляр"
А вот простейший пример:
public class Singleton
{
private Singleton() { }
private static readonly Singleton instance = new Singleton();
public static Singleton Instance
=> instance;
}
Здесь мы приватим конструктор, чтобы никто другой его не использовал🔓 , а затем создаем свойство instance для доступа к нашему экземпляру👉 .
Использовать Singleton мы можем, когда нам нужен статический класс
К тому же, для статического класса иметь состояние (хранить данные🛍️ ) считается жутко неприличным🤢 . Синглтону же чуть-чуть можно😉 .
Да, в целом, такие же, как и у статического класса:
Видишь ли, никак не получится вытащить🖐 этот статический класс и зависящие от него в отдельный модуль🥚 , а значит, как ни старайся, будешь писать монолит💍.
И, несмотря на то, что многих недостатков статического класса синглтон лишен
Хотя Синглтон в том или ином виде применяется повсеместно, все его ненавидят
Синглтон – это знак их беспомощности
Синглтон – это ложка горькой правды🥄 в их медовом мирке Clean Code`а🍯.
Синглтон – это кричащее напоминание
Но нам придется притвориться, что мы этого не знаем
😎 – Паттерн сигма, как и я
😭 – Надеюсь, он не плачет по ночам, как и я
Please open Telegram to view this post
VIEW IN TELEGRAM
😎4💅2 2😭1 1
СЛОИ ИРОНИИ В ТВОЕЙ ПРОГРАММЕ
Современные программы большие🐋, они состоят из тысяч строк кода📖 . Однако сконцентрированное, внимательное осмысление информации👁 может производиться человеческим мозгом🧠 в очень небольшом объеме🤏 . Это не относится к поколению Альфа с их ТикТок-мышлением📱 , это относится ко всем🫵 . Как же вообще существует ИТ-индустрия🫥 ?
📯 Разделяй и властвуй
Я много писал про модульность кода🧱 – это разделение по горизонтали➖ . Но есть еще и разделение по вертикали🔼. Иными словами это называется введением слоев абстракции👻 .
То есть, когда я хочу заспавнить скелета☠️ , я не хочу разбираться, в какую коллекцию его положить📦 для более эффективной работы с данными.
📯 А как?
Необходимый минимум – это два слоя👍 , один с пиками, а другой... в верхнем⬆️ мы описываем логику работы программы, как ее представляет пользователь🤪 или ГеймДизайнер👨🎨 :
– И все✋ ! Как делать этот Jump() мы здесь не знаем и знать не хотим🙅♂️ .
На последующих уровнях идет детализация➕ , мы можем разбить💔 Jump() на еще несколько уровней🎚, если это требуется, например, работа с физикой🎳 и работа физики💫 . В первом мы говорим "пнуть вверх с силой X"👊 , а во втором – что означает пнуть, куда это "вверх", и в чем сила(, брат) 🤔 .
📯 Организация
Разделение на слои абстракции носит весьма умозрительный характер💡 . Идеально будет, если вы раскидаете их по разным классам🙂 , минимум – разные методы внутри одного класса👍 .
📯 Не впадайте в крайности
👌 – А я абстрагировался от построения архитектуры
🤡 – А админ абстрагировался от расписания постов
Современные программы большие🐋, они состоят из тысяч строк кода
Я много писал про модульность кода
К одному уровню/слою абстракции относятся куски кода, одинаково близкие к железу👩💻 . Мы не можем одновременно учить ребенка ходить🚶♀️ и рассказывать ему же, как пройти на площадь Ленина😐 .
То есть, когда я хочу заспавнить скелета
Необходимый минимум – это два слоя
if (ButtonPressed(Space))
Jump();
– И все
На последующих уровнях идет детализация
Работая с крупными движками📱 , мы обычно один или даже несколько нижних слоев абстракции берем оттуда🤲 , однако:
1) Мы можем туда влезть🔧 , если нам что-то не подходит и прям очень скучно на работе🥱 ,
2) Нам все равно полезно знать😎 , как оно устроено в целях оптимизации💨 .
Разделение на слои абстракции носит весьма умозрительный характер
Конечно, разные слои не должны быть совершенно оторваны друг от друга😋 , и мы все равно смутно думаем о том, что будет потом😐 . При том, думаем снизу вверх🔝 : конкретика зависит от абстракции.
Please open Telegram to view this post
VIEW IN TELEGRAM
Товарищи, уже придумали планы на выходные🗓 ?
Отменяйте, ведь завтра начинается Ludum Dare – самый базированный джем в мире!
И я участвую!
📱 В прямом эфире! 📱
Со мной будет еще неопределенное количество художников👨🎨 (от двух до трех, пока не ясно), так что игра получится не только лучшая, но еще и красивая💩 .
На призовые места мы не рассчитываем👍 , но уверены, что получится хорошо провести время, так что приходите💃 !
З.Ы. А если есть кто-то с музыкальным талантом или с талантом искать бесплатные SFX в интернете, отпишитесь в сообщения канала – вы нам нужны.
Отменяйте, ведь завтра начинается Ludum Dare – самый базированный джем в мире!
И я участвую!
Суббота и воскресенье примерно в 12:00-20:00,
в понедельник – как получится.
Со мной будет еще неопределенное количество художников
На призовые места мы не рассчитываем
З.Ы. А если есть кто-то с музыкальным талантом или с талантом искать бесплатные SFX в интернете, отпишитесь в сообщения канала – вы нам нужны.
Please open Telegram to view this post
VIEW IN TELEGRAM