albetina

Categories:

Программное обеспечение и индийские программисты

Несколько лет назад один наш друг сказал, что его фирма решила привлечь в качестве программистов индийцев. Я сразу ему сказала, что это очень и очень опрометчивое решение. Но он уверял меня, что всё будет ОК и индийцы такие крутые программисты, я просто об этом не знаю. И это было чистой правдой, но зато о них в то время много писали и, в основном, нелестные вещи.

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

С такими вот «индийскими» программистами я столкнулась ещё в Казани, когда мы взялись делать программное обеспечение для бухгалтерии и склада.

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

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

И мы перешли на командировки. Там, в принципе, ничего сложного не было — количество дней командировки, день прибытия-день убытия, суточные, проездные. Я довольно быстро написала программу, но, когда мы стали её прогонять на реальных данных, поперло расхождение буквально во всем. В отчетах по командировкам не было ни одной (ни одной) правильной записи —  бухгалтерши ошибались буквально в каждой строчке,  делали ли они ошибки специально, не знаю. Я так и не смогла найти этому какого-то приемлемого объяснения. Нет, ну я понимаю, человеческий фактор и всё такое, но чтобы ошибаться в каждой записи, это что-то... А может, и там были какие-то махинации, о которых трудно было догадаться.

Все же нам удалось отладить эту программу, мы обучили работать с ней сотрудницу бухгалтерии и благополучно о ней забыли.

А затем настала очередь Главной Книги, куда входил и расчет заработной платы.

Вот с Главной Книгой в нашем институте было всё очень и очень печально. Из месяца в месяц в бухгалтерии не сходился баланс, как с ним не бились. Хотя чему было удивляться, баланс готовили всё те же работницы, которые делали совершенно невообразимое количество ошибок. За это наш институт платил каждый месяц огромные штрафы. 

Как раз в это время к нам на «огонёк» заглянул один программист-разработчик, основатель финансового пакета программ «1С», да «1С» была разработана в Казани и сейчас используется по всей России.

Первым делом моя начальница его спросила, по какому ключу он собирается вести поиск и сортировку в базе данных.

— ну, по фамилии...

— а как быть с однофамильцами?

— ну, тогда по фамилии плюс имя

— есть и двойные тезки. И ты не поверишь, но даже и тройные, по фамилии, имени, отчеству

 — ну, можно ещё добавить дату рождения...

Это уж было слишком. Человек, похоже, не был в курсе, что на всех предприятиях для однозначной идентификации человека используется табельный номер. И поэтому от его предложения пришлось отказаться.

Моя начальница, экономист по образованию, решила приобрести пакет задач в институте «ГнипиВТ», этот институт занимался в основном программным обеспечением и у них были разработаны жесткие стандарты даже на название массивов (так тогда величали файлы). Их следовало называть что-то вроде «М1192135» по какой-то им одним понятной логике. Ну да, черт с ним, назвали мы массивы согласно этой абракадабре и стали разбираться в программе. 

Надо сказать, что бухучет в России был как будто специально запутан и усложнен, там было только разновидностей премий штук пятнадцать и пять или шесть разновидностей отпусков. Так вот, при расчете отпусков и больничных одни премии в них входили, а другие нет и чтобы всё это запомнить, надо было быть гением. Да плюс к этому, законодательство в системе бухучета менялось в России не по дням, а по часам. 

И вот настал тот момент, когда потребовалось внести изменения в купленную программу. Я села разбираться и пришла в ужас. Было такое ощущение, что её писал какой-то динозавр — программа пестрила операторами «Go to», то есть перейти по ссылке туда-то. Блин, мы даже в университете уже не пользовались этим оператором. И было такое ощущение, что человек, писавший эту программу, не имел понятия о ни циклах, ни о процедурах, ну, точно, динозавр.

Я просидела над этой программой дня три и сдалась, я не могла понять её логику, там были бесконечные переходы, программа моталась туда-сюда обратно, переходила с двадцатого оператора на восьмидесятый, оттуда на трицать пятый, на двенадцатый, опять на двадцатый. Нет, с головой у этой мадам было что-то явно не в порядке. 

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

Потом за дело взялся другой наш сотрудник, он был кандидат наук и, вообще, очень умный. Он мне сказал:«да, ладно, что ты там не смогла разобраться?».

Через пару дней сдался и он. А потом сдались и все остальные сотрудники.

И пришлось писать нам всю программу заново, но зато она была читаема и внести в неё изменения не составляло труда. Всё же мы были умнее той «индийской» дамочки из «ГнипиВТ».

Было одно затруднение — я писала программу на FoxPro, а там очень медленно работал поиск по ключу. А на медленно работающие программы у меня терпения не хватает, они меня просто выводят из себя. Особенно это тяжело при отладке, когда вновь и вновь запускаешь чуть измененные варианты. Я подумала-подумала и заменила поиск просто на перебор всех записей, пока не будет найдена искомая. И программа стала буквально «летать».

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

А нам хоть бы какую-то премию выдали...

Поэтому, когда я уже жила в Израиле и мне предложили приехать и откорректировать мою программу по бухучету, я отказалась, мне это было не выгодно. Я им сказала, пусть купят 1С, не разорятся. За это время, они наверное, сделали более менее приемлемую программу. 

Так что, пусть и через 15 лет, но «1С» все-таки закрепился в институте.

 Update: в комментариях подсказали, что это называется spaghetti programming (Спагетти-код — плохо спроектированная, слабо структурированная, запутанная и трудная для понимания программа, особенно содержащая много операторов GOTO (особенно переходов назад), исключений и других конструкций, ухудшающих структурированность[1]. Самый распространённый антипаттерн программирования.

Спагетти-код назван так, потому что ход выполнения программы похож на миску спагетти, то есть извилистый и запутанный. Иногда называется «кенгуру-код» (kangaroo code) из-за множества инструкций «jump».

В настоящее время термин применяется не только к случаям злоупотребления GOTO, но и к любому «многосвязному» коду, в котором один и тот же небольшой фрагмент исполняется в большом количестве различных ситуаций и выполняет очень много различных логических функций[1].)

Error

Anonymous comments are disabled in this journal

default userpic

Your reply will be screened

Your IP address will be recorded