@kocherginji

Как аргументировать начальству создание существующего проекта заново, с ноля?

Здравствуйте уважаемые коллеги.

Недавно я перешел на работу в интересную мне компанию. Расскажу коротко в чем суть.
Мне нравится и команда, и все остальное. Я готов трудится и решать задачи, приносить пользу себе и компании. Но я не хочу делать костыли, а тем более дорабатывать чужие, у меня есть опыт (на мой субъективный взгляд правильный) и мне хотелось бы его использовать. А еще я вижу будущее - где костыли наложены друг на друга и все трещит по швам, а с меня будут спрашивать и отчитывать за некачественную работу.

Я занимаюсь Front-End разработкой + Back-End по совместительству. В проекте из основных инструментов используется Django и jQuery. Сайт (ссылку не могу дать, чтобы не причинить репутационных рисков для компании) внешне выглядит очень хорошо, но стоило залезть в код - и я ужаснулся... До меня его писал дизайнер, писал так чтобы работало, но не заморачиваясь о поддержке и сопровождении, и ему это удалось. Сайт в целом небольшой - каталог с категориями и товарами, пара страниц, корзина.

Я же получил после него >16,000 строк кода на jQuery, >15,000 строк кода на CSS - и как скрипты так и стили находятся в одном файле (style.css, script.js), все что делается перед заливом на боевой сервер - только минификация пробелов. Ну и Django файлы и приложения с нескончаемым кол-во строк и непонятной логики, где около 50% (что кода, что файлов) написанного вообще уже не используется. Адаптивность задается с помощью javascript магии, никакого Boostrap'a и прочего...

В общем все жутко запутанно, связанно, но ни в коем случае не модульно и не связно. Документация полностью отсутствует, комментарии в коде тоже + в довесок куча было-кода.. Решая каждую тривиальную задачу мне приходится погружаться в изучение созданного велосипеда. Сложилось ощущение что с помощью дрели пытались забивать гвозди (это я про неумелое использование Django). В общем я работаю 3й день и у меня уже нет желания что-либо там ковырять. Так-же я чувствую себя плохо из-за того, что не могу гарантировать качество своей работы.

Начальство в целом понимает, что у них все не очень хорошо с сайтом. Но так получилось, что мой непосредственный руководитель главный дизайнер. Я не хочу быть многословным, и хочу демонстрировать на деле, что я профессионал. Но предлагая решения мне придется их аргументировать. Я планирую делать связку Angular2 + Node.js (для server-side-rendering) + PostgreSQL (возможно еще сделать API не на node а том же самом Django чтобы работало максимально быстро).

У меня имеется несколько вопросов к более опытным и тем кто уже "собаку съел" на этом:
- Как аргументировать и подтолкнуть к решительному шагу начальство которое практически созрело до того что нужно переходить на новый уровень?
- Подойдут ли ассоциации - например про дом без фундамента, где нужно настроить еще этаж перед наводнением. Или про старую дрель которая еле работает, и если ей сверлить бетон это будет жутко долго и неудобно, и не хватит времени чтобы дойти до магазина и купить новую?
- Любой Ваш опыт в подобных ситуациях?

Благодарность тем кто дочитал до конца, и делится своим опытом.
  • Вопрос задан
  • 1291 просмотр
Решения вопроса 1
  • @lega
    В большинстве случаев это экономический не целесообразно, и профессионал должен это учитывать.

    В вашем случае лучше попытаться плавно интегрировать опыт в текущий проект, разграничивая старый и новый код, (компоненты, микросервисы, "черные ящики" и т.п.), так же по чуть чуть можно будет подменять компоненты старого кода, на новые.
    В итоге через какое-то время новый код будет превалировать, и может даже можно будет завернуть старый код в отдельный ящик чтобы не вонял на весь проект.
    Ответ написан
Пригласить эксперта
Ответы на вопрос 12
  • saboteur_kiev
    @saboteur_kiev
    build engineer
    Задача сайта - выполнять свою бизнес задачу, а не демонстрировать красивый код в исходниках.

    Поэтому единственное, что является главным аргументом, это то, что все ваши нововведения приведут к положительному экономическому эффекту.
    То есть либо вы доказываете, что фирма заработает на этом деньги, либо сэкономит.

    Если ни то, ни другое, то с какой стати платить больше?
    Ответ написан
  • Поставьте себя на место начальства. У вас есть проект который приносит прибыль. Вы нанимаете человека, чтобы поддерживать и развивать этот проект. Новый работник начинает вам рассказывать что код хреновый, нужно писать все с нуля. А где хотя бы гарантии что через несколько месяцев вашей работы он не получит от вас точно такой же говнокод но на другом фреймворке? Потом вы увольняетесь, на ваше место приходит новый эксперт, и круг замкнулся.

    Умейте работать с тем что есть. Обговорите с начальством, что будете немного времени уделять на рефакторинг. Переписать с нуля легче всего. Но это редко нужно бизнесу. Тем более что выгода по деньгам не очевидна.
    Ответ написан
  • lomnev
    @lomnev
    PHP, Ruby developer. Корпоративные веб-приложения.
    1a. Согласуйте и перепишите по согласованию с руководством один модуль системы в виде микросервиса.
    или
    1b. Отрефакторьте по согласованию с руководством один модуль системы.
    ====
    2. Протестируйте и оцените.
    3. Отчитайтесь о результатах и пользе нового модуля для бизнеса.
    4. Повторяйте пока не останется старых модулей.
    Ответ написан
  • Сайт в целом небольшой - каталог с категориями и товарами, пара страниц, корзина


    Тут точно нужны Angular 2, серверный рендеринг на Node.js, Django и PostgreSQL? Сколько будет стоить поддержка такого сайта, если вы уйдёте? Допустим, Джанга уже используется. Но django-программист скорее будет знать обычный jquery, а не эти ваши хипстерские фронтендные фреймворки. В результате придётся или нанимать одного дорогого фуллстека (и его ещё надо будет найти), или отдельного фронтендера. Готов ли владелец к таким рискам?
    Ответ написан
  • sim3x
    @sim3x
    Как задавать вопросы http://goo.gl/spqRI2
    Никак

    Они или дойдут до етого сами и тогда наймут приличного СТО, который с большой вероятностью уволит всю команду

    Или не дойдут и медленно умрут

    Если менее критично, то тебе нужно искать книги по практике переговоров

    Также стоит убрать дизайнера от руководства тех деталями

    react - clojure
    https://www.youtube.com/watch?v=WssdWSbAPKE
    Ответ написан
  • Zifix
    @Zifix
    Qt/QML Developer & UX/UI Designer
    Аргументировать надо тем, что стоимость поддержки возрастает кратно, вероятность накосячить тоже, причем не по вашей вине.

    Грубо говоря на вот эту фичу я потратил Х, а если была бы нормальная система, потратил бы Х/5, и хотя Х величина не такая уж большая, за Y времени набегает сумма сравнимая с переписыванием. Но отдаем мы только проценты по техническому долгу, а тело все увеличивается и увеличивается, и за Y*2 мы потеряем вот столько.

    Заготовьте самые яркие примеры, отправьте ссылки на статьи про Рефакторинг и Технический долг на википедии, они написаны для неспециалистов. Не бойтесь слегка загрузить их терминами, и аналогии нужно применять осторожно, лучше если они будут в профессиональной сфере.

    Первые четыре абзаца вопроса тоже хорошие, можно их использовать.
    Ответ написан
  • @lxsmkv
    Test automation developer
    Начальство боится потерять то, что уже есть и как-то работает. Если вы будете делать новое параллельно , во внеурочное время, думаю никто не будет против :) У меня такой опыт;
    Нам передали проект с говнокодом, и архитектор и сен. дев. сказали что нужно переписать все с нуля, иначе это нам потом аукнется. Ответственный руководитель, добрый но трусливый, не дал ход изменениям. Через год руководитель ушел. И мы остались сидеть на говнокоде. А переписать все заняло бы наверно 2 недели упорной работы. Теперь просто некогда. Жаль что не решились. В принципе начальника можно было тогда уломать, но никто не был достаточно настойчив.

    По моему опыте с обобщающими ассоциациями нужно быть осторожным. Это может интерпретироваться как болтология и нежелание работать. Мол возмущаться и жаловаться все горазды..

    Думаю самый очевидный аргумент, что такая архитектура не расширяется и достигла своего предела. Если мы планируем расширяться, то нужна новая, модульная, распределенная архитектура, где несколько людей смогут работать над несколькими файлами параллельно, а фреймворк гарантирует что это все вместе будет потом работать. Посмотрите еще сколько эта страница загружается. Наверняка дольше чем нужно. Скажите что это негативно влияет на конверсию (Это чистая правда, есть статьи на хабре)
    Ответ написан
  • Sanasol
    @Sanasol
    нельзя просто так взять и загуглить ошибку
    Для вас это делать все хорошо и правильно.
    Для начальников и так работает, а надо перестать вдруг всё "новое делать" и писать с нуля и потратить (ваша з.п. * N месяцев) = кучу бабла

    Никакие аналогии не прокатят, только если этоне затронет текущую работу и вашу занятость, читай как будешь писать параллельно апдейты для текущего сайта и не забивать на него и при этом пилить новую версию.
    Ответ написан
  • basili4
    @basili4
    Программист
    Шансов нет. И даже пробовать не надо.

    Ну и еще момент. Мы разработчики порой забываем, что это Мы для бизнеса, а не бизнес для нас.
    Ответ написан
  • @Dmtm
    Android
    Поддерживать то что есть и так как есть. Попутно слегка рефакторить (типа переменные правильно назвать, лишний код вычистить - не больше). Быть готовым к увольнению и уже сейчас начинать искать новую работу.
    Ответ написан
  • miraage
    @miraage
    Fullstack Web Developer
    Я бы в лично заявил руководителю что-нибудь такое.

    "Иван Петрович, мне нравится коллектив, мне нравится идея проекта, но очень много претензий к коду. Браться всё переписывать - убыточно с точки зрения бизнеса, однако рано или поздно случится апокалипсис. Давайте найдем способ привести это всё маленькими шагами в человеческий вид. Если продолжим поддерживать текущую реализацию - получим текучку кадров, ибо с этим работать очень тяжело и убыточно".
    Ответ написан
  • @vnaz
    Я планирую делать связку Angular2 + Node.js (для server-side-rendering) + PostgreSQL

    Если сейчас работает без этого, то вы не упростить хотите, а наворотить модных хреновин. Думаю, если бы руководство знало эти ваши планы, любые ваши аргументы можно было бы засунуть под хвост.
    Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
Вакансии с Моего Круга Все вакансии
Заказы с Фрилансим Все заказы