Я делаю свою магистерскую диссертацию по беспроводным сетям. Я работаю над исходным кодом, который мне предоставил автор одной из статей. Сначала я отправил ему электронное письмо и попросил прислать мне его исходный код C++. Так он и сделал. Но проблема в том, что на его код не было документации, и он единственный, кто знает что-либо об этой кодовой базе. В результате я полностью завишу от него. Прошлой ночью я отправил ему электронное письмо и задал ему вопрос о его коде, и он ответил мне очень быстро, всего через три часа. Возможно, мне снова понадобится его помощь.
До моего вчерашнего электронного письма и после того, как я провел месяц, работая над его кодом, я заметил незначительный прогресс в своей работе. Но после вчерашней почты и его указаний моя работа значительно ускорилась. Мне, вероятно, снова понадобится его помощь, может быть, еще два или три письма в неделю. Но я боюсь, что он рассердится на меня за то, что я посылаю ему много писем.
И что же мне делать? Предположим, вы являетесь программистом исходного кода. Как вы думаете, он рассердится на мои электронные письма? Или он захочет помочь (раз уж я приведу его статью)?
Хотя ваши намерения, вероятно, благие, вы, похоже, злоупотребляете создателем исходного кода. Он не является вашим личным отладчиком и не должен писать код для вашей диссертации (особенно бесплатно). Он написал статью и дал вам свой исходный код. Это вся информация, которую вам нужно знать. Прочтите его статью (или слайды его статьи, если они общедоступны) сто раз, пока не узнаете каждую мельчайшую деталь, а затем просмотрите его код (еще сто раз), пока не сопоставите все между бумагой и кодом. Конечно, это будет медленнее, чем отправить ему пару электронных писем, но это ВАША диссертация, а не его. Только когда ты все это делаешь и остаются вопросы без ответов, затем соберите все возможные вопросы, которые могут у вас возникнуть (включая вопросы о его коде и его статье), а затем отправьте ему ОДНО электронное письмо со всеми вашими вопросами. Все, что больше этого, — это использование его доброты. Подобные электронные письма с вопросами — одна из многих причин, по которым многие люди не хотят делиться своей кодовой базой.
Поскольку он, вероятно, хороший парень, вы должны учитывать, что в будущем вы можете сотрудничать с ним или нуждаться в его помощи. Быть напористым или ленивым (и делегировать ему свою работу, потому что вы не хотите тратить 1-3 недели на рефакторинг или более тщательное изучение его кода) — верный способ сжечь с ним мосты. И вы действительно не хотите этого делать.
С другой стороны, если после предоставления вам доступа к его исходному коду он поймет (по вашей электронной почте), что вы сделали все возможное, чтобы понять его код и документ, и просто хотите получить дополнительную помощь, он будет готов помочь, потому что: а) вы, кажется, цените его работу b) вы, кажется, понимаете его временные ограничения c) вы также умный, трудолюбивый парень, с которым стоит сотрудничать. И это сообщение, которое вам нужно передать.
Почему бы просто не спросить его? Он знает, насколько он занят, насколько ему интересен ваш проект и насколько глупы (если вообще есть) ваши вопросы. Вы также можете предложить отплатить ему, написав (частично) руководство по его коду, по мере того, как вы будете его понимать.
Если бы я получил такое электронное письмо, я бы увидел, что вы признаете мои усилия и пытаетесь уважительно относиться к моему времени. И, возможно, это пойдет мне на пользу, заставив меня переосмыслить некоторые аспекты кода и сделать мысленную пометку о необходимости улучшения документации в будущем.
Кроме того, в этой ситуации я был бы очень признателен за то, чтобы быть в курсе вашего проекта. Даже если я не могу или не хочу помочь, я хотел бы видеть прогресс.
Быстрый ответ обычно является хорошим признаком, это означает, что он находит ваши вопросы интересными, а не тем, что вы должны были решить самостоятельно. В любом случае, если вы хотите убедиться, вы можете спросить кого-то, кто примерно знаком с этим кодом (вероятно, вашего консультанта), и посмотреть, действительно ли вопросы являются чем-то, что вы должны были решить самостоятельно; а если нет, они должны научить вас приемам, которых вам не хватает для этого.
При всем при этом мне три раза давали беспорядочный код для работы, и в трех из них я в конечном итоге схватил бумагу и переделал ее сам за пару дней (и в двух из них результат был намного лучше). Может быть, ваш случай слишком большой, но вы должны рассмотреть его.
Как человек, который часто получает такие вопросы, мой совет:
Прежде всего, изучите теорию кода, прежде чем задавать вопросы. Многие из вопросов, которые я получаю о своем коде, показывают, что человек, задающий вопрос, просто не имеет базовых знаний в области оптимизации (например, «что такое факторизация Холецкого»), без которых он не смог бы понять код.
Убедитесь, что у вас установлена последняя версия авторского кода. Не используйте более раннюю версию.
Поймите, как лицензируется программное обеспечение (если вообще). Вам придется работать в рамках условий этой лицензии (например, автор может поместить код под GPL, и ваша производная работа также должна быть GPL).
Не жалуйтесь на качество кода или функций, которых ему не хватает. Если он не делает то, что вам нужно, спросите автора, возможно ли это в текущем коде, или с помощью простого расширения, или алгоритм принципиально не обрабатывает этот случай или что-то еще. Не думайте, что то, что вы хотите, будет легко или вообще возможно. В зависимости от ответа автора вы можете получить готовое решение, или вы можете получить некоторую информацию о том, как изменить код, или вам могут сказать, что это нецелесообразно.
Если вы получаете ошибки, пожалуйста, предоставьте входные данные и выходные данные, чтобы я мог воссоздать проблему. Сделайте пример, воспроизводящий проблему как можно проще, вместо того, чтобы давать мне весь ваш код. Я попытаюсь воссоздать проблему на своей машине.
В какой-то степени я, вероятно, повторяю то, что здесь уже говорили другие. Но в любом случае, здесь я иду с моими 2 центами.
Во-первых, описанная вами ситуация на самом деле довольно необычная. В большинстве случаев, когда код используется в публикации, код не публикуется, а если он не опубликован, его часто невозможно получить от авторов. Если они и предоставят его, вряд ли они ответят на вопросы об этом. Например, часто код пишет какой-то младший сотрудник, например аспирант, и как только этот человек уходит, старшие авторы, которые также являются автором соответствующей статьи, не знают ничего конкретного о коде, потому что на самом деле они ничего не знали. написано что-то из этого. У них также может больше не быть его копии, если она когда-либо была.
Значит, вы уже в хорошей ситуации, что вам кто-то отвечает.
Еще одна вещь, которую следует иметь в виду, это то, что ученым нравится, когда люди интересуются вашей работой. Поскольку код писал ваш корреспондент, вероятно, он является основным автором работы; люди, которые пишут код, как правило, таковы. Так что он может не возражать против ответов на вопросы о своей работе, если они не глупые. Избегайте, например, основных/общих вопросов, связанных с языком, которые не относятся к коду.
Как сказал кто-то другой, если вы хотите знать, что он чувствует, почему бы не спросить его? Итак, я бы предложил три конкретные вещи.
Мигель
МРР
Дэвид Ричерби
Мигель
Вилли Вонг
Дэвид Ричерби
Мигель
Дэвид Ричерби