А всё просто. Когда прибегают с криком: «Срочно!!! Нужно ещё позавчера!!! Сделай как-нибудь, чтобы хоть как-то заработало»… потом это накапливается в один большой говнопроект.
1. Пишется временный код, который в силу обстоятельств становится постоянным. А переписать нет времени - сверху ещё накидали кучу задач, которые надо сделать вчера. 2. Изменение требований бизнеса, и новые фичи, которые плохо укладываются в изначальную архитектуру процесса. Бывает какие-то моменты продумаешь заранее, но всего предугадать не получится, да и не всегда время. В общем... иногда говнокод - это результат не лени и слабой компетенции, а сложности мира в котором мы живём. Но да, бывает говнокод и на ровном месте.
@@torburgmax потому что в бизнесе менеджер главнее рабочего(программиста), менеджер даёт команду, рабочий эту команду исполняет; потому что быстро-качественно-дёшево менеджеры хотят всегда и каждый день. Задача рабочего поставить в известность менеджера о проблеме, а когда решать эту проблему(или не решать) это уже ответственность менеджера.
@@elron2010 то есть по факту обоим сотрудникам необходимо найти тот приемлемый уровень взаимодействия, который устроит обоих. почему же тогда во всем виноват менеджер? на моем опыте очень часто программист менеджеру скажет, что напишет "говнокод", а менеджер еще чаще вообще не понимает, чем это чревато, а программист и не доносит этого.
@@MobileDeveloper К сожалению это так. Наверху берут тендер, который закрыть надо за очень короткий срок. Пока выясняли потребности заказчика, пока согласовывали, пока утверждали дизайн, эти сроки и прошли, и в итоге в разработку мобильщикам передают со сроками даже не вчера, а сильно поза-позавчера. Хорошо хоть не давят, а лишь смотрят на нас щенячьими глазами - ребята ну постарайтесь пожалуйста побыстрее. Мы и стараемся, но при этом в жестких торопыгах, используя только проверенные решения, не имея времени что-то переосмыслить, как-то вырасти над собой, попробовать что-то новое. Я-то думал, что это в одной конторе так, но поработал там и сям и везде одно и то же плюс-минус незначительные различия.
Говнокод никуда не денется и его количество само по себе меньше становиться не будет. Надо изначально договариваться с бизнесом на то, что задачи по рефакторингу будут иметь нормальный приоритет и не будут месяцами отодвигаться, потому-что какой-то очередной срок горит (а он постоянно горит). Если проект развивается, то и кодовая база растёт, надо постоянно выделять время на её обслуживание, оптимизацию, исправление разных мелочей, обновление библиотек и тп. Если бизнес этого не понимал, я тупо в свои задачи закладывал больше времени и рефакторил сопутствующие вещи (на проектах с 1-3 разрабами на андроиде, с согласованием только с ними). Поддерживать определенный уровень качества кода - это моя зона ответственности, будет ли явно выделено время на обслуживание или нет - эта работа должна проводиться.
Тру сеньоры не то что пишут максимально просто, я бы даже сказал удаление кода при сохранении функциональности - вот это высшее благо. А не всякие там красивости в коде :)
именую переменные как хочу, пишу код как хочу, никто ничего не говорит и всем понятно. говнокод - это код который просто написан с помощью базы того или иного языка из-за чего он просто становится огромным и поэтому не понятным, взяв тот же STL вы напишете программу в 10 раз быстрее чем чистом C++, я веду к тому что назвав переменные красиво и оставив комментарии под каждой строкой код не станет лучше, а просто он будет понятен новичкам)
Пишу сложный код так, чтобы работал корректно и быстро. С нетривиальными решениями и низкоуровневой оптимизацией. Типичный современный мамкин клинкодер скорее всего назовёт это говнокодом. Только вот на замену скорее всего пришло бы поделие, которое работало бы очень условно, медленно и при этом было бы реальным "чистым" говнокодом.
Разницу между MVC, MVP, MVI, MVVM особо толком в интернете никто не может объяснить, везде определения этим всех вещей скачут. Не говоря уже о том, что эти понятия выродились в совершенно что-то новое, не то что изначально в MVC вкладывалось в лабораториях Ксерокса. И это мы даже не начали про то что эти все паттеры вложены один в другой как во множестве Мандельброта: например, в разрезе общей архитектуры фронтенд на ангуляре это лишь вьюшка для приложения. При этом в самом ангуляре мы опять же может ввести определение и модели, и вьюшки...
Вероятночть отказа системы - это сумма вероятностей отказа частей системы. Высшее образование не панацея, если у ВУЗа нет стимула отчислять за неуспиваемость. Когда учился, вылететь можно было только если год не посещал занятия. На выходе, как правило, имеешь знания середины прошлого века - привет тем кто делал курсовые по КР580 и 555 таймеру. Приходишь к работодателю и чувак выпустившися 25 лет назад, говорит, что делал те же курсачи, и уже тогда они мало имели общего с реальностями индустрии.
Вспоминая авторов на книгах которых набирался философии программистов прошлого, приведу несколько цитат. 1. Для инженера не может быть авторитета и идеальной технологии, только технология подходящая под конкретные условия здесь и сейчас. 2. Каждый из нас совершил этот грех создания велосипеда, иначе вы бы до сих пор писали на Basic, однако пришлось потратить больше сил и времени чем на создание Basic, чтобы это стало стабильно и не сильно потеряв в скорости выполнения.
Алексей, спасибо за видео! Был момент, когда ты упоминаешь термин "Преждевременная оптимизация", но говоришь про антипаттерн BDUF (Big Design Up Front) - это две разные вещи, но обе имеют место быть. Обоснование переделок перед бизнесом - та еще головная боль, когда с их точки зрения продукт есть, он работает, а тут ты приходишь и говоришь, что это никуда не годится и надо все переписывать. Во многих книгах говорят, что любой проект можно отрефакторить и привести в норму, что переписывание с нуля всегда это решение хуже, но как ты заметил (и я соглашусь), что есть некая критическая масса говнокода в проекте, когда рефакторинг выйдет дороже. И отсюда вопрос - как определить этот момент?
Кстати, насчет BDUF - еще до того, как я узнал этот термин, читал про это явление у Джоэла Спольски (он не настолько популярен, как тот же Роберт Мартин или Фаулер, но я бы порекомендовал его книги "Joel On Software") - он называет людей страдающих BDUF - Architecture Astronauts
На мой взгляд, есть еще одна проблема говнокода, которую ты не упомянул или я пропустил - это "замыливание" бизнес-логики приложения. Когда тебе приходится взяться и допилить/переделать какое-то приложение, то при превалировании говнокода очень сложно понять что приложение вообще делает в том или ином месте, где начинается какой-то бизнес-процесс, какие компонениы системы он затрагивает
Первые 3 курса учат писать конспекты. Преподам абсолютно фиолетово понял ты тему или не понял, большинство из них читают с бумажки. А 4 и 5 курс это дипломная работа. На счет теории. А что мешает найти программу вуза и набрать книг? Можно быстрее усвоить программу не тратя время на экологию, физкультуру, физику, химию, русский язык, литературу итд.
Да в любой профессии есть аналог говнокода. Никуда от этого не деться даже при всем желании. Действительно очень много факторов влияющих. Остаётся лишь каждому участнику в меру своих возможностей со своей стороны минимизировать его появление.
Четко. В целом - многое отзывается. И если честно - очень хочется обучаться и расти, но если 2 года назад в компаниях типа обычной галеры это еще хоть как-то поддерживалось, на каком-то уровне, типа ревью, созвоны отдела, и ипр-ы, то последний год всем просто похер. Ты тушишь пожары 25/8 и когда развиваться и догонять фундамент или что-то новое - вообще непонятно.
Если вышка чем то и полезна, то базой любого языка программирования, работы с коллекциями и так далее. Но чистому коду там точно не учат. Попробуйте переопределить кастомные визуалы для снекбара в коспоузе и сходу увидите нарушение одного из принципов солида) или проекты где техлид говорит тестов нет, делайте унимодели где тебе и сериалайзд и бд в одном)) клинкод полезнее всего на лайфкодинга, а ирл уже как карта ляжет
@@acras11 Под такую философию инженер как офицер - должен не прикасаться к коду, а только руководить "солдатами", с высоты своего Высшего Образования". А программировать должны солдаты в соответствии с чёткими отраслевыми, заводскими и командными инструкциями, под неусыпным оком Инженера. Но в жизни это не так, инженерам приходится самим засучивать рукава. Значит, и навыки быть обязаны. К тому же, многое в любой отрасли кроется в деталях, которых без практики даже гений не поймёт.
@@acrapid7845 я не имел в виду, что программист не должен знать код. Я просто не уверен, что вуз должен и может учить именно языкам. Т.к. Такие курсы имеют тенденцию отставать от реалий
Спасибо за выпуск, это суть жизненного цикла бизнеса на мой взгляд! Зарплата идёт за достигнутый результат в поставленные сроки. Пока проблему не «увидит бизнес» как падение time to market из-за архитектуры, времени на закрытие техдолга не дадут, но даже в этом случае никто обычно не старается улучшить проект, а просто проводят миграцию на новый который «ну теперь уже точно» не имеет таких проблем…Цикл повторяется по мере накопления энтропии кода.
Под час проблема говнокода не в говнокоде, а в продукте. Точнее в том, что он существует. Точнее в том, что единственный смысл его существование - это просто его существование. В 75% случаях - нативную разработку бизнес выбирает только из соображений "чтобы перед пацанами не стыдно было", чтобы "как у всех". Причем сразу же стараясь максимально повычёркивать любое внешнее проявление этой "нативности", максимально избегая продуктовой интеграции с ОС. В итоге - все мы просто пишем вебсайты на kotlin. С качеством ui/ux в лучшем случае - таким же как и сайт. И производительностью - максимум той же что и web/pwa. Но за большие деньги и большее время)) "Безделье - игрушка дьявола" (с) Кама Пуля
Образование которое есть сейчас, это хрень...Оно нуждается в глубокой и основательной модернизации...У нас людей с высшим образованием огромное, при этом найти спеца очень сложно в любой сфере...Без самообразования и постоянного оттачивания своих навыков, диплом можно спускать в мусорку уже сейчас.
Хорошая практика - использовать тесты архитектуры, благо с появлением konsist это возможно и для kotlin. Очень хорошая вещь, помогает исправить многое еще до ревью, так как при нарушении будут падать тесты.
@@user-kv3rc9jk9u управлять выполнением сценария нужно, а код для обеспечения этого приводит к ненужному и вредному для оптимизации кода разделению монолита на части.
Парадигма программирования - это грамматика. (ИМХО) Теоретически могли бы так на goto программы продолжать писать, но читать такое сложно поэтому goto заменили на структурное программирование (описываешь алгоритм пошагово), функциональное программирование (описываешь, что хочешь получить), объектно-ориентированное программирование в принципе ничего нового с алгоритмической точки зрения не даёт, только даёт дополнительную страховку от ошибок.
Функциональное программирование - редкое по своей сути убожество. Когда нужно написать алгоритм, который работает конкретное количество времени, то функционально написанный алгоритм начинает затяжной до бесконечности сеанс любви с астралом и рантаймом, которое это функциональное поделие исполняет на императивном железе. Поэтому оно очень даже даёт новое, только с отрицательным знаком. Хотя - мастера функционального жанра такими низменными вещами, как производительность и потребление ресурсов, не занимаются. Они в облаках с монадами и хвостовыми рекурсиями витают.
@@lollol267 а что ты мне это пишешь? Напиши в гугл, что их Jetpack Compose не годится для быстрого выполнения программ, потому что всё описание внешнего вида интерфейса в нём - чистая функциональщина; напиши Джону Макфарлейну, что его Pandoc херня, ибо написан на функциональном Haskell. :-)
Прежде чем писать сам код, обычно строю UML-диаграммы классов, чтобы весь проект (или какой-то отдельный компонент) был виден как на ладони. В этом случае, конечно же, говнокод тоже имеет место быть, но уже скорее точечно (в каких-то отдельных методах реализаций). Ну, а если сама архитектура говно изначально, то её, конечно, никакой рефакторинг не спасёт.
Говно код это основа индустрии. Код должен решать бизнес задачи и никому не нужен код который нужно ждать что лет кода он уже не нужен. Иногда код должен просто работать. Там где нужен идеальный код там и отрасль это понимает это медицина космос или АСУТП. Мобильный код априори должен быть говно кодом чтобы приносить деньги. Чистый код вообще никому не нужен. Это оправдания для прокрастинации программистов. 😂
Я был самоучка, писал понятный код, используя простые конструкции, минимум вложенностей, на все делал отдельные классы, структуры папки и файлы, проектировал код по MVVM и VIPER. Не работал напрямую с объектами Realm чтобы не было проблем с памятью. В общем взаимодействие с бд тоже круто проектировал. Но я не знал что такое SOLID и мог и з за этого провалить собеседование, так как это первый вопрос который спрашивают и если не ответил дальше даже не будут с тобой разговаривать =)
А потом на твоём проекте одна унитарная модель без разделения слоев на компоузе (и юай и бд и сериализация в одном) и вообще пофиг на эти чистые архитектуры с юзкейсами и репозиториями) Тесты писать не надо - ну и пох
@@gala3941 я же сказал что хорошо проектирую и не было особых проблем с крашами или потерей памяти. Если нужны тесты, без проблем, плоти, сделаю. Любые капризы за ваш счёт)
вроде все по делу, но над "вышкой", как причиной - спасибо поржал :) На деле, когда 5-я точка в огне, сроки горят и прочее, абсолютно все пишут "как получилось, что бы работало", а потом, если когда то руки дойдут (никогда), исправляют. Так еще потом поди бизнесу объясни почему нужно переписывать, если все работает. Конечно говнокод тоже имеет шкалу "говнистости", там где сеньор напишет более менее, джун, если осилит, напишет говнокод. Клинкод в моем понимании можно умышленно писать, разве что в своем пет проекте, когда ты никуда не торопишься от слова "совсем".
Всем привет) После участия в 2х конкурсах в Телеграм на iOS я заметил за собой, что я стал писать код намного хуже чем обычно - это означает что я стал более синьористее?)) Потому что от подобного участия и быстрой награды ты по сути доказываешь себе что все эти архитектуры нах никому не нужны - когда есть реальная награда за работу и дедлайн ограничен.
вспомните свою архитектуру и еще раз посмотрите на структуру и вот те места которые можно обозначить как магия - там скорее всего место где может поселится говнокод или уже живет
Подписываюсь под каждым словом! Сам говнокод пишу из-за своей низкой квалификации, так и не смог набраться опыта и начать писать хоть как-то нормально... Иэх... Всё прям как про меня :)
Парадигма программирования - это совокупность принципов и подходов к написанию компьютерных программ или можно сказать, что это определенный "стиль" программирования
Самообразование одно другому рознь. По ютубам учится, конечно, результат будет говнокодовым. Базу учить можно самостоятельно. Книг миллионы. Но времени потратить придется больше чем в универе. Потому как придется нарабатывать ошибки и сразу не будет точного понимания что нужно, а что нет. Хотите сэкономить время - учитесь в универе
Думаю, что говнокод идёт от того, что у людей нет личной базы знаний. А школы или ВУЗы не учат её создавать. Они действуют по принципу отбраковки тех, кто не догадался использовать методики обучения. Людей учат каким-то знаниям, но не учат как эффективно учиться, то есть сохранять эти знания на оставшуюся жизнь.
Как-то делал проект в angular все разделял чтобы связаности не было модули вмещали компоненты, а компоненты импортировали модули элементов. Решил проанализировать bundle analyzer Lazy-loading feature modules применял, но сам проект раздулся((( Перешел на react + flux, redux и функциональное программирование
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
20:10 ты перечислил всё нужное, и что люди обычно не называют ненужными предметами :) А 3 семестра истории не хотите? А психологию коллектива, где препод задвигает что-то из Фрейда? :)
учился в универе и меня могли отчислить за то что я не знаю физику, ладно если бы за незнание английского, но зачем знать физику на факультете информационных технологий
Сколько видел чуваков дипломами, которые не могут гоф с грасп паттернами различить и ответить в чем разница между билдером и фабрикой... не говоря уже про знания языка (типа котлина)
К сожалению после университетской базы люди либо совсем ничего не понимают, либо понимают, но не знаю как это применять. Бывают ещё такие, кто думают что всё знает и применяет так, что лучше бы не применяли. Но практика показывает что выучить что-то можно только через боль и лишения, а есть вышка или нет это дело десятое.
Интересно как у Автора с софтами, глядя на него почему то думаю что это именно тот тип который за любую ошибку новичка готов обосрать с головы до ног 😂
@@elenalicharda В чем проблема изучить все это самостоятельно? Тут скорее ошибка выжившего, так как большинство выпускников тех вузов работает не специальности, если наше образование было бы такое же полезное как на западе, думаю процент людей работающих по специальности был бы гораздо выше.
@@danilchistov6765 в том, что у невежд с кластерным мышлением даже такой задачи для изучения не возникнет (см.видео и пример про "магическое мышление"). А ещë они будут отрицать реальность и упорно спорить с тем, что им это действительно нужно, когда им это прямым текстом, прям капслоком, скажут! Ещë так умиляет эта ваша вера в великое западное и унылое отечественное.
@@danilchistov6765 ну раз вы сделали именно такой вывод, то могу лишь посочувствовать. Собственно, сам уровень дискурса оппонента отлично показывает на каких позициях стоит человек, как мыслит и к каким выводам приходит.
говнокод - сложен к пониманию, непонятные магические названия переменных, функций., большое количество дублирования, отсутствие обработки исключений, отсутствие структурированности(import/export) налеплено как правило всё в кучу и вёрстка и css, тут же js ещё php. В целом говнокод он не куда не денется, заказчик дал сайт в работу открываешь консоль браузера у него на сайте а там одна краснота, да и дедлайн короткий и денег мало за проект. Поэтому впихнул и отдал обратно
А почему вы в ролике амаксай упустили возможности и развитие PWA? Зачем сказали что эти приложения не работают без интернета, ведь это не так? Очень однобоко не зная технологий парафинить ее с ходу. Лет 5 назад я бы согласился (и то уже был react native например), но сейчас… а вы точно эксперт?
А всё просто. Когда прибегают с криком: «Срочно!!! Нужно ещё позавчера!!! Сделай как-нибудь, чтобы хоть как-то заработало»… потом это накапливается в один большой говнопроект.
у нас бывают "позавчерашние" задачи, но и 20% рабочего времени под техдолг отведено.
1. Пишется временный код, который в силу обстоятельств становится постоянным. А переписать нет времени - сверху ещё накидали кучу задач, которые надо сделать вчера.
2. Изменение требований бизнеса, и новые фичи, которые плохо укладываются в изначальную архитектуру процесса. Бывает какие-то моменты продумаешь заранее, но всего предугадать не получится, да и не всегда время.
В общем... иногда говнокод - это результат не лени и слабой компетенции, а сложности мира в котором мы живём.
Но да, бывает говнокод и на ровном месте.
С моей точки зрения говнокод - это на 95% вина бизнеса
@@MobileDeveloper почему не вина разработчика, который не может донести бизнесу, что делать так нельзя?
@@torburgmax потому что в бизнесе менеджер главнее рабочего(программиста), менеджер даёт команду, рабочий эту команду исполняет; потому что быстро-качественно-дёшево менеджеры хотят всегда и каждый день. Задача рабочего поставить в известность менеджера о проблеме, а когда решать эту проблему(или не решать) это уже ответственность менеджера.
@@elron2010 то есть по факту обоим сотрудникам необходимо найти тот приемлемый уровень взаимодействия, который устроит обоих. почему же тогда во всем виноват менеджер? на моем опыте очень часто программист менеджеру скажет, что напишет "говнокод", а менеджер еще чаще вообще не понимает, чем это чревато, а программист и не доносит этого.
@@MobileDeveloper К сожалению это так. Наверху берут тендер, который закрыть надо за очень короткий срок. Пока выясняли потребности заказчика, пока согласовывали, пока утверждали дизайн, эти сроки и прошли, и в итоге в разработку мобильщикам передают со сроками даже не вчера, а сильно поза-позавчера. Хорошо хоть не давят, а лишь смотрят на нас щенячьими глазами - ребята ну постарайтесь пожалуйста побыстрее. Мы и стараемся, но при этом в жестких торопыгах, используя только проверенные решения, не имея времени что-то переосмыслить, как-то вырасти над собой, попробовать что-то новое. Я-то думал, что это в одной конторе так, но поработал там и сям и везде одно и то же плюс-минус незначительные различия.
Говнокод никуда не денется и его количество само по себе меньше становиться не будет. Надо изначально договариваться с бизнесом на то, что задачи по рефакторингу будут иметь нормальный приоритет и не будут месяцами отодвигаться, потому-что какой-то очередной срок горит (а он постоянно горит). Если проект развивается, то и кодовая база растёт, надо постоянно выделять время на её обслуживание, оптимизацию, исправление разных мелочей, обновление библиотек и тп. Если бизнес этого не понимал, я тупо в свои задачи закладывал больше времени и рефакторил сопутствующие вещи (на проектах с 1-3 разрабами на андроиде, с согласованием только с ними). Поддерживать определенный уровень качества кода - это моя зона ответственности, будет ли явно выделено время на обслуживание или нет - эта работа должна проводиться.
Спасибо за видео! Из многих, кто говорит о программировании твои слова понимаю лучше всего, хотя сам не программист.
Когда решил все переписать,обосрался, и сделал из говнокода больший говнокод,а потом это доехало до прода😏😏
Тру сеньоры не то что пишут максимально просто, я бы даже сказал удаление кода при сохранении функциональности - вот это высшее благо. А не всякие там красивости в коде :)
именую переменные как хочу, пишу код как хочу, никто ничего не говорит и всем понятно.
говнокод - это код который просто написан с помощью базы того или иного языка из-за чего он просто становится огромным и поэтому не понятным, взяв тот же STL вы напишете программу в 10 раз быстрее чем чистом C++, я веду к тому что назвав переменные красиво и оставив комментарии под каждой строкой код не станет лучше, а просто он будет понятен новичкам)
Пишу сложный код так, чтобы работал корректно и быстро. С нетривиальными решениями и низкоуровневой оптимизацией. Типичный современный мамкин клинкодер скорее всего назовёт это говнокодом. Только вот на замену скорее всего пришло бы поделие, которое работало бы очень условно, медленно и при этом было бы реальным "чистым" говнокодом.
аплодирую стоя! все так и про базу и вообще.
Прям чувствуется, что свои тезисы вы буквально выстрадали... Плюс уровень сарказма, моë почтение!
Разницу между MVC, MVP, MVI, MVVM особо толком в интернете никто не может объяснить, везде определения этим всех вещей скачут.
Не говоря уже о том, что эти понятия выродились в совершенно что-то новое, не то что изначально в MVC вкладывалось в лабораториях Ксерокса.
И это мы даже не начали про то что эти все паттеры вложены один в другой как во множестве Мандельброта: например, в разрезе общей архитектуры фронтенд на ангуляре это лишь вьюшка для приложения. При этом в самом ангуляре мы опять же может ввести определение и модели, и вьюшки...
До сих пор когда смотрю, как Gradle собирает проект, чувствую себя пастухом Флавианом))) Спасибо за видео, мотивирует на развитие
Вероятночть отказа системы - это сумма вероятностей отказа частей системы. Высшее образование не панацея, если у ВУЗа нет стимула отчислять за неуспиваемость. Когда учился, вылететь можно было только если год не посещал занятия. На выходе, как правило, имеешь знания середины прошлого века - привет тем кто делал курсовые по КР580 и 555 таймеру. Приходишь к работодателю и чувак выпустившися 25 лет назад, говорит, что делал те же курсачи, и уже тогда они мало имели общего с реальностями индустрии.
Лучшее пятничное видео. Как на море побывал. Легко, просто и ясно. Я тоже таким мучаюсь и те же вещи говорил, но кто бы слушал.
Вспоминая авторов на книгах которых набирался философии программистов прошлого, приведу несколько цитат.
1. Для инженера не может быть авторитета и идеальной технологии, только технология подходящая под конкретные условия здесь и сейчас.
2. Каждый из нас совершил этот грех создания велосипеда, иначе вы бы до сих пор писали на Basic, однако пришлось потратить больше сил и времени чем на создание Basic, чтобы это стало стабильно и не сильно потеряв в скорости выполнения.
Алексей, спасибо за видео!
Был момент, когда ты упоминаешь термин "Преждевременная оптимизация", но говоришь про антипаттерн BDUF (Big Design Up Front) - это две разные вещи, но обе имеют место быть.
Обоснование переделок перед бизнесом - та еще головная боль, когда с их точки зрения продукт есть, он работает, а тут ты приходишь и говоришь, что это никуда не годится и надо все переписывать.
Во многих книгах говорят, что любой проект можно отрефакторить и привести в норму, что переписывание с нуля всегда это решение хуже, но как ты заметил (и я соглашусь), что есть некая критическая масса говнокода в проекте, когда рефакторинг выйдет дороже. И отсюда вопрос - как определить этот момент?
Кстати, насчет BDUF - еще до того, как я узнал этот термин, читал про это явление у Джоэла Спольски (он не настолько популярен, как тот же Роберт Мартин или Фаулер, но я бы порекомендовал его книги "Joel On Software") - он называет людей страдающих BDUF - Architecture Astronauts
На мой взгляд, есть еще одна проблема говнокода, которую ты не упомянул или я пропустил - это "замыливание" бизнес-логики приложения. Когда тебе приходится взяться и допилить/переделать какое-то приложение, то при превалировании говнокода очень сложно понять что приложение вообще делает в том или ином месте, где начинается какой-то бизнес-процесс, какие компонениы системы он затрагивает
Вау офигенный коммент, спасибо большое. Книгу обязательно прочитаю, добавил себе в закладочки. Про проблему тоже поизучаю поподробнее!
Первые 3 курса учат писать конспекты. Преподам абсолютно фиолетово понял ты тему или не понял, большинство из них читают с бумажки. А 4 и 5 курс это дипломная работа.
На счет теории. А что мешает найти программу вуза и набрать книг? Можно быстрее усвоить программу не тратя время на экологию, физкультуру, физику, химию, русский язык, литературу итд.
Ничего не мешает, просто тебе будет влом этим заниматься, а в вузе в тебя это пихают)
@@captainsustain мне не влом
Да в любой профессии есть аналог говнокода. Никуда от этого не деться даже при всем желании. Действительно очень много факторов влияющих. Остаётся лишь каждому участнику в меру своих возможностей со своей стороны минимизировать его появление.
Четко. В целом - многое отзывается. И если честно - очень хочется обучаться и расти, но если 2 года назад в компаниях типа обычной галеры это еще хоть как-то поддерживалось, на каком-то уровне, типа ревью, созвоны отдела, и ипр-ы, то последний год всем просто похер. Ты тушишь пожары 25/8 и когда развиваться и догонять фундамент или что-то новое - вообще непонятно.
Если вышка чем то и полезна, то базой любого языка программирования, работы с коллекциями и так далее. Но чистому коду там точно не учат. Попробуйте переопределить кастомные визуалы для снекбара в коспоузе и сходу увидите нарушение одного из принципов солида) или проекты где техлид говорит тестов нет, делайте унимодели где тебе и сериалайзд и бд в одном)) клинкод полезнее всего на лайфкодинга, а ирл уже как карта ляжет
Высшее образование должно дать системный подход к решению проблемы. Напихивание знаний конкретных языков вообще лишнее дело, как по мне
@@acras11 Под такую философию инженер как офицер - должен не прикасаться к коду, а только руководить "солдатами", с высоты своего Высшего Образования". А программировать должны солдаты в соответствии с чёткими отраслевыми, заводскими и командными инструкциями, под неусыпным оком Инженера. Но в жизни это не так, инженерам приходится самим засучивать рукава. Значит, и навыки быть обязаны. К тому же, многое в любой отрасли кроется в деталях, которых без практики даже гений не поймёт.
@@acrapid7845 я не имел в виду, что программист не должен знать код. Я просто не уверен, что вуз должен и может учить именно языкам. Т.к. Такие курсы имеют тенденцию отставать от реалий
Спасибо за выпуск, это суть жизненного цикла бизнеса на мой взгляд! Зарплата идёт за достигнутый результат в поставленные сроки. Пока проблему не «увидит бизнес» как падение time to market из-за архитектуры, времени на закрытие техдолга не дадут, но даже в этом случае никто обычно не старается улучшить проект, а просто проводят миграцию на новый который «ну теперь уже точно» не имеет таких проблем…Цикл повторяется по мере накопления энтропии кода.
"Иллюзия всемогущества" - это вроде "эффект Даннинга-Крюгера" другими словами
Или мания величия :)
давно так не смеялся) юмор то что надо!
Спасиба 🥹
Не каждый поймет ;-)
Под час проблема говнокода не в говнокоде, а в продукте.
Точнее в том, что он существует.
Точнее в том, что единственный смысл его существование - это просто его существование.
В 75% случаях - нативную разработку бизнес выбирает только из соображений "чтобы перед пацанами не стыдно было", чтобы "как у всех".
Причем сразу же стараясь максимально повычёркивать любое внешнее проявление этой "нативности", максимально избегая продуктовой интеграции с ОС.
В итоге - все мы просто пишем вебсайты на kotlin.
С качеством ui/ux в лучшем случае - таким же как и сайт.
И производительностью - максимум той же что и web/pwa.
Но за большие деньги и большее время))
"Безделье - игрушка дьявола" (с) Кама Пуля
Сейчас большинство IT-продуктов (особенно в России) - решают лишь одну проблему - погашение ипотек всех участников разработки от Junior до CTO/CPO.
Образование которое есть сейчас, это хрень...Оно нуждается в глубокой и основательной модернизации...У нас людей с высшим образованием огромное, при этом найти спеца очень сложно в любой сфере...Без самообразования и постоянного оттачивания своих навыков, диплом можно спускать в мусорку уже сейчас.
Сложно придумать говнокод больший, чем код, написанный в функциональном стиле.
"Сомелье архитектуры"))
"Эволюционный рефакторинг"😂 гениально, надо записать 😁
хаха странные моб разрабы придумали 100500 оттенков паттерна MVC - теперь их никто не понимает и сами страдают. VIPER им жопы!
Не совсем так, конечно. Все направлено на уменьшение связности кода, в конечном счете
все так, все так. всю жизнь приходиться учиться, чем бы я ни занимался
Хорошая практика - использовать тесты архитектуры, благо с появлением konsist это возможно и для kotlin. Очень хорошая вещь, помогает исправить многое еще до ревью, так как при нарушении будут падать тесты.
У меня есть один хороший признак говнокода - это то что его не возможно огородить автотестами
Огороди тестами системный таймер или планировщик процессов в ядре ОС. И так, чтобы этот код не потерял в эффективности раза в два.
@@lollol267 не вижу проблемы из за чего упала бы эффективность
@@user-kv3rc9jk9u управлять выполнением сценария нужно, а код для обеспечения этого приводит к ненужному и вредному для оптимизации кода разделению монолита на части.
Иллюзия всемогущества - эффект Даннинга-Крюгера
советы архитектурных сомелье ведь тоже преследуют свои цели: и зачастую это не всегда соответствует а чтобы отлично работало
Иллюзия всемогущества это что-то чем вы болеете
Парадигма программирования - это грамматика. (ИМХО)
Теоретически могли бы так на goto программы продолжать писать, но читать такое сложно поэтому goto заменили на структурное программирование (описываешь алгоритм пошагово), функциональное программирование (описываешь, что хочешь получить), объектно-ориентированное программирование в принципе ничего нового с алгоритмической точки зрения не даёт, только даёт дополнительную страховку от ошибок.
Функциональное программирование - редкое по своей сути убожество. Когда нужно написать алгоритм, который работает конкретное количество времени, то функционально написанный алгоритм начинает затяжной до бесконечности сеанс любви с астралом и рантаймом, которое это функциональное поделие исполняет на императивном железе. Поэтому оно очень даже даёт новое, только с отрицательным знаком.
Хотя - мастера функционального жанра такими низменными вещами, как производительность и потребление ресурсов, не занимаются. Они в облаках с монадами и хвостовыми рекурсиями витают.
@@lollol267 а что ты мне это пишешь?
Напиши в гугл, что их Jetpack Compose не годится для быстрого выполнения программ, потому что всё описание внешнего вида интерфейса в нём - чистая функциональщина; напиши Джону Макфарлейну, что его Pandoc херня, ибо написан на функциональном Haskell.
:-)
Прежде чем писать сам код, обычно строю UML-диаграммы классов, чтобы весь проект (или какой-то отдельный компонент) был виден как на ладони. В этом случае, конечно же, говнокод тоже имеет место быть, но уже скорее точечно (в каких-то отдельных методах реализаций). Ну, а если сама архитектура говно изначально, то её, конечно, никакой рефакторинг не спасёт.
Говно код это основа индустрии. Код должен решать бизнес задачи и никому не нужен код который нужно ждать что лет кода он уже не нужен. Иногда код должен просто работать. Там где нужен идеальный код там и отрасль это понимает это медицина космос или АСУТП. Мобильный код априори должен быть говно кодом чтобы приносить деньги. Чистый код вообще никому не нужен. Это оправдания для прокрастинации программистов. 😂
Если говнокод удовлетворяет потребности, то все в порядке. Как задача поставлена так она и выполняется.
Я всё ждал рекламу крутого базового курса в конце 😅
Я был самоучка, писал понятный код, используя простые конструкции, минимум вложенностей, на все делал отдельные классы, структуры папки и файлы, проектировал код по MVVM и VIPER. Не работал напрямую с объектами Realm чтобы не было проблем с памятью. В общем взаимодействие с бд тоже круто проектировал. Но я не знал что такое SOLID и мог и з за этого провалить собеседование, так как это первый вопрос который спрашивают и если не ответил дальше даже не будут с тобой разговаривать =)
А потом на твоём проекте одна унитарная модель без разделения слоев на компоузе (и юай и бд и сериализация в одном) и вообще пофиг на эти чистые архитектуры с юзкейсами и репозиториями) Тесты писать не надо - ну и пох
@@gala3941 я же сказал что хорошо проектирую и не было особых проблем с крашами или потерей памяти. Если нужны тесты, без проблем, плоти, сделаю. Любые капризы за ваш счёт)
вроде все по делу, но над "вышкой", как причиной - спасибо поржал :)
На деле, когда 5-я точка в огне, сроки горят и прочее, абсолютно все пишут "как получилось, что бы работало", а потом, если когда то руки дойдут (никогда), исправляют.
Так еще потом поди бизнесу объясни почему нужно переписывать, если все работает.
Конечно говнокод тоже имеет шкалу "говнистости", там где сеньор напишет более менее, джун, если осилит, напишет говнокод.
Клинкод в моем понимании можно умышленно писать, разве что в своем пет проекте, когда ты никуда не торопишься от слова "совсем".
Синиор и джун решают задачи разного масштаба. Но никто из них (по-хорошему) не должен писать говнокод
Говнокожу где хочу, законом не запрещено
Пздц ты конечно
Правильнее будет "говнокодю"
21:57 Теперь возможно в обиход войдет термин "флавианить", как толерантный аналог для "говнокодить" ))
Всем привет)
После участия в 2х конкурсах в Телеграм на iOS я заметил за собой, что я стал писать код намного хуже чем обычно - это означает что я стал более синьористее?))
Потому что от подобного участия и быстрой награды ты по сути доказываешь себе что все эти архитектуры нах никому не нужны - когда есть реальная награда за работу и дедлайн ограничен.
Наоборот же :) в видео говорится, что сеньоры как раз пишут простой код, причем настолько, что даже порой выглядит не серьезно
вспомните свою архитектуру и еще раз посмотрите на структуру и вот те места которые можно обозначить как магия - там скорее всего место где может поселится говнокод или уже живет
Подписываюсь под каждым словом! Сам говнокод пишу из-за своей низкой квалификации, так и не смог набраться опыта и начать писать хоть как-то нормально... Иэх...
Всё прям как про меня :)
Парадигма программирования - это совокупность принципов и подходов к написанию компьютерных программ или можно сказать, что это определенный "стиль" программирования
Самообразование одно другому рознь. По ютубам учится, конечно, результат будет говнокодовым. Базу учить можно самостоятельно. Книг миллионы. Но времени потратить придется больше чем в универе. Потому как придется нарабатывать ошибки и сразу не будет точного понимания что нужно, а что нет. Хотите сэкономить время - учитесь в универе
Думаю, что говнокод идёт от того, что у людей нет личной базы знаний. А школы или ВУЗы не учат её создавать. Они действуют по принципу отбраковки тех, кто не догадался использовать методики обучения. Людей учат каким-то знаниям, но не учат как эффективно учиться, то есть сохранять эти знания на оставшуюся жизнь.
Архитектурные сомелье )))
Было бы очень здорово посмотреть лекции про основы програмирования от вас.
Учусь в вузе на программиста, но многие предметы преподают спустя рукава.😢
Я пишу целый курс по этому делу )
Когда он будет доступен? Сколько будет стоить?
С нетерпением ждем ❤
Решайте проблемы по мере их поступления.
Как-то делал проект в angular все разделял чтобы связаности не было модули вмещали компоненты, а компоненты импортировали модули элементов. Решил проанализировать bundle analyzer Lazy-loading feature modules применял, но сам проект раздулся((( Перешел на react + flux, redux и функциональное программирование
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
Так. Что это за проблема которую без сингелтона не решить?
🤓🤓🤓🤓🤓🤓🤓🤓🤓🤓 автор видео свои комплексы "жизнь sub5 male" решил маскировать через "умный разраб, читает умные книги"
вопрос в каком институте вы учились ?
Томской универе вроде.
думаю на удален ку поступить только куда @@NikolyOrl
ТУСУР
Я пишу говнокод потому что смотрю этот канал!
Хорош!
А если со временем прошарил за перспективу но у тебя 9 классов образования, то где забирать диплом о вышке?
Экспорт видео из бусти ?
Оппозиция на самокатах
решает вопросы ))
Мне зевс сказал, все что ты сказал - это фигня. Пойду еще пару синглтончиков наверну в проект. И отправлю пул реквест на 1000 срок.
20:10 ты перечислил всё нужное, и что люди обычно не называют ненужными предметами :)
А 3 семестра истории не хотите? А психологию коллектива, где препод задвигает что-то из Фрейда? :)
Хочешь только все нужное - иди в шарагу или нанимай репетитора/ментора
учился в универе и меня могли отчислить за то что я не знаю физику, ладно если бы за незнание английского, но зачем знать физику на факультете информационных технологий
@@elron2010 затем, Что это базовые знания для инженера
@@releyshic ну конечно, 2 закон Ньютона или карпускулярно волновой дуализм очень нужен при создании софта
@@elron2010 судя по тому, что ты даже прочитанное не можешь понять, то тебя к программированию лучше не подпускать, а к формошлёпству под надзором
Спасибо за видео
А вместо бусти появился курс по мобилке?
Не понял вопрос
@@MobileDeveloper уже разобрался, спасибо
ты не джун - ты оказывается флавиан))
Сколько видел чуваков дипломами, которые не могут гоф с грасп паттернами различить и ответить в чем разница между билдером и фабрикой... не говоря уже про знания языка (типа котлина)
К сожалению после университетской базы люди либо совсем ничего не понимают, либо понимают, но не знаю как это применять. Бывают ещё такие, кто думают что всё знает и применяет так, что лучше бы не применяли.
Но практика показывает что выучить что-то можно только через боль и лишения, а есть вышка или нет это дело десятое.
@@vladimirpyrkh4422тоже не понятно где их целесообразно применять, а где и без них можно обойтись
Эх, поменториться бы у опытного человека, а то уже чувствуется ступор в развитии
Говнокод это я. Ага- ага😢
А почему это event bus - антипаттерн? Или это только для андроида?
В андроиде антипаттерном считается
@@MobileDeveloper Нашел статью, почитал, полезно, спасибо.
а где стрим про телеграм? в начале сказали будет ссылочка - но как-то не было (может я слепец)
На канале есть, в трансляциях
Добавил спасибо
@@MobileDeveloper Вам спасибо
Ковно код :) Ржал..это как мораль. Для кого то говно код. Для меня идеальнвй код
Это база
Интересно как у Автора с софтами, глядя на него почему то думаю что это именно тот тип который за любую ошибку новичка готов обосрать с головы до ног 😂
Еще дизайн паттерны учить 😭😭😭😭😭
Не учить, а знать где их можно применить и подойдут ли они вообще в вашем случае gof and grasp. Ещё architecture, enterprise patterns есть))))
Понял мораль ролика, если нет высшего образования, то ты пишешь говнокод, ведь те у кого оно есть код то точно писать умеют
Хорошее высшее образование даëт системность мышления и банально развивает формальную логику (это которая раздел философии, а не математики)
@@elenalicharda В чем проблема изучить все это самостоятельно? Тут скорее ошибка выжившего, так как большинство выпускников тех вузов работает не специальности, если наше образование было бы такое же полезное как на западе, думаю процент людей работающих по специальности был бы гораздо выше.
@@danilchistov6765 в том, что у невежд с кластерным мышлением даже такой задачи для изучения не возникнет (см.видео и пример про "магическое мышление"). А ещë они будут отрицать реальность и упорно спорить с тем, что им это действительно нужно, когда им это прямым текстом, прям капслоком, скажут!
Ещë так умиляет эта ваша вера в великое западное и унылое отечественное.
@@elenalicharda я вас понял, отсутствие высшего образования приравнивается к кластерному мышлению, так как у ребят в тех вузе был семестр философии 😂
@@danilchistov6765 ну раз вы сделали именно такой вывод, то могу лишь посочувствовать. Собственно, сам уровень дискурса оппонента отлично показывает на каких позициях стоит человек, как мыслит и к каким выводам приходит.
ua-cam.com/video/Z4wsg_JgFFk/v-deo.html
Скорее в наших реалиях его будут приглашать на подкасты рассказывать про математику
очень. инттеесно но пока не актуально
тайм коды съехали
Спасибо, поправил
Нет , не хватит
😁
Не знаю, как другие, но я пишу код, который работает.
Типичный инфоцыган
Я так понимаю вы с питера или с москвы, а не с россии, в россии высшее образование чисто показатель сколько ты денег занёс))
бред
а я так понимаю вы с Украины, потому что в России пишут ИЗ России, а про показатель - это чисто ваша история
ну так же сложно в москву или питер поступить, если есть желание. да и будто в других городах вузы это прям ужас какой-то
@@MobileDeveloper ооо дааа если не бьюсь в приступе патриотизма стопудово из украины
@@torburgmax да ясен красен сложно, если вы не в курсе то рф ппц огромная
говнокод - сложен к пониманию, непонятные магические названия переменных, функций., большое количество дублирования, отсутствие обработки исключений, отсутствие структурированности(import/export) налеплено как правило всё в кучу и вёрстка и css, тут же js ещё php. В целом говнокод он не куда не денется, заказчик дал сайт в работу открываешь консоль браузера у него на сайте а там одна краснота, да и дедлайн короткий и денег мало за проект. Поэтому впихнул и отдал обратно
А почему вы в ролике амаксай упустили возможности и развитие PWA? Зачем сказали что эти приложения не работают без интернета, ведь это не так? Очень однобоко не зная технологий парафинить ее с ходу. Лет 5 назад я бы согласился (и то уже был react native например), но сейчас… а вы точно эксперт?