Сучасна диджитал-освіта для дітей — безоплатне заняття в GoITeens ×
Mazda CX 5
×

Переписывание легаси

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

Всем привет!
Настало время для пятничной темы))

Я работаю в фронтенде 2 с лишним года, повидал разные проекты, но недавно меня перевели на «новый» проект.
Суть вот в чем: мы переписываем старое легаси приложение, которое работает в браузере как java аплет на новую версию Ангуляра. Единственная документация — это код этого аплета, и порой чтобы понять как должен работать тот или иной функционал, приходится колупать код (напоминаю, я фронтенд а не Java developer). К тому же всю эту радость нужно разворачивать локально, а так как в качестве БД там MS SQL — приходится еще и ставить Винду как виртуалку.

Ну и вишенкой на торте является требование повторить дизайн старого приложения (видимо на дизайнера денег не хватило).
Хочется услышать мнение экспертов, потому что либо со мной что то не так, либо изначально был выбран не тот стек для реализации и мои пригорания пятой точки вполне оправданы.

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

В двух словах с вашей конторой не так все. Я как раз занимаюсь такими проектами: делаю трансляторы с Java applets/VB6/Etc -> TypeScript + angular. Трансляция происходит АВТОМАТИЧСКИ. То есть на входе путь к легаси, нажимаем кнопку и на выходе новый код. Там конечно нужно немного поработать напильником, но не много. В результате и дизайн, и кодбейс остаются практически такими же, воспроизводится все включая некоторые багофичи.

То есть, вместо толпы фронтендщиков можно нанять одного меня + одного фронтенда, который это все напильником допилит

а можешь говно двквери в реакт перегнать?

только это не как с джавой где структура — в джквери ее особо нет, а в реакте должна быть

Так на выходе будет не просто старый легаси, а легаси обкуяченный транслятором? Мне уже немного стремно, осталось только минимизатором обработать :-)

На выходе будет код на другом языке

Оптимизированный нет, частично смогу

Я имею ввиду, что я заказчику обхожусь сильно дешевле чем штатные разработчики матлаб

Трансляция происходит АВТОМАТИЧСКИ.

Шикарно!
Я помню когда вышел VB.Net клиенту продали переписать весь проект с VB6 на него. Мол на новой версии Бейсика все быстрее будет... Но проект на миллионы строк кода, который до этого писали 5 лет, заэстимейтили переписать за несколько месяцев!
Ну что там сложного — просто ведь новая версия языка? За первые два месяца написали автоматический перевод ASP + VB6 в ASP.Net + VB.Net. В основном путем замены регэкспами — Рослина тогда еще не было.
Сконвертили — и понеслось! За оставшиеся пару месяцев нужно было просто «пофиксить баги».
Про то, что у ASP.Net совсем другая архитекрура, свой кучерявый пайплайн, ADO.Net != ADO и все остальные тонкости .Net тогда еще никто не знал.
Зато за эти 2 месяца девелоперы таки выучили .Net и поняли что «ошибка в ДНК». Код, конвертированный из VB6 выбросили, согнали девелоперов со всей компании и раздали переписывать руками. Каждому по странице — лишь бы как, абы побыстрее...
Я думаю компания тогда крупно потеряла, примерно год переписывая все за свой счет. Зато клиента удержали и он еще много лет платил за фикс багов и поддержку всей этой кучи говнокода.

Ну один будет долго пилить напильником то этим :)
Года 2-3 чтоб только логика вся работала процентов на 90 корректно
Поэтому сейчас там 4-5 человек

Видел такое при мигрировании с делфи на C#. Много рутинной работы это экономит, но по итогу код был говно, а стал еще говнистей. При этом обязательно на проекте нужны делфисты и сишарперы. Их конечно надо меньше чем если просто ручками все переписать, но это точно не 1 делает работу 10х скорее 1 за 2-3, но не более. Может в других случаях экономия больше, но это то что наблюдал.

Ну слушай, ты хочешь чтобы я вовремя трансляции ещё и код улучшал?

Просто надо осторожно писать такие вещи, а то потом появляются манагеры, которым куа не нужны(можно совмещать роли, но не вешать всю ответственность на написавшего код), все проблемы инфраструктуры решаются чем-то вроде кубернетес и докер, а так же верящие что есть 10х разработчики которые за тот же прайс имплементят в 10 раз больше фич, да еще покрытых с ног до головы тестами которые раз написал и вообще можно не возвращаться.

верящие что есть 10х разработчики которые за тот же прайс имплементят в 10 раз больше фич

Про «за тот-же прайс» ты сильно ошибаешься. 10х стоит в 20 раз дороже

Я сомневаюсь, что они вообще существуют. Максимум разрабы в узкой области с предыдущим опытом работы со стеком. Вот если мы возьмем типичную зп в США в 80к баксов для разраба средней руки то я как-то очень сомневаюсь, что существует сколько-нибудь существенный слой разработчиков получающих больше 300к в год. Не говоря уже о х20 рейте.

Ну так и получение опыта на 300 штук нетривиальная задача

Не подобається і розумієш, що не твоє(не те що обіцяли на співбесіді) не виправдується з точки зору росту або ж зп чи щось подібне, просто оновлюєш резюме і шукаєш те що буде подобатись, і по зп плюс можна отримати, і проект цікавіший знайти, ніби ж очевидні речі

Я работаю в фронтенде 2 с лишним года, повидал разные проекты

Ничего то ты не знаешь Джон Сноу. Посудите сами. В джава мире уже мало кого удивишь проектом старше 15 лет, а то и 20 лет. Теперь уже скриптовые проекты есть которым по 15+ и их будет все больше.

Единственная документация — это код этого аплета, и порой чтобы понять как должен работать тот или иной функционал, приходится колупать код

Типичный случай. Доки либо есть, но их никто не обновлял, либо найти в них хоть что-то не представляется возможным или вообще не парились с написанием. В такой ситуации остается надеяться что кто-то из старожилов на проекте поможет со стороны клиента либо вводить мультипликатор на любые эстимейты.

К тому же всю эту радость нужно разворачивать локально, а так как в качестве БД там MS SQL — приходится еще и ставить Винду как виртуалку.

Это не самое плохое. Хуже когда дают дев базу с которой работают много разрабов и надо договариваться как друг другу не мешать.

Ну и вишенкой на торте является требование повторить дизайн старого приложения (видимо на дизайнера денег не хватило).

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

либо изначально был выбран не тот стек для реализации и мои пригорания пятой точки вполне оправданы.

А какие варианты стека ? Сменить ангуляр на что-то еще, но это так себе затейка. Может оказаться, что сменили шило на мыло. Всех причин выбора ангуляра я не знаю потому детальней сказать сложно.

требование повторить дизайн старого приложения

Делаешь скриншот приложения, ставишь его бекграундом на div, в него тег map и погнал строчить прозрачные кнопки ;)

Invision не засудит потом за кражу идеи ? =)

йопаний стид! переписать проект: ужас-ужас! куда катиться ІТ?

Ну тобто ти працюєш програмістом і от тобі дали типову роботу програміста? Боже який жах, тікай негайно!

та я бы не против, переписывать старое на более новое — это круто, но отсутствие нормального енвайронмента с тестовыми даными и отсутствие автоматизированного процеса деплоя, плюс особо специфический интерфейс, который не особо вписывается в концепцию веба не совпадает с моим образом

роботу програміста

(делать удобные и производительные приложения)

Какого года легаси приложение? Судя по джава апплетам, скорее всего года до 2010 (более позднее легаси обычно либо на стратс, либо на JSF). В тот период дикого IT-запада не часто можно было встретить автоматизацию, CI, автотесты и все остальное, что сейчас воспринимается как должное. Это период диких VCS типа SVN и Clearcase. Кривых систем трекинга типа Redmine и QualityCenter. Кривых неповоротливых апп-серверов. При работе с легаси важно всегда помнить и понимать, откуда оно пришло и сколько лет оно уже живёт.

(делать удобные и производительные приложения)

Можно, конечно, себя обманывать, учитывая перегрев рынка и прочие факторы, но работа коммерческого программиста — это прежде всего делать приятно своему пользователю/заказчику, а не удобные и производительные приложения...

та я бы не против, переписывать старое на более новое — это круто, но отсутствие нормального енвайронмента с тестовыми даными и отсутствие автоматизированного процеса деплоя, плюс особо специфический интерфейс, который не особо вписывается в концепцию веба не совпадает с моим образом

Если чувствуешь, что напрягает, то ищи другой проект. Я после того, как вытащил проект из полного дна, тоже теперь не могу такого видеть в других местах). То есть, от слова совсем.

гоу к нам ? у нас все что душа пожелает. разработка на продакшине. без тз . без тестирования. прямо по живых данных и на живых людях. а ?

Ф деньги пахнут? Сидишь ровненько на попе и переписываешь)) могу я за тебя переписать, но на реакте

За такое нужно просить больше денег и больше отдыхать, так как удовольствия там мало. Ещё бы разбавить более обычным свежим проектом. Тогда комфортней будет, так как разнообразие не даст подумать о самоубийстве :)

BA бы вам толковый пригодился, хотябы ненадолго
чтоб бегал среди стейкхолдеров и приходил со схемками и текстами че как куда зачем

зачем? если есть уже исходники от полностью рабочего приложения

«сміявсь»

бегал среди стейкхолдеров и приходил со схемками и текстами че как куда зачем

Разве это не архитетор? :-)

с use case-ами, не с диаграммами классов)

Ой, ну еще один слайдик добавить, делов то :-))))

Ну и вишенкой на торте является требование повторить дизайн старого приложения (видимо на дизайнера денег не хватило).

подозреваю, что вопрос был не в дизайнере, а в орде юзеров, для которых любое изменение, вплоть до иконки на тулбаре это стресс и повод для вызова эникейщика для ликбеза.

Хочется услышать мнение экспертов, потому что либо со мной что то не так, либо изначально был выбран не тот стек для реализации и мои пригорания пятой точки вполне оправданы.

«Не согласен — критикуй, критикуешь — предлагай, предлагаешь — делай, делаешь — отвечай!»
а какой должен быть стек? по входным данным мало что понятно. подозреваю что было какое-то апи, к нему был фронтенд в виде явааплета, теперь же надо другой фронтенд. что не так?

Единственная документация — это код этого аплета, и порой чтобы понять как должен работать тот или иной функционал, приходится колупать код

Что не так? Парень тебе звиздецки повезло! У тебя есть рабочий апп в который ты можешь даже ночью включить и посмотреть как оно должно работать! И не надо эти 100500 сраных митингов с бесконечным бла бла бла, с голосованием как нам подвинуть кнопку!

Я о таком разве что мечтаю, хотя уже больше 8 лет в IT! Или ты думаешь все эти говорящие головы-передасты или иффиктивные скрам-мастерки и прочие офисные тушки из-за бугра тебе дадут здравое ТЗ?

Я кстати работал на подобном, когда рабочий апп был, и это офгенски, очень! Общаться с техникой куда легче чем с людьми.

Насчет дизайна, тебе не пофиг? Ну были бы новые скриношты, новая верстака ну или бы ты еще и верстал в придачу, фулл стэк же! Да и добавление в команду верстальщиков и дизайнеров только добавляет сложности и митингов.

тут скорее дело не в легаси, а в вырвиглазном и непродуманом с точки зрения веба дизайна (где весь основной функционал помещен на одной non-scrollable странице), и атрибутах десктопного приложения в браузере (scroll некоторых компонентов, resize, context menu итд)

Что не так? Парень тебе звиздецки повезло! У тебя есть рабочий апп в который ты можешь даже ночью включить и посмотреть как оно должно работать!

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

Не скажу что там насчёт Java, но главное что тебе нужно чтобы переписать — это МОДЕЛЬ ДАННЫХ. То есть что какая таблица несёт, что какое поле значит, что с чем связано какими ограничениями. С этим ты задачу осилишь. Без модели данных — БЕГИ с проекта, ибо это фейл.

Модель может быть худо-бедно прописана в самих Java классах данных. Особенно если там Hibernate или что-то подобное уже пользовалось, то есть легаси не времён динозавров. То есть логики в подобных классах нет, там только структуры данных, почти что объявление таблиц.

select * from prodaji where otkat_sum>=nakladnaja_sum/4

/* tak i givem */

мы переписываем старое легаси приложение

И это уже замечательно! Гораздо хуже если бы вам надо было оживить и поддерживать старое. На переписывание клиент не соглашается в 80% случаев — вам повезло.

приходится колупать код (напоминаю, я фронтенд а не Java developer)

Я C# девелопер — но какой только код не приходилось колупать! В том числе и ненависный жабаскрипт. Сейчас дефицит кадров — все хотят «фулстек», в лучше «универсала» который будет делать все.

БД там MS SQL — приходится еще и ставить Винду как виртуалку

MS SQL теперь можно ставить на Линукс — не страдайте:
docs.microsoft.com/...​etup?view=sql-server-2017

требование повторить дизайн старого приложения

И в чем сложность? Было бы лучше если бы на входе дизайнер нарисовал овальные кнопочки с градиентом и рюшечками? Дизайнеры они-то художники в душе, а на возможности HTML и CSS им плевать.

изначально был выбран не тот стек для реализации
на новую версию Ангуляра

 — это не тот стек? Но вы же вроде фронтенд девелопер? Или Ангуляр больше не модно?

мои пригорания пятой точки вполне оправданы

Полностью оправданы! Невозможно грести старое говно и не чувствовать отвращения... но человек со временем привыкает ко всему.
Вот мой кейс более вонючего легаси — к сожалению без переписывания:
dou.ua/forums/topic/15512

Проблемы есть две:
1. Если долго заниматься легаси, можно выпасть из обоймы.
2. Рекрутеры и молодые бородатые вейперы считают , что «долго» = полгода и не возьмут вас на проект с современным стеком технологий.

с вами все так

просто, требования бизнеса такие.
сначала — повторяем как было
потом, может быть — улучшаем.
но потом. и только потом.

немного демотивирует все это

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

либо изначально был выбран не тот стек для реализации

сколько лет приложению? если тогда не было ангуляров с реактами, то оставался только адобе флеш

в качестве БД там MS SQL

хорошая БД.

приходится еще и ставить Винду как виртуалку.

это проблемы разработчика. почти никогда ради удобства дев окружения технологии не выбираются.

мои пригорания пятой точки вполне оправданы.

оправданы конечно.
если вы не можете что-то изменить в разработке, а чувствуете что получите удар по психическому здоровью — то конечно можно рассматривать и вариант смены работы

не факт что там, в другом месте ситуация не повторится.
перевод работающих проектов с старых технологий на новые — вполне частая задача.
придете в другое место — а там тоже легаси проект, и надо с адобе флеша перевести на ангуляр.
а документации нет, и надо колупать код ActionScript и это «демотивирует»

значит, нельзя вам вообще с легаси работать. имеете полное право работать только с новыми проектами.
а у нового проекта бек на ... который поди разверни ... бекендеры api не описали, и меняют его каждую неделю, и, ... и ...

Ну Трудно, а в чем конкретно проблема?

навєрно в том шо надо Виндовз

Можно попытаться донести до руководства, что есть их вариант — (долго, некачественно, дешево).
Есть вариант переписать всё под чистую -
(быстрее, качественее, наверное дороже, т.к. надо будет как минимум ТЗ).
Можно ещё сменить работу/проект.
----
MS SQL можно ставить на linux’ах

донести пытался, но безрезультатно, нужен именно один в один (так как я понял нужно будет пользователям переучиваться на новый дизайн), немного демотивирует все это

там просто еще небольшая утилита идет в придачу, для которой необходима Винда. я бы с удовольствием поставил

MS SQL

 на Ubuntu и горя бы не знал

Тоді до чого тут ms sql? Чи це утиліта пов’язана з базою даних? Спробувати запустити цю утиліту під wine, останнім часом його допиляли і запускається практично все (якщо ні, то викласти на форумі wine логи і щось підкажуть). Вінда переважно не потрібна, це переважно або корпоративні вимоги (теж не потрібні), або питання звички/налаштування.

Upd: або знайти аналог утиліти під убунту — «ім’я, сестра, ім’я» ©

Ну так запускайте в виртуалке — утилиты.
Запускать базу в виртуалке только изза утилиты — это как покупать грузовик изза необходимости раз в год перевести 300кг картошки за раз(проще купить прицеп)

Підписатись на коментарі