Мне было интересно, будет ли этично для аспиранта в области компьютерных наук нанимать программиста в определенной области; чтобы он мог больше сосредоточиться на алгоритмической или математической части диссертации. Будет ли это этично? Должен ли аспирант включать этого ассистента в качестве соавтора в статьи?
Я не думаю, что это неэтично по своей сути . Если все заинтересованные стороны знают об этом, и вы скрупулезно признаете работу этого другого человека, тогда я не вижу особой проблемы.
Целесообразно ли это, это другой вопрос... и вы обязательно должны задать его своему консультанту. Должен сказать, что мне это не кажется такой уж хорошей идеей. Ваша дипломная работа предназначена для вас... почти по определению. Совершенно нормально получить помощь от других в вашей диссертации, и некоторые люди лучше программируют, чем другие (даже в CS, я полагаю), поэтому получить несколько советов от друга на самом деле хорошая идея. Но мне кажется , что платить кому-то за часть вашей дипломной работы не очень хорошо. Либо программирование является важной частью вашей диссертации, либо нет. Если это так, вы должны сделать это самостоятельно. Если это не так, возможно, вам вообще не нужно это делать или вам не нужно делать это в такой степени, как это сделал бы сторонний профессионал.
Существует также вопрос о впечатлении, которое этот субподряд произведет на других. Возможно, культурные нормы в вашей области сильно отличаются от моих (опять же: спросите у своего консультанта), но у меня сложилось бы довольно негативное впечатление о аспиранте, который сделал это: он, похоже, не очень предан своей работе.
Добавлено : Для ясности, я интерпретирую вопрос в том смысле, что докторант сам занимается наймом: т. е. что это его идея, и он использует свои собственные средства. (Если его университет предоставляет ему финансирование и просто просит выбрать кого-то для работы, то даже вопрос «Этично ли это?» становится менее правдоподобным.)
С точки зрения подозрения, что это не очень хорошая идея, надеюсь, я ясно понял, что это мое личное мнение, основанное на опыте в области (математике), которая довольно тесно связана с CS, но не обязательно идентична ей. Как я уже сказал, ОП должен проконсультироваться по этому поводу со своим советником. Однако, как бы то ни было, мне трудно поверить, что реакция будет «Конечно, потрать свои деньги». Хотя это и не является неэтичным со стороны ОП, кажется, скажем так, неоптимальным, если и консультант, и студент считают, что это лучший способ продолжить.
Конечно, но я сомневаюсь, что вы можете себе это позволить.
Давайте посмотрим, какие есть варианты:
Вы можете нанять старшекурсника на неполный рабочий день, чтобы он написал часть вашего кода, но есть вероятность, что вы потратите больше времени на выкапывание их ошибок и обучение их тому, что потребуется для самостоятельного написания кода. Наверное, не стоит. 1
Или вы могли бы нанять настоящего программиста, но хороший профессиональный программист будет стоить намного дороже, чем доктор философии. студент зарабатывает и, вероятно, даже больше, чем они стоят (в США университет берет огромную долю гранта за каждого аспиранта, примерно равную студенческой стипендии). Вероятно, оно того не стоит, если только вы не богаты.
Что еще хуже, даже профессиональный инженер-программист не может читать ваши мысли. Их работа состоит в том, чтобы брать чрезвычайно большие системы с множеством движущихся частей и делать их управляемыми. Как кандидат компьютерных наук. вы, вероятно, больше сосредотачиваетесь на одном конкретном компоненте, который вам нужно будет понять достаточно хорошо, чтобы написать код самостоятельно.
В любом случае это не звучит как очень хорошая сделка для вас.
1 Обратите внимание, что это применимо только в том случае, если ваша конечная цель состоит в том, чтобы просто избежать написания кода самостоятельно. С другой стороны, консультирование и надзор — чрезвычайно ценные навыки, и ваша работа как ученого заключается не только в том, чтобы выполнять свою работу, но и в том, чтобы поддерживать область в целом. Принимая на работу студентов, вы потенциально делаете для отрасли больше, чем могли бы сделать, наняв профессионала, и будущие работодатели примут это к сведению. Кроме того, если вы относитесь к ним как к исследователям, у них могут быть некоторые ценные идеи, но ваш вопрос касался их найма только для написания кода.
Я собираюсь изложить, почему я считаю это этичным, и сопоставить это со случаем, описанным в вопросе. Сомнительно ли с этической точки зрения для меня (студента) нанимать «ассистентов-исследователей»? . Кроме того, я отвечаю с точки зрения Германии.
Вкратце: Да, это этично и это делается регулярно.
Вопрос, указанный выше, явно задает аналогичный вопрос с точки зрения старшекурсника. На этом этапе образования, как также указано в ответе RoboKaren , применяются определенные ограничения (обычно могут) применяться (и во многих случаях продолжать подавать заявки до степени магистра):
Однако после поступления в докторантуру происходят некоторые изменения:
Поэтому, пока докторант «отвечает» за концептуальную разработку исследования и его результаты, вполне допустимо отдавать некоторые подзадачи на аутсорсинг. Еще один момент заключается в том, что докторант должен приобрести некоторый первый практический опыт найма и руководства командой людей.
С учетом сказанного, я возвращаюсь к моему предыдущему заявлению о том, что это обычно делается, чтобы предоставить некоторые примерные сценарии реального мира. Я могу думать как о платных, так и о бесплатных вариантах этого:
РЕДАКТИРОВАТЬ: Наконец, я хотел бы добавить более конкретный гипотетический пример, чтобы проиллюстрировать, какие задачи могут выполняться таким «программистом поддержки»:
Представьте кандидата докторской диссертации, который занимается исследованиями в области человеко-компьютерного взаимодействия для разработки некоторых новых элементов графического интерфейса. Творческая исследовательская часть работы состоит в изучении связанной работы, разработке новой концепции для элемента управления с графическим интерфейсом и его набросках на листе бумаги, а также разработке/выборе некоторых тестовых заданий для проверки гипотез, лежащих в основе дизайн.
Однако, прежде чем это можно будет преобразовать в публикацию, необходимо проделать гораздо больше работы. Интерактивный прототип должен быть запрограммирован на основе эскизного проекта. Это должно выглядеть несколько причудливо (3D / глянцевый вид, анимация и т. д., какими бы причудливыми обычно ни отличались современные графические интерфейсы программного обеспечения), поскольку в противном случае участники исследования, как правило, чрезвычайно отвлекаются на явное отсутствие фантазии и не могут увидеть фактические новинки тестируемой концепции GUI, тем самым полностью искажая результаты в качественной части любого исследования. Затем, чтобы задачи нельзя было критиковать как нереалистичные, некоторые реальные или, по крайней мере, выглядящие реальными данные должны быть интегрированы в прототип. Обычно это означает добавление кода для загрузки (и, возможно, импорта/преобразования) одного или нескольких существующих наборов данных. Если поведение пользователя должно быть записано и/или рассчитано по времени,
Весь последний абзац не содержит ни одного «научно-творческого» исследования, это просто простая работа, которую необходимо выполнить, и обычно требуется несколько недель, чтобы сделать ее правильно. Ближе к концу абзаца мы даже отошли от фактической исследовательской области гиперконвергентного взаимодействия и углубились в низкоуровневые вещи, такие как ввод-вывод и доступ к базе данных. Весь этот последний абзац идеально подходит для аутсорсинга, и докторант не будет автоматически ожидать, что он сделает все это своими руками.
EDIT2: Еще одно примечание, поскольку различные другие ответы относятся к качеству кода: это правда, что в случае найма студентов, как описано выше, качество созданного кода может быть меньше, чем то, что было бы предоставлено профессиональным программистом (обычно недоступно в настройках, которые я описал в этом ответе). Однако
Я рекомендую вам подумать о своих карьерных целях. Если вы намереваетесь начать карьеру разработчика программного обеспечения, то я бы сказал, что это может быть этично с учетом кредитов, но не является хорошей практикой.
Я был менеджером по найму и инструктором по разработке программного обеспечения в течение последних двух десятилетий, и одна постоянная вещь, с которой я столкнулся, заключается в том, что чем более образованны разработчики программного обеспечения, тем хуже их код.
Они могут решать сложные проблемы в коде, но их код, как правило, не поддается сопровождению. Это то, что я не смог исправить. Это стало такой проблемой, что резюме для разработчиков программного обеспечения с докторской степенью или двойным мастером идут в самый низ стека резюме, под кандидатами без ученых степеней.
Я почти полностью не согласен с другими ответами. Если вы являетесь кандидатом наук в области компьютерных наук (если только вы не занимаетесь строго теоретической информатикой) и не можете даже кодировать свои собственные алгоритмы во время прохождения докторской степени, то вы занимаетесь не тем делом. Совершенно нормально сотрудничать (не платить) с другими людьми при написании/распространении кода, но заставлять кого-то другого писать код для вас (потому что вы не можете этого сделать) глупо и даже опасно. Вы не можете отделить алгоритм от кода (если только вы опять не занимаетесь строго теоретической информатикой), и то, как алгоритм работает (в реальном эксперименте), находится в прямой зависимости от реализации алгоритма.
Как вы собираетесь проверять, правильно ли реализовал ваш нанятый программист? Вы не можете, если только вы полностью не изучите его код, что на самом деле может занять у вас больше времени, чем реализация вашей версии алгоритма. Но даже в этом случае вы никогда не будете уверены. Что вы собираетесь делать, когда думаете о новой незначительной оптимизации? Напишите ему письмо, подождите, пока он это реализует, и получите ответ через 2 дня? Удачи в завершении вашей статьи в следующие 3 года для такого рабочего процесса. Но даже если вам удастся его закончить, всегда будет тот 1% шанс, что что-то пошло не так в его реализации и все ваши гипотезы пойдут прахом, когда кто-то другой самостоятельно реализует ваш алгоритм и докажет, что вы не правы. Что вы будете делать тогда? Винить в этом его? Как вы сможете ответить на вопросы о вашей работе, которую кто-то сделал для вас? И скажите, что вам удалось закончить первую работу с наемным помощником, а затем он переходит на другую работу. Что ты собираешься делать со своей следующей работой? Нанять кого-то еще для поддержки и расширения кода предыдущего программиста?
Кроме того, в качестве кандидата наук или постдока вы можете быть ответственным (в качестве технического менеджера) за исследовательскую программу, близкую к вашей специализации, которая может иметь значительно больший масштаб, чем исследовательская работа. Как вы будете говорить своим коллегам или более молодым коллегам, что делать, если вы всегда полагаетесь на то, что кто-то другой будет кодировать для вас. Как вы можете отделить то, что выполнимо, а что нет в рамках проекта, если вы никогда не реализовывали даже свои алгоритмы самостоятельно.
Когда вы станете старше (постдок и выше), другие могут написать больше кода, чем вы, в ваших соавторских работах. Но даже в этом случае вы должны быть в состоянии проверить их код на наличие ошибок, несоответствий и должны быть в состоянии предсказать, как код/алгоритм будет работать в выбранных тестовых примерах (если вы снова не занимаетесь строго теоретической информатикой). Это не то, что вы изучаете с помощью псевдокода, высокоуровневых абстракций или ярлыков, но это то, что вы изучаете, оплачивая свои взносы часами отладки, кодирования и неудачных экспериментов. Вы не можете получить докторскую степень по математике, позволяя кому-то другому делать доказательства за вас. Почему вы считаете, что в CS все по-другому?
Если большая часть работы по программированию может легко уместиться в общей библиотеке, вы можете помочь кому-то сделать библиотеку с открытым исходным кодом.
Повторное использование программного обеспечения с открытым исходным кодом не является этическим вопросом.
Но убедитесь, что эта часть программного обеспечения будет хорошо задокументирована и доступна для помощи другим людям, работающим в вашей области.
ff524
ff524
Дж...
Стив Джессоп