Перфекционизм — в психологии, убеждение, что наилучшего результата можно (или нужно) достичь. В патологической форме — убеждение, что несовершенный результат работы неприемлем. Может быть как «нормальной» характеристикой личности, так и невротическим психическим отклонением от нормы обычного человека.
Психология зависимостей
Мандель Б. Р.
Идея написания этой статьи возникла, когда на просторах рунета я наткнулся на объявление «Требуется разработчик-перфекционист». Тогда я и задался вопросом: а насколько уместен перфекционизм в коде в рамках WEB разработки? Сейчас я постараюсь рассказать, куда привели меня эти размышления.
Первым делом я ознакомился с данной вакансией и первые два пункта гласили: писать идеально красивый и рабочий код, укладываться в сроки. Насколько это нереально понятно каждому разработчику, который имеет хоть какой-то маломальский опыт работы за плечами. Это всё больше похоже на подростковый максимализм, который ещё не успел обтесаться об острые углы дедлайнов и чередой правок от клиента.
Конечно, можно соблюдать спокойствие и постоянно корректировать свой «идеальный код», тем самым затягивая сдачу проекта ещё больше. Но тогда мало кто захочет к вам вернуться. Могу сказать, что для такого программиста конечной целью становится написание так называемого «идеологически правильно кода». Из этого я могу сделать первый вывод: хороший код — это рабочий код.
Разработка сайта — это тесное и порой сложное взаимодействие между клиентом, менеджером, верстальщиком и программистом. Именно в такой последовательности хочется рассмотреть отношение этих главных действующих лиц в процессе написание идеального сайта.
Если клиента спросить, хочет ли он, чтобы программист, разрабатывая его сайт, приложил максимум усилий, чтобы привести код к идеальному состоянию, то он ответит — да. Почему? Он и сам не знает, но проект профинансирован и выжать максимум из разработчиков хочет каждый заказчик. На самом деле ему важно, чтобы сайт максимально соответствовал утверждённому им дизайну. Но без функционала это только картинка, поэтому клиент обязательно нажмёт каждую кнопку, проверит каждую форму, просмотрит каждый раздел. Если всё работает хорошо и так, как это видел сам заказчик, для него этот сайт будет идеальным.
На пути к созданию такого сайта важнейшей стадией является вёрстка макета. Для этого верстальщик должен хорошо потрудиться. На самом деле, если где-то и нужен настоящий перфекционизм, так это в вёрстке. Чем грамотнее свёрстан сайт, чем точнее в нём соблюдены стандарты — тем проще и быстрее этот макет превратится в шаблон и будет установлен на сайт. Как правило, я требую от верстальщика именно такого подхода (порой, доходит даже до выстраивания свойств стилей в алфавитном порядке).
Таким образом, важнейшим аспектом на пути к созданию идеала является функциональность и качественная кроссбраузерная вёрстка. Это важно как для клиента — внешний вид его сайта должен отвечать запросам, так и для программиста — чтобы внедрение вёрстки не требовало доработки в процессе.
Теперь давайте поговорим о программистах. Тут хочется рассказать не только о разработке новых сайтов, но и о доработке уже существующих. В силу своих повседневных обязанностей, мне приходится не только создавать новое, но и дорабатывать уже существующее, а порой переделывать настолько, что проще было бы написать код с нуля.
Так что же видит кодер, когда к нему приходит чужой сайт на доработку? Тут конечно в игру вступают исходники. По опыту могу сказать — неважно, насколько красиво и понятно написан код, если программист талантливый/опытный/начитанный — он всегда сведёт концы с концами. Если нет, то там хоть трижды пиши комментарии, нужный класс он найдёт дню так к третьему (а слона-то мы не приметили, как говорится). Конечно, гораздо приятнее работать с чистым «вылизанным» исходным кодом, когда всё разложено по полочкам и ускоряет работу настолько, насколько это возможно. Но, опять же, если сайт прошёл через две-три компании и претерпел ряд изменений — исходники без валерьянки (или кому чего) лучше не смотреть.
Тут можно вывести вторую составляющую хорошего, а может даже уже и идеального кода — небольшой рефакторинг (для читаемости кода) и комментарии к основным блокам. Всё это необходимо делать не только из уважения к своим коллегам, но и к самому себе, ибо уже через полгода вы не вспомните всего того, что делали в том или ином проекте.
Однако, плох тот солдат, который не мечтает стать генералом. Плох тот разработчик, который не хочет сделать свой код «идеальным», ведь каждый проект это и муки творчества, и усердный труд над теми или иными функциями, и пот, и кровь. Под конец ты либо влюбляешься в него, пытаясь внести туда как можно больше всяких «плюшек», «фич» и так далее, либо ждёшь не дождёшься, когда уже отделаешься от него (о каком «идеальном коде» тогда может идти речь).
В понимании клиентов и пользователей программист (тыжпрограммист) должен знать кучу языков программирования, фреймворков, идеально знать математику, физику, а в случае необходимости и написать свой язык, а также, уметь взламывать страницы Вконтакте, ремонтировать утюги и холодильники. Но программист — в первую очередь профессия, в которой определяющим фактором является умение решать поставленную задачу максимально быстро, находя кратчайший путь. Могу сказать, что каждый разработчик знает несколько языков программирования, но действительно хорошо знает те, которые приносят ему доход. Если вы программируете на php, то вам достаточно знать php, MySQL, JavaScript, хотя бы основы CSS и HTML. Этого вполне хватит, что бы успешно развиваться в сфере WEB. Добавлю: программирование дело творческое, а там где творчество — места для перфекционизма остаётся немного.
Несмотря на угрозу срыва сроков, писать достаточно хороший или даже почти идеальный код можно. Для этого самым правильным решением будет разрабатывать код модульно, выпуская продукт и совершенствуя его от версии к версии. Таким образом, и овцы останутся целыми, и волки сытыми.
Для этого я написал ряд более-менее универсальных модулей, которые можно внедрять как в распространённые CMS’ки, так и в «самописные», с внесением небольшого количества правок. Конечно, мой код сложно назвать «идеальным», но он гибкий, работоспособный и понятный — а что ещё нужно? Как правило, доводя до идеального состояния свой код, программист убивает в нём универсальность и, если вдруг понадобится внедрить данный модуль (без серьёзных переделок и некоторого количества времени) в другой сайт, это будет сложнее.
Что касается меня, то во мне перфекионист умер практически с самого начала профессиональной деятельности, когда пришлось выбирать между «красивым кодом» и сдачей проекта вовремя. Конечно, это выбор каждого. Но вывод данной статьи я могу подвести цитатой Черчилля: «Перфекционизм — паралич!».
Проведите конкурс среди участников CMS Magazine
Узнайте цены и сроки уже завтра. Это бесплатно и займет ≈5 минут.