Статьи

Софт на костылях

Если бы строители строили дома так,
как пишут программы программисты,
то первый случайно прилетевший воробей
разрушил бы всю цивилизацию.

Народная мудрость


Программирование – работа творческая. И все хотят быть художниками и творить великие произведения. У программистов есть даже термин «индийское программирование». Он означает программирование в стиле граждан Индии на аутсорсинге, когда им платят не столько за результат, а за количество строк кода. Качество такого программирования очень низкое, но и цена более чем доступная. Но для уважающего себя программиста писать в таком стиле унизительно.

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

Расскажу о первом личном опыте, когда я это понял. Это было в детстве, когда я учился на первом курсе, а на дворе был 1994 год. Тогда я увлекался электроникой. Разные микросхемы покупались на рынке Юнона в Автово. Рынок тогда был дикий и меено в прямом смысле этого слова. Электричества там не было, освещения не было, а приезжать надо было рано-рано утром, чтобы искомый товар еще не успели продать. Микросхемы продавались под дождем, снегом, в жутких условиях. И, разумеется, при покупке микросхем на 20 корпусов (так называлась тогда единичная микросхема) оказывались 1-2 бракованных. Это могли быть продажи заведомо бракованных микросхем или просто отечественных микросхем с огромным уровнем брака даже среди «ВП» серии (военная приемка). Микросхемы могли оказаться неработоспособными и по причине внешних погодных факторов, статического электричества и т.д.

Метода проверки целостности микросхем прямо на рынке не было. Претензии по качеству, даже если найти на следующий день продавца, разумеется, не принимались. Некоторые продавцы пытались доказывать работоспособность некоторых микросхем вставляя их в колодки на собранных платах известных устройств (как правило, компьютера Синклер ЗэИкс Спектрум), но это давало только ограниченную проверку некоторых чипов, да и требовало много времени.

Мы с моим гениальным другом поняли, что нужно изготовить устройство для проверки микросхем. Вначале мы сделали устройство для проверки микросхем памяти (РУ5 и РУ7, если кто такие помнит). Потом – устройство для подсчета сигнатур ПЗУ. Устройства пользовались безапелляционным успехом. Мы их продавали столько, сколько успевали спаять за неделю.

И тут мы решили сделать СУПЕР устройство. Оно должно было уметь проверять сотни микросхем, для чего на нем было установлено 8 колодок разного размера. Но главное – это устройство умело умным и безопасным для микросхем методом определять марки (точнее – логическую организацию) микросхем. То есть, в колодку можно было вставить неизвестный импортный чип и устройство говорило его марку!!! Причем это определялось за секунду – другую.

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

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

У меня до сих пор лежит одно в шкафу. Приятные воспоминания….

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