Почему ты пишешь говнокод? Главная причина / Мобильный разработчик
HTML-код
- Опубликовано: 19 май 2024
- Повторяйте сделки успешных инвесторов и зарабатывайте с Тинькофф Инвестициями: l.tinkoff.ru/mobiledeveloperd...
Дарова. Наверняка ты хоть раз в жизни задавался вопросом, а почему люди пишут говнокод? А если не задавался, то возможно говнокод пишешь именно ты. Поэтому, чтобы понять в чем главная причина этого, посмотри это видео до конца. Ты узнаешь все ответы
00:00:00 - Всем привет
00:00:31 - Что такое говнокод
00:13:30 - Почему пишут говнокод
00:29:40 - Почему ещё пишут говнокод и как помочь себе его не писать
00:38:01 - Всем пока
Если вам понравилось видео, то поддержать канал и получить доступ к эксклюзивному контенту можно подписавшись на Boosty:
=================================================
Поддержать канал на Boosty - boosty.to/mobiledev
=================================================
Стрим про телеграмм - ruclips.net/user/liveu6MXyLght6I?...
Полезные статьи из мира мобильной разработки:
Teletype - teletype.in/@alexgladkov
Мобильный разработчик в других соц. сетях:
================================
Телеграм - t.me/mobiledevnews
ВК - mdeveloper
Дзен - dzen.ru/mobiledeveloper
================================
Если ты прочитал это - напиши коммент! Тест на внимательность :D
А всё просто. Когда прибегают с криком: «Срочно!!! Нужно ещё позавчера!!! Сделай как-нибудь, чтобы хоть как-то заработало»… потом это накапливается в один большой говнопроект.
у нас бывают "позавчерашние" задачи, но и 20% рабочего времени под техдолг отведено.
1. Пишется временный код, который в силу обстоятельств становится постоянным. А переписать нет времени - сверху ещё накидали кучу задач, которые надо сделать вчера.
2. Изменение требований бизнеса, и новые фичи, которые плохо укладываются в изначальную архитектуру процесса. Бывает какие-то моменты продумаешь заранее, но всего предугадать не получится, да и не всегда время.
В общем... иногда говнокод - это результат не лени и слабой компетенции, а сложности мира в котором мы живём.
Но да, бывает говнокод и на ровном месте.
С моей точки зрения говнокод - это на 95% вина бизнеса
@@MobileDeveloper почему не вина разработчика, который не может донести бизнесу, что делать так нельзя?
@@torburgmax потому что в бизнесе менеджер главнее рабочего(программиста), менеджер даёт команду, рабочий эту команду исполняет; потому что быстро-качественно-дёшево менеджеры хотят всегда и каждый день. Задача рабочего поставить в известность менеджера о проблеме, а когда решать эту проблему(или не решать) это уже ответственность менеджера.
@@elron2010 то есть по факту обоим сотрудникам необходимо найти тот приемлемый уровень взаимодействия, который устроит обоих. почему же тогда во всем виноват менеджер? на моем опыте очень часто программист менеджеру скажет, что напишет "говнокод", а менеджер еще чаще вообще не понимает, чем это чревато, а программист и не доносит этого.
@@MobileDeveloper К сожалению это так. Наверху берут тендер, который закрыть надо за очень короткий срок. Пока выясняли потребности заказчика, пока согласовывали, пока утверждали дизайн, эти сроки и прошли, и в итоге в разработку мобильщикам передают со сроками даже не вчера, а сильно поза-позавчера. Хорошо хоть не давят, а лишь смотрят на нас щенячьими глазами - ребята ну постарайтесь пожалуйста побыстрее. Мы и стараемся, но при этом в жестких торопыгах, используя только проверенные решения, не имея времени что-то переосмыслить, как-то вырасти над собой, попробовать что-то новое. Я-то думал, что это в одной конторе так, но поработал там и сям и везде одно и то же плюс-минус незначительные различия.
"Сомелье архитектуры" 😂 Утащил себе.
Когда решил все переписать,обосрался, и сделал из говнокода больший говнокод,а потом это доехало до прода😏😏
Мне зевс сказал, все что ты сказал - это фигня. Пойду еще пару синглтончиков наверну в проект. И отправлю пул реквест на 1000 срок.
Лучшее пятничное видео. Как на море побывал. Легко, просто и ясно. Я тоже таким мучаюсь и те же вещи говорил, но кто бы слушал.
Тру сеньоры не то что пишут максимально просто, я бы даже сказал удаление кода при сохранении функциональности - вот это высшее благо. А не всякие там красивости в коде :)
Говнокод никуда не денется и его количество само по себе меньше становиться не будет. Надо изначально договариваться с бизнесом на то, что задачи по рефакторингу будут иметь нормальный приоритет и не будут месяцами отодвигаться, потому-что какой-то очередной срок горит (а он постоянно горит). Если проект развивается, то и кодовая база растёт, надо постоянно выделять время на её обслуживание, оптимизацию, исправление разных мелочей, обновление библиотек и тп. Если бизнес этого не понимал, я тупо в свои задачи закладывал больше времени и рефакторил сопутствующие вещи (на проектах с 1-3 разрабами на андроиде, с согласованием только с ними). Поддерживать определенный уровень качества кода - это моя зона ответственности, будет ли явно выделено время на обслуживание или нет - эта работа должна проводиться.
Подписываюсь под каждым словом! Сам говнокод пишу из-за своей низкой квалификации, так и не смог набраться опыта и начать писать хоть как-то нормально... Иэх...
Всё прям как про меня :)
Спасибо за видео! Из многих, кто говорит о программировании твои слова понимаю лучше всего, хотя сам не программист.
Вероятночть отказа системы - это сумма вероятностей отказа частей системы. Высшее образование не панацея, если у ВУЗа нет стимула отчислять за неуспиваемость. Когда учился, вылететь можно было только если год не посещал занятия. На выходе, как правило, имеешь знания середины прошлого века - привет тем кто делал курсовые по КР580 и 555 таймеру. Приходишь к работодателю и чувак выпустившися 25 лет назад, говорит, что делал те же курсачи, и уже тогда они мало имели общего с реальностями индустрии.
Прям чувствуется, что свои тезисы вы буквально выстрадали... Плюс уровень сарказма, моë почтение!
аплодирую стоя! все так и про базу и вообще.
Вспоминая авторов на книгах которых набирался философии программистов прошлого, приведу несколько цитат.
1. Для инженера не может быть авторитета и идеальной технологии, только технология подходящая под конкретные условия здесь и сейчас.
2. Каждый из нас совершил этот грех создания велосипеда, иначе вы бы до сих пор писали на Basic, однако пришлось потратить больше сил и времени чем на создание Basic, чтобы это стало стабильно и не сильно потеряв в скорости выполнения.
Спасибо за выпуск, это суть жизненного цикла бизнеса на мой взгляд! Зарплата идёт за достигнутый результат в поставленные сроки. Пока проблему не «увидит бизнес» как падение time to market из-за архитектуры, времени на закрытие техдолга не дадут, но даже в этом случае никто обычно не старается улучшить проект, а просто проводят миграцию на новый который «ну теперь уже точно» не имеет таких проблем…Цикл повторяется по мере накопления энтропии кода.
У меня есть один хороший признак говнокода - это то что его не возможно огородить автотестами
Да в любой профессии есть аналог говнокода. Никуда от этого не деться даже при всем желании. Действительно очень много факторов влияющих. Остаётся лишь каждому участнику в меру своих возможностей со своей стороны минимизировать его появление.
все так, все так. всю жизнь приходиться учиться, чем бы я ни занимался
Разницу между MVC, MVP, MVI, MVVM особо толком в интернете никто не может объяснить, везде определения этим всех вещей скачут.
Не говоря уже о том, что эти понятия выродились в совершенно что-то новое, не то что изначально в MVC вкладывалось в лабораториях Ксерокса.
И это мы даже не начали про то что эти все паттеры вложены один в другой как во множестве Мандельброта: например, в разрезе общей архитектуры фронтенд на ангуляре это лишь вьюшка для приложения. При этом в самом ангуляре мы опять же может ввести определение и модели, и вьюшки...
Хорошая практика - использовать тесты архитектуры, благо с появлением konsist это возможно и для kotlin. Очень хорошая вещь, помогает исправить многое еще до ревью, так как при нарушении будут падать тесты.
Четко. В целом - многое отзывается. И если честно - очень хочется обучаться и расти, но если 2 года назад в компаниях типа обычной галеры это еще хоть как-то поддерживалось, на каком-то уровне, типа ревью, созвоны отдела, и ипр-ы, то последний год всем просто похер. Ты тушишь пожары 25/8 и когда развиваться и догонять фундамент или что-то новое - вообще непонятно.
Если вышка чем то и полезна, то базой любого языка программирования, работы с коллекциями и так далее. Но чистому коду там точно не учат. Попробуйте переопределить кастомные визуалы для снекбара в коспоузе и сходу увидите нарушение одного из принципов солида) или проекты где техлид говорит тестов нет, делайте унимодели где тебе и сериалайзд и бд в одном)) клинкод полезнее всего на лайфкодинга, а ирл уже как карта ляжет
Высшее образование должно дать системный подход к решению проблемы. Напихивание знаний конкретных языков вообще лишнее дело, как по мне
Алексей, спасибо за видео!
Был момент, когда ты упоминаешь термин "Преждевременная оптимизация", но говоришь про антипаттерн BDUF (Big Design Up Front) - это две разные вещи, но обе имеют место быть.
Обоснование переделок перед бизнесом - та еще головная боль, когда с их точки зрения продукт есть, он работает, а тут ты приходишь и говоришь, что это никуда не годится и надо все переписывать.
Во многих книгах говорят, что любой проект можно отрефакторить и привести в норму, что переписывание с нуля всегда это решение хуже, но как ты заметил (и я соглашусь), что есть некая критическая масса говнокода в проекте, когда рефакторинг выйдет дороже. И отсюда вопрос - как определить этот момент?
Кстати, насчет BDUF - еще до того, как я узнал этот термин, читал про это явление у Джоэла Спольски (он не настолько популярен, как тот же Роберт Мартин или Фаулер, но я бы порекомендовал его книги "Joel On Software") - он называет людей страдающих BDUF - Architecture Astronauts
На мой взгляд, есть еще одна проблема говнокода, которую ты не упомянул или я пропустил - это "замыливание" бизнес-логики приложения. Когда тебе приходится взяться и допилить/переделать какое-то приложение, то при превалировании говнокода очень сложно понять что приложение вообще делает в том или ином месте, где начинается какой-то бизнес-процесс, какие компонениы системы он затрагивает
Вау офигенный коммент, спасибо большое. Книгу обязательно прочитаю, добавил себе в закладочки. Про проблему тоже поизучаю поподробнее!
До сих пор когда смотрю, как Gradle собирает проект, чувствую себя пастухом Флавианом))) Спасибо за видео, мотивирует на развитие
Я всё ждал рекламу крутого базового курса в конце 😅
Парадигма программирования - это грамматика. (ИМХО)
Теоретически могли бы так на goto программы продолжать писать, но читать такое сложно поэтому goto заменили на структурное программирование (описываешь алгоритм пошагово), функциональное программирование (описываешь, что хочешь получить), объектно-ориентированное программирование в принципе ничего нового с алгоритмической точки зрения не даёт, только даёт дополнительную страховку от ошибок.
Парадигма программирования - это совокупность принципов и подходов к написанию компьютерных программ или можно сказать, что это определенный "стиль" программирования
давно так не смеялся) юмор то что надо!
Спасиба 🥹
Не каждый поймет ;-)
Первые 3 курса учат писать конспекты. Преподам абсолютно фиолетово понял ты тему или не понял, большинство из них читают с бумажки. А 4 и 5 курс это дипломная работа.
На счет теории. А что мешает найти программу вуза и набрать книг? Можно быстрее усвоить программу не тратя время на экологию, физкультуру, физику, химию, русский язык, литературу итд.
Ничего не мешает, просто тебе будет влом этим заниматься, а в вузе в тебя это пихают)
советы архитектурных сомелье ведь тоже преследуют свои цели: и зачастую это не всегда соответствует а чтобы отлично работало
Архитектурные сомелье )))
Иллюзия всемогущества - эффект Даннинга-Крюгера
"Иллюзия всемогущества" - это вроде "эффект Даннинга-Крюгера" другими словами
Или мания величия :)
Иллюзия всемогущества это что-то чем вы болеете
хаха странные моб разрабы придумали 100500 оттенков паттерна MVC - теперь их никто не понимает и сами страдают. VIPER им жопы!
Не совсем так, конечно. Все направлено на уменьшение связности кода, в конечном счете
Как-то делал проект в angular все разделял чтобы связаности не было модули вмещали компоненты, а компоненты импортировали модули элементов. Решил проанализировать bundle analyzer Lazy-loading feature modules применял, но сам проект раздулся((( Перешел на react + flux, redux и функциональное программирование
Прежде чем писать сам код, обычно строю UML-диаграммы классов, чтобы весь проект (или какой-то отдельный компонент) был виден как на ладони. В этом случае, конечно же, говнокод тоже имеет место быть, но уже скорее точечно (в каких-то отдельных методах реализаций). Ну, а если сама архитектура говно изначально, то её, конечно, никакой рефакторинг не спасёт.
1. Люди пишут g-код, потому что сотыги и так капают, зачем ещё напрягаться? Если бы особо платили за чистый код, то ок, но ведь и так платят, а усилий меньше. Надо быть совсем дебилом, чтобы за просто так красиво делать для чужого дяди. Пусть платят - тогда сделаем. Что думаете, я не смогу нагуглить ответы? Да всё в гугле и у ИИ давно написано, просто и так всем ок.
2. Системное мышление? Понимать базу? Так ты работаешь с фреймворками, написанными такими же макакерами на от..бись. Всё окружение такой же g-код. Что думаешь, можно копнуть и познать базу? Нет, можно копнуть и хлебнуть такого же г-на и костылей. И в итоге всё равно придётся лепить костыли с магическими делеями и прочим. За андроид не скажу, но в целом в индустрии везде так. Жемчужины остались в 90-х.
3. ВО - нужно? Ну если так мыслить, то ВО не достаточно. Это сопливые азы. Нужна ученая степень, чтобы реально разбираться. И если тебе нравится тратить время и питаться красотой кода вместо лобстеров и белужьей икры, то ок - занимайся. А я лучше сотыги продолжу грести в свои бездонные карманы. И пусть другой чел после меня тоже заработает. Пусть перепишет мой говнокод с нуля и тоже нагреет кабана на пару лямов спокойно. Мы должны помогать друг другу. Кабаны должны усвоить, что айти - это очень сложно и ОЧЕНЬ ДОРОГО. Сейчас уже греча стала спокойно получать на своих рукопашных дноработах по 150-200к. Соответственно программисту уже зашквар работать менее, чем за 600-800к (мидл+). Ждём когда рыночек порешает.
Лучше напрячься и не страдать потом от своего же говнокода, в итоге на длинной дистанции тратить меньше времени и больше отдыхать, + расти как разработчик в цене. Надо быть совсем дебилом, чтобы срать самому себе в код)
@@captainsustain "потом" ты уже будешь на новом месте работы скорее всего. Смысл гнить на одном проекте?
@@peterswinoff1886 так не гноись, работай от души)
Спасибо за видео
а где стрим про телеграм? в начале сказали будет ссылочка - но как-то не было (может я слепец)
На канале есть, в трансляциях
Добавил спасибо
@@MobileDeveloper Вам спасибо
Говнокожу где хочу, законом не запрещено
Пздц ты конечно
Правильнее будет "говнокодю"
Образование которое есть сейчас, это хрень...Оно нуждается в глубокой и основательной модернизации...У нас людей с высшим образованием огромное, при этом найти спеца очень сложно в любой сфере...Без самообразования и постоянного оттачивания своих навыков, диплом можно спускать в мусорку уже сейчас.
21:57 Теперь возможно в обиход войдет термин "флавианить", как толерантный аналог для "говнокодить" ))
Под час проблема говнокода не в говнокоде, а в продукте.
Точнее в том, что он существует.
Точнее в том, что единственный смысл его существование - это просто его существование.
В 75% случаях - нативную разработку бизнес выбирает только из соображений "чтобы перед пацанами не стыдно было", чтобы "как у всех".
Причем сразу же стараясь максимально повычёркивать любое внешнее проявление этой "нативности", максимально избегая продуктовой интеграции с ОС.
В итоге - все мы просто пишем вебсайты на kotlin.
С качеством ui/ux в лучшем случае - таким же как и сайт.
И производительностью - максимум той же что и web/pwa.
Но за большие деньги и большее время))
"Безделье - игрушка дьявола" (с) Кама Пуля
Сейчас большинство IT-продуктов (особенно в России) - решают лишь одну проблему - погашение ипотек всех участников разработки от Junior до CTO/CPO.
Было бы очень здорово посмотреть лекции про основы програмирования от вас.
Учусь в вузе на программиста, но многие предметы преподают спустя рукава.😢
Я пишу целый курс по этому делу )
Когда он будет доступен? Сколько будет стоить?
С нетерпением ждем ❤
Я был самоучка, писал понятный код, используя простые конструкции, минимум вложенностей, на все делал отдельные классы, структуры папки и файлы, проектировал код по MVVM и VIPER. Не работал напрямую с объектами Realm чтобы не было проблем с памятью. В общем взаимодействие с бд тоже круто проектировал. Но я не знал что такое SOLID и мог и з за этого провалить собеседование, так как это первый вопрос который спрашивают и если не ответил дальше даже не будут с тобой разговаривать =)
А потом на твоём проекте одна унитарная модель без разделения слоев на компоузе (и юай и бд и сериализация в одном) и вообще пофиг на эти чистые архитектуры с юзкейсами и репозиториями) Тесты писать не надо - ну и пох
@@gala3941 я же сказал что хорошо проектирую и не было особых проблем с крашами или потерей памяти. Если нужны тесты, без проблем, плоти, сделаю. Любые капризы за ваш счёт)
вспомните свою архитектуру и еще раз посмотрите на структуру и вот те места которые можно обозначить как магия - там скорее всего место где может поселится говнокод или уже живет
20:10 ты перечислил всё нужное, и что люди обычно не называют ненужными предметами :)
А 3 семестра истории не хотите? А психологию коллектива, где препод задвигает что-то из Фрейда? :)
Хочешь только все нужное - иди в шарагу или нанимай репетитора/ментора
учился в универе и меня могли отчислить за то что я не знаю физику, ладно если бы за незнание английского, но зачем знать физику на факультете информационных технологий
Так. Что это за проблема которую без сингелтона не решить?
Говно код это основа индустрии. Код должен решать бизнес задачи и никому не нужен код который нужно ждать что лет кода он уже не нужен. Иногда код должен просто работать. Там где нужен идеальный код там и отрасль это понимает это медицина космос или АСУТП. Мобильный код априори должен быть говно кодом чтобы приносить деньги. Чистый код вообще никому не нужен. Это оправдания для прокрастинации программистов. 😂
Всем привет)
После участия в 2х конкурсах в Телеграм на iOS я заметил за собой, что я стал писать код намного хуже чем обычно - это означает что я стал более синьористее?))
Потому что от подобного участия и быстрой награды ты по сути доказываешь себе что все эти архитектуры нах никому не нужны - когда есть реальная награда за работу и дедлайн ограничен.
Наоборот же :) в видео говорится, что сеньоры как раз пишут простой код, причем настолько, что даже порой выглядит не серьезно
Решайте проблемы по мере их поступления.
Экспорт видео из бусти ?
Оппозиция на самокатах
решает вопросы ))
Думаю, что говнокод идёт от того, что у людей нет личной базы знаний. А школы или ВУЗы не учат её создавать. Они действуют по принципу отбраковки тех, кто не догадался использовать методики обучения. Людей учат каким-то знаниям, но не учат как эффективно учиться, то есть сохранять эти знания на оставшуюся жизнь.
вроде все по делу, но над "вышкой", как причиной - спасибо поржал :)
На деле, когда 5-я точка в огне, сроки горят и прочее, абсолютно все пишут "как получилось, что бы работало", а потом, если когда то руки дойдут (никогда), исправляют.
Так еще потом поди бизнесу объясни почему нужно переписывать, если все работает.
Конечно говнокод тоже имеет шкалу "говнистости", там где сеньор напишет более менее, джун, если осилит, напишет говнокод.
Клинкод в моем понимании можно умышленно писать, разве что в своем пет проекте, когда ты никуда не торопишься от слова "совсем".
Синиор и джун решают задачи разного масштаба. Но никто из них (по-хорошему) не должен писать говнокод
вопрос в каком институте вы учились ?
Томской универе вроде.
думаю на удален ку поступить только куда @@user-vz1xh4re2d
ТУСУР
А почему это event bus - антипаттерн? Или это только для андроида?
В андроиде антипаттерном считается
@@MobileDeveloper Нашел статью, почитал, полезно, спасибо.
🤓🤓🤓🤓🤓🤓🤓🤓🤓🤓 автор видео свои комплексы "жизнь sub5 male" решил маскировать через "умный разраб, читает умные книги"
Если говнокод удовлетворяет потребности, то все в порядке. Как задача поставлена так она и выполняется.
business needs money, not your beautiful code. business needs something to sell to pay you a salary. but I agree about self-education it is the base of the professional growth
ты не джун - ты оказывается флавиан))
Это база
Сколько видел чуваков дипломами, которые не могут гоф с грасп паттернами различить и ответить в чем разница между билдером и фабрикой... не говоря уже про знания языка (типа котлина)
К сожалению после университетской базы люди либо совсем ничего не понимают, либо понимают, но не знаю как это применять. Бывают ещё такие, кто думают что всё знает и применяет так, что лучше бы не применяли.
Но практика показывает что выучить что-то можно только через боль и лишения, а есть вышка или нет это дело десятое.
@@vladimirpyrkh4422тоже не понятно где их целесообразно применять, а где и без них можно обойтись
Эх, поменториться бы у опытного человека, а то уже чувствуется ступор в развитии
Еще дизайн паттерны учить 😭😭😭😭😭
Не учить, а знать где их можно применить и подойдут ли они вообще в вашем случае gof and grasp. Ещё architecture, enterprise patterns есть))))
Ковно код :) Ржал..это как мораль. Для кого то говно код. Для меня идеальнвй код
Нет , не хватит
😁
очень. инттеесно но пока не актуально
тайм коды съехали
Спасибо, поправил
ruclips.net/video/Z4wsg_JgFFk/видео.html
Скорее в наших реалиях его будут приглашать на подкасты рассказывать про математику
Не знаю, как другие, но я пишу код, который работает.
Понял мораль ролика, если нет высшего образования, то ты пишешь говнокод, ведь те у кого оно есть код то точно писать умеют
Хорошее высшее образование даëт системность мышления и банально развивает формальную логику (это которая раздел философии, а не математики)
@@elenalicharda В чем проблема изучить все это самостоятельно? Тут скорее ошибка выжившего, так как большинство выпускников тех вузов работает не специальности, если наше образование было бы такое же полезное как на западе, думаю процент людей работающих по специальности был бы гораздо выше.
@@danilchistov6765 в том, что у невежд с кластерным мышлением даже такой задачи для изучения не возникнет (см.видео и пример про "магическое мышление"). А ещë они будут отрицать реальность и упорно спорить с тем, что им это действительно нужно, когда им это прямым текстом, прям капслоком, скажут!
Ещë так умиляет эта ваша вера в великое западное и унылое отечественное.
@@elenalicharda я вас понял, отсутствие высшего образования приравнивается к кластерному мышлению, так как у ребят в тех вузе был семестр философии 😂
@@danilchistov6765 ну раз вы сделали именно такой вывод, то могу лишь посочувствовать. Собственно, сам уровень дискурса оппонента отлично показывает на каких позициях стоит человек, как мыслит и к каким выводам приходит.
Типичный инфоцыган
Я пишу говнокод потому что смотрю этот канал!
Хорош!
Я так понимаю вы с питера или с москвы, а не с россии, в россии высшее образование чисто показатель сколько ты денег занёс))
бред
а я так понимаю вы с Украины, потому что в России пишут ИЗ России, а про показатель - это чисто ваша история
@@MobileDeveloperА в белоруссии как пишут? Чё сразу с Украины?
ну так же сложно в москву или питер поступить, если есть желание. да и будто в других городах вузы это прям ужас какой-то
@@MobileDeveloper ооо дааа если не бьюсь в приступе патриотизма стопудово из украины
А почему вы в ролике амаксай упустили возможности и развитие PWA? Зачем сказали что эти приложения не работают без интернета, ведь это не так? Очень однобоко не зная технологий парафинить ее с ходу. Лет 5 назад я бы согласился (и то уже был react native например), но сейчас… а вы точно эксперт?