Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Как вы меня задолбали, священники, святые отцы и монахи с кадилами. Сколько можно это терпеть? Я учился в университете, чтобы получить диплом по специальности, но вместо этого я получил пропуск в какую-то конспирологическую теоретическую секту.
Не верите? Давайте я покажу вам.
Давным-давно, в не такой уж далёкой галактике, на безымянной планете номер 3 какого-то богом забытого солнца, жизнь возникла вновь. Это вызвало большой недовольство среди многих. Пришлось снова всё переустанавливать и настраивать. Как и почему она возникла - это не так важно. Важно то, что она здесь и что-то делает.
Некоторые быстро поняли, что если у человека есть хоть какая-то цель в жизни, он будет к ней стремиться. А если цели нет, то он будет игнорировать все вопросы и обязанности таким образом, что даже самому Богу станет интересно.
Возьмем, например, Народ Чаш. Я столкнулся с историей этого народа, уча английский язык. Мне рассказывали краткую историю Британских островов, в которой всё сводится к народу чаш. Они там жили. Единственное упоминание о них - это различные чаши, которые они изготавливали. Видимо, это была их основная цель. Это немного напоминает "Путеводитель по Галактике", где планета изобрела распылительный баллончик до изобретения колеса. Все может быть.
Затем кто-то осознал, что цель существования можно навязать человеку силой. Так появились Фараоны, и начали они строить пирамиды. И весьма успешно: говорят, некоторые из этих пирамид до сих пор стоят в Гизе. Не видел, но готов поверить. Только вот народ сообразил, что строить пирамиды - это не то же самое, что сажать картофель на своём огороде. Фараоны становятся знаменитыми после смерти, а местным Васям и Петям надо как-то кормить детей. Начались проблемы. Греки и Римляне пришли к мысли о необходимости строительства дорог, школ и храмов в качестве главной цели. Получилось неплохо: народу это нравилось, всё развивалось.
Здесь уже начал зарождаться элемент религии. Говорить кому-то, что ты - сын божества, - удивительно удобно. Никто не может ни подтвердить, ни опровергнуть твои слова. Можешь хоть в гробу ворочаться, доказать, что ты не общаешься с всемогущим и всевидящим, всё равно нельзя. Так что, видимо, надо строить пирамиды.
Затем появилась Инквизиция, и началась настоящая вакханалия. Было много кровопролития и непонимания, но со временем человечество осознало одну простую истину: если у человека есть цель, он будет стремиться её достичь. Цели могут быть разные: хорошие и плохие, полёт на Луну, космическая гонка, "ни шагу назад" или MAGA. Всё это были цели. И со временем мы поняли, что для достижения целей нам не нужна религия.
Мы использовали религию, чтобы объяснить то, чего не могли понять. Но чем больше мы узнавали, тем меньше нам требовалось Испанская Инквизиция. В итоге церковь и государство разошлись, и всем стало лучше.
Было время, когда люди вели изолированный образ жизни, ничего не понимали и не оставляли письменных источников. Передача знаний была невозможна. Мы прошли через эти времена, объясняя всё непонятное действием высших сил. Сначала религия хранила эти верования, а потом, так как монахи были образованы, стала записывать знания и обучать других. Монахи не только слепо поклонялись божествам, но и изучали вселенную. Мы пришли к времени, когда поняли, что сами являемся этими "высшими силами". Человек сам может определить свою цель и стремиться к ней. Нам не нужен Зевс на Олимпе, бросающий в нас молнии (или что-то ещё похуже), чтобы мы начали худеть. Мы поняли, что сам человек иногда бывает этой "высшей силой" и в состоянии поднять пятую точку с дивана.
Мы эволюционировали от объяснения всего действием всевышнего к пониманию процессов, происходящих в мире.
И мы стали прекрасными и разумными инженерами.
Так и есть, на самом деле мы не стали этими идеальными инженерами.
Раньше люди ценили свои способности и знания, уделяли много времени обучению, изучению книг и различных материалов. Люди долгие годы учились использовать разные технологии и оттачивали свои знания и умения.
Но теперь всё изменилось. Мы можем распространять знания по всему миру за пару кликов мыши. Можем опубликовать бесконечное количество инструкций и руководств, чтобы все могли ими пользоваться. Но мы не используем их. Вместо этого мы говорим, что "образование сейчас никому не нужно", "диплом бесполезен" и другую подобную ерунду.
Я с уверенностью могу сказать, что старушка, преподававшая базы данных на основе Informix 1989 года выпуска в нашем родном МЭСИ, когда у всех был установлен SQL Server 2005, меня раздражала. Мне не нравилось что меня заставили изучать дифференциальные уравнения, электронику, философию и множество других "ненужных" предметов.
Но что в этом плохого? Абсолютно ничего. Нет ничего ужасного в том, чтобы учиться чему-то новому. Даже если вы читаете абсолютно бесполезную книгу о том, как ловить котиков в капканы, вы от этого не станете глупее. Философия на факультете программирования казалась бесполезной, но на практике она помогла мне не раз, когда я учился говорить обстоятельно и неотрывно по теме. Не существует плохих занятий. Не существует плохих книг. Существует только недостаток знаний.
И программирование стало этим "недостатком". Многие самоучки начинают писать свои проекты на NestJS после просмотра 20-минутных видеороликов на YouTube. Они действительно не имеют понятия о том, что такое HashMap, хотя и могут болтать о хэшах на собеседовании, как попугаи. Эти люди могут успешно решать задачи на Leetcode, а потом жаловаться, что не знают, как восстановить упавший кластер.
Но знаете, что самое страшное? Самое страшное - это слушать этих людей. У них, как писал Нил Гейман, начали появляться новые боги. Великий бог Микросервис и его вечный противник, грозный Монолит. Страшная богиня Монорепа, на которую все начинают молиться. Всеми ими правит тёмный бог просвящения Нодик и его верный спутник Питончик.
Проблема в том, что вместо того, чтобы изучать и понимать архитектуры всего, с чем мы работаем, вместо того, чтобы внимательно понимать и разбираться, мы начали просто забивать на необходимость познания чего-то. Мы просто верим, что если мы пишем на Ноде, то мы - самые эффективные. Вот, даже Dlinnij не даст соврать, народ не знает ассемблера.
"Ну и что, что не знает? Хрен с ним, с этим ассемблером, кто на нём пишет?" А вот хренушки вам. На нём всё работает. А когда вы знаете асм хотя бы пары процессоров, вы понимаете, как они работают. Вы будете уважать менеджер памяти. Вы не будете создавать массивы по 10 000 элементов в гигабайт каждый. Ваши приложения не будут пухнуть как на дрожжах, потому что вы следуете какому-то видео ютубчика какого-то индуса, который сказал, что надо загрузить 300 мегабайт ассетов в вашу программулину, которая показывает текущее время на андроиде.
Один раз я был на интервью в UMG. Это такие ребята, которые держат за яйца всю музыкальную индустрию в США. Они задали мне вопрос:
— У вас перестал работать сервер на кубере, лежит под нагрузкой в 100%. Что будете делать?
— Этот сервер работал вчера?
— Да.
— Нагрузка была нормальной?
— Да.
— Не буду ничего трогать, пока не пойму, что сломалось.
Два ведущих Голангера в компании поперхнулись кофе. Один начал реветь и сказал, что из 20 кандидатов на собеседовании я был единственным, кто не предложил заскейлить сервер. Они были в шоке, что я сказал, что без понимания причин ничего не надо трогать.
А мы теперь мало того, что ничего не понимаем, так начали развиваться в обратную сторону.
Почему этот код написан на ноде? Потому что Славься Всесветлый Нод, король быстрой разработки ПО.
Почему у тебя программа потребляет столько памяти? Память сжирает страшный монстр Гарбажколлект. Я понятия не имею, что с этим делать, но на стаке все матерятся, что монстр этот страшен.
Почему морда тормозит на ФФ? Никак не знаю, ибо великий и непобедимый Реакт Неизвестный, сокрыл в своих сорцах проблему неразрешимую. Issue была поднята великими светлыми рыцарями ордена Понимающих, ждём, когда её одобрят и пустят в великий Пиар!
Никто не поднимает свои телеса и не лезет декомпилятором в недра того монстра, которого они-то и сотворили. Каждая программа превратилась в монстра, в то время как разработчикам говорят "никогда не залезайте в node_modules!" Более того, сейчас даже это перестаёт быть эффективной средой разработки. На всех наших любимых ютубчиках сейчас восхваляется Храм Всевышнего Зерокодинга. В ХВЗ сектанты говорят, что и кодить-то не надо было с самого начала. Надо было просто брать и составлять вместе кусочки Светлого Фреймворка! А код он напишется сам.
И не надо мне рассказывать, что технологии постоянно эволюционируют. Они эволюционируют, но это не значит, что вы должны деградировать. Послушать современный молодняк о том, что такое ПО - блин, так я лучше в какую-нибудь секту схожу, и то, там хотя бы пирожками накормят.
Это Монолит! Это - единственное возможное решение, ибо так сказал Гит! Нет, Монолит - это плохой бог! Его уже давно сразил Микросервис! Так что смерть твоему монолиту. Большинство дискуссий на технических форумах больше напоминают сражение католика с протестантом.
Самое ужасное - что люди на самом деле не понимают, что ни Монолит, ни Микросервис - это не что-то, что дано всевышним. Это, блин, два разных подхода к разработке. И если вы - хороший инженер, то у вас и тот, и другой будут танцевать под вашу дудочку. Потому что вы понимаете, как они работают, и что происходит в кремнии, который эти ваши сервисы гоняет.
Вы можете пользоваться абстракциями и фреймворками. Но при этом вы обязаны либо знать, как они тикают, либо не бояться лезть и читать сорцы этой мототени.
А то знавал я одного неофита, который вступил в церковь Всемогущего Метеора! Он ходил и слюнями брызжил о том, что есть только один праведный путь развития, и этот путь заключается в создании компонентов Метеора. Он отвергал все другие методы разработки и полтора года писал кусок говна, который перестал запускаться примерно через 20 минут после последнего релиза, потому что Нода подняла версию с 14.02.00008 до 14.02.00009.
Этот же адепт ходил в Храм Всепоглощающего Монго! Монга могла всё! Она давала невероятное блаженство всем тем, кто ходил в Храм Всемогущего Метеора! Монга была датабазной богиней наслаждения! Никаких запросов! Всё в жисоне. Всё красиво и хорошо.
Только вот, этот идиот не понимал, что такое индексы. И решил поэкономить пространство. Он сохранял сообщения в чате. И решил, что будет круче не просто давать им рандомный Гуид в качестве ID и посылать их в базу. Он начал генерировать этот GUID на основе хеша того, что он писал в базу, и проверять, если этот хэш уже записан в БД, то на него просто ссылались. Ага. Сэкономил, блин, место. В итоге, при сэкономленных 20 килобайтах на гигабайт он создал замечательную бомбу замедленного действия. База лежала долго, так как при попытке записи чего-то нового, она шерстила все миллионы предыдущих записей и сравнивала их ИДшники с ИДшником записываемого. Кстати, как вы думаете, он посылал запрос к БД, или просто выгружал список всех ИДшников в свою программу и делал [].find(e=> {e.id === id})? Ага, вы угадали правильно.
Никогда не молитесь на фреймворк. Никогда не говорите, что какой-то язык лучше, чем какой-то другой язык. Всё это полный бред. Всё это - всего лишь набор инструментов, которым пользуется настоящее божество. Вы сами. От вас зависит, как будет работать программа. От вас зависит, будет ли тормозить сервис. Только ваш собственный интеллект позволит вам разобраться в том, почему что-то падает. Вы - это бог в мире компьютера, ибо вы создаёте только силой своей мысли. Вы пользуетесь всеми доступными инструментами, включая чат-ботов, и они вам служат.
Если вы забудете об этом, то вы просто будете продолжать создавать этот замечательный сказочный мир, где программисты превращаются в сектантов, каждый из которых молится несуществующим божествам, и с пеной у рта защищают этих божеств.
Если вы не понимаете, как работает Нода, то сядьте и разберитесь в ней. Не надо просто говорить то, что написано в документации. Не надо просто тупо смотреть в монитор и говорить “Ну мне-то какая разница? Кто-то другой разберётся.”
Это очень скользкий путь к тому, что вы через пять лет будете сидеть и молиться на NPMJS, надеясь, что всё, что вы написали, скомпилируется.
Мы создаём себе полу-религиозные оправдания тому, что не понимаем. Это - неверный путь. Только знание поможет вам избавляться от воображаемых богов.
Проверка ошибок на ГПТ4
Этот текст был написан человеческим существом, которое пропустило его через ChatGPT 4 с целью поиска ошибок и недочётов. Diff между документами прилагается: https://docs.google.com/document/d/1KsZ2eRKtO5pu_ZEv30agnlMJToeAvqyoQiFWTegg5t4/edit