Сообщество - Типичный программист

Типичный программист

1 373 поста 6 692 подписчика

Популярные теги в сообществе:

44

Как мы писали свою первую программу на 1С

Лето 2001-го года. Кончилась эпоха Foxpro, и мы "занялись 1С".

Надо было как-то продавать программу, и я снова вспомнил про свой надежный маркетинговый инструмент – 100 писем счастья. Мы сели и написали такие письма в 100 адресов, разослав всем бесплатный буклет «Как самому просто и быстро автоматизировать бухучет». Буклет этот я сочинил за два вечера, предварительно прочитав книжку «Как продавать услуги» (автора я не помню). Хорошая была книжка, мудрая, хоть и небольшая. Первое правило, с которого она начиналась, гласило: «Услуги, которые оказаны, уже никому не нужны. Берите предоплату». Там же рекомендовалось написать книгу, которая бы подтверждала вашу компетентность. Этому совету я и последовал.

И организации откликнулись на письмо! И откликнулись правильно – пригласили нас автоматизировать бухучет. То есть бесплатный буклет с названием «сделай сам» говорил совсем не то, что сделать самому – просто. Наоборот, он показывал на примерах, что автоматизация бухучета – сложный многоэтапный процесс, и от того, насколько правильно организовано внедрение, и зависит успех проекта. Буклет выполнил свою главную задачу – он показал нас специалистами, которые «глубоко в теме» и знают, как быстро и качественно автоматизировать бухгалтерию.

Первым в списке откликнувшихся был дизайнерский колледж. Его главный бухгалтер пригласила меня на переговоры. Она долго и подозрительно рассматривала меня и сказала примерно следующее: «Как вы автоматизируете колледж, ведь типовая программа 1С не предназначена для бюджетного плана счетов, и в ней нет бюджетных журналов-ордеров?». На что я, не задумываясь, ответил: «Обследуем ваш документооборот, нарисуем модели бизнес-процессов, опишем ваши проводки, согласуем интерфейсы и перепишем программу». То есть я продавал ей в одном флаконе обследование, технический проект и уникальную программу. «Ну ладно, – сказала главбух, – я уверена, что вы знаете, что делаете. У меня есть бюджет на автоматизацию – 14 тысяч рублей. Уложитесь?». Нам очень был нужен первый заказчик на внедрение 1С, и я ответил «Да». И мы подписали первый договор на поставку и внедрение программы «1С:Бухгалтерия». Из этих денег на услуги было заложено 9 тысяч рублей.

Представляете ситуацию? Мы подписываем договор на уникальную разработку программы на языке 1С, вообще не зная языка 1С. Между прочим, договор со сроками – 4 месяца «на все про все». Когда я рассказал своим сотрудникам, какие мы взяли на себя обязательства, народ слегка напрягся. И только консультант Миша меня поддержал: «Нормально, заодно язык выучим, а то совсем стыдно – партнер фирмы 1С не знает языка 1С».

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

А времени оставалось уже совсем мало. И я, глядя, что мои программисты, бывшие консультанты, не успевают, решил подбодрить их своим примером. «Спорим, – сказал я, – что можно писать по 8 объектов 1С за день?! По одному в час?». «Это невозможно». Я сел за компьютер. В этот момент я вспомнил, как начинал программировать в институте, и мне пришлось освоить «Бейсик» за ночь. Поэтому и 8 объектов конфигурации 1С за рабочий день (а не ночь!) не показались мне такой уж великой проблемой. К вечеру все работало. Кстати, код был не самым совершенным, хотя и вполне рабочим, и Миша потом его переписал. Но свою задачу ‑ «подбодрить» ‑ код выполнил.

И мы сделали и сдали весь проект в срок. Так как программа была неплохо спроектирована и точно укладывалась в требования заказчика, внедрение прошло на ура. И мы получили свои небольшие деньги, которые, конечно, не сделали нас богатыми. Но этот проект дал нам намного больше. Новые знания, возможность ссылаться на довольного заказчика. И самое главное – ощущение успеха, и, как следствие, уверенность в собственных силах.

Поэтому сейчас, когда я слышу от некоторых коллег «Я не знаю эту конфигурацию, не ставьте меня на проект, я не справлюсь, я не буду эффективным», я только улыбаюсь. Конфигурацию он не знает! Ты попробуй фигачить по 8 объектов в день, когда ты языка не знаешь!

Постепенно, опираясь на этот успех, мы и нашли свою первую нишу на рынке 1С в нашем городе – написание уникальных программ по проектной технологии. Обследование, разработка техпроекта, разработка конфигурации, разработка инструкций, обучение, внедрение. После колледжа были замечательные проекты, в каждом из которых был разработан уникальный код – автоматизация тепловозоремонтного завода и автоматизация автодорожного предприятия. Подход с проектированием и уникальной разработкой работал, заказчики наши были довольны, о чем говорили повторные проекты на этих предприятиях.

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

Хорошее было время.

Еще больше рассказов в моей книге "Франчайзи на грани нервного срыва", кое-что из которой в одноименной серии здесь. Подписывайтесь и читайте.

Показать полностью
115

Остановите программиста, а то он все автоматизирует, и мы будем не нужны!

Остановите программиста, а то он все автоматизирует, и мы будем не нужны! Программирование, Программист, Полезное, Эффективность, Автоматизация, IT юмор, Длиннопост

Уволившись из Большого предприятия, я искал работу совсем недолго. Неделю, может быть, две. Кто-то из друзей рассказал мне, что Сотовая связь ищет сотрудников. Я распечатал резюме и отправился на собеседование.

В тот же день меня приняли начальником расчетного отдела, в задачи которого входили выставление счетов абонентам и учет оплат. Вообще-то, я хотел там работать в должности программиста. Сотовая связь тогда только появилась, контора делала хорошие деньги на модной услуге и предлагала очень заманчивую зарплату программисту. Но когда директор ознакомился с моим резюме, он сказал, что готов сделать мне оффер1 поинтереснее. Так я стал начальником только что созданного отдела в 5 человек. И мне выдали первый сотовый телефон – «Бенефон дельта», который был не только размером с кирпич, но и такой же прочный. Когда директор на новогоднем корпоративе с размаху кинул свой «Бенефон» на пол, только половица треснула, а телефон даже не поцарапался.

В функции моего отдела входили прием файлов с записями о звонках, расчет начислений, массовое выставление счетов, учет оплат и подготовка приказов на отключения должников. Да, не поверите, в те времена, чтобы отключить должника, Сотовая связь готовила приказ, примерно c неделю, и еще пару дней коммутатор вручную отрабатывал весь список. Клиентов было примерно 800, рост абонентской базы существенно превышал ее сокращение, и компания могла себе позволить такую вальяжность.

Вся сотовая связь помещалась на 5-м этаже телефонной станции. В то время коммутаторы уже начали уменьшаться в габаритах, и городской оператор стационарной связи сдал освободившийся этаж «младшему брату». Никто тогда и предположить не мог, что пройдет 25 лет, и от домашних стационарных телефонов совсем ничего не останется. Но, наверное, «старший брат» уже тогда чуял угрозу, иначе непонятно, зачем он запретил абонентам и сотрудникам сотовой связи пользоваться грузовым лифтом. 5-й этаж телефонной станции – это не 5-й этаж дома. А примерно 9-й или 10-й, так как этажи там были по 6 метров высотой – 4 пролета лестницы на этаж. Но абоненты терпели, топали потихоньку наверх в своих малиновых пиджаках. Выбора-то не было тогда, Сотовая была единственная в городе. А сотрудники и вовсе не обращали на это внимания – главное, что зарплата стабильная, в период взаимных неплатежей это было очень ценно.

На своей должности я быстро освоился, организовал работу, написал инструкции каждому сотруднику и стал думать, чем бы еще заняться. Времени свободного была куча, программа биллинговая была написана на FoxBase, который я хорошо знал, коды программы были открытые, и у меня чесались руки все улучшить. Однако уже тогда я понимал, что автоматизация – вещь неоднозначная. Грамотно проведенная автоматизация всегда ведет к сокращению трудоемкости операций. И, как следствие, к сокращению рабочего времени сотрудников. А в предельном случае – к сокращению самих сотрудников. Тем временем, число сотрудников отдела потихоньку росло. Их стало уже семеро, при этом количество абонентов подходило к 2 000. И темпы прироста абонентов только увеличивались. Это значило, что в новом здании, которая строила Сотовая связь, разросшийся расчетный отдел мог претендовать на приличные площади, а его начальник ‑ на большой кабинет.

И тут мне в руки попалась книжка «Законы Паркинсона». Сирил Норткот Паркинсон заметил, что общее количество занятых в бюрократии росло на 5–7 % в год безотносительно к каким-либо изменениям в объеме требуемой работы, так как чиновники стремились увеличивать количество подчиненных и создавали работу друг для друга. Я тогда здорово посмеялся, в том числе над собой, плюнул на мысли о собственном статусе и, закатав рукава, занялся тем, что мне всегда очень нравилось – повышением производительности труда с помощью автоматизации.

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

Но это не была просто попытка поддержать утомленных коллег. Я начал действовать. Прежде всего, я провел замер трудоемкости всех основных операций, которые выполняли мои подчиненные. Получилось, что самое большое время у них уходило на три операции:

• Закачка файлов со звонками с коммутатора в биллинговую систему;

• Печать и подписание счетов и платежных требований;

• Разноска оплат из банковских выписок в лицевые счета абонентов, особенно в первые три дня после выставления счетов.

Первое, чем я занялся, – это закачка файлов с коммутатора. Коммутатор выдавал нам файлы, которые содержали в себе кучу постороннего мусора. Происходило это потому, что у владельцев Сотовой связи хватило денег на коммутатор и часть программ для него. Но среди этих программ не было той, что выдавала файлы со звонками в правильном формате, на ней сэкономили. Поэтому звонки выковыривали в полуручном режиме из каких-то логов. Мой боец Миша, получал очередной файл с коммутатора, загонял его в редактор и вручную вырезал из него весь мусор. Потом присваивал файлу номер, регистрировал в журнале и запускал закачку файла в систему. Если мусор был удален правильно, система съедала файл и удовлетворенно крякала «Ок». Если мусор оставался или с мусором были удалены и нужные потроха, программа давилась и ругалась «Error».

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

Вторая задача была посложнее. Выставление и подписание счетов и платежных требований. Происходило все так. Система последовательно печатала все сформированные счета, потом все платежные требования для банков, потом счета-фактуры и, наконец, детализированные счета со звонками для тех, кому они были нужны каждый месяц. Директор сперва сам подписывал все счета и платежки, но ему это очень быстро надоело, и он написал доверенность на меня. До прихода в Сотовую связь в моей подписи было 6 букв и красивый замысловатый хвостик. После двух месяцев подписания счетов в подписи осталось две буквы, хвостик же выпрямился и грозился отвалиться совсем. Я уже даже подумывал о переходе на одну букву, но боялся, что тогда моя подпись сольется с директорской, так как он после года работы подписывался одной буквой своего имени – «В». Но подпись – это еще не все. На подписанные документы надо было поставить печать. А также все разложить по комплектам. Каждому абоненту полагались счет, счет-фактура, а некоторым ‑ еще платежное требование и детализированный счет. Документы для комплектов собирались из трех куч. Готовые комплекты раскладывались по реестрам. Реестров было три – «в банк», «доставка курьером» и «на руки в офисе». Уфф. Семь человек печатали, сортировали, подписывали и раскладывали горы бумаг. До сих пор по ночам снится это выставление, давайте уже автоматизируем его поскорее!

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

После автоматизации система работала так. Прежде всего, реестры стали формироваться в самой программе. В каждом реестре документы также автоматически выстраивались в комплекты. Бланки для печати документов готовились заранее. Бумага прогонялась через факсимильный аппарат, который ставил на листы подписи и печати в нужных местах. Готовые бланки заправлялись в три лотка принтера – по лотку для банковских требований, счетов и счетов-фактур. Программа, в зависимости от содержания комплекта, всасывала бланк из нужного лотка и печатала требуемый документ. В итоге в выходном лотке принтера получался готовый реестр документов, в котором все документы были разложены по комплектам, а комплекты шли в нужном порядке. Все, что оставалось сделать сотрудникам отдела – скрепить их, используя мощные автоматические степлеры. Выставление, которое занимало раньше 3 – 4 дня, теперь выполнялось за 4 часа. После чего можно было пить чай до самого вечера.

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

Но меня уже было не остановить! После такого успеха в меня просто вселился зуд автоматизации. Однако с банковской выпиской уровень сложности был еще выше. Тут уже точно нельзя было обойтись только написанием программы и покупкой оборудования. Пришлось идти в банк. И там договариваться о том, чтобы они присылали банковскую выписку не в виде распечатки, а в виде файла. Сделать это удалось с большим трудом, спасибо шефу, который намекнул банкирам, что есть в нашем городе и другие, более сговорчивые банки. Программа тоже получилась непростой. Да, абонента можно было легко идентифицировать по расчетному счету. Но назначение платежа пришлось расшифровывать с использованием алгоритмов синтаксического анализа. Такое умудрялись писать абоненты и банковские операторы в назначение платежа, что уму непостижимо. «За трубу» – и это не про сантехнику. Но постепенно мы довели степень распознавания оплат до 95–98 %, что позволяло выполнить всю разноску банка за полчаса, включая ручной анализ нераспознанных платежей. И это вместо обычных 2 – 3 дней при пиковой нагрузке.

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

– Спасибо.

– За что?

– За расчетный отдел.

Четыре года я проработал в Сотовой и ушел, чтобы снова заняться бизнесом. Как я узнал через несколько месяцев после ухода, отдел сократили до 4-х человек и слили с бухгалтерией. Количество обслуживаемых абонентов к тому времени было 8 000 – в 10 раз больше, чем в то время, когда я начал работать в компании. Уменьшившийся в два раза отдел по-прежнему справлялся со своей работой.

Я вспоминаю эту историю всю свою жизнь. Для меня она ‑ источник полезных выводов.

Во-первых, занимаясь автоматизацией, а теперь и цифровизацией, я никогда не забываю, ради чего это делаю. Вот как я сформулировал миссию автоматизатора для своих сотрудников: «Освобождать человечество от рутины и давать возможность творить». Если в результате нашей работы количество рутинных операций сокращается, а скорость получения результата возрастает, мы идем в правильном направлении. Если же при внедрении большой системы мы видим, что нагрузка на пользователей увеличивается, это повод задуматься и пересмотреть бизнес-процессы. Понять, где можно раздобыть нужную информацию без участия оператора и облегчить людям жизнь.

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

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

И, наконец, нельзя забывать про расчеты будущей эффективности. Это самое лучшее средство получить инвестиции в автоматизацию. В примере выше деньги на закупку оборудования были выделены только после того, как был сделан расчет трудозатрат до и после автоматизации и продемонстрирована экономия на зарплате и сверхурочных. Показать руководителям, сколько они дополнительно получат или сэкономят, насколько быстрее будет получаться результат и как будут довольны клиенты – вот лучший способ получить «добро» на автоматизацию.

Рассказ из моей книжки "Франчайзи на грани нервного срыва". Подписывайтесь, продолжение следует

Показать полностью 1
51

Как программисту переносить данные идеальному заказчику

Наверное, он не просто так попал на эту должность – руководителя огромной оптовой базы снабжения, которую мы взялись автоматизировать в самом начале 90-х. База занималась снабжением предприятий республики дефицитными товарами, в том числе автомобилями. Представляю, какой конкурс был на это место тогда. И человек, который его занял, обладал особыми качествами.

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

– Друзья, – обратился он к нам, – у нас проблемы. Мы работаем с тысячами предприятий по всей Республике. Как правило, это надежные партнеры. Но вы же знаете, везде работают люди. Они постоянно теряют документы и забывают о сроках. Иногда они забывают заплатить. И если у нас нет надежных сведений о дебиторской задолженности, мы можем продолжать отгрузку товаров таким забывчивым клиентам. Но это еще не все. Намного хуже, если мы откажем в отгрузке надежному партнеру только потому, что мой бухгалтер не вовремя разнес банк в бумажную оборотку. Я уверен, что программа, которую вы внедрите, позволит нам иметь реальную картину дебиторской задолженности. И мы существенно улучшим и наше финансовое положение, и наши отношения с клиентами. Если у вас возникнут какие-то проблемы, то обращайтесь прямо ко мне. Мы все решим. А теперь идите и сделайте это!

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

– Послушай, – начал Иван Иванович. – Тут у меня такая проблема. Мы остановили отгрузку реагента на химзавод. И у них встало производство. Мне позвонил директор завода. Я запустил твою программу и сказал, сколько он должен. И потерял лицо. У них не только нет долга, у них аванс. Мой бухгалтер позже мне все подтвердила. Что будем с этим делать?

– Я разберусь, у нас должно быть все нормально.

– Послушай меня. Ты пришел и назвал свою цену на программу. Я с тобой не торговался, верно? Я только объяснил, насколько нам важен этот проект.

– Верно.

– Сказал ли я тебе, что помогу, если в этом будет необходимость?

– Да, было такое.

– Может быть, я вмешивался в процесс, стоял у тебя над душой, проверял, что именно ты делаешь, как пишешь свою программу?

– Да нет, что вы. Мы работали так, как считали нужным.

– Так какого черта ты заставляешь меня краснеть перед клиентами и друзьями?

Тут мне стало так стыдно, что покраснел я. Сказать было нечего.

Позже мы разобрались в ситуации. Оказалось, что дело не в программе. Дело в остатках, которые в нее ввела бухгалтер из бумажных карточек. Перепутала карточки, из-за чего на клиенте повис чужой долг.

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

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

• Готовим приказ о переносе данных. Определяем ответственных со стороны заказчика за представление исторических данных и за сверку результатов переноса. Учитываем, что процесс переноса будет итерационным, поэтому указываем в приказе относительные сроки, а не абсолютные даты.

• Жестко фиксируем те данные, которые нам передали для переноса. Делаем архивную копию на компакт-диск, запечатываем в конверт, подписываем его у ответственного со стороны заказчика и кладем в сейф. Если нас обвиняют в том, что в новой системе неверные остатки, мы можем сверить текущие остатки с теми, что в сейфе. Конечно же, мы фиксируем и дату передачи. Часто заказчик передает данные несколько раз, так как находит в них ошибки. Фиксация дат позволяет исключить обвинения в срыве сроков.

• Разрабатываем методику сверки данных в старой и новой системе. Определяем те отчеты, которые будут показывать расхождения. Если таких отчетов нет, разрабатываем их. На сверку тратится огромное количество времени. Вдумчивый подход к процедуре позволяет его экономить.

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

Самое главное – помним, что только заказчик отвечает за данные, как в старой, так и в новой системе.

Показать полностью
Отличная работа, все прочитано!