пропонуючи великі зміни / переписати як стажиста [закрито]


15

Контекст:

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

Питання:

  1. він зловживає рамками mvc (відсутність використання моделей, ділової логіки у видах тощо)
  2. те, що нас просять зробити мало, але через низьку згуртованість у нас є два варіанти:
    1. продовжуйте перебирати речі
    2. переміщувати великі шматки коду навколо або переписувати річ

Рішення (я бачу):

  1. продовжуйте працювати з ним, ігноруйте найкращі практики на користь того, що буде зроблено незабаром, і не вводите нових помилок шляхом рефакторингу / переписування
  2. рефактор / переписати

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


7
Розглянемо спочатку дослідження, чому воно є таким, як воно є. Можуть бути вагомі причини, про які ви просто ще не дізналися.

Як і в інших державах, напевно, це є вагомою причиною - пам’ятайте, що це цілком може бути надано вам, оскільки це пріоритет. У них немає часу / бюджету, щоб переписати кожен проект, над яким ви працюєте, навчитеся брати участь - мабуть, всі інші.
Jonno

2
Майте на увазі, що будь-яке запропоноване вами рішення повинно відповідати 2 з 3 таких умов: хороший, швидкий, дешевий. Схоже, ти лише пропонуєш те, що ти вважаєш "добрим". Я не бачу, щоб ваша рекомендація була ні швидкою, ні дешевою для компанії, тому у вас буде час, щоб переконати людей, від яких очікують платити за це.
Джоель Етертон

1
Я не знаю, чому у вас рефактор і переписання написано так, ніби вони однакові. Вони не.
CaffGeek

Я знаю, що це не так, але якби ви побачили програму, знали б, наскільки вони схожі в цьому контексті
7983879342

Відповіді:


5

Добре Ось іде.

Ви вважаєте, що заявка погано структурована і погано написана.

Замовник вважає, що це робить свою роботу.

Ви хочете переписати його не з іншої причини, як покращити її «внутрішню красу».

Тож ви просите замовника витратити гроші на отримання програми, щоб зробити саме те, що робить зараз - лише ті частини, які користувач не бачить і не розуміє, будуть якось "кращими".

Основне заперечення щодо погано написаного погано структурованого коду полягає в тому, що його важко зрозуміти.

Код важко зрозуміти, він має функціональні можливості та функції, які легко реалізувати лише у погано структурованому додатку. Тому, якщо ви не дуже добре в цьому, нова програма не буде робити саме те, що робить нинішня програма, і, оскільки ви не до кінця зрозуміли, що робить оригінальний код, це, ймовірно, буде робити це неправильно.

Тож ваш клієнт зараз витратив чималі гроші, щоб отримати додаток, який помітно гірший, ніж оригінальний додаток. Ви не збираєтеся бути популярними!

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

Тому моя порада буде тримати стару базу коду та зберігати спокій. Клієнт просто хоче, щоб система, яка працює, їм не дуже важлива, якщо ви вважаєте, що код некрасивий.


Я думаю, я дотримуюся цього. Я спробую її трохи очистити, перш ніж я вийду, але здається, що величезні зміни не будуть вітатися.
7983879342

Вибачте, що настільки важко звучить на цю тему, але рефакторинг може бути дуже важким, і якщо тільки ви не зможете показати деяку відчутну користь для своїх користувачів, то це дуже невдячна.
Джеймс Андерсон

22

Запропонуйте зміни. Будьте чіткими щодо ділового випадку для кожного: Чому запропоновані вами зміни допоможуть системі загалом? Якщо це не так, очікуйте відштовхуватися. Навіщо витрачати гроші на виправлення чогось, що не зламалося? Такі причини, як зробити систему більш розширюваною та розділити занепокоєння, можуть бути дійсними (залежно від того, з ким ви говорите), але 99% часу, просто кажучи, що "не реалізовано правильно", нікуди не потраплять. Переконайтеся, що ви додаєте цінність проекту, а не просто пропонуєте зробити роботу (навіть якщо він чистить код).

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


11
+1, особливо для "в професійному світі, тому що щось було реалізовано неправильно, не означає, що воно порушено"
StuperUser

4
+1 і навпаки ... просто стає чимось реалізованим правильно, не означає, що це працює.
Джоель Етертон

11

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

Якщо ви вважаєте, що це неправда, вам потрібно буде зробити більше справи, ніж тут.

Що стосується вдосконалення програми, то, можливо, у вас є певні шанси на невеликий рефакторинг, який природно відбувається під час ваших оновлень.


1
+1 за низьку вигоду в основному перетворенні внутрішнього додатка з низьким рівнем використання. Ваш час може бути вигідніше використати в іншому місці (якщо вони не хочуть використовувати це як тренувальну вправу для вас)
uɐɪ

10

Ти стажер. Імовірно, ви абсолютно новий. Вони, напевно, підозрюють вас у ідіоті.

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

Ви хочете заслужити їх довіру. Ви робите це, написавши хороший код для задач, які вам даються. Напишіть це чисто, використовуйте найкращі практики, які ви хотіли б бачити впровадженими, але лише на те, що вам призначено. Це, мабуть, будуть дрібниці, речі, які решта команди, напевно, вважають незначними. Зроби це добре. Світлішайте куточок, де ви знаходитесь, і коли команда приїжджає сприймати перегляд вашого коду, ваші ідеї, у свою чергу, також зростуть у рості.

Зрештою , демонструючи свою компетентність та знання, можливо, ви зможете зняти пропозицію чи дві.


4

Я б цілком запропонував цю пропозицію, але лише іншим розробникам . Я б не підходив до менеджменту, так як я б уявив, що менеджмент бачив би це як певний вид перевищення меж.

Після внесення пропозиції розробникові, з яким ви працюєте, вони, ймовірно, матимуть якісь вагомі причини того, як саме база даних коду є. Причини можуть варіюватися від "ні, насправді код непоганий, ви просто не розумієте MVC (і тому ви стажер)" до "це чудова ідея, давайте архітектуру нової програми разом!"

Майте на увазі, що відповідь на рефакторинг цієї програми більш ніж ймовірно не буде; Я ніколи не хотів би, щоб стажист взяв на себе перепис внутрішнього додатка (що відбувається, коли стажування зроблено, а переписування закінчено лише напівзавершеним?) Плюс, напевно, є більш важливі речі, над якими ви могли б працювати, ніж обмірковувати внутрішній додаток .

Але ніколи не боляче запитати своїх однолітків, і якщо ви це зробите, ви чогось навчитесь. І це, 7983879342, це те, що таке стажування.


2

Що б не трапилося, я сподіваюся, що ви знімете таке повідомлення. Як зазначалося в деяких відповідях вище, іноді код переписується, з кращих технічних причин іноді неможливо з міркувань бізнесу / витрат. Занадто багато програмістів знаходяться в технічному рішенні і відмовляються вважати, що їхні особисті пошуки технічної елегантності / читабельності / найкращої практики повинні бути збалансовані потребами бізнесу, щоб досягти справ. В моєму особистому досвіді хлопець, який не досягає цього балансу (з будь-якого напрямку), часто сприймається як відповідальність всередині команди.

Хоча не переставайте розпитувати речі, навіть якщо ви отримуєте певні відкази, це ми дізнаємось і зростаємо.


2

Інші відповіді багато говорять про політику вашої ситуації, і я схильний погоджуватися. Якщо ви не можете представити переконливий бізнес-випадок, переписування, ймовірно, не є на картках.

Однак це не означає, що вам слід забути правило скаута хлопчика :

Завжди залишайте кемпінг чистішим, ніж ви знайшли.

Якщо ви реалізуєте щось на цій кодовій базі, ви можете розробити спосіб очищення певного аспекту дизайну чи реалізації, то це те, що ви повинні врахувати. Можливо, вам не потрібно переписувати всю програму, щоб краще використовувати модель MVC, і якщо ви впроваджуєте якусь нову бізнес-логіку для певного перегляду, ви можете розглянути можливість переміщення логіки зі старого виду в модель і додавши до цього нову логіку.


1

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

Отримавши цю інформацію, ви зможете зробити свою оцінку. Якщо ви особисто вважаєте, що це слід переписати, але не думайте, що інші сприйматимуть це як корисне використання часу, сприймайте це як особистий проект. Навіть якщо тут / там година, коли у вас простої, виконайте реалізацію "правильно". Як тільки ви закінчите, подайте його іншим розробникам як "ей, я відчував, що це може використати чисте прибирання, тому я зробив деяку побічну роботу під час простою. Що ви думаєте?" Не натискайте на них змін - просто запропонуйте їм їх як "ей, хлопці, як це?" і йти звідти.


0

Більшість змін відбуваються поступово, як правило.

Кілька речей, які слід пам’ятати;

  • Яка історія програми?
  • Чому це потворно сьогодні?
  • Яка користь від архітектурних змін?

Хорошою стратегією є робота над дрібними речами і задавати багато питань про речі (питання, яких ви не можете навчитися від Google чи джерела, не витрачайте часу на людей). Після того, як ви відчуваєте себе комфортно з базою коду та розробниками, ви повинні добре відчувати, чому код такий, яким він є. Іноді просто: "Ага, нам довелося щось зламати разом і штовхати у двері". Якщо ви можете запропонувати легкі зміни в невеликих частинах системи, які відбуваються в процесі вашої нормальної роботи, це отримає більше тяги, ніж радикальні переписування.


0

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

Тому не кажіть: "Нам потрібно переписати цю жахливо розроблену систему, яка порушує основні принципи MVC", а задайте це як відкрите запитання відповідним вищим людям (людям безпосередньо над вами). Щось на кшталт "Мені цікаво, чи перезапис системи в MVC-модель може заощадити багато часу в довгостроковій перспективі. Як ви думаєте? Думаю, ми могли б вдвічі зменшити час технічного обслуговування з основним перезаписом (скажімо, за 2 тижні), що включає в себе модель MVC, TDD і т.д. було зроблено, і що через два місяці звичайного технічного обслуговування ми зламаємо навіть ". Відповідь може бути, ні, ми не вважаємо, що цього вимагають - я не згоден з вашими оцінками часу та ймовірністю, що нова система стане відповідною заміною. Або відповідь могла б бути чудовою, але пам’ятайте, чи ваша нова система не ' не працюйте так добре / краще, ніж нова система у запропоновані вами часові рамки, в яких люди будуть звинувачувати вас. І навіть якщо система мало використовується; може не прийнятно зупиняти оновлення з незначними виправленнями протягом періоду перезапису.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.