В начале расскажу небольшую предисторию, которая подвигла меня написать этот топик.

В один прекрасный момент я почувствовал, что программирование (на работе) перестало приносить мне былое удовольствие. Данный кризис я могу отнести к тому, что стал заниматься новыми задачами не по разработке, а по поддержке проектов. Задачи стали рутинными и не интересными: вставь check box в ui, посмотри и запусти проект, подготовь список вопросов, добавь scroll bar в окошко и т.д. Вдвойне неприятен тот факт, что я знаю, как улучшить систему (существующая ооочень далека от идеала, что бы это понять, достаточно посмотреть на такой участок кода (java): String molStr = new String(""). И это только цветочки =), но мне это не дают делать по причине того, что «заказчик буде не доволен». Проекты сделаны с использованием устаревших технологий (Java 1.4, WL 8.1, всё остальное в том же духе), но новые возможности просто игнорируются: «нет времени, мы и так не успеваем». Рефакторинг не проводится (хотя проекты в нём отчаянно нуждаются), связанность (coupling) классов велика, а связность (cohesion) низка, но никого этот факт не беспокоит, про производительность даже и говорить не буду… По прошествию некоторого времени стало казаться, что идёт попытка улучшить огромный антипаттерн.

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

Тут я понял, у нас с начальником большой разрыв в понимании смысла этого слова. Вот какое объяснение этого термина я нашёл в словаре Ожегова: «Профессионал – человек, занимающийся чем-нибудь, как профессией (в отличие от любителя)», «Профессия – основной род занятий, трудовой деятельности», «1. Человек, который имеет склонность, пристрастие к чему-нибудь. 2. Тот, кто занимается чем-нибудь в свободное время, не как профессионал».

Мне кажется, что программист это скорее профессионал-любитель (в 1ом значении этого термина), похожее мнение я вычитал в книге Роберта Гласса «Креативное программирование». Начальник считает, что программирование это лишь средство зарабатывания денег, хотя для меня это нечто большее («Ты живёшь в каком-то идеальном мире»).

Хотелось бы услышать Ваше мнение на этот счёт? Что такое программирование: искусство или ремесло?

P.S. Мне кажется, что хоть программирование это мой хлеб, возможность заработать, но нельзя садиться писать код без творческого подхода.