Гибкий, понятный, универсальный — Python может многое порекомендовать как тем, кто окунулся в мир программирования, так и опытным кодерам.

Управляющий директор Calvium Джо Рид поговорила с Аланом Стивеном, старшим научным сотрудником фармацевтической компании CatSci, о том, почему он недавно прошел вводный курс Python, и о новых знаниях, которые он привнесет в свою работу.

Calvium недавно сотрудничал с Аланом над LabLinks, платформой, которая позволяет химикам сотрудничать между компаниями по всему миру. Онлайн-пространство можно использовать для обмена знаниями, создания сетей, проведения мероприятий, курсов электронного обучения, инноваций или просто для озвучивания идей и постановки вопросов — например, как я могу убедить свою команду, что им следует изучить основы Python? Или в чем разница между списками и кортежами?

Джо также поговорила с недавним выпускником магистра компьютерных наук Лиззи Халл о том, почему Python был очевидным выбором для добавления в ее портфолио программирования, и получила несколько полезных советов для начинающих.

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

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

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

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

Наконец, есть возможность использовать такой язык, как Python, для одноплатных компьютеров, которые все чаще имеют приложения для разных людей. Я могу представить себе использование компьютеров Raspberry Pi, запрограммированных на Python, в нашей организации для сбора большого количества данных, которые может запросить регулирующий орган. Это позволит вам создать множество самодельных наборов датчиков, которые будут стоить десятки тысяч фунтов, если их покупать на коммерческой основе.

Джо: Что конкретно привлекло вас к изучению Python?

Алан: Python описывается как не лучший в чем-либо, но второй лучший во всем. Он гибкий, и поскольку он основан на английском языке, его легче понять, чем другие языки. Я слышал, что его описывают как «новый язык науки». Вместо того, чтобы быть многоязычным на иностранных языках, это будут языки программирования, которые дадут ученым преимущество. Гибкость Python и его использование в различных отраслях привлекательны.

Джо: Была ли какая-то конкретная цель, которую вы хотели достичь, изучая Python?

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

Джо: А Лиззи, что заставило вас выучить Python во время учебы в магистратуре в Бристольском университете?

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

Джо: Алан, не могли бы вы порекомендовать другим людям в вашем бизнесе заняться Python, теперь вы лучше понимаете, как его можно интегрировать в их работу?

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

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

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

Алан: я думаю, что у разных людей все по-разному. Я всегда находил, что люди, которые могут глубоко погрузиться в другую тему, имеют гораздо лучший взгляд на некоторые проблемы, потому что они работали в двух разных областях, и их мозг развивался немного по-разному. Они знают, что то, что просто для одной группы людей, на самом деле довольно сложно для другой группы людей. Наличие такого опыта в двух разных дисциплинах может быть только преимуществом.

Джо: Есть ли преимущество в переносе научного мышления и подходов к обучению программированию?

Алан: Не так много для органической химии. Хотя химия имеет количественную основу, на том уровне, на котором мы используем ее изо дня в день, существуют эмпирические правила и способы распознавания закономерностей, которые позволяют вам решать проблемы, не требуя серьезного формального обучения. по математике. Есть некоторые другие области химии, такие как вычислительная и физическая химия, которые гораздо более количественные и где это пересечение намного более естественно.

Лиззи: я обнаружила, что мой предыдущий академический опыт в области математики был очень полезен для изучения языков программирования в целом, и, в частности, для библиотек обработки данных Python и машинного обучения, которые я использовала. Курс бакалавриата по линейной алгебре, который я проходил, был особенно полезен для понимания теории машинного обучения, но математика университетского уровня, безусловно, не является обязательным условием для изучения Python.

Джо: Мне также интересно узнать о роли дизайна. Например, при планировании эксперимента — знать, что такое гипотезы и как структурировать проблему с точки зрения химии, а затем и с точки зрения программирования.

Алан: С точки зрения химии, вы вводите чистые данные в средство обработки чего-либо, и вы получаете чистый ответ. Это всегда попытка иметь правильную гипотезу и правильную проблему, которую вы пытаетесь решить, и правильный подход.

Мы много говорим о том, чтобы «начать с конца» и иметь четкое представление о том, как выглядит конечное состояние, что часто означает иметь эффективное лекарство, которое работает для пациента. Когда вы пытаетесь что-то проработать, вам всегда нужно думать: «Получит ли это что-то, что соответствует конечному состоянию, или я иду совершенно в неправильном направлении?» Это будет то же самое для всех видов проблем. решения по разным дисциплинам.

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

Алан: Визуализация данных, безусловно, важна, и мы много говорим о том, как мы взаимодействуем с данными. Мы пытаемся избавиться от данных в плоских PDF-файлах, которые невозможно интерпретировать. На самом деле я не интересуюсь графическим интерфейсом или дизайном веб-сайтов или программированием алгоритмов в продукте.

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

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

Алан: Одна книга, которую многие рекомендовали, называется Automate The Boring Stuff With Python. Кажется, это полезно, чтобы помочь с большим количеством офисной деятельности. Это не обязательно даст вам базовое понимание, но позволит автоматизировать множество общих задач.

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

Лиззи: Поскольку я уже знала другие языки программирования, я использовала приложение SoloLearn для изучения основ синтаксиса, и это оказалось полезным. В более общем плане я бы рекомендовал искать «мастер-список ресурсов Python» или что-то подобное. Существует множество ресурсов разного качества, поэтому полезно найти список, составленный экспертом. Алгоритмы Grokking — забавная книга, которая помогла мне изучить некоторые фундаментальные алгоритмы, используемые в программировании, и содержит примеры кода на Python. Я просмотрел множество видеоуроков, пока учился программировать нейронные сети в PyTorch.

Я также использовал GitHub как для индивидуальной, так и для групповой работы. Чтобы освоить основы, потребуется некоторое время, но я определенно рекомендую научиться использовать контроль версий, как только вы начнете делать более сложные проекты. StackOverflow незаменим при поиске или задании любых вопросов по программированию. Я также счел полезным прочитать соответствующие разделы PyTorch API и найти любые термины или понятия, которые я не понял, и вы можете сделать то же самое с любой библиотекой или официальной документацией Python.

Алан: я слышал о GitHub, но сам им не пользовался. Возвращаясь к вопросу о найме, если кто-то разместил свой собственный код на GitHub и выкладывает его там для критики, это показывает, что у него есть что-то за тем, что он говорит с точки зрения квалификации, а не говорит, что он немного знает. Python, но нет доказательств его использования в реальном мире. Если вы создали какой-то код на GitHub, это хороший показатель того, что вы разбираетесь в том, о чем говорите.

Пожалуйста, посетите LabLinks.io, чтобы присоединиться к обсуждению использования Python для научных инноваций в группе Digital Curiosity.

Первоначально опубликовано на https://calvium.com 17 мая 2021 г.