Next Level Dev
679 subscribers
32 photos
2 videos
58 links
Заметки синьора-самоучки с 10-летним опытом

Доучиваю или учу с нуля до крепкого джуна, готового к собеседованиям и стажировке

Roadmap для начинающих в личке @ilia_a_popov
Там же запись на менторство и консультации

О менторстве: https://androidmentor.ru
Download Telegram
Как правильно страдать хернёй

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

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

А я приехал и практически слёг в кровать под тяжестью невидимого груза. С удивлением взирая на порхающую вокруг жену.

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

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

Но я себя знаю давно, и доверяю себе в таких случаях. "Если у меня нет никаких осознанных мыслей, но есть ощущение забитой головы – значит оно варится глубже, и надо просто ждать и не мешать, занимаясь какой-нибудь рутиной, не задействующей голову." – к этой мысли я приходил почти лет 30.

А вы себе верите?

Даёте себе часами и днями "страдать хернёй" (так это видят окружающие, на самом деле вы делаете огромную работу, просто не осознаёте. Но устаёте вы от этого как и от физического труда) ?
😁8👍7👏3🌚1😎1
🤔 Однажды мы с коллегами плотно зарубились на вопросе: "А как нам назвать юзкейс?"

Сначала мы холиварили, является ли логика ретрая запроса частью юзкейса, или же ей место в презентейшне.

📌 С одной стороны, один и тот же юзкейс может понадобиться ретраить по-разному в разных случаях. Где-то надо бесконечно запрос повторять no matter what, где-то надо в какой-то момент ошибку показать, где-то вообще не надо ретраить. И если во всех юзкейсах будет разная логика ретраев, то по обычному названию юзкейса GetUserUseCase будет совершенно непонятно, ретраится ли он внутри – тогда мы теряем атомарность юзкейса, а это его важная часть. Получается, логичнее выносить ретрай из юзкейса в presentation-слой, из которого он вызывается.

📌 С другой стороны, ретрай может быть частью бизнес-логики, и тогда где ж ему ещё быть, как не в юзкейсе.

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

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

😏 В итоге пришли к названию GetUserOrDieTryingUseCase и, довольные, разошлись. С тех пор нейминг так и живёт уже 3 года =)
Please open Telegram to view this post
VIEW IN TELEGRAM
😁15🔥742
Мои трудовыебудни:

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

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

Сказано – сделано.
Да хрен там, в итоге я понял, что если делать это вручную, то я в рамки этой таски точно не умещусь, и пошёл искать другое решение.

В итоге я наткнулся на гугловский FlexboxLayoutManager, казалось бы, предназначенный как раз для этой задачи. Довольный, затащил его в проект и реализовал.

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

Но этот чёртов ChipGroup мне на мой запрос в гугле ни разу не вылез =)
Век живи, век учись. Оказалось, реально удобная штука, возьмите на заметку.

Особенно радует, что в ChipGroup можно с помощью addView добавлять не только наследников Chip, а любые вьюхи, и они все равно будут норм выстраиваться. Но часть методов / атрибутов правда перестанет работать, например singleSelection – потому что он работает только на Chip.

А вот к FlexboxLayoutManager есть вопросики: странновато он настраивается, странноватые дефолтные отступы между элементами, и сходу тоже непонятно, как их настраивать.

А вы бы как пошли эту задачу решать?) Я один такой тугой?)
😁10👍7👏2🌚2😈1
Вы ж помните, я был самоучкой, а на первой серьёзной работе через 3 месяца уволился лид и оставил меня одного. На 4 года =) Ну как, команда у меня была, но из бэкендеров-фронтендеров-дизайнеров-тестировщиков. Ни одного мобильщика больше не было всё это время.

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

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

И эти слова шли реально от души, как сейчас помню =)

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

Крутой проект, как по мне. 10 лет назад мне бы это сильно помогло, хотя бы психологически. А если вы прямо сейчас ищете работу – вы, думаю, в курсе, что "по знакомству" устроиться куда проще, особенно если вы джун.

Так что советую сходить к кофекотовцам на встречи: заведёте полезные знакомства, ну или просто поболтаете в кругу своих =) 👇
🔥9💯54
☁️Офлайн-встречи мобильных разработчиков уже в эти выходные!

😉Привет! На связи Coffee&Code — международное сообщество мобильных разработчиков.

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

🤪Пообщаемся на технические темы, обсудим интересные события из мобильной разработки, разберем вопросы с собеседований и поделимся опытом!

🤖 Android | 📱 Mobile | 🍏 iOS

📍СПИСОК ГОРОДОВ

💃Также мы выкладываем интересные технические/полезные видосики в наш YouTube канал и записываем Подкаст! Ждем тебя на встречах!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥542👌2
Кого куда зачем делить, нормально же общались((

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

Если у вас 2 разработчика, то увеличение скорости сборки на 5 минут будет выигрывать компании пару часов в день, а если у вас 50 разработчиков – то у компании дневной КПД вырастет в несколько раз.
Stonks! 📈

С этим и помогает многомодульность (если правильно организована🌚). Задумка такая: делим приложение на несколько мелких независимых частей, и тогда изменения в одной части не потребуют пересборки всего проекта для запуска – потребуется пересобрать только изменённую часть и её зависимости. Так мы и время сэкономим, и сможем отдать какую-нибудь новую часть новому джуну, не боясь, что он в процессе разработки пол-проекта нам поменяет. Пусть сидит там чудит себе на здоровье, на код-ревью посмотрим 😎

Есть два способа деления:
– по слоям Clean-архитектуры (модули app, domain, data и presentation)
– core-feature деление.

С первым всё понятно: тут главное удобство в том, что ты учишься жить по клину, и прям на уровне модулей можешь прописать, что в domain нельзя тащить android-классы, и что domain не зависит от остальных модулей-слоёв. Удобно для начинающих и для тренировки, но в плане масштабирования не очень удобная история: в какой-то момент вам захочется делить на более мелкие части, чем 4 модуля, захочется выносить отдельные фичи в отдельные модули, и приложение начнёт постепенно превращаться в кавардак.

Core-feature деление – более удобная история: в core пихаем всё общее и используемое всеми модулями, а в feature... Тут опять 2 варианта:
– либо один экран – одна feature, либо один флоу – одна feature. Флоу – группа экранов, объединённых общим смыслом – например флоу авторизации или флоу покупки. Чаще всего делят по флоу.

И внутри каждая feature живёт своей жизнью: если там нет работы с данными, а только презентейшн-логика, то там из клин-слоёв только presentation, а если есть и работа с данными, и своя бизнес-логика – то в feature будут все 3 своих clean-слоя. Под каждый слой своя папка внутри фичи.

Во "взрослом" core-feature делении к feature-модулю, в котором лежит вся логика фичи, делают ещё feature-api модуль – это модуль-прослойка, состоящий только из интерфейса модуля, отражающего то, что от этого модуля нужно всем остальным. Если модуль состоит из одной активити и всей сопутствующей логики – значит, скорее всего, апи фичи будет состоять из старта этой активити. И все остальные модули не будут ничего знать о том, что происходит в самой фиче – а будут только использовать апи этой фичи.

Звучит всё это заманчиво, но на деле и в реальной компании вас все равно ждёт кавардак, это я вам обещаю. У вас точно часть общего будет в core, часть в каком-нибудь "временном" common, а часть вообще "временно" рассована по отдельным фичам с задачей по рефакторингу в бэклоге, которую однажды вечером пятницы наконец закэнселят и примут неизбежную бренность бытия.

Готов поспорить, что ни у кого не найдётся идеального мультимодульного проекта в проде, и чтоб у него было хотя бы тыщ 50 активных юзеров 😏
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥4👏2🌚1💯1
Любопытной Варваре на ревью нос оторвали

В одном из проектов, над которым я работаю, я нашёл баг во внешней библиотеке. Я выяснил, что баг появился в конкретном релизе библиотеки.

Что нужно сделать? Правильно, залезть в их мердж-коммит с этим релизом и попытаться понять, а чо они там сломали =)

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

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

И их мердж-коммит с новым релизом мою гипотезу подтвердил =)

Лишнее подтверждение тому, что если ты шаришь в computer science и сеньоришь в одном из нормальных ООПшных языков, тебе в целом уже пофиг, на каком языке и что писать – онбординг 5 мин и погнали =)

Ну 5 мин на любой язык это я конечно загнул, но суть вы думаю уловили :)

А у вас было такое, что бэкендеры или айосеры что-то наворотили, а потом ушли в отпуск / уволились, и вам пришлось за ними баги фиксить?)
👍7🔥3👏3🌚2👀1
Наткнулся на странную дичь.

В http-логах вижу, что запрос заканчивается в X, при этом в rx / корутине результат запроса я получаю через X + 1 секунду.

Я канеш понимаю, запрос тяжёлый, респонс там почти на 5 Мб. Но ё-маё, целую секунду на этом терять ваще не круто. К тому же, потом наткнулся на кейс, когда респонс в 10 раз меньше, а простой почти такой же, 0.9с.

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

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

Ставь 👻, если понятия не имеешь, как замокать респонс в проксимене, или даже не знаешь значение этой фразы.
👻26👍4🔥2🤔2👀2
Сформулировал для себя главное правило эффективного использования нейросетей: ты должен в точности знать, что должно быть на выходе. Иначе нейросеть тебя наебёт, она это умеет делать очень убедительно.

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

P.S.: а потом пришёл айосер (бывший андроидер), который за час это сделал. И я в очередной раз почувствовал себя никчёмным дауном. UI-ные штуки мне до сих тяжело даются, ну мало у меня опыта в них, особенно в анимациях. То ли дело решить сложную архитектурную задачу, чтоб потом 50 следующих поколений разработчиков меня благодарили и восхищались (ну или проклинали, как пойдёт), вот это завсегда!
🔥15👍74😁3
Если вы думали, что костыли только в программировании, то нет: ребята по сути отодрали часть станка и используют её, как костыль для удержания угла при ручной заточке =)) Так и назвали – "Костыль", что ещё больше доставляет))
😁9🤣4🌚2🔥1
В последние недели немного выдохнул. Ученики закончились, на работе без пожаров. Появилось побольше времени на себя, и я активно его использую: начал регулярно ходить на тренировки по сквошу и по бегу.

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

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

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

Эхх, ещё бы занятия по вокалу сюда накатить! Но боюсь это уже совсем перебор будет, 2-3 обучений пока всё же хватит =)

P.S.: а ещё иногда находится время даже в старенький вархаммер погамать, вот же радость! Потом на очереди перепрохождение второго старкрафта, думаю.
🔥95🆒3
А вот щас будет больно. Взбодрю вас, с утра пораньше, чтоб въёбывалось получше. Слабым, нервным и слабонервным советую уже заносить палец над кнопкой "Покинуть канал".

В IT вы, скорее всего, сейчас не войдёте.

5-7 лет назад, чтобы войти в IT, было нужно, чтобы у вас горели глаза, и у вас были минимальные навыки.

Сейчас, чтобы войти в IT, надо иметь навыки, близкие к миддлу. А ещё надо быть очень, очень зубастым и цепким, вот как питбуль с картинки. Вас это не устраивает? Считаете это несправедливым? Тогда даже не пытайтесь.

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

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

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

Затея "Эхх да щас уволюсь с нелюбимой работы, 3 месяца повъёбываю, да устроюсь на джуна" – это утопия. Нужно быть сраным гением – раз, и нужно быть питбулем – два. Где вы видели гениальных питбулей? Вот то-то же.

За 3 месяца вы и на бесплатную стажировку не устроитесь. Полгода – более реальный срок. И то, если знать, куда копать, а не тыкаться, как слепой котёнок.

Я вам так скажу: посмотрите или пересмотрите фильм В погоне за счастьем. Крис Гарднер там не сидел на хх, не так ли? И не ныл "ой рынок сложный у меня не получится((" ? Вот вам нужно быть таким же замотивированным и отбитым, как Крис Гарднер.

У меня такие были среди учеников. Все устроились, или на стажировки, или на работы. Их было очень мало от общей массы.

Готовьтесь к тому, что в IT все места заняты, и вам нужно убедить работодателя в том, что ради вас надо выпихнуть какого-нибудь отъявленного андерперформера. А вы, незнакомец, будете работать лучше.

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

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

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

Найдутся ли такие? Хер его знает.
🔥12💯65
Хочу вам попиарить канал одного чувака по имени Никита: Dev Easy Notes.

Никита меня об этом не просил, кстати. Просто мне настолько нравится то, что и как он пишет, что я решил и с вами поделиться :)

Он мало того, что умеет понятно и ёмко объяснять всякое из мира андроид и программирования в целом (сам он бывший бэкендер, как я понял), так ещё и у него охуенное чувство юмора, а это редкость в наше время.
А ещё он пишет без прикрас, плюс у него мощная самоирония. Короче, мне заходит прям очень.

Вот вам немного постов, чтоб понимали, за что он мне нравится:

Ржачный, но жизовый пост про страх перед собесами: https://t.iss.one/dev_easy_notes/334

Просто и ёмко о даггере: https://t.iss.one/dev_easy_notes/327

Разнос koinа: https://t.iss.one/dev_easy_notes/328

Охуенно понятно и ёмко про суть MVVM / MVI и их отличия: https://t.iss.one/dev_easy_notes/339

Если его канал вам понравился – ставьте 👻, если нет – 🤨
🔥7👻6👍21👀1🤗1
This media is not supported in your browser
VIEW IN TELEGRAM
Решал тут давеча UI-ную задачку, суть её была в следующем: есть скроллящийся контент, и когда скроллишь его вниз – он должен скроллиться под другую вьюху, а когда скроллишь его вверх – вьюха должна скроллиться за ним, когда он выедет из-под неё. Вы это, скорее всего, видели в модных тулбарах со всякими AppBarLayout, CollapsingToolbarLayout и иже с ними.

Такое поведение, как я понял, называется sticky. Если вьюха снизу – sticky footer, если сверху – sticky header. Посмотреть можно, вот тут и тут.
И если с тулбаром всё понятно, то вот со вьюхами внизу уже интереснее.

В целом, всё сводится к засовыванию всего в CoordinatorLayout и / или прослушиванию скроллвью и выставлению видимости / отступов в зависимости от этого. Решать можно или переопределением Behavior у CoordinatorLayout, или втупую делать всё руками, вешая OnScrollChangedListener на NestedScrollView.

Через бихевьор – красивее, но у меня чот не завелось T_T. В итоге всё получилось, но через CoordinatorLayout + прослушивание скролла.

Рад, что получилось сделать UI-ную задачу, как я говорил – они у меня идут туго. Местами консультировался у чатГПТ. Правда, по большей части он нёс ахинею и постоянно забывал, что я ему говорил одну фразу назад, ну да ладно. Зато иногда правил мне вёрстку быстрее, чем я бы поправил её сам.
👍5🔥3👏2
Я рождён был ночью...
🔥7😈6🤣2🤝21
Я не вижу будущего у нативной мобильной разработки

Почему? Потому что:

1️⃣ Все стараются экономить и заработать побыстрее

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

Нативная разработка = x3 команда (андроид + айос + веб). Все, кто смогут съехать на кросс-платформу – съедут, кто не сможет (потому что им нужно нормальное приложение, а не кусок говна) – съедет на мультиплатформу.

2️⃣ Нейронки активно развиваются

Всех разработчиков они не заменят, но ускорить разработку они ускоряют. А это означает одно: штат разработчиков будет и дальше сокращаться.

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

3️⃣ Активно развивается мультиплатформа

KMP, SwiftUI, Compose. Compose пытается тоже стать мультиплатформенным. Пока выглядит коряво, но и KMP 5 лет назад был корявым, а сейчас он куда бодрее.

❗️Итог: если говорить о будущем 5-10 лет, то полезных на рынке разработчиков, которых будут отрывать с руками, я вижу так:

Умеет в мультиплатформу андроид+айос+веб

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

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

📍Если вы ещё и сам по себе говнокодер, то вкупе с говнокодом нейронки вы проект закопаете ещё быстрее

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

А че рынок будет делать, когда синьоры и миддлы кончатся? На всех-то их не напасёшься, иначе нахуй бы были нужны стажёры и джуны вообще. А где они найдут стажёров и джунов, которые умеют в нейронки, умеют в мультиплатформу, и при этом умеют делать так, чтоб всё это не обрастало говнокодом?

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

Скиллбоксы и кекбряксы будут заманивать людей в свои сети обещаниями "писать мультиплатформу с помощью нейронок".

😈 Думаете, это далёкое будущее? У меня жена-дизайнер недавно написала плагин для фигмы на JS, при этом не имея ни малейшего понятия, что такое это ваше программирование.

Да, я чутка помог, но там помощь была буквально "скобку вот тут надо закрыть, а вот тут он использует ещё не заведённую переменную". Я не ебу, что такое фигма, она не ебёт, что такое программирование, но мы за вечер накидали работающий плагин для дизайнеров. Каково?

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

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

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

💥💥💥 Канал
Next Level Dev будет о том, как я, android-разработчик с более чем 10- летним стажем, "отказываюсь" от собственной профессии и становлюсь разработчиком следующего уровня, который пишет под несколько платформ сразу. По сути, теперь это дневник моего нового пути :)

Приглашаю вас пройти этот путь вместе со мной. Ставь 👻 если согласен.
Please open Telegram to view this post
VIEW IN TELEGRAM
👻286🤔3😈1
Channel name was changed to «Next Level Dev»
This media is not supported in your browser
VIEW IN TELEGRAM
Вписался тут в Гладковский AI Advent Challenge. Месяц каждый день ебашим задания от Алексея. А Алексей спуску не даёт =)

Вчера вот я въебал несколько часов на то, чтоб Курсор написал мне андроид-приложуху с простеньким чатом, в котором можно общаться с нейронкой по апи. Лёг в 2 ночи, но справился. Алексей предупреждал, что не пытайтесь делать чат на мобилке, делайте хотя бы десктоп – но так неинтересно.

Больше всего времени ушло на настройку всяких базовых rules, чтоб Курсор не так сильно тупил.

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

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

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

Но факт остаётся фактом: первый настоящий вайбкодинг у меня успешно произошёл. Рад. Двигаемся дальше.
🔥105🥰2
Вчера Курсор мне накидал работающий докер-контейнер, который ходит через гитхаб апи в мой аккаунт, собирает данные о репозиториях, делает по ним отчёт и отправляет мне на gmail раз в день.

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

А теперь внимание, вопрос: знаю ли я, что такое докер? Ну, чисто понаслышке, но ни разу сам не создавал контейнер. И для меня этот ящик весьма чёрный.

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

Говнокод ли там? Ну разумеется. Работает ли оно? Работает. Но я-то спешу, потому что мне задания дают ежедневные на челлендже, и мне пока это побоку.

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

Пока главным результатом 8 дней челленджа считаю то, что нейронка и взаимодействие с ней стало куда понятнее, этот ящик уже не так уж чёрен. И возможности и идеи использования ИИ у меня стали сильно шире. Круто. Едем дальше.
6🔥3👍2😁1
И всё же лучше всего у нейронок получается пиздеть. Оно и неудивительно, на людях ж учились 🌚
Причём неважно, клауд это или гпт.

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

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

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

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

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

И, тем не менее, с ним получается всё куда быстрее, чем без него. Но вот с предсказуемостью сроков пока не очень. Порой зависаю на простых заданиях на часы, потому что эта свинья что-то ломает на ровном месте.
😁11🔥4👍32🤔1
📱System Design в мобильной разработке — это про архитектуру, которая выходит за рамки экранов и навигации.

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

Как выстроить его на практике? Подробно обсудим это на Podlodka Android Crew, 15-19 сентября.

В программе:

🧩 Бинарная совместимость: где с ней сталкиваются мобильные разработчики и какие ошибки чаще всего приводят к проблемам. (Абакар Магомедов, Альфа-Банк)

🏗️ Мобильный архитектор: какие решения он принимает и почему без этой роли сложно развивать сложные приложения. (Эдуард Некрутов, Blink)

⚙️ Dependency Injection в KMP: обзор фреймворков и разбор, как выбрать подходящее решение под проект. (Александр Власюк, РайффайзенБанк)

⚡️BDUI в Android: опыт от DivKit, Beduin и Duit. Как перестать хардкодить экраны и ускорить эксперименты, чтобы быстрее проверять гипотезы.

🔗 Подключайся — будет полезно

По промокоду для подписчиков скидка 500 р: android_crew_14_hVUhyT
👍31