Статья Вайбанутым нет покоя

wrangler65

Модератор
f817ec3ad3a5cb15375a0c718b76d698.jpg

Есть у меня один знакомый. Преподаватель. Примерно, раз в месяц принимает экзамены у студентов, с курсов повышения квалификации. Студенты решают задания на компьютерах, а он ходит между ними, вопросы задает и двойки ставит.

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

И настолько эта возня с бумагой его достала, что знакомый решил:
"Хватит это терпеть! Говорят, в соседнем дворе бабушка сама написала себе приложение для продажи недвижимости (находясь под воздействием). А я что? Лысый что ли?!
Вон, даже курсы по вайбкодингу продаются! Напишу сам себе электронную ведомость!
Может ведь обычный человек написать любую программу.
Ну не будут же врать в Интернете."

Никакого знакомого нет​

Это я сам.

Большими языковыми моделями, в работе, пользуюсь постоянно. Правда специфика работы такая, что 90% программ, написанных за последние годы, умещаются в пол экрана. В основном - скрипты анализа логов, снятие дампов в нужный момент, запуск трассировки когда все стало плохо, простейшие мониторинги (на коленке) и т.д.

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

И вот тут мир LLM я открыл для себя с лучшей стороны. Моментально перестаешь "красноглазить", запоминать 100500 параметров каждой команды, или вспоминать: "А как это на ...таком языке... сделать?".
Спросил - получил готовый ответ. И он работает. Вот прям реально работает.

Но как было написано выше, есть еще преподавательская деятельность.
А там они - бумажные ведомости.

Нужно войди в зону комфорта​

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

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

Допустим, проснувшись с утра, я осознал себя преподавателем ВУЗа. Вместо показа голых коленок (за "пятерку"), студентка установила мне Cursor и подключила к нему Claude.
Иностранный студент (за "тройку автоматом") оплатил со своей карты 20$ за месяц подписки.

Нужное делайте, не нужное - не делайте​

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

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

Расслабьтесь и откиньтесь на спинку кресла​

Для понимания уровня сложности приложения (очень кратко):

  • создаем экзамен (указываем суммарный балл прохождения)
  • добавляем в него студентов
  • указываем список вопросов на экзамен
  • на закладке "Оценки" тыкаем в студента и за каждый вопрос ставим оценку от 2 до 5 и можно написать комментарий
  • у студента на экзамене еще можно задать IP машины за которой он сидит
  • можно назначить дату пересдачи экзамена
Основные заморочки с отборами студентов в окне оценок. Нам надо видеть кто прошел, кому задать доп. вопрос, кому и на какую дату назначена пересдача и сколько человек на эту дату уже есть.

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

Началось все так, что я аж крякнул от удивления. Минут за 40, этот дурень сделал мне первую версию приложения, и запустил его на эмуляторе. Причем, Android SDK уже был, я просто сказал ему, чтобы не вздумал качать, а использовал текущий.

Ну че ты начинаешь? Все хорошо же было.​

Первое, что я понял: на текущем этапе, юрист не сможет сделать себе приложение типа "СоветникМинус".

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

Чтобы все было расставлено как надо, правильно нажималось\отжималось\показывалось, мне пришлось применять слова: Activity, ToggleButton, Text, ToolBar... и т.д.
По другому, "Он" просто не понимал.

Исправления одних ошибок генерируют другие.
"Вот новость!", воскликнет адепт, "надо было сказать, что не меняй эту часть.".
Сказал.
Все получилось гораздо хитрее: я запретил ему менять окно оценок, потом сказал исправить ошибку. Для исправления ошибки, "AIноагент" изменил структуру базы данных, и данные в одной из колонок, списка оценок, просто перестали показываться.
Нет, колонка там была (только пустая). Он действительно не тронул указанное окно.
Заметил я это уже на экзамене.

Ну я-то куда полез, я же читать не умею​

А потом я полез в код.

Вся логика приложения в одном файле MainActivity.
Там все в кучу. И composable-функции и большая часть логики.

Нет, он конечно применил эдакий MVC (разделил данные от активностей и то благодаря использованию Room), но никаким структурным мышлением там и близко не отдает.
Отлично используются различные паттерны и фремворки типа Room (как уже было сказано), хотя я бы предпочел sqldelight.

Но когда у тебя в приложении 4 вкладки в нижнем меню, то наверное логично не пихать это все в один модуль, а разбить каждую вкладку минимум на 2 логических блока: view и функциональность (а уж сколько под этим будет реальных классов...).

Еще немало удивило, что все формы ввода экзаменов, студентов, вопросов, оценок - это кастомные AlertDiaolg'и. И да, весь их код тоже в MainActivity.
Как бы ладно, но это не по человечески что ли.. Ах, да...

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

Настал тот день​

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

Выставил первую оценку, написал комментарии, по ответам студента. Все отлично. Пару раз ткнул в разные фильтры. И оценка пропала. Совсем. Полностью. Вместе с комментариями.

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

А кто же это сделал...​

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

Оказалось вот что:
Так как я не знаю IP машины студента, пока он физически за нее не сядет, то эти самые IP вношу "по ходу", открывая форму "Экзамена" и указывая там IP-адрес студенту.
А так как, таблица оценок связана с экзаменом внешним ключом, то у нее установлено onUpdate = ForeignKey.CASCADE. После перезаписи экзамена - все оценки затираются.
Но это не видно сразу, т.к. список оценок не получает уведомление об изменении данных.
И кажется, что оценки пропали после применения фильтра.

Достаточно было заменить, в описании внешнего ключа, onUpdate = ForeignKey.NO_ACTION и оценки перестали пропадать (да, тут не обрабатывается ситуация когда студента можно убрать из экзамена, но его запрещено убирать, если есть оценки).

Если бы я сам писал приложение, то вообще отказался бы от внешних ключей и всю целостность данных обеспечивал в коде, а не полагался на СУБД.

Что по времени​

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

Если делать самому, то (в силу привычки) сделал бы:

  • на Java с xml-лейаутами - часов за 8
  • на Kotlin + Compose - часов за 10

Какие мысли по итогу​

За много лет, имею опыт программирования от микроконтроллеров AVR (до того, как они стали Arduino - эдаким 1С, в мире электроники), до разработки тиражных приложений на том же 1С. Ну и много чего там в промежутке, между низким уровнем и lowcode.

Для себя понял следующее: пока ты находишься на "низком уровне": прошивки устройств, интеграции с оборудованием, собственная ORM (бывало и такое)... - оно или работает или нет (в 99,99% случаев). Практически всегда видно, где произошла ошибка и в чем ее причина.

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

Именно поэтому, мы слышим дикие вопли с "Вайбанутовских болот", как там все прекрасно. Но при этом, не видим "Кембрийского взрыва" приложений в "сторах". Ко мне постоянно обращаются знакомые с вопросами можно ли разработать приложение, которое "..." и дальше описывают функциональность, нужную ну... 1-2 людям из миллиона.
Есть огромный, скрытый пласт, крайне-узкоспециализированных приложений. Программисты не хотят за них браться, т.к. денег там нет. А пользователи, пока, не могут это сделать сами. Как в октябре 1917 - "верхи не могут, а низы не хотят".

Для себя я решил, что "Вайбонизм" победит, когда наступит эра индивидуальных приложений. Когда вместо того, чтобы изучать чужое приложение, человек сделает его себе сам. Лично под себя. С перламутровыми кнопками и дизайном стиля "Циклоп" (смотреть на это можно только прищурившись одним глазом). А пока этого нет - увольте.

Скоро не будет людей, будет один ИИ​

Можно ли "вайбкодингом" разработать большое и сложное приложение. Да можно.
Только для этого придется разбить структуру приложения на отдельные блоки и описать связь между ними.

И кто же на такое способен...? Ответ: "архитектор ПО", т.е. человек из высшей иерархии IT-специалистов. А тем временем, нам предлагают отказаться от джунов-мидлов, заменить их на ИИ. "Мы научим вас как! Деньги нести вот сюда..."

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

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

Срочно всем вайбануться!​

По моему мнению, курсы вайбкодинга, сейчас, сродни курсам "Научим вас правильно искать в Интернете, начала 2000-х" (олды помнят).

Сам помню как объяснял тогда, своему другу (фрезеровщику по образованию), как правильно писать запросы в поисковике, чтобы найти нужное. Он все никак не мог найти, что хотел, а я находил очень быстро.
У вас, или ваших знакомых, сейчас есть проблема с составлением поисковых запросов? Уверен, что нет.

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

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

Источник
 
Похожие темы
Support81 Вчера защищали от Запада, сегодня грабят Россию. Pay2Key показал, что в теневом бизнесе нет патриотизма Новости в сети 0
Support81 Админ или нет? В Киеве задержан фигурант дела крупнейшего форума XSS Новости в сети 0
Support81 Вакансии есть, специалистов нет: кризис на рынке информационной безопасности Новости в сети 0
panther Строки (Фулки) для регистрации криптобирж, кошельков, букмекерских контор, казино и т.д. ❌СНГ НЕТ❌ Аккаунты: сервисы, сайты, соц. сети 64
Traffpost Интересно Seo продвижение I Мощные ссылки с мегатрастовых доноров I Аналогов за такую цену - Нет! Ищу работу. Предлагаю свои услуги. 0
Traffpost Интересно Seo продвижение I Мощные ссылки с мегатрастовых доноров I Аналогов за такую цену - Нет! Ищу работу. Предлагаю свои услуги. 6
T Заработок на продаже медицинских масок приносит очень много (в магазинах их нет) Способы заработка 2
АнАлЬнАя ЧуПаКаБрА АПБ личный 159 Gb нет дублей (обновление 25.10.19) Раздачи и сливы 0
R ◉ Cleverinsta Inc ➜ Быстрое продвижение и накрутка ➜ Нет собак и списаний ➜ Топовые условия и скидки Ищу работу. Предлагаю свои услуги. 0
Admin Как получить id пользователя Telegram, если нет user_name, а есть только переписка Анонимность и приватность 2
АнАлЬнАя ЧуПаКаБрА INLINE Слив пиздатого (или нет) пака за 1500 рублей ( MONEY , GAME , Installs , SHOP ) проекты без привязки Готовый софт 0
R 100% рефанд видеокарт с али | top soft (нет) Готовый софт 1
P Вирус или нет? Свободное общение 2
B KeyWordKeeper [Работа с огромными базами | Вообще нет нагрузки] Готовый софт 2

Название темы