Подтвердить что ты не робот

Поощрение хороших методов развития для непрофессиональных программистов?

В мое обильное свободное время я сотрудничаю с рядом ученых (в основном биологов), которые разрабатывают программное обеспечение, базы данных и другие инструменты, связанные с работой, которую они выполняют.

Как правило, эти проекты построены на разовой основе, используются внутри компании, и в конечном итоге кто-то решает: "О, это может быть полезно другим людям", поэтому они выпускают двоичный код или удаляют на него интерфейс PHP и запихивают это в Интернете. Тем не менее, они, как правило, не могут быть обеспокоены тем, чтобы сделать исходный код или дампы их баз данных доступными для других разработчиков, поэтому на практике эти проекты обычно умирают, когда проект, для которого был написан код, подходит к концу или теряет финансирование. Спустя несколько месяцев (или лет), в какой-то другой лаборатории есть потребность в том же инструменте, им приходится повторять работу, которую сделала первая лаборатория, этот проект в конце концов умирает, намывается, полоскается, повторяется.

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

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

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

Вы когда-нибудь были в такой ситуации? Что сработало для вас?

4b9b3361

Ответ 1

Software Carpentry звучит как совпадение для вашего запроса:

Обзор

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

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

Ответ 2

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

Тем не менее, основная проблема заключается не в том, что эти люди не знают о хороших практиках или не заботятся. Проблема в том, что у них нет стимула тратить больше времени на разработку программного обеспечения или на очистку своего кода и его выпуск.

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

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

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

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

Ответ 3

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

Ответ 4

В действительности, то, что вы просите, чтобы они сделали, - это профессиональные разработчики (с их обильным свободным временем), в дополнение к выбранной профессии. Их нежелание объяснимо.

Ответ 5

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

Откажитесь. Серьезно, это похоже на то, как научить свинью петь. (Я могу сказать это, потому что я был физиком, поэтому я знаю, что это такое.)

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

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

Ответ 6

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

Выполнение дополнительной работы для общественного блага - большой вопрос.

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

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

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

Ответ 7

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

Ответ 8

С одной стороны, можем ли мы прекратить преподавать биологов Perl? Преподавание непрофессиональных программистов на письменном языке практически гарантированно приведет к недостижимому, выброс кода. Python заполняет одну и ту же нишу, так же легко учится (он даже используется для обучения детей программированию!), И гораздо читабельнее.

Ответ 9

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

PS: Этот блог очень хорош, но заставить их читать это будет тяжелая борьба: Программирование для ученых

Ответ 10

Крис

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

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

Ответ 11

По моему опыту, лучший способ заставить людей программировать чисто - показать хороший пример, когда вы работаете с ними. например: "Я никогда не трачу безнадежные дни на отладку своего кода, потому что первая вещь, которую я кодирую, - это автоматические модульные тесты, которые будут выявлять проблемы, когда они малы и легко обнаруживаются" или: "Я очень плохо слежу за версиями вещей, но иногда мой новый код нарушает то, что раньше было. Поэтому я использую svn/ git/dropbox, чтобы отслеживать вещи для меня"

По моему опыту такое выражение может поднять интерес к "биологам, которые научились script". И если вам нужно сотрудничать с более крупным проектом, дайте понять, что у вас больше опыта, и все будет идти гладко, если все будет по-вашему.


Что касается публикации кода, нынешняя практика действительно разочаровывает. Я хотел бы увидеть новый журнал, такой как "Исходный код для биологии и медицины", где код просматривается и может быть опубликован, но он не имеет (или очень низких) затрат на публикацию. Ввод кода на sourceforge или другие действительно не "с научной точки зрения стоит того", потому что он не делает строку в вашем списке публикаций, и большинство кода недостаточно революционны, чтобы гарантировать выплату 1000 долларов США за публикацию в Исходном коде для биологии и Medecine или PLoS One...

Ответ 12

Вы могли бы использовать систему управления контентом, такую ​​как Joomla. Таким образом, они только подталкивают контент, а не код.

Ответ 13

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

Ответ 14

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

Разработчики всегда учатся другому домену компетенции, потому что большинство их программ не для разработчиков, поэтому им нужно знать, что делает "клиент".

Ответ 15

Чтобы быть адвокатом дьявола, учит ученых хороших инженеров-программистов, что нужно делать? Программное обеспечение в исследованиях обычно очень специфично - иногда до такой степени, что часть кода должна успешно запускаться только один раз на одном наборе данных. Результаты затем подаются в публикацию, и цель выполняется. И существует высокий риск того, что ваш метод или алгоритм будет заменен лучшим в короткие сроки. Таким образом, существует реальный риск того, что усилия, потраченные на создание сверкающего кода, будут потрачены впустую.

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

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