5 августа 2011 г.

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

Две мышки для вдвое эффективной работы (c) via Flickr
Я уже ранее писал о так называемых "программистах" с которыми мне приходится работать рядом в качестве рядового пользователя. Каждый раз когда я сталкиваюсь с продуктами их программистской жизнедеятельности и мне хочется закричать: "Вон из профессии! Вы недостойны называться программистами!". Больших трудов мне стоит сдерживать себя в рамках, хотя иной раз я не сдерживаю ругательств при работе с очередным программным монстром, призванным облегчить мои (простого пользователя) труды. Я оправдываю этих людей плохим воспитанием, образованием и низкой зарплатой. В конце концов они попадут в ад для программистов и ответят за все грехи что совершили в своей жизни.
Долгое время, пока не пришли эти доморощенные инноваторы, мы (пользователи) были предоставлены сами себе. За это время я написал множество простейших утилит, макросов и просто полезных шаблонов, которые облегчали мой труд. Почти всеми этими полезными вещами я пользуюсь до сих пор - они работают замечательно и пережили два сгоревших компьютера и четыре переустановки операционной системы.
Находясь на месте пользователя и одновременно на месте программиста, я получил весьма ценный опыт и много удовольствия от написания программ. Хочу поведать о некоторых ценных мыслях, которые я вынес занимаясь тестированием и внедрением самописных программ для автоматизации делопроизводства.
Нельзя начинать писать программу не понимая до конца что ты хочешь получить в итоге и что от тебя требуется пользователю. В конечном итоге это закончится тем что всю работу придется начинать сначала. Сколько раз я быстро программировал что-то, а потом с удивлением узнавал что от меня требовалось совершенно другое. Или не совсем другое, с маленькими изменениями... но из-за этого придется переписать и перерисовать половину программы. В настоящем программировании есть такая штука, ТЗ - техническое задание, но не каждый пользователя умеет его грамотно составлять, и не каждый программист может его понять...
(c) via Flickr
Хорошо. Программа написана, она получает данные, обрабатывает и выдает какой-то результат. Краткое тестирование с различными данными показывает что все в порядке - данные на выходе корректные. Работа закончена? Вовсе нет, основная часть работы только начинается. У любого программиста непосредственное программирование занимает только небольшую часть проекта (20-30% времени), все остальное время он обязан отдавать тестированию и исправлению выявленных недочетов. К сожалению, не все так поступают - поджимают сроки, руководитель требует функциональности немедленно...
Я поступал также. Программа написана, программа работает, программа выдана пользователю. Пользователь вроде не выражает недовольство. Кажется все в порядке. Такое заблуждение длится ровно до того момента, когда ты сам начинаешь пользоваться своей программой. Да, я подменял пользователей в их работе, когда кто-то уходил в отпуск или отсутствовал. Коллектив у нас небольшой и каждый должен был уметь выполнять функции своего коллеги (в разумных пределах, конечно). Так вот, когда я начинал работать на месте пользователя, я обычно хватался за голову. Наконец я понимал как именно должна работать программа для максимального удобства и эффективности. Никакое вдумчивое чтение ТЗ и продумывание всех нюансов заранее не даст такого озарения. Нельзя ограничиваться только формальным тестированием продукта - необходима вдумчивая работа на месте пользователя.
Те люди, которые сейчас "работают на нас", нарушают все эти простые заповеди и еще массу других. Они плевать хотели на пользователей и их желания. Они не хотят знать каким образом происходит работа этого пользователя. Они ведут себя как полнейшие профанами и болванами, каковыми и являются. Не происходит никакого общения между программистом и пользователем. Когда я писал свои программы, я находился в непосредственной близости от пользователей, стоял за спиной и вникал во все детали работы. Те надменные люди (я их даже в лицо никогда не видел), которые пишут нам программы, купили (я на это надеюсь) IDE, получили компоненты, фреймворки и считают себя умнее нас, простых пользователей, о чем уведомляют руководство. Конечно же, всем очевидно что при подобном подходе они не смогут написать никакой полезной программы и тем самым разрушат нашу работу, все наши бизнес-процессы и впустую потратят деньги, которые им выделили.
Я все-таки надеюсь что эта неудача (когда начальству станет понятен весь масштаб катастрофы) хоть кого-то научит, а этих людей которые посмели себя называть программистами, выгонят из профессии. 

Комментариев нет :

Отправить комментарий