lifeline
Stromboli
дневник заведен 19-10-2004
постоянные читатели [62]
3 CaHuTaPa, adamanta, AdrinA_LiNN, afyna, Amaeth, Delerium, Denni, Endless, Fruit, Guseva, Humour_Club, Hunger, Hydralisk, Indigo girl, isk, Jame Silver, Jan_Itor, kalina, Kretik, kv75, La chica latina, LaVita, Lightly, Lilian, Lilichka, Murchik, Nolla, Offline, pauluss, Petty, photo, Pirate, Roxana, shelly, Shprotov, Stacy, Toxoplasma, Ubuntu, Vasilich, Vine, Vitaniii, Zabava, А-ля-ля, Букля_, В кедах по снегу, Варшавянка, Вук Мрнявчевич, Герр Зайчег, Глаза_весны, ДПЗЕ, ежонок, Инга, Ирча, Мудрая Кошка, МЯУ навсегда!, Небосводная, ПАРАД УРОДОВ, Происшествие, Счастливая Женщина, Уиндина, Шахрезада, Юльчатай
закладки:
цитатник:
дневник:
местожительство:
Канада, Россия, Санкт-Петербург, Торонто
интересы [8]
программирование, C++, бизнес, C#, Worms
20-09-2023 21:31 Как делают говно (много-много)
Глава 1. Антропология

Я давно не смотрю на резюме кандидатов; все резюме одинаковые. Длиной опыта тоже не интересуюсь, потому что годы опыта ни о чем не говорят. Есть полно кандидатов, у которых 5-10 лет опыта, но они не знают даже базовых вещей.

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

Порог входа в программирование очень низкий. Парень (назовем его Венкатеш) посмотрел пару онлайн уроков, попробовал пару примеров и УХВАТИЛ СУТЬ. Можно подаваться на работу. Народ в Индии валит в программисты массово, потому что это способ вырваться из совершенно беспросветной нищеты. Реально, в Индии есть большие страты людей, которые годами не видят никаких денег; пропитание добывают натуральным хозяйством, собирательством, а также оказывают мелкие услуги в обмен на еду или вещи. А программисты прям 3000 долларов в месяц получают, ого-го.

В начале карьеры Венкатеш просит совсем копейки, и его легко нанимает какой-нибудь стартап. У стартапа мало денег, но у них есть графический дизайн будущего продукта. Дизайнер нарисовал им красивые формочки и экранчики.

Сделать приложение, которое выводит такие формочки — это невеликого ума дело. Любой справится. В Интернете полно примеров, в Npm и Nuget есть дофига готовых пакетов, а на сайте StackOverflow есть ответы на сложные вопросы. В итоге получается приложение, которое внутри не выдерживает никакой критики, но оно красиво выглядит, оно производит впечатление на инвесторов, и те дают 5-10 миллионов долларов. Отлично, теперь Венкатеш должен довести прототип до ума. Однако, он там уже нагородил говнокода; как делать лучше, он не знает, и чем дальше, тем труднее становится двигаться в этой разработке вперед.

Венкатеш честно пишет в резюме, что его разработка получила 10 миллионов долларов инвестиций — и теперь он опытный программист, с заслугами. Он находит новую работу, со старой он увольняется, и история повторяется снова.

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

Глава 2. Как это выглядит изнутри

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

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

... Или где-то забудет поменять. И код станет неодинаковый. Но это не будет сразу заметно. А потом будет непонятно, почему код немного отличается: это задумка такая, или что-то упустили.

И это только самая легкая из проблем. Также типовые проблемы включают (только программистам будет понятно):
- Абсолютные пути ко всем видам ресурсов (файлы, URL и т.д.);
- Принудительная конверсия типов, если типы несовместимы;
- Преобразование структур путем сериализации в JSON и десериализации в другой тип;
- Фундаментальные проблемы с синхронностью и асинхронностью, с изоляцией доступа к ресурсам и т.д.;
- Строка подключения к базе данных, вместе с паролем, дублирована в десятках мест в коде;
- Моё любимое: чтобы не вычислять в каждом API-методе, с каким ресурсом пользователь работает, надо просто принимать id этого ресурса в составе запроса. Это как если кассир в банке будет просто на слово верить посетителю, сколько денег надо ему выдать;
- Открыть 30 соединений с базой данных в одном API-методе, при этом реально использовать только одно, и только его потом закрыть;
- Или и его не закрывать;
- Это всё проверяется в работе только на примере регистрации ОДНОГО пользователя, и система никогда не обеспечивает проверку, какому пользователю что принадлежит. Вообрази, что ты зайдешь в "Фотографии" ВКонтакте и увидишь фотографии ВСЕХ пользователей, потому что систему никогда не проверяли, как она работает, если пользователей больше одного.

Но это всё неважно. На демонстрации инвесторам покажут регистрацию одного пользователя, база данных выдержит 30 соединений, экранные формочки очень красивые, задержка при демонстрации небольшая, ворочать большими данными системе не нужно, других пользователей в это время нет — демонстрация пройдет отлично, и инвестор даст много денег. Ну, если этот не даст, то другой даст.
Комментарии:
20-09-2023 22:47
Нефтяник-передозник
Везде ведь так, в любой квалифицированной области знаний. Большая часть людей не вникает в детали и особо не интересуется. Столкнулся - разобрался, пока не нужно не трогает. И реализация такая же.
В любой квалифицированной работе хороших специалистов мало, потому что это люди с горящими глазами и жаждой впитать в себя все что есть. Таких людей вообще мало. Юриста хорошего хрен найдешь, подавляющее большинство это просто выпускники юридических школ способные сопровождать типовые кейсы. Ну ...как то приложение с выводом формочек, о который ты говоришь.

Причем то, что ты описал, чаще всего валится очень не скоро. Если например речь идет о внутрикорпоративном сервисе в компании где работает всего 100 человек, то все вышеперечисленное может работать годами и не стать проблемой. Я даже работал пол года в компании, где стратегия заключалась в том, что все равно как ты пишьешь, можешь как угодно говнокодить и делать что угодно, но работать это должно вчера. А через год или два, когда оно начнет тупить и валиться, мы перепишем все заново. По тем же принципам, абы работало вчера. Просто переписывать будем последние хотелки отдела маркетинга. А предпоследние к тому времени будут не нужны. И так каждый год или два. Это был осознанный подход, с полным осознанием рисков, и что удивительно, судя по всему он работал. Просто там не было слишком уж хитрых переплетений данных и то, что писалось имело короткий срок использования, после чего забывалось. Специфика бизнеса такая.
Predator
А самая мякотка в том, что ВСЮ сферу ИТ нужно переделывать с нуля
Закрыть