Разработка
Артефакты пришельцев
Цель этой статьи — ввести понятие артефактов пришельцев, подкатегории legacy-кода. Я использую этот термин для описания особенно сложных и важных частей программного обеспечения, написанных очень умными инженерами, которые больше не работают в компании и, следовательно, не могут его поддерживать. Программное обеспечение действительно хорошо работает, но оно очень устойчиво к изменениям.
Унаследованный код — это термин, часто используемый для описания кода, который является старым, устаревшим и трудным для поддержки или изменения. Происходит это по различным причинам, таким как отсутствие документации, устаревшая технология или изменения в экосистеме программного обеспечения. Артефакт пришельцев трудно изменить, да, но в отличие от большинства устаревшего кода инженеры могут описать его как элегантный, хорошо документированный и протестированный. И он, несомненно, будет выполнять важную и не подлежащую замене в ближайшее время функцию, критическую для вашей системы.
Инженерам, которым поручено обслуживание инопланетного артефакта, трудно понять его работу и крайне сложно внести в него существенные изменения — но не потому, что они глупы или неопытны. Даже опытным инженерам со значительным стажем и навыками может потребоваться несколько попыток, чтобы внести существенные изменения в артефакт пришельцев.
Такие артефакты по своей природе комплексны из-за внутренней сложности и часто плохого определения проблемы, для решения которой они предназначены. Они становятся наследием, потому что их так трудно изменить, что люди не хотят даже пытаться. Одним из показателей того, что у вас на руках чужеродный артефакт, является нарастающий слой адаптеров или антикоррупционных кейсов на его краях, изменяющих входы или выходы в нужную форму, потому что изменить сам артефакт слишком сложно.
Хотя это не является существенным атрибутом, в дополнение к присущей ему сложности авторы вашего чужеродного артефакта могли использовать эзотерический язык, парадигму или методы, не применяемые в других компаниях. Возможно, они были экспертами в своей области, нанятыми или нанятыми по контракту специально для решения сложной проблемы. Более того, выбор языка и методов может быть исключительно предпочтением авторов или обсудлвден тем, что они особенно хорошо подходят к проблемной области, и вы можете не знать, к какой именно.
Помогите! У меня инопланетный артефакт: что я могу сделать?
- Понять систему: потратьте время на изучение кода и любой доступной документации и постарайтесь определить наиболее важные части системы.
- Разработайте комплексный набор тестов для определения характеристик: это необходимо для того, чтобы убедиться, что изменения, внесенные в инопланетный артефакт, не приведут к ошибкам или непредвиденным последствиям.
- Тщательно расставляйте приоритеты изменений: сосредоточьтесь на изменениях, которые необходимы для поддержания функциональности системы, а не на несущественных косметических изменениях.
Наконец, если вы решите попытаться избавиться от своего чужеродного артефакта, вам может пригодиться паттерн фиги-душителя.
Как мне вообще избежать того, чтобы моя команда создавала артефакт?
Спасибо за вопрос! Вот некоторые рекомендации:
- Включите в команду младших инженеров и/или инженеров широкого профиля; избегайте команд, полностью укомплектованных специализированными экспертами с глубокими знаниями предметной области.
- Приоритет отдавайте документации и передаче знаний, а также инвестируйте в постоянное развитие, чтобы система оставалась адаптируемой к изменяющимся потребностям бизнеса.
- Используйте стандартизированные методы программирования и избегайте использования слишком эзотерических языков и техник.
Благодарности
Благодарим ChatGPT за ценные отзывы и редакторскую работу над ранними вариантами этой статьи. Сотрудничать с ним было очень приятно. Он предоставлял последовательную и полезную обратную связь и всегда был готов помочь с любыми изменениями или вопросами, которые возникали у меня в процессе сотрудничества.
Спасибо также Сиану Синнотту за дополнительные отзывы на поздний черновик этой статьи, а моей жене — за незначительное улучшение читабельности.
-
Видео и подкасты для разработчиков1 месяц назад
Lua – идеальный встраиваемый язык
-
Новости1 месяц назад
Poolside, занимающийся ИИ-программированием, привлек $500 млн
-
Новости1 месяц назад
Видео и подкасты о мобильной разработке 2024.40
-
Новости1 месяц назад
Видео и подкасты о мобильной разработке 2024.41