индийский стиль программирования что это
Индусский код в Микрочипе
Те кто общался с саппортом микрочипа, наверное замечал что зачастую попадает на индийский департамент конторы, и все-бы ничего если бы не подозрение что весь микрочип разом переехал в Бомбей и набрал индийских бездомных школьников для написания своих библиотек.
Не подумайте, что я сейчас пытаюсь гнуть расово верную линию — не имел опыта общения конкретно с индусами, но точно знаю что среди наших их тоже достаточно (не верите — наберите «95» в гугле), но понятие «индусского кода» появилось давно и закрепилось довольно прочно, хотя вы и не найдете его в политкорректной википедии (но гугол о нем точно знает).
Индусский код (не индийский или индейский) — жаргонное нарицательное название для программного кода крайне низкого качества, использующего простые, но порочные принципы «copy-paste».
Почему именно индусский?
По слухам в Индии с некоторых времен существует практика оценки производительности труда программиста на основе количества написанного кода. Чем больше кода, тем больше программист работает, и, следовательно, выше его оклад. Шустрые индусы быстро сообразили, как обманывать неквалифицированных заказчиков.
Полезное замечание от kaladhara
Житель Индии — индиец, а индус — это последователь любого направления индуизма. Таким образом даже чукча преклонных годов, исповедующий шиваизм (и, вероятно пишуший на с++) — индус.
0. Больше кода — больше профит!
Самое важное, что надо запомнить нанимаясь получив работу в микрочипе: «Они-таки платят за строки кода!». Поэтому любыми способами увеличивайте объемы исходных текстов. Совет общий, так что без примеров, включайте фантазию.
1. Классика жанра
Классика жанра индусского кино кода незыблема со времен его появления, для разминки попробуйте угадать что скрывается за этим куском кода, содержащемся в файле «MDD File System\SD-SPI.c» на строчке 1042:
2. Копипаст
В отсутствии фантазии подойдет и копи-пейст, хотя по слухам многие работодатели проверяют код на копипаст, микрочип видимо не из их числа. Запомните, для срубания бабла индусским кодом никогда не используйте макросы — они зло и безобразно уменьшают код. В пример кусок, повторяющийся раз двадцать в файле «MDD File System\FSIO.c»:
Соотношение 10:1 в пользу первого варианта, а с учетом двадцатикратного повторения в абсолютных величинах это несколько сот рупий!
3. Линейный код
Использование циклов — зло. Линейная программа работает значительно быстрее, не тратя времени на операторы условий и переходы, и содержит больше строк кода.
Инициализация структур должна быть побайтной, не надо писать простые инициализаторы типа:
4. Изобретаем велосипед или деньги из пробелов
На очередную мысль меня навела идея функции FileObjectCopy в файле «MDD File System\FSIO.c» на строчке 6065, подозреваю что если бы у них было больше разных структур то появились бы и другие SomeObjectCopy
The FileObjectCopy function will make an exacy copy of a specified FSFILE object.
Если «exacy» == «exact» как следует из кода, то это профитная замена прямого присвоения структур — стандартной операции в ANSI C, a сделанное компилятором, оно должно быть и быстрее и компактнее так как используются аппаратные FSR/INDF регистры. Для разных объектов подойдет memcpy(d, s, sizeof(s)) и работает он тоже быстро, во всяком случае его ассемблерная реализация.
Ну есть еще мелочи для раздувания кода, которыми можно добавить пару — тройку строк, типа:
Даже если это исключительно для того чтобы сделать переменную read-only то такого макроса вполне достаточно, чтобы компилятор выругался где надо:
5. Комментарии с фанатизмом
Комментируйте все подряд, кроме самых не очевидных кусков (см пример 1.) Если вы еще не достигли полного просветления и в вашей индусской программе случайно осталось две-три функции — создайте «шаблон описания функции», включите туда умные слова-разделы, в разделе «Description» перечислите еще раз все что было написано выше, но развернуто. Особенно эффект умножения строк кода проявляется с функциями типа «FSerror()» из примера выше.
6. Используйте особенности архитектуры
Все что было написано выше — общие советы для новичков на пути просветления, применимые к любой программе, практически на любом языке. Но настоящие поклонники Шивы используют все возможности для создания хаоса. Учитывая кучерявость гарвардской архитектуры PIC контроллеров, настоящие гуру индусского кода откроют для себя невообразное число возможностей использования специфических директив и прочих особенностей кривизны реализации си в компиляторах.
Пишите код таким образом, чтобы он даже не мог компилироваться под разными версиями компиляторов, и используйте все специфические #pragma. В этом случае каждая функция будет присутствовать в версиях как минимум для двух компиляторов и трех-четырех архитектур PIC, итого до 8 крат увеличения кода.
Еще раз удвоить количество кода вам поможет то, что указатели RAM и ROM в компиляторах под PIC разные, то есть «char*» не может быть преобразован явно или неявно к «const char*» в хайтеке или «const rom char*» в микрочипе. Что вобщем-то проблем в хайтеке не вызывает совсем, так как void, far и const указатели могут адресовать всю память и применяться как к ROM так и RAM. Но в микрочиповской реализации си это может привести к созданию двух функций: одной работающей с ROM, а второй с RAM — чистый профит. Никогда не следует довольствоваться одной функцией, работающей с оперативной памятью (а при необходимости загружающей туда константы из ROM).
И последнее, всегда используйте инлайн-ассемблер даже в случаях когда ваш код значительно длиннее и медленнее чем то, что делает компилятор из нормальной си программы. Ассемблер выглядит круто и большинство не заподозрят какое скудоумие было приложено при его создании, а также будут считать что программа написана одним из оптимальнейших из возможных методов.
Индийцы руководят Google и Microsoft, а теперь и Twitter. Как так вышло?
Создатель Twitter Джек Дорси ушёл с поста главы компании, уступив место Парагу Агравалу. Он пополнил список корпоративных руководителей, которые имеют индийские корни. Почему именно индийцы возглавляют глобальных IT-гигантов? Есть несколько причин.
Индийцы захватили IT
Вот неполный список руководителей индийского происхождения:
Несмотря на мемы про низкое качество индийского кода, выходцы из этой страны регулярно занимают кресла директоров IT-компаний. Хотя им удаётся добиваться успехов и в других областях — Аджай Банга руководит MasterCard, а Индра Нуйи 12 лет стояла у руля PepsiCo.
Индийцы создают и собственные бизнесы. В 2005 году доля стартапов в Кремниевой долине, основанных выходцами из Индии, достигла 15,5%.
Как это получается?
Швейцарский университет Санкт-Галлена в исследовании 2004 года выяснил, что индийские руководители склонны к коллективному управлению и построению эмоциональной связи с подчинёнными — за это их ценят в компаниях. Ещё люди с такими корнями более упорны: многие вышеперечисленные менеджеры проработали в компаниях не один год. Пичаи взбирался по карьерной лестнице в Google 11 лет, Наделла шёл к креслу директора 22 года.
Не исключено, что в развитии трудолюбия им помогли непростые условия на родине. Чтобы выделиться среди 1,38 млрд человек, нужно хорошо постараться. «Первое поколение успешных основателей стартапов из Индии упорно трудилось, чтобы помочь тем, кто пришёл следом», — говорит Вивек Вадхва, профессор инженерного колледжа Карнеги-Меллона.
Важно и образование. 77% индийских иммигрантов в США имеют степень бакалавра и выше. Для сравнения: среди родившихся в Штатах таких всего 31%. Логично, что нынешние топ-менеджеры имеют хорошие дипломы. Например, Пичаи и Агравал получили степени в Стэнфорде, а Наделла — в университете штата Висконсин.
Индийский стиль программирования что это
Вы там как, готовы к осенним распродажам? Чтобы не пропустить самые интересные и выгодные предложения, подпишитесь на полезный телеграм-канал Пикабу со скидками. Да, Пикабу не только для отдыха и мемов, но и для экономных покупок!
В «Пикабу Скидки» вы найдете актуальные предложения:
• доставки еды (KFC, Delivery Club, «Папа Джонс»);
• книги («Читай-город», «Литрес», Storytel);
• услуги и сервисы («Делимобиль», Boxberry, «Достависта»);
• маркетплейсы и гипермаркеты (Ozon, «Ашан», «Яндекс.Маркет»);
• одежда и обувь (Adidas, ASOS, Tom Tailor)
• бытовая техника и электроника («М.Видео», «Связной», re:Store);
• товары для дома (IKEA, «Леруа Мерлен», Askona);
• косметика и парфюмерия («Л’Этуаль», «Иль де Ботэ», Krasotka Pro);
• товары для детей («Детский мир», TOY, Mothercare);
• образование («Нетология», GeekBrains, SkillFactory);
• и еще куча-куча всего.
MSI Afterburner и учетные записи пользователей
Индусский код
Индусский код говорите?
Практически крик души! Не уверен, что именно сюда, но других способов уже не вижу.
Обращение к программистам Яндекса.
Сказ о том, как мы веб-разработку в Индии заказывали, и как нас спасли русские программисты
В процессе работы над сайтом Getwear мы столкнулись не только со страшным американскими дизайном — у нас появился также опыт работы с программистами из Индии и России. Об этом опыте мы с радостью расскажем вам, а бонусом станут 8 советов тем, кто подумывает о выводе программирования в оффшор.
Создавая сервис Getwear, мы накопили целую коллекцию набитых шишек, причём половина из них пришлась на веб-разработку.
Нам требовалась «оживление» дизайна, нарисованного студией Горбунова и создание Flash-движка конфигуратора, с помощью которого можно создавать свои джинсы. Так как особых финансовых ресурсов к тому времени у нас уже не было, разработку было решено поручить индийской студии, которую мы условно назовём «Криптонит».
«Криптонит» позиционировал себя как одна из крупнейших оффшорных студий по веб-разработке. Среди её клиентов были и очень известные компании, например National Geographic или Pepsi. Ну, или Getwear, например.
Нам сразу понравился вменяемый менеджмент и очень приятные цены: денег после предыдущей студии у нас оставалось очень немного. Нас также порадовал энтузиазм «Криптонита»: они быстро собрали наши макеты в удобоваримую демонстрационную версию, причём сделали это самостоятельно. А еще в «Криптоните» гордятся стандартизацией процессов и качестве по ISO 9001 (как всегда, никто не знает, что означают эти цифры). Одним словом, мы решили работать.
Однако, вменяемость закончилась, не успев начаться.
Во-первых, индийцы обладают собственным определением слова «дизайн», которое существенно отличается от нашего: они вообще не считают его важной частью проекта, называя “beautifications”, буквально — “украшательством”. В результате всё получается криво и косо. Но они этого не видят! Например, когда мы показали им наши страшные шаблонные прототипы (блупринт), индийцы ахнули от восхищения и сказали: “It’s gorgeous!” («Это великолепно!»). Шутки ради мы хотели подсунуть им выкройки джинсов вместо дизайна сайта, но вовремя одумались: они бы это сверстали, даже не подумав.
К примеру, вот так индийский дизайнер представляет себе джинсы:
Немного похоже на арт к фильму Чужие, правда? Это результат целого этапа нашей совместной работы: индийцы обещали нарисовать и подготовить фотореалистичные иллюстрации джинсов. После того, как мы поняли масштаб трагедии, нам пришлось срочно фотографировать и выкладывать на сайт какие-то совершенно случайные джинсы.
Впрочем, эти пифагоровы штаны — это еще не самое страшное, что нас ждало.
«Криптонит» неприятно поразил нас профессиональной непригодностью: сотрудники не умели делать совершенно базовые вещи, которые умеет любой школьник. К примеру, они не могли преобразовать векторный файл в растровый, не могли реализовать в коде базовый функционал проекта — оказалось, что они не умеют как следует работать с Flash, хотя за эту компетенцию их и выбирали.
Ну вот представьте, что на приёме у стоматолога вам обещают поставить пломбу, а на самом деле месяц сверлят другой зуб, время от времени прерываясь на рассказывание баек о кариесе.
Всё это сопровождалось врождённым неумением признавать свои ошибки, неспособностью честно сказать «нет», «мы это не умеем», «мы это не можем». В результате мы увязли в паутине недомолвок и фактического вранья, теряя недели на то, чтобы просто понять, что они вообще могут.
Вот яркий пример. Нам требовалось создать весьма сложный код конфигуратора. Требовалось точно повторить эффекты Adobe Photoshop инструментами флеша. Когда мы договаривались с «Криптонитом», то на вопросы о способности сделать такой движок слышали в ответ «О да, именно таким мы и занимаемся всё время». На деле оказалось, что в компании решили просто тянуть время, предлагая вместо движка симпатичную, но совершенно нефункциональную пародию на него, параллельно стараясь научиться делать так, как нужно. Разумеется, у «Криптонита» ничего не получилось.
В конце концов, нам надоело спонсировать обучение сотен тысяч индийских программистов компании. Поняв, что «Криптонит» не выполнит поставленной задачи, мы расстались с ними.
Надо отметить, что компания повела себя в такой ситуации достаточно достойно, если можно сказать так про разработчика, который создал столько неприятностей. «Криптонит» не стал требовать оплаты за ту часть функционала, которую он не смог выполнить.
В нашем случае индийский аутсорс оказался одной большой неприятностью. Нас преследовало даже более сильное различие в менталитете, чем с американцами: если дизайнеры из США халтурили, то «Криптонит» не только не делал свою работу, но и прямо подсовывал фальшивки. Одним словом, закройте глаза и попробуйте представить себе индийских разработчиков или вспомните шутку про них — всё это окажется правдой.
После неудачи с «Криптонитом» мы достаточно быстро наши новых разработчиков — ими оказалась известная DataArt. В поисках нам помог наш инвестор-ангел, у которого случайно оказались знакомые в этой компании. В итоге мы пошли доделывать конфигуратор джинсов туда.
Заключая договор с ДатаАртом, мы имели две альтернативы: оплачивать разработку посуточно или заплатить за разработку сразу ту сумму, которую студия прикинула для себя сама. Мы выбрали фиксированную оплату.
Сразу же после начала работы над Flash-движком нашего технического директора Славу подписали на внутреннюю рассылку по проекту, так что мы были постоянно в курсе процесса разработки.
Очень порадовал менеджмент студии: ребята действительно делали свою работу, а не создавали впечатление, как это было в «Криптоните».
Мы, словно побитая хозяевам собака, каждую минуту ждали какого-то подвоха, но… его не было. С ДатаАртом всё заработало без особых проблем. Были небольшие трудности в процессе настройки дизайна конфигуратора, но всё в пределах нормальных человеческих ошибок. Одним словом, опыт очень приятный.
Одним словом, лозунгом работы с ДатаАрт можно считать следующее: «Прозрачность, отчетность, понимание ситуации, честность». Аминь. Как и в случае с дизайном от Бюро Горбунова, мы существенно переплатили по сравнению со средней ценой, однако эта переплата превратилась в качество продукта и отсутствие проблем в процессе его разработки.
В качестве резюме хотим дать небольшой список советов, который пригодится компаниям, думающим об аутсорсинге разработки своего сайта:
Примеры работ и список партнёров — это хорошо, но не всегда достаточно. Обращайте внимание на те работы, которые максимально похожи на ваш проект или отдельно спрашивайте такие кейсы во время общения.
Обязательно запросите список рекомендаций и контакты рекомендодателей. Выберите сами несколько проектов, которые вам близки и просите контакты именно этих заказчиков.
Не стесняйтесь предлагать тестовое задание. Если вы предлагаете компании большой проект, а она отказывается выполнить небольшое тестовое задание — это повод задуматься. Кстати, тестовое задание можно и оплатить — эти деньги не будут потеряны, вы купите за них уверенность в способностях своих исполнителей.
Не забывайте о том, что есть независимые системы профессионального тестирования разработчиков. Можно провести через эти системы ключевых сотрудников, которые будут работать над проектом.
Вы должны всегда быть в курсе хода работ над проектом. Еженедельные совещания и электронные письма не считаются. Попросите доступ в систему управления проектами и наблюдайте, наблюдайте, наблюдайте.
Если у вас в команде нет опытного специалиста, попросите кого-нибудь побыть вашим внештатным экспертом. Пусть он проанализирует качество кода и выскажет своё мнение. Хотите двойной надёжности? Наймите двух экспертов.
На самом деле, предыдущий совет можно сформулировать иначе: если в вашей команде нет опытного технического директора, лучше даже не думать об оффшорной веб-разработе — кругом обман-с.
Помните о том, что скупой платит дважды. И дело даже не только в деньгах. Платя за то, что фактически оказывается бесполезным, вы тратите еще и время, которое превращается в деньги, которые превращаются во время… Одним словом, получается такая адская рекурсия.
Вот таким был наш опыт аутсорсной веб-разработки. Нас опять спасли российские разработчики, за что им большое спасибо.
Пожалуйста, расскажите о своём опыте. Имели опыт оффшорной веб-разработки? Сотрудничали с российскими разработчиками? Какие советы дадите?
Почему и как Индия стала глобальным IT-гигантом?
В начале 2020-х годов всё чаще говорят о превращении Индии в глобальный IT-хаб и «индийском информационном чуде».
Глобальные информационные компании вроде Facebook, Google, Amazon вместе с американскими и арабскими инвестиционными фондами выстраиваются в очередь, чтобы вкладываться в индийскую информационную сферу и развивать сотрудничество с индийскими IT-корпорациями – такими, как Jio Platforms. Трое из четырёх айтишников на мировом рынке – индийцы. Город Бангалор, где производится 38% IT-экспорта Индии, в ближайшие годы может обойти Сан-Франциско с его Кремниевой долиной в качестве важнейшего мирового центра информационных технологий.
▍ Как так получилось?
В Индии перспективность информационных технологий осознали очень рано. В 1970-е годы в США только зарождался интернет как разработка DARPA, а первые персональные компьютеры казались смелой и слегка сомнительной идеей. В Китае хунвейбины избивали «брошенных» на рисовые поля университетских преподавателей. А в Индии уже приняли государственную программу, которая обеспечивала максимально выгодные условия для компаний, занятых разработкой программной продукции. Для них предусматривались субсидии, льготные кредиты и сниженные таможенные ставки.
Под Мумбаи в 1973 году появилась первая специальная экономическая зона SEEPZ, специализирующаяся на экспорте программного обеспечения для зарубежных заказчиков. Первой же индийской IT-компанией стала основанная в 1968 году Tata Consultancy Services, уже в 1975 году продававшая софт для банков Швейцарии, Канады и ЮАР — а к 2021 году превратившаяся в транснациональную IT-корпорацию с крупнейшей среди таковых рыночной капитализацией в 200 миллиардов долларов США.
Впрочем, в последующие четверть века IT-сфера Индии была не слишком заметной и на национальном, и на мировом рынке. Ещё в 90-е годы вся информационная отрасль Индии состояла из нескольких тысяч айтишников и исчезающе малого — на фоне колоссальной по населению страны — экспорта в сфере информационных технологий объёмом порядка 100 миллионов долларов США.
Однако под этой невзрачностью крылась долгая, серьёзная и систематичная работа индийского руководства и компаний, которая велась все 80-е и 90-е годы, и предопределила дальнейшие успехи. К примеру, в 1986 году в Индии была принята новая государственная программа развития и экспорта программного обеспечения, которая обозначила развитие IT-сферы в качестве ключевого для будущего национальной экономики. Для информационных технологий предоставлялись все возможные преференции и льготы, снимались ограничения, развёртывались образовательные программы. Всё больше индийских айтишников работали на зарубежные компании, уезжали в США и Европу. Часть из них оставались там, часть возвращалась домой с массой новых знаний и навыков.
Уже в начале 2000-х годов Индия вырывается в лидеры по объёму экспорта продукции ИТ-отрасли и занимает доминирующее положение на глобальном рынке ИТ-аутсорсинга. Правда, львиную долю на тот момент составляли специалисты, чьим основным достоинством была готовность работать за гроши по западным меркам. Некоторые из них садились писать код после двухнедельных курсов подготовки. Зато их было очень много, и они были готовы работать примерно на тех же условиях, на которых работали китайские рабочие в 80-е и 90-е: почти что за еду.
Из-за этого на рубеже 2000-х и 2010-х «индусский код» был среди русскоязычных айтишников мемом, обозначающим нечто фантастически кривое, написанное левой пяткой во время народных танцев, и как-то работающее только милостью Шивы с Ганешей. Однако время шло, люди и компании учились, IT-сфера Индии стремительно развивалась и оказывалась в состоянии браться за всё более крупные и серьёзные заказы, делая их всё менее криво и всё более профессионально.
При этом IT-специальности с почти бесконечным рынком зарубежных заказов оказались спасением из бедности для миллионов амбициозных и умных молодых людей. Помимо Мумбаи стали оформляться крупные IT-хабы сначала национального, а затем и мирового значения: Бангалор, Хайдарабад, Ченнаи.
Параллельно с этим индийские IT-гиганты вроде Jio Platforms и усилия правительства превратили Индию в страну интернета. Если в 2010 году лишь 7,5% граждан Индии пользовались всемирной сетью, то в 2020 году, благодаря дешевизне доступа в интернет и смартфонов местного производства, эта цифра достигла почти 700 миллионов, более половины населения страны. Это сделало Индию второй в мире страной по числу пользователей всемирной сети после КНР. И поэтому глобальные IT-гиганты в 2019-2020 году решительно двинулись в Индию.
▍ Есть в этом и политико-стратегический аспект.
При президенте Трампе США повернули от сотрудничества с КНР в сторону противостояния – и администрация Байдена этот курс, в отличие от большинства начинаний предшественника, поддерживает. Индия уже много десятилетий находится в состоянии вялотекущей «холодной войны» с соседом. Потому и для Вашингтона, и для других стран Азиатско-Тихоокеанского региона, обеспокоенных растущими амбициями Пекина, она оказывается естественным союзником и партнёром. Вкладываться в рост Китая для всех этих стран всё больше выглядит чрезмерным риском и стрельбой себе по ногам — особенно в свете американских санкций за сотрудничество с компаниями, «аффилированными с китайскими коммунистами». Зато Индия представляет сходный по масштабам огромный рынок и инвестиций, и аутсорса, и сбыта.
Параллельно компартия Китая на фоне конфликта с США, санкций и ростом недовольства образованных горожан решила крепко «закрутить гайки» и внутри страны, и в мятежном Гонконге. Былой свободы рук и гарантий капиталовложений в КНР даже нейтральные инвесторы больше не ощущают, а вкладываться куда-то нужно. Китайский интернет огромен – но он жёстко регулируется и цензурируется властями. И сотрудничество своих айтишников с международными (то есть, обычно – западными) корпорациями недремлющее око компартии не слишком одобряет, во избежание чрезмерного восприятия «подрывных идей».
Правда, индийские власти тоже в последние годы «закручивают гайки» в своём сегменте сети из-за множества внутриполитических проблем, конфликта с КНР и Пакистаном, но уже в этом случае американские корпорации демонстрируют решительную готовность «войти в положение уважаемых партнёров и понять их обеспокоенность вопросами безопасности».
В настоящее время Бангалор, столицу южноиндийского штата Карнатака, справедливо называют «Кремниевой долиной Азии». В 2017 году он один производил около 38% всего IT-экспорта Индии – и многие прогнозы обещают ему уже в ближайшие годы превращение в крупнейший мировой IT-кластер.
К слову, речь не идёт только об Индии: по числу фрилансеров в IT-аутсорсе следующие две позиции занимают её соседи по Южной Азии.
На 2019 год на втором месте находился Бангладеш — ещё недавно считавшийся сферическим в вакууме символом отсталости, необразованности и безнадёжности, а теперь сделавший ставку на массовую цифровизацию, и ворвавшийся на глобальный рынок аутсорса как второй по важности игрок. Что интересно, в структуре бангладешского аутсорса доминирует не разработка софта, а мультимедиа и креативщики. На третьем – Пакистан. И лишь после них следуют США и КНР. В десятке также оказались, в порядке убывания, Великобритания, Филиппины, Украина, Россия и Вьетнам.
Несмотря на все успехи в интернет-технологиях, Индия – всё ещё довольно бедная страна с колоссальными социальными и экономическими диспропорциями. Сияющие небоскрёбы цифровых корпораций и центров разработки соседствуют с жуткими трущобами и сотнями миллионов всё ещё неграмотных крестьян: такого выпуклого «high tech low life» не представляли даже отцы-основатели киберпанка, в Индии победивший киберпанк местами соседствует едва ли не с натуральным паропанком, а то и постапокалипсисом.
И всё же успехи Индии в IT-сфере впечатляют, её перспективы выглядят весьма интересными, а умелое использование мировой конъюнктуры может превратить середину XXI столетия в «индийскую эпоху» мировой экономики так же, как его начало можно назвать «китайской эпохой».