Мы с Василием Петровичем подбросили монетку и по-честному поделили работу. Мне достались начисления, ему – удержания.
Первое, что я сделал, когда добрался до компьютера, – выяснил, что на нем есть язык программирования. Бейсик. Через два дня нужно было что-то показывать заказчику, и поэтому мне пришлось изучить его очень быстро. Изучение заняло ночь. Утром я написал первую программу. Да, в этом языке было немного команд, несколько десятков, и большинство из них оказались экзотическими и совсем ненужными. Основными были Input и Print, а также арифметические команды «плюс», «минус», «умножить» и «разделить». И еще несколько команд для поиска и форматирования данных и работы с таблицами. Десятка команд было вполне достаточно для автоматизации работы расчетной группы.
На демонстрации я показал заполнение справочников цехов, работников, табелей и расчет повременного начисления для всех работников цеха. Отработанное время умножалось на оклад и заносилось в таблицу начислений. Таблицу с расчетом можно было вывести на экран или принтер.
Василий Петрович пошел несколько другим путем. В созданной им программе «Удержания» расчет происходил следующим образом. Сперва на экране появлялось сообщение:
«Введите табельный номер работника».
Расчетчица вводила:
«17».
«Введите код начисления».
«01».
«Это подоходный налог. Введите сумму, с которой надо удержать налог, руб.»
«147».
«Подоходный налог 13 % с суммы 147 руб. равняется 19 руб. 11 коп.»
Увидев такую красоту, расчетчица спросила Василия Петровича:
– И что мне с этим делать?
– Не знаю, может, в ведомость записывать после расчета по табельному номеру?
– Двести пятьдесят человек по пять – семь удержаний? Вводить данные и записывать результат? А спать когда?
Видимо, слухи о наших подходах к программированию дошли до директора кооператива, потому что через несколько дней я уже был единственным программистом на этом проекте.
Конечно же, я попытался применить научный подход. Но увы. Методическая литература по теме отсутствовала. Единственная книга, которую я нашел, рассказывала об автоматизации расчета зарплаты на ЭВМ серии EC. Описывалась следующая технология. Пользователи вручную заполняли шаблоны данных. Собирали их в пакеты и отвозили в вычислительный центр. Операторы вводили данные, и большая машина делала расчет. Информация вводилась дважды. Если программа находила расхождения, ввод пакета повторялся. Расчет начинался только после полного совпадения данных. Таким образом была реализована защита от ошибок.
Но эта технология и эти шаблоны абсолютно не подходили для работы с персональным компьютером. Пришлось все делать с нуля, подробно расспрашивая расчетчиц. Мне тогда повезло. Руководительница расчетной группы Марина, несмотря на свою горячность, была очень хорошим специалистом. Она смогла грамотно поставить задачу. Мы с ней разработали свои алгоритмы расчета начислений и удержаний, откуда мат Марины был предусмотрительно удален, и, по большому счету, ничего не упустили.
Этот подход сыграл со мной в будущем злую шутку. Когда я начал заниматься автоматизацией основных средств, я также положился на руководителя другой группы. Та поставила мне задачу: рассчитать амортизацию основных средств за месяц как итоговую амортизацию прошлого месяца минус амортизацию выбывших основных средств плюс амортизацию введенных. Но при повторении ручного алгоритма в компьютере нужные результаты не получались. Мы бились месяц, но ничего не сходилось. В отчаянии я вспомнил про научный подход и отправился в библиотеку. Нашел учебник по бухгалтерскому учету, открыл раздел по учету основных средств. И сразу же понял, что нужно сделать. В итоге мы перешли к суммированию индивидуальных амортизаций по каждой карточке основных средств. Машине ничего не стоило просуммировать 10 тысяч позиций, в отличие от людей. Так мы, наконец-то, получили корректный результат.
А я получил еще один урок научного подхода. Для правильной постановки задачи программисту недостаточно пообщаться с пользователем. Обязательно надо изучить нормативную документацию, которая регулирует бизнес-процесс: законы и постановления правительства, положения по бухгалтерскому учету (ПБУ), положения об отделах и должностные инструкции, приказы и инструкции по предприятию. В особо сложных случаях – учебники и журнальные статьи. Чем больше источников исследует разработчик, тем более качественно будет сформулирована задача. И меньше переделок будет в коде.
Читать дальше