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

Если Вы интересуетесь приобретением знаний о теории позади информационного поиска и некоторые технические детали позади реализации поисковых систем, я могу рекомендовать книгу , Управляющую Гигабайтами Ian Witten, Alistair Moffat и Tim C. Bell. (Раскрытие: Alistair Moffat был моим университетским супервизором.), Хотя это немного датировано теперь (первый выпуск вышел в 1994 и второе в 1999 - что так твердо о руководящих гигабайтах теперь?), базовая теория является все еще звуковой, и это - большое введение и в индексацию и в использование сжатия в индексации и поисковых системах.

26
задан 4 revs, 4 users 60% 16 January 2016 в 19:11
поделиться

15 ответов

Программное обеспечение похоже на ваш запрос:

Обзор

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

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

17
ответ дан 28 November 2019 в 06:35
поделиться

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

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

1
ответ дан 28 November 2019 в 06:35
поделиться

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

1
ответ дан 28 November 2019 в 06:35
поделиться

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

1
ответ дан 28 November 2019 в 06:35
поделиться

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

3
ответ дан 28 November 2019 в 06:35
поделиться

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

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

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

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

5
ответ дан 28 November 2019 в 06:35
поделиться

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

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

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

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

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

3
ответ дан 28 November 2019 в 06:35
поделиться

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

5
ответ дан 28 November 2019 в 06:35
поделиться

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

7
ответ дан 28 November 2019 в 06:35
поделиться

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

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

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

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

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

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

9
ответ дан 28 November 2019 в 06:35
поделиться

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

3
ответ дан 28 November 2019 в 06:35
поделиться

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

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

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

1
ответ дан 28 November 2019 в 06:35
поделиться

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

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

3
ответ дан 28 November 2019 в 06:35
поделиться

Крис,

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

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

3
ответ дан 28 November 2019 в 06:35
поделиться

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

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


Что касается публикации кода, текущая практика действительно разочаровывает. Я хотел бы видеть новый журнал, такой как «Исходный код для биологии» и «Медицина», где код рецензируется и может быть опубликован, но не требует (или имеет очень низкую) стоимость публикации. Размещение кода на sourceforge или других действительно «не стоит того с научной точки зрения», потому что это не делает строчку в вашем списке публикаций, а большая часть кода не является достаточно революционной, чтобы гарантировать оплату 1000 долларов за публикацию в Source Code for Biology and Medecine или PLoS One ...

3
ответ дан 28 November 2019 в 06:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: