This is a viewer only at the moment see the article on how this works.
To update the preview hit Ctrl-Alt-R (or ⌘-Alt-R on Mac) or Enter to refresh. The Save icon lets you save the markdown file to disk
This is a preview from the server running through my markdig pipeline
Працюючи над базами кодів спадщини ( або підрядчиком ' тривалість МSK2
Wednesday, 06 November 2024
Введение
Як фрилансера, одна з навичок, які вам треба вивчити швидко - це як ефективно працювати з існуючими базами коду. Я - МСК1, МСК2, мені пощастило, що я збудував купу з-поміж цих систем. МСК3, Скращування. МSK4 - це найкращий досвідчений програміст, але це не завжди так.
Проблеми
У спадкових системах є значні проблеми, особливо коли головні розробники, архітектори, архітектори, якщо вам пощастило,
Документація
Це часто проігнорують, особливо в менших компаніях.
- Нові інструкції для розробників Отже, як ви керуєте проектом локально ( детальніше на цю тему за хвилину ), які висновки є? МSK2 якщо, наприклад, вам потрібна інша база, ніж теперішній МSK3 особливо правдива з Нодом, на жаль
- Документи для використання в наші дні, коли ЦІ, МСК0, ЦД вважаються золотом стандартом розгортання, часто проігнорують, що вам потрібно знати, як розгорнути систему ручно. МСК3. Це особливо важливо, якщо ви працюєте над системою, яка існує вже деякий час і має багато ручних кроків. МSK6
- Процедури розв 'язання проблем; що ви робите, коли система зазнає краху ? кому ви телефонуєте МSK2 які є ключові речі, які слід перевірити M SK3 часто про це не звертають уваги, але це ЧРУКість у виробничій системі .
- Архітектура / СистемаM SK1 Дизайни; як працює система ? які є ключовими компонентами МSK2 які ключові відібності M SK3 подумайте про це, як про свою дорожну мапу, коли вивчаєте нову систему . це надає вищий MSC5 рівень опису того, як працює ця система, який може бути вирішальним. МSK6 особливо у більших системах МСК7 розподілені системи MСК8 Це повинно включати в себе, які репозитори вихідного коду використовують MSК9 які системи CI МSК10 компакт-дисків використовують М СК11 які бази даних використовують для кожного елементу додатку М S К 12 Це може obejmувати будь-що від простого діаграми до повної M С К 13 розгорнутий граф UML кожного компонента системи М ็ С К 14 Наприклад, у React Application це зазвичай включатиме діаграму компонентів і те, як вони взаємодіють між собою та будь-якими задальними послугами M S K 15 В програмі .NET ядро це включало б діаграму послуг і того, як вони взаємодіють одна з одною.
Документація - одна з речей, яку ми, як розробники, часто ненавидимо робити. (it's NOT codeM SK2 but it 's crucialMSC4 Як ви бачите, я люблю позначки, " Я люблю позначку," МSK5" With the likes of Mermaid and PlantUML you can create some really nice diagrams and flowcharts that can be included in your documentation
Це має бути CURRENT. ; розробники часто говорять про біт.
МСК0 має різні рівні документації, але загалом щоразу, коли ви змінюєте код, який зображений у документі, ви маєте оновлювати цей документ.
Запуск системи локально
Це часто складно.; особливо, якщо система існує деякий час. . Вам потрібно знати, яку версію узла. МSK2 МSK3 NET і т.д.
Я часто бачив, як програмісти кажуть, що це не важливо в ці дні хмарних систем та великих дистрибутивних програм, але я не погоджуюсь з тим, що треба бути спроможним запустити систему локально, щоб швидко і ефективно розв 'язати проблеми.
- Профіляція - це, здається, стало МSK1 тільки розвиненим програмістом МSK2 навичками , але це мSK4 є вирішальним, щоб бути в змозі відображати код, щоб побачити, де є перешкоди M. Це особливо стосується спадкової системи, де ви можете не мати роскоши в тому, щоб переписати систему з нуля МСК6 Такі інструменти, як Послідування точками і Дотка пам 'ятіє недооціненими тут. Особливо в АSP . NET-пристосуваннях МSK2 найбільшими проблемами є, в основному, МSK3 витіки МСК4 у системі М СК5 викиди пам 'яті M СК6 вимики зв' язку і т.д. MСК7 В той час, як ваша програма буде чинити, що працює FINE на деякий час, ви раптово знаходите її М סК8 крах М S К9 використовуючи всі пам' ять на сервері М С К 10
- Ми знаходимо проблеми в деbugері - Хочемо чи ні дні
Response.Writeв класичному ASP є над. Для навіть скромно складної додатки МSK1 особливо ті, які ви не робилиM SK2 не пишете) це МSK4 є вирішальним для M' крок черезМСК6 коду МСК7 слідувати за запитом з самого початку через службу, щоб визначити, що може відбуватися МАСК8 які винятки можуть не бути спіймані і т.д. - Logging - Знову ж таки часто проігноровано (sorry but no an ASPM SK2NET Core exception filter at the top of the stack isn't' not enoughMSC4 Referring back to my попередній пост, журналування є вирішальним елементом роботи в коді локально . Запам 'ятайте, ви можете використовувати типи журналування покупців Генератори вихідних даних) в ASPM SK1NET Core. Далі ви можете визначити, які типи подій мають бути зареєстровані і які не повинні бути зараховані
Для прикладних інтезій ви можете потребувати польотних подорожей та інших властивостей; однаково будьте в курсі це стає дорогою і швидко якщо використовувати
LogInformationдля кожного запиту. Ви можете використати звичайний телеметрічний процесор, щоб відфільтрувати неіснуючі запити - Тестування - Дуже часто я бачу розробників, які тестують на МSK1 підготовці МSK2 або думають, що Unit Test потім перевіряють, що ENOUGH з точки зору тестування . Він є дуже яскравим мSK4 там МСК5 має велику цінність в тому, щоб використати такі інструменти, як Resharper мСК6 NCrunch для автоматичного запуску тестів на одиниці М СК7 однак пам 'ятайте, що одиниці тестують лише те, що MСК8 вони тестують mСК9 одиниця \ MС К10 \ коду \ МС К11 . Вам потрібно зберегти доступність до того, як система працює разом з іншими компонентами \ мС К12 . Саме тут і приходять тести на інтеграцію \ mС К13 . Вони тестують, як працює система як ціла ланцюга \ एमС К14 . Ви можете використовувати такі інструменті, як Шпекфлоу написати ці тести в людському форматі
У кожному проекті, над яким я працюю, перший крок - це створення системи ( або великої частини її ) яка працює локально МSK2 Дивлячись на код МSK3 яка запускає код \ , виправляючи код, ви можете відчути, як працює система
База кодів
В кожній системі це ваша джерело правдиМСК0 незалежно від того, що говорять лікарі , те, що кажуть вам інші про те, як це повинно спрацювати - ось як воно спрацює
Навігація спадщиною кодової бази
Це часто складно. МСК0, це МСК1 - як знайти шлях у новому місті без дорожної карти. МSK2 - на щастя, в програмі є точка входу, МСК3 - завантаження сторінки, ММК4 - телефон з фронтальним інтерфейсом і т.д.
Використовуйте все, що вам потрібно, щоб взаємодіяти з ним, незалежно від того, чи це 's PostMan, RiderM SK3s HttpClient або навіть веб-сторінкаMSC4 Подивіться на ваш дебаггерМSK5 сробіть дзвінок і слідуйте за ним крізь. Rinse and repeat for each part of the system
Переробка
Зазвичай залишайте це, доки ви не зрозумієте систему. Це ' Звісно спокушує ' відкинути його і почати зновуM SK3 але не протистояти цьому спокушенню МSK4 Особливо для системи, яка працює. Це спрацьовує перебудування / навіть переробка системи - це великий ризик . Так, це FUN МSK2 але за кожну лінію коду, яку ви змінюєте, ви ризикуєте ввести нові захоплюючі баги
Як і все інше, ( особливо при укладанні контракту ) вам потрібно виправдовувати роботу, яку ви виконуєте на системі МSK2 Можливо, це виправдання має зосередитися на одному з наступних M SK3
- Результати - система повільна, і її потрібно пришвидшити.
- Безпека - система небезпечна і треба зробити її безпечною . Це складно, МSK2 особливо в застарілій системі M SK3 з битами MSC4rot ви можете виявити, що система використовує старі версії бібліотек, які мають відомі проблеми з безпекою . Це хороше виправлення для роботи MST6 однакові усвідомлюйте, що вам може знадобитися переробити LOT системи, щоб підлаштувати її до потрібних точностей МСК7 знову, що призведе до МСК8 нових помилок MСК9 проблему M СК10
- Утримування - систему важко підтримувати і потрібно зробити її легшою підтримкою . В цілому, це стає чимось дуже важкою МSK2 чи теперішній тривалість життя бази коду виправдовує це МСК3 Якщо ви' витрачаєте більше часу на створення цих змін для покращення підтримуливості, ніж ви(МСК5) і ніколи не заощаджуєте для клієнта, то це не варте того М СК7 і знову(MСК8) змінили код М סК9 нові баги М הסК10
- Відчуття користувача - Я, як правило, віддаю перевагу цим питанням користувача неважливо, чи ваш код 1% кращий МSK2 вони платять за роботу, яку ви робите наприкінці МSK3 Якщо ви можете зробити їхнє відчуття кращим, ніж це ' це, в цілому, варте того \ . Однак \ МSK6 зверніть увагу на те, що це може бути | ' похибканий схил ' \ змін \МSK9 \ ви можете виявити, що ви | МSK10 \ міняєте LOT системи, щоб зробити маленьку зміну для користувача \ мSK11 \
Бізнес роботи над системами спадщини
Це часто проігнорують. МСК0, особливо розробники. МSK1 You need to be able to justify the work you're doing on a system
Я вже більше десяти років працюю підрядником. МСК1, це не так просто. МSK2, як підрядник. Кожна година вашого часу коштує клієнту МSK4, МSK5, МСК6. Потрібно додати до системи ціну переміщення, ніж ви витрачаєте.
Як розробники, ми маємо тенденцію бути жахливими бізнесменами, ми1 зосереджуємось на ' досконалості МSK3 на кожному кроці .. Насправді, МSK5, ви не маєте \ ', вам не потрібно створити систему. \ МSK7, досконалива \
У довгостроковій перспективі це включає в себе гарантування будь-якого нові код підтримується і коштує.-ефективний для запуску.МSK1 В застарілих системах це дуже складно. МSK2 Ви часто маєте пройти через болото. , хвилюючись, що коли ви вивчаєте систему, ви не можете запропонувати багато цінності. I'm not making any changes ви думаєте I'm just learning the system.
Це помилка; виM SK1 вивчаєте систему, щоб зробити її кращою . ВиМSK3 вивчаємо систему, аби зробити її ефективнішою МSK4 Ви+' вивчаєте систему, що зробить її більш піддатною підтримці . Якщо клієнт не може прийняти цього кроку MSC7 тоді вам потрібно бути дуже обережним щодо того, як ви спілкуєтесь з цим ( або шукайте нову угоду МСК9
Люди
Знову ж таки часто проігнорували. МСК0. Багато часу ви, МСК1, брали на роботу підрядника, бо якась ключова людина пішла. МSK2, МSK3 не беруть участі в політиці цього проекту. МКС4, МКС5 - це не ваша проблема. М СК6. Вам потрібно бути в змозі працювати з людьми, які є там для досягнення цілей проекту. У контракті ви маєте, як правило, пункти обов 'язку: МСК1 у моєму теперішньому контракті це МСК2 ' покращити надійність і зменшити витрати на роботу СМСК4 зосередитися на цьому SМСК5 Якщо ви не знаєте, що це означає, тоді СМС СМСК7
Запам 'ятайте, хто є вашим прямим контактом; особливо в перші кілька місяців . Обіцяйте їм, що ви будете інформовані ( ви, напевно, виграєтеM SK3 у вас немає нових властивостей, про які можна похвастатись, коли ви дізнаєтесь про те, як працює система МSK4 Я зазвичай отримую резюме щотижня. МSK5 два тижні до мого прямого контакту МСК6 це хороший спосіб інформувати їх про те що ви робите і що ви знаходите.
Пам 'ятайте: МСК0 це людина, яка підтвердить вашу fakturу МSK1 не повинно бути сюрпризів вчасно підрахунку . як тільки ви почнете регулярно перевіряти код, то це не так вже й важливе питання МСК3 у вас є запис того, що ви зробили і як це вплинуло на вас М СК4 до цього часу М S К5 вам потрібно їх про це повідомляти M С К6 Вони мусять знати, що ти робив і чому їм слід заплатити за це.
Надежність
Знову ж таки. МСК0. Повернімося до коду, який ми створили. МSK1. Якщо ви щось зміните, то треба його застосувати. .. Навіть найкращі з нас можуть це змінити. Ви не могли знати коли ви розпочинаєте. Це повертається до журналування - якщо у вас є сервер для стегінгу, він має логування LOT ( але зберігається на короткий час МSK3 тоді, коли ви відкриєте це, ви можете зібрати більше інформації про те, що не спрацювало
Неважливо, наскільки добре ви працюєте, скільки локальних тестів ви робитеM SK1 ми всі люди . Це ключова частина МSK3 робимо МSK4 не запускаємось в п 'ятницю МСК5 правило МSК6 очікуємо, що запуск приведе до нового проблеми на системі М СК7 Будьмо готовими працювати, поки це не вирішується M СК8 MСК9 Якщо ви не робите цього M SК10 не Звісно, чому це провалилось М S К11 додайте більше тестів, щоб відтворити проблему і більше запису, щоб переконатися, що в майбутньому ви помітите подібні проблеми.
Особливо для систем виробництва ваша система встановлення може не бути 1:1 ( особливо, коли йдеться про навантаженняM SK2 інструментом, таким як k6 може допомогти вам моделювати навантаження ( навіть краще локально, коли ви можете зробити правильне профілинг, як було згадано раніше
Розгортання
Знову ж таки, часто проігноровано в палкості для CI/CD є причиною цих . Простій МSK2 Ви будете закінчувати M SK3 Posiadaти дуже швидкий і ефективний спосіб розгортання системи означає, що коли ви дійсно його зламаєте, ви також можете полагодити його швидше . Якщо ваша система перевірки кодів CI означає, це займає M SK5 дні, щоб отримати PR об 'єднання, тоді це МSK6 найшвидший, який ви можете раціонально підлаштувати систему MSC7 Якщо Ваша система CD означає, что ви візьмете до ладу працюючу систему; пристосовуйтесь до довгих ночейMske9
Для ефективного розвитку необхідний ефективний механізм виправлення та застосування коду.
'Налагодження застарілих програмM SK1
Я називаю це цитатами, тому що це питання.
- Працюючи Patches
Це процес простого виправлення існуючого коду; знову переконатись, що ви проведете детальний тест і маєте на місці процеси, щоб повернутися M SK1 швидко перерозпочати будь-які виправлення. Я виграв' не брехати, що такий вид розвитку рідко є FUN, тому що ви все ще, напевно, пливаєте через болото існуючої кодової бази . Однак MSC2 це M SK3 є необхідним злом у багатьох випадках .
Як зазвичай, треба впевнитись, що у вас є якась форма тесту, щоб витягти поточний код; ідеальним є також перевірити на провал проблеми, яку ви намагаєтесь розв 'язати перед тим, як зробити виправлення . Їм потрібно мати одинаковий тест, який націлений на область коду, яку вам потрібно виправити, але це часто виходить за рамки роботи для великих систем.
I'd зазвичай використовують систему тестування в цьому порядку
- Тести на одиниці - знову ж таки, це краще, тому що ви можете використати ці тести лише для тренування коду, над яким ви працюєте . Однак МSK2 у застарілій системі вони часто не присутні МSK3 надзвичайно складно ретрофітувати МиSK4 наприклад, в системі з багатьма зовнішніми дзвінками миSK5 яка є хаотичною в тому, як вона конструюється ЯСК6 не використовуємо DI, наприклад МіСК7
- Тести інтеграції - Це перевантажений термін, оскільки він може охоплювати будь-що, починаючи з тесту на одиниці, який проходить через кілька шарів коду ( найкраще їх уникати МSK2 до використання схожих Перевірити навіть до тестів на Selenium. В цілому, ви хочете перевірити систему в цілому ; однаково, пам 'ятайте, що ці тести можуть бути повільними і нестабільними МSK2 Використовування Verify часто може бути чудовим підходом для застарілих систем, тому що ви можете, принаймні, M SK3 verify' ви M SK5 не руйнуєте інтерфейсу API системи
- Ручні тести - Кожен розробник повинен спробувати зробити руніальні тести для будь-якого тесту на коді . Це просто гарантує, що те, чого ви очікуєте від МSK2користувачеві МSK3 M( це може бути справжній użytkownik чи інша компонента системи, яка взаємодіє з вашим кодом МСК5 щоб побачити те, що вони насправді бачать М СК6 Це може бути так просто, як запускати систему локально і перевіряти вихід сторінки, або так складно, як запустити цілий набор тестів на сервері для стегінгу M СК7
- Скинінг цибулини Для роботи з застарілими системами ви, як правило, отримаєте
Для того, щоб ви могли модернізувати PARTS системи, ви можете визначити компоненти, які можна розділити з існуючого моноліту на мікросервіс (за певну ціну МSK1микроM SK2 Це може бути чудовим способом почати модернізовувати систему, не ризикуючи повністю переробити. Найпоширенішими прикладами можуть бути розділення API-ендомпонентів на нові проекти, які використовують більш обновлені елементи. Тут можуть вплинути страхи DRY, проте . Нестабільно структуроване рішення часто має багато компонентів M SK2helper' або МSK4service', які насправді мають бути в різних проектах МSK6 чи навіть у пакетах з нуджеями для більш глобального повторюванняMSC7
Я' розповім про цей підхід у майбутньому artykule, бо це ' є ключовим елементом того, як я працюю над legacy системами.
Виплачуваність
Тепер, коли ми маємо все це на шляху, з 'являється важка проблема оплати.
Будь-які проблеми з оплатою. Я намагаюсь рухатись далі
Якщо вони запізнюються заплатити, то це залежить від вашого контракту, але на Пізніше протягом 30 днів, але зазвичай ближче до МSK3 це поганий знак. МSK4 Якщо у вас є ' муки над fakturою, то подумайте про те, чи компанія здатна оплатити ваші послуги постійно.
Не заплутайся з цим, якщо ти робиш свою роботу і маєш її оплачувати вчасно. Неважливо, наскільки тобі подобається. Якщо поганий клієнт може використувати тебе, він це зробить.
Будьте чесними; платять лише за те, скільки часу ви насправді працювалиM SK1 переконайтесь в тому ' зрозуміло, що і чому ви це робили
Я – МСК0, я керував командами розробників і МSK1, я був розробником, МSK2, я – МSK3, я - подрядчик, а МSK4 - клієнтом. МSK5, я — МSK6, я бачив усі сторони цього і можу сказати вам: ;, якщо ви не отримуєте зарплату вчасно, то вам треба перейти далі.
Щодо рівня: МСК0, ви знайдете свій рівень. МСК1, особисто я платю більше за проекти, де я маю більше обов 'язків. МSK2, чи ті, які не платять. ', не виглядають весело. ММК4, я платжу менше за проекти з новими технологіями або для стартапів. ММСК6. Я також працювала менше днів, але вказувала на постійний рівень.
На завершення
Що ж, це те, що я сьогодні і завтра не працюю на похоронах моєї бабусі, і, чесно кажучи, трохи панікую, що маю велику спадщину системи для навчання. Тож я подумав, що зможу викидати свої думки про те, як це - працювати над цими системами