Довольно часто, особенно на фрилансе, натыкаюсь на проекты, которые по словам заказчика уже практически готовы, на 70-80-90%, осталось только немного доработать, совсем чуть-чуть, возможно исправить некоторые небольшие ошибки, некорректную работу некоторого функционала и т.п. Соответственно оплата за такую «чуть-чуть» доработку небольшая, но ведь и сделано уже практически всё, осталось только самую малость, поправить или доделать.
Такие проекты меня всегда настораживают. И первый вопрос, который в таком случае задаю, почему не доделывает тот разработчик, который начал этот проект, что с ним случилось?
Чаще всего наступает некоторая пауза и потом мне говорят, что у разработчика другая, более важная работа, он не может от нее отвлекаться в настоящее время, а проект срочно надо заканчивать.
Второй вопрос, который у меня возникает, есть ли возможность общения с разработчиком для прояснения нюансов? Задаю этот вопрос, чтобы понять, насколько хорошо расстался Заказчик с разработчиком. Этот вопрос также позволяет прояснить, насколько корректен Заказчик со своими работниками, хотят ли они продолжать с ним общение.
Был у меня случай на фрилансе, когда Заказчик заявил, что разработчик пропал и на связь не выходит. Причем его пробивали по чужим телефонам, и на них он реагирует, а вот на телефоны Заказчика нет. При более плотном прояснении ситуации оказалось ,что перед разработчиком была поставлена очень объемная задача создания туристического мультиязычного портала, с жесткими сроками (3-4 месяца) и мизерным бюджетом (35 тыр.). Приблизительно через пару месяцев, когда разработчика забросали хотелками, правками и доработка, он оценил перспективы и естественно слился. Задача была явно неадекватна предлагаемому бюджету.
Следующий вопрос, который меня интересует в таких ситуациях, еще не глядя на сам проект и его наполнение, кто и как ставил задачи разработчику? Тут ответы бывают разные, но ведение документации по проекту, как показывает моя практика, отсутствует везде, по таким недоделанным до конца проектам. В лучшем случае есть человек, у которого есть некоторая картинка проекта, в его «умной голове», и он может пояснить свои хотелки, что и как должно работать, и возможно даже имел дело с программированием, хотя сам этим и не занимается. Это еще не самый худший случай, хуже, когда задачи набрасывались в проект от разных сотрудников и программист их как-то переосмысливал и реализовывал в проекте. Хорошо, если в такой ситуации над проектом работал один разработчик, бывает, что через проект прошло 2-3-5 человек, каждый из который скорее всего привнес что-то свое, свои подходы, стилистику, логику, инструменты, библиотеки, фреймворки и т.д. В такой ситуации обязательно стоит взглянуть на внутреннее состояние проекта, код, базу данных, систему работы с кодом, еще до принятия каких-либо решений по сотрудничеству и работе в проекте.
Когда доходит до просмотра кода, то мне начинают чаще всего что-то очень подробно рассказывать о хотелках, что хотят доработать. Причем акцент делают на какой-нибудь простой задаче, вероятно не хотят отпугивать. Но я кивая, и соглашаясь с простотой задачи, смотрю на интересующие меня внутренние проблемы.
Прежде всего структура базы данных, и структура самых больших таблиц. Всегда (!) таблицы в таких «чуть-чуть» недоделанных проектах плохо нормализованы, и чем больше данных в таблице, тем она шире, встречал таблицы с более чем 50 колонками (речь о реляционных СУБД). Когда вижу такое, то первое, что приходит на ум – это делал Джун. Но если разобраться, то возможно это был программист и более высокого ранга, просто ему лень было наводить красоту в БД. Решая небольшую задачу, он просто добавил пару колонок в базовую таблицу. Следующий программист поступил также, чтобы сильно не заморачиваться. В итоге имеем плохо структурированную и кривую базу данных в проекте, который уже «практически готов», и переделывать базу данных уже никто не станет. Но вот с этим получившимся чудом надо «чуть-чуть» поработать, чтобы довести до ума, осталось ведь совсем немного, по мнению заказчика. И вот уже стоишь перед выбором, сделать также как и предыдущие разработчики, добавить и пару своих капель (колонок) в эту очень не маленькую таблицу, или перекроить базу по правильному, поправить все запросы к базе, в общем выполнить глубокий рефакторинг, но за оплату, в размере 1/10 части (хорошо если так 🤔) от того, что заплатили предыдущим разработчикам этого чуда.
Об одном недавно произошедшем со мной случае, в эту тему, хочу подробно рассказать.
Натолкнулся на объявление, на ресурсе по кадровому подбору. Ресурс не очень известный, но активно продвигаемый на ряде Телеграм-каналов связанных с предложениями работы соискателям. Вот текст этого объявления:
посмотрел на сайт, по тем ссылкам, которые были указаны в объявлении – всего 2 страницы, правда есть некоторая CSS и JQuery анимация, но вроде бы ничего сверх естественного не замечено. Обозначенный бюджет конечно мелковат, но все же лучше, чем делать тестовые за бесплатно (мне так подумалось 🙄). Смутила правда длительность проекта – 2 недели 😮. Что на 2 страницах можно 2 недели делать? Решил пообщаться, вдруг что-то из этого получится. Написал автору объявления письмо на почту и получил ответ, с просьбой перейти на общение в мессенджер. Не буду полностью приводить диалоги, выделю наиболее значимое:
Что важно отметить, по мнению Заказчика сайт готов на 70%, как он это определил, если реализацией занимался другой человек? Вероятно по набору хотелок, остались еще 30% нереализованных хотелок. Трудозатраты программирования таких дополнительных хотелок могут существенно отличаться от затрат на предыдущие, правда как в большую, так и в меньшую сторону.
Создатель первоначальный, всего этого чуть-чуть не доделанного проекта, «ушел в отпуск» по словам заказчика, и вдруг появилась острая необходимость доделать сайт с помощью другого разработчика. Настораживает! 😲 Странный несколько подход, на мой взгляд было бы проще подождать выхода человека из отпуска. Ведь он знает и понимает написанный им код, понимает как его можно дополнять, расширять, масштабировать, если действительно разбирается в программировании. Соответственно сделает все намного быстрее нового программиста, которому еще потребуется время разобраться.
И что самое интересное – цель! Надо "завершить сайт" с неопределенным еще набором доработок - "переделать 100% что угодно".
Далее диалог свернул в очень интересном направлении, на мой взгляд, это характеризует Заказчика не совсем положительно:
А вот здесь уже проявляется отношение к нанимаемым исполнителям. Если человек не приступил к работе, то он «клоун». Но ведь могли просто не договориться. Так что звоночек не очень!
И есть еще исполнитель, который уже пилит проект, зачем ему еще один на сайт всего из двух страничек? Или заранее предполагается, что он тоже «уйдет в отпуск» как и первый создатель?
Диалог продолжаем:
"Недопоняли друг друга..." - значит программист не умеет работать с сайтом. Интересный вывод! Да и к тому же Заказчик сам переверстал сайт. Вот это уже интересный поворот, то есть над проектом поработали минимум 3 человека. И не понятно, если Заказчик умеет верстать, то в чем проблема сверстать адаптивные страницы для корректного отображения на мобильниках? 😕
Далее следовало перечисление небольших доработок, которые необходимо реализовать в первую очередь:
Решил посмотреть, что же это за чудо такое в коде, и получил от Заказчика архив файлов сайта.
А вот анализ архива файлов вызвал некоторое недоумение, куча всего и вся, смесь каких-то надерганных из Интернета решений. К тому же большинство файлов архива явно были пробными вариантами, которые пытались внедрить, но отказавшись от использования не удалили. Архив проекта фактически наполовину был забит мусорными неиспользуемыми файлами, назначение которых еще предстояло установить.
Заглянул в код, чтобы найти начало и концы для решения обозначенной задачи. По коду было понятно, что разработчик пытался изобразить какой-то фреймворк, но сделал это очень неумело и запутанно. Делать такое для двухстраничного сайта, странный подход. 🤔 На бэке сайт был написан с применением РНР. Хотя в объявлении Заказчика об этом не было ни слова.
Судя по коду, при обращениях к страницам сайта производилась переадресация с этих страниц на несуществующий файл, затем на сервере в файле htaccess происходила переадресация на существующий скрипт, причем на один и тот же с обеих страниц. Можно было предположить, что этот файл выполнял роль контроллера, но в нем был так смешан весь код, что меня стало передергивать при просмотре. Вот небольшой блок кода скрипта, в котором переплетены сразу 4 языка: HTML, CSS, Jquery, PHP
За такое надо как минимум ругать, и точно не поддерживать и «дорабатывать».
В скриптах языки идут вперемешку отдельными блоками, блок HTML, потом блок JQuery, потом РНР, в котором происходит подключение кода перемешанного из всех этих языков (см. скрин выше). Даже стили, которые по хорошему лучше выносить в отдельный файл прописаны всеми возможными способами, и в отдельных файлах, и в блоке head, и в самих тегах:
По сути, Заказчик предлагает во всей этой несуразице разобраться, и внести исправления. И либо пойти по пути адекватности усилий предлагаемому бюджету – найти проблемную часть кода и поправить только в том месте, где находится проблема. Но таких проблем обозначено несколько, и кривой код может привести к тому, что исправление в одном месте приведет к появлению новых проблем в других местах. Значит код надо приводить в порядок весь. Проекту требуется глубокая переделка, и уж точно не небольшие доработки.
Вот и срок в 2 недели, явно был обозначен Заказчиком не спроста.
Осталось только найти программиста, который готов перелопатить весь этот непрофессиональный код и привести в порядок за вполне себе небольшую оплату. Бюджета даже не хватит на создание одной полноценной страницы с уникальным дизайном и анимацией. По хорошему проект надо начинать заново, с учетом существующих проблем.
Я отказался от работы по этому проекту, сказал как есть, что испытываю резкое неприятие такого кода, он меня раздражает. Ни денег, ни положительного опыта, такой проект явно не принесет. Да и код самого проекта стыдно даже в портфолио показывать.
Автор после этого разместил новое объявление по поиску разработчика с просьбой отзываться только адекватным и компетентным:
И будет этот Заказчик еще долго искать «адекватного» программиста, который готов за 5 тыр. реализовывать его хотелки в течение 2 недель. При том, что надо будет затратить существенное время на приведение проекта в порядок. Компетентный программист вряд ли в такое будет вляпываться.