Интервью с Максимилиано Контьери: преодоление разрыва между промышленностью и научными кругами

Интервью с Максимилиано Контьери: преодоление разрыва между промышленностью и научными кругами

19 декабря 2023 г.

TL;DR: мое недавнее интервью для подкаста Semaphore

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

https://www.youtube.com/v/q0VtmkA6sVM?embedable=true

Отредактированная транскрипция

https://semaphoreci.com/blog/maximiliano-contieri?embedable=true

Благодаря своему 30- и 25-летнему опыту работы в индустрии программного обеспечения и компьютерных науках Максимилиано Контьери неоднократно становился свидетелем «напряжения», возникающего между обеими сферами.

Поскольку промышленность часто опережает академические круги, студенты часто придерживаются устаревших или неточных взглядов (например, программирование как одиночная деятельность). «Они думают, что программирование похоже на голливудские шоу на заднем плане, в подвале и в одиночестве, а мы пытаемся сказать: «Нет, это контактный вид спорта с большим количеством людей и командной работой», — шутит он. И наоборот, в отрасли используются методы, которые ученые годами считали плохими (например, нули, синглтоны). По этой причине Макси считает, что это все еще «очень незрелая профессия», которая для общего блага должна преодолеть разрыв между промышленностью и научными кругами.

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

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

Макси подчеркивает, что для преодоления этого разрыва необходимо быть адаптируемыми и учитывать контекст. Учёные и специалисты должны выйти за пределы своей зоны комфорта, читая, изучая и взаимодействуя с другой стороной. С этой целью обе группы должны быть в курсе более широких тенденций и достижений за пределами их непосредственной ниши и рассматривать различия как возможности для взаимного обучения и роста.

Устранение разрыва посредством разработки через тестирование

Макси считает, что TDD может преодолеть разрыв между академической и реальной сферами разработки программного обеспечения. Разработка через тестирование (TDD) — это практика разработки программного обеспечения, в которой особое внимание уделяется написанию тестов для вашего кода до написания самого кода. Это итеративный процесс, который включает в себя написание теста, проверку его неудачи (поскольку еще нет кода для его прохождения), написание кода, достаточного для прохождения теста, а затем рефакторинг кода для улучшения его качества.

Макси определяет TDD как «методологию обучения, а не методологию тестирования», по его мнению, «Это даже не методология разработки: это методология, позволяющая узнать, как устроен мир». strong> Таким образом, он считает, что TDD является мощным инструментом для:

* Открытие и обучение. Написание тестов заставляет вас извлекать варианты использования и понимать проблемное пространство. * Создание чистого кода: жесткое кодирование с последующим рефакторингом приводит к созданию более простого и удобного в обслуживании кода. * Регрессионное тестирование и извлечение знаний: каждый тестовый пример собирает конкретные знания о поведении системы. * Создание хороших научных моделей. Отражая реальное поведение, TDD помогает создавать точные модели того, как должна работать система.

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

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

При этом Макси ясно дает понять, что TDD — это не панацея; для эффективной реализации требуется перевоспитание и значительный период обучения. В связи с этим, хотя команды Макси активно используют TDD, он признает, что это не универсально. Он разделяет точку зрения инженера-программиста Кента Бека о том, что TDD может подойти не всем, особенно тем, кто склонен к беспокойству или чрезмерному проектированию. По мнению Макси, неуверенность программиста в отношении жесткого кода и склонность к чрезмерным обобщениям также могут удерживать его от TDD.

Использование TDD в устаревших системах: постепенный подход

В случае устаревших систем Maxi признает сложность комплексной реализации TDD в сильно связанных средах. Однако он предлагает стратегический подход: использовать TDD в изолированных частях системы и постепенно разлагать унаследованную систему на основе подхода Майкла Физерса к унаследованному коду. «Вы не можете сразу написать весь код с использованием TDD в устаревшей системе, но вы можете использовать его в отдельных частях для декомпозиции наследия», – утверждает он.

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

Использование TDD в устаревшей системе — непростое и быстрое решение; это требует самоотверженности и настойчивости, особенно потому, что он включает в себя процесс обучения и реабилитации команды, чтобы адаптироваться к этой методологии в такой среде. Тем не менее, Макси призывает попробовать, несмотря на трудности: «Это окупается, это ваш выбор. Попробуй это. И постарайтесь. Не пробуйте это в течение нескольких дней, потому что это не для тревожных людей. Так что это расстраивает. Конечно, это расстраивает. Вы обучаете. Вы находитесь на реабилитации».

Книга по чистому коду: руководство Maxi по созданию лучшего программного обеспечения

Во время пандемии COVID-19 Макси начал регулярно вести хронику своего опыта в обеих сферах, кульминацией которого стал выпуск его последней книги «Поваренная книга чистого кода». Название книги вдохновлено определением чистого кода, данным Робертом К. Мартином (дядя Боб).

Макси представляет книгу как сборник рецептов, хранилище своего собственного опыта, наполненное принципами дяди Боба, но обогащенное его собственными уникальными взглядами и обширным опытом, предназначенное для опытных программистов, которые могут не осознавать, что совершают определенные ошибки.

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

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

Признавая существование многочисленных определений «чистого кода», книга Макси избегает увязнуть в теории и, в свою очередь, представляет конкретные рецепты, показывающие, как преобразовать «основные фрагменты» в лучшие решения с ощутимыми результатами. В книге объясняются причины каждого рецепта, предоставляются теоретические и практические основы для его рекомендаций. Точно так же книга пытается быть языковой агностикой, предоставляя источники на 25 различных языках.

Итог

Купите книгу рецептов чистого кода и прочитайте последнюю публикацию в блоге Макси на cleancodecookbook.com. Оставайтесь на связи с опытом и обновлениями Макси в Twitter/X с помощью его имени @mcsee1. Вы также можете ознакомиться с его недавними конференциями, подкастами и предстоящими мероприятиями на его веб-сайте.

Вы также можете найти его:

Apple Подкасты

https://podcasts.apple.com/us/podcast/semaphore-uncut /id1463768812?embedable=true

Google Подкасты

https://podcasts.google.com/feed/aHR0cHM6Ly9mZWVkcy5idXp6c3Byb3V0LmN vbS8yNzYxMzMucnNz?embedable=true

Спотифай

https://open.spotify.com/show/6Tqtzmt78HtlMeNROHAgzh?embedable=true


Также опубликовано здесь.


Оригинал