albetina

Categories:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Error

default userpic

Your reply will be screened

Your IP address will be recorded 

When you submit the form an invisible reCAPTCHA check will be performed.
You must follow the Privacy Policy and Google Terms of use.