Каков этикет для многократной отправки вопросов по электронной почте автору, чью работу я строю?

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

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

И что же мне делать? Предположим, вы являетесь программистом исходного кода. Как вы думаете, он рассердится на мои электронные письма? Или он захочет помочь (раз уж я приведу его статью)?

Если вы пишете статью, вы могли бы предложить ему соавторство, что могло бы послужить для 1) компенсации потраченного им времени и 2) побуждения его написать вам ответ.
хороший подход, спасибо, но я далек от написания статьи, и я начал диссертацию не так давно, чтобы стать готовым к написанию статьи. Но я составлю план на будущее, основанный на вашей идее.
@Miguel Вы должны тщательно проверить соглашения об авторстве в своей области, прежде чем предлагать кому-либо соавторство. Вклад в понимание фона обычно не считается достаточным для соавторства. Например, предположим, что вы пишете статью Y, которая расширяет мою статью X. В моей области, если бы все, что я сделал, это объяснило вам X и ответило на ваши вопросы об этом, я бы не стал соавтором Y, потому что я не не выполнять какую-либо работу в этой статье (подтверждение было бы разумным). Крайний вариант — вы не даете соавторства своему учителю начальных классов, который учил вас арифметике.
@DavidRicherby Я имею в виду «предложить авторство» не просто как указание своего имени на бумаге, а как вовлечение его в это, подготовку рукописи и т. д.
Ставлю себя на место программиста: в плохой день (дочь намочил постель, собака укусила его за ногу, жена случайно уронила кофе ему на колени, просто для начала) даже второе электронное письмо будет на два лишнего. В хороший день (только что закончил проект и получил прибавку, дочь окончила детский сад на отлично) может быть и 10 нормально. Я хочу сказать следующее: то, что кто-либо из нас говорит о вашем втором или третьем вопросе, абсолютно никак не может быть вам полезно. Что касается вашего первого: самым выгодным (хотя и не обязательно самым приятным) было бы отправлять электронные письма, пока он не устанет отвечать...
@Miguel В этом случае вы не имеете в виду «предложить ему соавторство». Вы имеете в виду "предложить сотрудничество с ним в статье".
@DavidRicherby Только в том случае, если под авторством вы понимаете «написать свое имя в газете», а не «внести свой вклад в статью». Я понимаю, что быть автором и быть признанным автором — разные вещи.
@Miguel Я никогда не слышал, чтобы фраза «авторство» использовалась в контексте академических статей для обозначения чего-либо, кроме «наличия имени в списке авторов».

Ответы (4)

Хотя ваши намерения, вероятно, благие, вы, похоже, злоупотребляете создателем исходного кода. Он не является вашим личным отладчиком и не должен писать код для вашей диссертации (особенно бесплатно). Он написал статью и дал вам свой исходный код. Это вся информация, которую вам нужно знать. Прочтите его статью (или слайды его статьи, если они общедоступны) сто раз, пока не узнаете каждую мельчайшую деталь, а затем просмотрите его код (еще сто раз), пока не сопоставите все между бумагой и кодом. Конечно, это будет медленнее, чем отправить ему пару электронных писем, но это ВАША диссертация, а не его. Только когда ты все это делаешь и остаются вопросы без ответов, затем соберите все возможные вопросы, которые могут у вас возникнуть (включая вопросы о его коде и его статье), а затем отправьте ему ОДНО электронное письмо со всеми вашими вопросами. Все, что больше этого, — это использование его доброты. Подобные электронные письма с вопросами — одна из многих причин, по которым многие люди не хотят делиться своей кодовой базой.

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

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

Я не уверен, что вы можете заключить на этой ранней стадии, что спрашивающий использует автора кода в своих интересах. Несколько писем в неделю навсегда, конечно, было бы слишком много, но несколько писем в неделю в течение короткого времени не могут быть чрезмерными. Кроме того, вы говорите, что делегирование работы автору кода было бы неприемлемо, но спрашивающий никогда не предлагал этого. Я согласен с вашим последним абзацем, но я бы заменил «что вы [уже] сделали все, что в человеческих силах, чтобы понять» на «что вы предприняли серьезную и искреннюю попытку понять». «Все возможное по-человечески» — это невероятно высокая планка.
1-е электронное письмо: дайте код. 2-е электронное письмо: объясните код. Зачем вам третье письмо, если вы можете собрать все свои вопросы в одном письме?
Во-первых, я не понимаю, почему вы считаете, что одно письмо с десятью вопросами лучше, чем десять писем с одним вопросом в каждом. Я бы предпочел, чтобы кто-то запросил несколько небольших блоков моего времени, чем один большой блок, поскольку маленькие блоки легче вписать в мой график. Во-вторых, если часть B кода зависит от части A, вы, вероятно, даже не сможете сформулировать разумные вопросы о B, пока не поймете A. А если вы не можете понять A, не задавая вопросов, то вам нужно два электронных письма с вопросами.
@DavidRicherby Если вы получили документ и код src и после изучения его в течение месяца у вас все еще есть 10 вопросов, тогда вы можете сдаться. Два письма с вопросами также в порядке (после разумного времени между двумя электронными письмами, например, 15-30 дней), но ОП предлагает 2-3 письма в неделю, что не задает вопросов, это называется отладкой.
@Александрос спасибо за ваш ответ. Но моя проблема в том, что это стек протоколов. Я должен знать, где что найти. Сколько раз я должен читать его код. Его стек протоколов состоит из 16 c файлов. и один из них более 10000 строк.
@Алекс. Я знаю, что Вы имеете ввиду. Но 16 файлов и 10 000 строк — это не так уж и много, если все организовано по функциям. Вы просто используете IDE и проверяете, какая функция что вызывает. Вам не нужны подробности каждой функции, вам просто нужно понимать переменные и то, что делает каждая функция на высоком уровне.
@Alexandros Александрос, не всегда понятно, что это значит, особенно когда код не задокументирован. Некоторые функции могут быть абстракциями, а некоторые переменные могут быть просто бухгалтерскими или фактическими данными.
@Alexandros Любое утверждение о программном обеспечении, включающее фразу «вы просто», является заведомо ложным. (Предыдущее предложение, конечно, не о программном обеспечении, а об утверждениях о программном обеспечении.)

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

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

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

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

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

«заставляя меня переосмыслить аспекты кода» или, в зависимости от обстоятельств, отвечая, что я больше не забочусь об этом коде, никогда не предназначал его для публикации, при условии, что это только потому, что это мне ничего не стоило, и я не хочу придется вернуться к нему, чтобы ответить на трудные вопросы о нем. Дело в том, что, спрашивая, вы так или иначе узнаете и не занимаете время, которое автор не хочет занимать :-)

Как человек, который часто получает такие вопросы, мой совет:

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

  2. Убедитесь, что у вас установлена ​​последняя версия авторского кода. Не используйте более раннюю версию.

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

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

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

Огромное спасибо. В случае четвертом, если я отправлю вам электронное письмо, а затем скажу, что хочу расширить ваш код, чтобы ваш код поддерживал функцию «X» — как я должен вам это сказать? чтобы у вас было больше желания помочь мне, кстати, я прочитал вашу статью более пяти раз и понял всю часть теории. а также мой тезис о влиянии функции «Х».
Что ж, для программного обеспечения с открытым исходным кодом автор никак не может запретить вам изменять свой код и распространять его с модификациями. Однако, вероятно, для всех участников будет лучше, если вы и автор кода сможете работать вместе над внесением своих изменений в код. Я бы начал с объяснения первоначальному автору кода, над чем вы планируете работать, а затем выслушал бы, что говорит автор, например: «Это уже было опробовано и не удалось» или «Хммм. Это интересно». идея, дайте мне знать, как это работает», или вы можете получить предложение о сотрудничестве.

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

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

Значит, вы уже в хорошей ситуации, что вам кто-то отвечает.

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

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

  1. Выразите признательность за то время, которое он тратит, отвечая вам. Не переусердствуйте; достаточно одного-двух предложений. Но это важно сделать.
  2. Если вы заинтересованы / хотите, чтобы он был соавтором, спросите его, заинтересован ли он в том, чтобы быть соавтором. Если он не заинтересован, или вы не хотите, чтобы он был соавтором, попросите его разрешения добавить его в список благодарностей. Вы непременно должны добавить его, если он согласится.
  3. Спросите его, можно ли время от времени задавать ему вопросы. Возможно, обозначьте, что и сколько вы ожидаете от него спросить, если у вас есть представление, чтобы он знал, чего ожидать.
  4. В каком-то смысле это выходит за рамки, но, поскольку вы говорите, что его код не задокументирован, задокументируйте его, возможно, сначала уточнив у него, как это сделать, на случай, если у него есть предпочтения. Затем отправьте ему документацию. Это хороший конкретный способ выразить признательность.