Получив перфокарты, я сверял то, что получилось, с кодом и данными на моих листочках. Если были расхождения, у меня было два пути. Первый – отдать неверно набитые строчки на повторную перфорацию. Для этого мне надо было написать их заново на другом листочке, отнести их операторам и ждать еще день. Или же я мог использовать хитрый метод корректировки перфокарт, которому меня научил Александр Иванович. Состоял он в том, что неверный символ на карте исправлялся вручную. Для этого отверстия в неправильных местах заклеивались, а в правильных – вырезались лезвием для безопасной бритвы. По шаблонной перфокарте с полным набором символов. То есть примерно от 3 до 5 минут работы на исправление одного неверного символа. Понимаете, насколько сейчас все быстрее в части корректировки набора?
После того, как код и данные были выверены, пакет перфокарт попадал в следующую очередь – на исполнение. Другие операторы закладывали перфокарты в устройство ввода. Оно считывало код в оперативную память машины. Я ехал домой, а программа компилировалась и выполнялась в пакетном режиме ночью. Выходные данные распечатывались на бумажных листах размера A3. На следующее утро их уже можно было получить в окошке для выдачи результатов. Частенько, если программа зацикливалась, мне выдавали целую коробку с прекрасной мелованной бумагой. Новый код я писал на обратной стороне этих листочков.
Через несколько месяцев таких итераций у меня все же получилась работающая программа, которую мы и сдали заказчику. И включили ее в отчет о проделанной работе по проекту.
Что же я чувствовал, когда так сложно писал свою первую серьезную программу? Я чувствовал настоящее вдохновение. Каждое утро я с нетерпением ждал поездки в вычислительный центр. Днем сидел за научными журналами, потом писал и переписывал код. Вечером я снова ехал в главный корпус, чтобы сделать следующую итерацию. При этом я твердо знал одно: качество работы моей программы полностью зависит от меня. Никаких кривых бордюров, никакого песка с водой. Только красивый код и верные результаты!
И все было бы хорошо, если бы не желание шефа сделать из этого науку. Мне пришлось сесть за написание научной статьи. При этом я быстро освоил принятый на кафедре метод написания таких статей. Сейчас его назвали бы «Ctrl + C, Ctrl + V». А тогда это называлось компиляцией. Научная новизна возникала точно так же, как возникает новое блюдо у шеф-повара турецкого отеля. Утренний салат – из того, что не съели гости вечером. Моя просьба к шефу? «Давайте не будем писать статью, тут, правда, нет ничего нового» – не возымела действия. Поэтому, чтобы написать новую статью, мне пришлось прочитать два десятка старых по теме. И подойти к материалу творчески.
В статье я привел графики наших экспериментов на модели. Помню, одна из точек на таком графике никак не вписывалась в формулу, которую шеф вывел для описания режимов работы котла-утилизатора.
– Что будем делать, Александр Иванович?
– Как что, ты не понимаешь?
– Доработаем формулу, чтобы учитывала и эту точку?
– Смеешься? Послезавтра сдавать статью в журнал. Сотри точку там, где она сейчас. Нарисуй там, где она должна быть по формуле.
– Как это? Это же подлог.
– Делай, что говорю. Все это очень и очень примерные формулы и модели. Никто не знает, как оно работает в реальности. Сантиметр сюда – градус туда… Неважно. А вот статья в научном журнале – очень важно. Подведем редактора – он от нас больше ни одной статьи не примет.
С тяжелым сердцем я перенес точку туда, где она подтверждала формулу. Перед сдачей статьи в журнал меня удивила еще одна вещь. Список авторов. Он включал в себя пять или шесть человек. Двоих? меня и моего шефа – я знал. Кто были остальные? Александр Иванович поморщился.
– Послушай, тут такая ситуация. Я не могу не включить своего научного руководителя. Сейчас я пишу докторскую, и он курирует и наш проект тоже. Если его не включить, он может нам «перекрыть кислород» с договорами. Кроме тебя на кафедре есть еще несколько моих аспирантов. Чтобы защитить кандидатские, им нужны публикации. Но у них очень много и другой работы. Они не успевают написать столько статей, понимаешь?
Я, конечно же, все понимал.
Вот так появилась первая трещина в моих отношениях с наукой. Однако после института я все же распределился на кафедру прикладной физики и химии. Начал готовиться к написанию кандидатской. И проработал на кафедре пару лет. До тех пор, пока мне не предложили заниматься тем, чем я действительно хотел заниматься, и что приносило мне радость. Прикладным программированием.
И пусть я недолго занимался наукой, но все же она оказала существенное влияние на всю мою жизнь. Я понял главное, читая научные монографии и рецензируемые журналы: прежде чем что-то сделать, нужно хорошо изучить то, что сделано до тебя другими. Мы карлики на плечах гигантов. Все, что нужно – проявить уважение к предшественникам. Это железное правило. Вот как я использую его в своей работе.
ИТ-компания, которой я руковожу сейчас, развивается в динамичной окружающей среде. Чтобы выживать и быть прибыльными, нам приходится довольно быстро приспосабливаться к внешним вызовам, меняясь внутри. Изменения происходят постоянно. Но прежде чем провести какое-либо изменение в компании, мы готовим исследовательский отчет по теме. В отчет попадает информация из научных монографий и статей. Решения, подготовленные на основе таких обзоров, внедряются легче. Они учитывают опыт предшественников и позволяют избежать множества ошибок. Например, исследование систем оценки удовлетворенности работников компаний различных отраслей позволило нам быстро создать свой собственный список из 18 вопросов. Благодаря ему мы лучше понимаем состояние наших сотрудников по результатам ежемесячных опросов.
Глава 2. Как научиться программировать за одну ночь, чтобы писать программу два года
Шел 1988 год. Мы, сотрудники института, работали на больших ЭВМ. Дорогой компьютер могли позволить себе только вычислительные центры и большие организации, которых было немного. Машинные залы занимали огромные площади, и были чем-то похожи на современные дата-центры. Машинное время было дефицитным ресурсом, распределяемым по разнарядке. И вдруг появились персональные компьютеры. Небольшие и не очень дорогие. Их могли купить даже средние организации.
Водоканал, в котором в то время работало около тысячи человек, купил несколько персоналок. Вообще, выбор у предприятия был небольшой: или расширять расчетный отдел бухгалтерии, в котором в то время работали четыре девушки, или как-то автоматизировать их работу. Расчетчицы совсем не успевали, в период начисления зарплаты они работали до поздней ночи.
Расчетный отдел бухгалтерии занимал одну большую комнату в небольшом здании еще дореволюционной постройки. Здание это, впихнутое между заводом и кинотеатром, расширить было нельзя, поэтому пятую девушку-расчетчицу просто некуда было посадить.
И тогда предприятие пошло по пути автоматизации. Директор Водоканала купил персоналки и стал ждать. Ждать, когда зарплата начнет считаться быстро и сама собой. Месяца через два, когда ничего не изменилось, он вызвал к себе заместителя по экономике, под которым была бухгалтерия. В результате бурной дискуссии выяснилось, что только компьютеров недостаточно. Нужны еще какие-то программы.
За программой решили обратиться в только что созданный кооператив «Вода»[3], который, между прочим, не только водосчетчики поставлял, а брался вообще за все, что сулило заработок. Просто больше некуда было обратиться: большие вычислительные центры не брались за разработки на персоналках, и программистских фирм тоже еще не было.
Договор был заключен, и исполнитель немедленно найден. Им оказался Василий Петрович, преподаватель информатики того ВУЗа, который в свое время окончил заместитель директора по экономике Водоканала. Единственный известный директору кооператива человек, который писал программы.