А где то совсем рядом идёт другая жизнь. Где нет радфем, где не рвут друг друга в клочья либералы со сталинистами, не рассматривают какашки своих чад толпы яжемать...Жизнь, где совсем другие проблемы и язык общения для многих дик и непонятен. Где два огнемётчика и собака ежедневно и еженощно вновь и вновь прорывают ткань бытия в эту другую реальность.
...
А сейчас, котики, собака расскажет вам, почему она на собесах даже авторов тестовых скриптов на питончике гоняет по алгоритмам (хоть и весьма по-божески), требует от всех подряд понимания under the hood и вообще ведет себя на собесах как ебаный фашист.
Я долго катал в голове этот пост и думал - рассказать, может, о специфике, о том, что производительность годами отшлифованного симулятора может быть спущена в унитаз одним сраным polling loop на питоне? Или о том, как мы тут кроим память, упихивая терабайты симулируемого диска в жалкие 128 Гб памяти?
Но, знаете, не буду. Storage industry интересна всем в виде новеньких, пахнущих свежим NAND-ом девайсов, которые привозят розовощекие курьеры, или которые по щелчку мыши Амазон распределяет под ваш AWS-аккаунт. Девайсы же, в общем-то, получаются сами собой, как и все, что имеет условно абстрактный интерфейс. Ну и хуй с ним - пускай за разъемом будет магия, как мы любим.
Так вот, котики. Абсолютное большинство софта в мире - говно. Оно выполняет свою функцию ровно настолько, чтобы пользователь за это башлял, что цинично, но оправдано. В конце концов, все мы рождены, чтобы делать бабло.
Инжиниринг в целом развивается исключительно благодаря тому, что одни инженеры стоят на плечах у других. Мы можем сконструировать меч, если кто-то до нас сделал сталь, и не просто сделал - а построил весь техпроцесс, и стартап по производству мечей может поехать и купить, грубо говоря, кусок стали под перековку. Если оружейники возьмутся еще и делать сталь - получится хуйня, потому что человек в одиночку может охватить только небольшое поле знаний, а времени у него так и вообще всего ничего. Чуть только развился - а тут уже и дохнуть пора.
Программирование растет столь бурно потому, что мы научились быстро плодить слои абстракции - упрощая сложное и отдавая "наверх" средства управления этим сложным. Мы делаем базу данных, поверх нее нарастает реляционная модель, где-то рядом нарастают транзакции, это растет и развивается, потом поверх появляются ORM, привычный современному глазу. Хибернейты и прочие Энтити.
Рядом вырастает куст с NoSQL-ями, потому что получившийся выше стек он дохера логичный и удобный, но много данных - упс - пропустить уже не способен, отяжелел. Но поверх куста сразу растут обертки, собиратели статы, показыватели графиков, упростители и облегчители.
Однако, вернемся к нашей любимой теме, а именно - к говну. Получающийся слоеный торт сам по себе небыстр, ибо имеет склонность к накладным расходам на каждый слой себя - но во-первых, растет мощность машин, во-вторых, использование готового сильно ускоряет разработку и выводит ее на новый уровень - хотим мы того или нет, но плодящиеся фреймворки суть благо и топливо индустрии.
Однако, к ним прилагаются долбоебы, решившие, что если фреймворк позволяет им чего-то не понимать - то можно и правда не понимать.
Пиздец, да?
Знаете, с месяц тому мы собеседовали программиста, который 16 лет трудился на почве банкинга, трошки представлял себе за дотнет и вообще, человеком был солидным. И начали мы его спрашивать даже не за алгоритмы как таковые, а вот просто - есть у тебя в дотнетике коллекции, а шо там внутри у них лежит, а как применять? Это ж не гонки по страницам Кнута, правда? Это, как я говорю, умение найти у себя в штанах хуй. Не более.
И знаете, что? "Мне вот эта вся алгоритмизация ваша не слишком интересна, нам когда перфоманса не хватает, мы просто добавляем нод на AWS".
До сих пор трясет. То есть мы кидаем на ветер бабки, мы, сука, расходуем электричество тупо просто потому что кто-то слишком ленивый, чтобы почитать сраную книжку. Ручки не дошли, занят был.
Но ладно. Вы сейчас скажете мне - "Серега, не кипешуй, есть же закон Мура и прогноз Дэвида, мать его Хауза". Производительность растет быстрее долбоебизма. Мы нарастим метр плесени, но чипы шагнут вперед еще дальне.
Так вот, котики, нет. Производительность одного процессорного ядра давно уже растет очень медленно и без принципиальных прорывов. Мир уходит в параллелизм - мы плодим количество ядер/нод, юзаем map/reduce и вот это все.
Только вот упс. Грамотно раскидать таски даже по ядрам - уже нужно что-то понимать в происходящем, а долбоебы, например, в примитивах синхронизации дальше критических секций (локов) не ушли - и я молчу, что для разброса задач по компам в кластере надо дохера о чем подумать, например о трафике между ними (а они ведь не святым, сука, духом между собой соединяются). Я молчу про понимание принципов работы дотнетовского async/await - все это как-то само происходит, ага.
Или, например, ORM - он ведь позволяет нам работать с объектами, не сильно заморачиваясь на запросы к БД, да? Охуенная вещь ведь. Сам юзаю. Пишет такое чудо код, пишет. "I тчэ, забыушыся, рука, замест персiдскага узору..." - и ебашит этот несчастный ORM туда-сюда огромные массивы данных там, где надо горюшку нашему одно поле поменять. Потому что он не хочет знать. Потому что он не хочет разбираться.
В целом, мы окружены хуевым софтом - ведь в команде из 100 разработчиков достаточно завести пяток подобных персонажей - и все, качество сыпется на глазах.
А как же код ревью, спросите вы? А код ревью - он денег стоит, качественный - процентов 10-30 от разработки затягивает. Где-то он есть, где-то нет, говнокодеру просунуть свои вонючие щупальца к вам в репозиторий - нехер делать, не тут, так там. Да боже мой, майкрософтовские поделия вспомните - вот скайп пусть даже. Никакая функциональность из той, что в нем есть, не требуют 200 Мб оперативы. Даже 20 - многовато. Разве что хранить анимированные смайлики в виде распакованных битмапов каждого кадра - но это ведь она, родимая, и есть - некомпетентность того чувака, который пилил этот кусок. Выраженная в невъебенных терабайтах лишней оперативы, которые эта хуйня занимает по всему миру.
Я, кстати, тактично бы промолчал (но нет) про компетентность тех чуваков, которые делают этот ваш вебчик. Пособеседовал я их сотню-другую и ответственно заявляю - это пиздец. Толковые есть _только_ в хайлоаде, их жизнь заставляет что-то понимать и разбираться, в остальном - война и немцы. 9 из 10 не понимают базовые концепции инфобеза (которые им по должности, вообще-то положено), ответ на все "а мы завернем в https, в нем уютно", 95 из 100 не понимают толком про клиентское и серверное кэширование - и т. д. до полного просветления.
Жабаскрипты, исполняющиеся у клиента в браузере - образец чудовищного многослойного говна, написанного школьниками для школьников (и мне поебать, что у них бороды). Страница, имеющая функциональности на копейку, грузится 5 секунд (ебать! Чо там грузить 5 секунд при 100Мб канале!?), потом еще и педалит всю жизнь.
Что мы с вами можем этому противопоставить? Глобально - ничего. Локально - вот есть уютный окопчик, в нем сидит собачка с огнеметом и маленьким запасом напалма. Собачка может не пущать. Пока есть напалм.
А сзади зайдут - будем ебошить баллоном. Мо и пустым.
Два огнеметчика и собака (ц)