Me preguntaba si sería ético que un estudiante de doctorado en el campo de la informática contratara a un programador en un dominio específico; para que pudiera centrarse más en la parte algorítmica o matemática de la tesis. ¿Sería eso algo ético de hacer? ¿Debe el doctorando incluir a este asistente como coautor en los artículos?
No creo que sea inherentemente poco ético hacer esto. Si todas las partes relevantes lo saben y usted reconoce escrupulosamente el trabajo de esta otra persona, entonces no veo ningún problema específico.
Si es aconsejable es una pregunta diferente... y una que sin duda debería preguntarle a su asesor. Debo decir que no me parece tan buena idea. Tu trabajo de tesis es para que lo hagas... casi por definición. Está perfectamente bien obtener ayuda de otros en su tesis, y algunas personas son mejores programadores que otras (incluso en CS, me imagino), por lo que obtener algunos consejos de un amigo es realmente una buena idea. Pero pagarle a alguien para que haga una parte de su trabajo de tesis simplemente no me parece bien. O la programación es una parte importante de tu tesis o no lo es. Si es así, debe hacerlo usted mismo. Si no es así, tal vez no necesite hacerlo en absoluto, o no necesite hacerlo en la medida en que lo haría un profesional externo.
También está la cuestión de la impresión que esta subcontratación causaría en los demás. Tal vez las normas culturales en su campo sean muy diferentes a las mías (de nuevo: pregunte a su asesor), pero tendría una impresión bastante negativa de un estudiante de doctorado que hiciera esto: no parece estar muy comprometido con su propio trabajo.
Agregado : Para ser claro, estoy interpretando la pregunta en el sentido de que el estudiante de doctorado mismo está haciendo la contratación: es decir, que esta es su idea y está usando sus propios fondos. (Si su universidad le da fondos y simplemente le pide que elija a alguien con quien trabajar, incluso hacer la pregunta "¿Es ético?" se vuelve menos plausible).
En términos de sospechar que esto no es una buena idea, espero haber dejado claro que esta es mi opinión personal, con experiencia en un campo (matemáticas) que está bastante relacionado con la computación pero que no es necesariamente idéntico. Como dije, el OP debería consultar a su asesor sobre esto. Sin embargo, por lo que vale, me resulta difícil creer que la reacción será "Claro, gasta tu dinero". Si bien no es poco ético por parte del OP, parece, digamos, subóptimo si tanto el asesor como el estudiante sienten que esta es la mejor manera de proceder.
Claro, pero dudo que puedas permitírtelo.
Veamos cuáles son las opciones:
Puede contratar a un estudiante universitario a tiempo parcial para que escriba parte de su código, pero lo más probable es que pase más tiempo desenterrando sus errores y enseñándoles lo que se necesitaría para escribir el código usted mismo. Probablemente no valga la pena. 1
O podría obtener un programador real , pero un buen programador profesional costará mucho más que un doctorado. gana el estudiante, y probablemente incluso más de lo que cuestan (en los EE. UU., la universidad toma una gran parte de cada estudiante de posgrado en una subvención, aproximadamente igual al estipendio del estudiante). Probablemente no valga la pena a menos que seas rico de forma independiente.
Para empeorar las cosas, incluso un ingeniero de software profesional no puede leer tu mente. Su trabajo es tomar sistemas extremadamente grandes con muchas partes móviles y hacerlos manejables. Como un doctorado en ciencias de la computación. probablemente se esté enfocando más en un componente en particular, que tendrá que entender lo suficientemente bien como para escribir el código usted mismo.
En cualquier caso, no parece un buen negocio para ti.
1 Tenga en cuenta que esto solo se aplica si su objetivo final es simplemente evitar codificarse usted mismo. Por otro lado, asesorar y supervisar son habilidades extremadamente valiosas y, como académico, su trabajo no es solo hacer su trabajo, sino apoyar el campo en su conjunto. Al aceptar a estudiantes universitarios, potencialmente está haciendo más por el campo de lo que podría hacer contratando a un profesional, y los futuros empleadores tomarán nota. Además, si los trata como investigadores por derecho propio, es posible que tengan algunas ideas valiosas, pero su pregunta era específica para contratarlos solo para escribir código.
Voy a esbozar por qué creo que es ético y contrastarlo con el caso descrito en la pregunta ¿Es éticamente cuestionable para mí (un estudiante universitario) contratar “asistentes de investigación”? . Además, estoy respondiendo con una perspectiva de Alemania.
tl; dr: Sí, es ético y se hace de forma rutinaria.
La pregunta vinculada anteriormente hace explícitamente una pregunta similar desde el punto de vista de un estudiante universitario. En esa etapa de la educación, como también se señala en la respuesta de RoboKaren allí , se aplican ciertas restricciones (generalmente) (y en muchos casos, seguir aplicando hasta una maestría):
Sin embargo, una vez que ingresa a la candidatura doctoral, ocurren algunos cambios:
Por lo tanto, siempre que el doctorando esté "a cargo" del desarrollo conceptual de la investigación y sus resultados, es completamente aceptable subcontratar algunas subtareas. Un punto más es que se supone que el doctorando debe adquirir una primera experiencia práctica en la contratación y dirección de un equipo de personas.
Dicho esto, vuelvo a mi declaración anterior de que se hace de forma rutinaria, para proporcionar algunos escenarios ejemplares del mundo real. Puedo pensar en variantes pagadas y no pagadas de esto:
EDITAR: Por último, me gustaría agregar un ejemplo hipotético más concreto para ilustrar qué tipo de tareas podría realizar un "programador de apoyo" de este tipo:
Imagine un candidato a doctorado que investiga en el área de HCI para desarrollar algunos elementos nuevos de GUI. La parte de investigación creativa del trabajo consiste en aprender sobre el trabajo relacionado, desarrollar un nuevo concepto para un control GUI y dibujar algunos bocetos del mismo en una hoja de papel, así como diseñar/elegir algunas tareas de prueba para validar las hipótesis subyacentes al diseño.
Sin embargo, antes de que esto pueda convertirse en una publicación, se debe trabajar mucho más. Se tiene que programar un prototipo interactivo, basado en el diseño esbozado. Tendrá que hacerse para que se vea un poco elegante (aspecto 3D/brillante, animaciones, etc., cualquiera que sea la fantasía de las GUI de software contemporáneas), ya que, de lo contrario, los participantes del estudio tienden a estar extremadamente distraídos por una falta de fantasía directamente visible y no pueden ver a través de las novedades reales del concepto de GUI que se está probando, distorsionando así totalmente los resultados en la parte cualitativa de cualquier estudio. Luego, para garantizar que las tareas no se critiquen como poco realistas, algunos datos reales, o al menos que parezcan reales, deben integrarse en el prototipo. Eso generalmente significa agregar código para cargar (y posiblemente importar/convertir) uno o más conjuntos de datos existentes. Si se va a registrar y/o cronometrar el comportamiento del usuario,
Todo el último párrafo no contiene una sola pieza de investigación "científicamente creativa", este es solo un trabajo sencillo que debe hacerse y, por lo general, lleva algunas semanas hacerlo bien. Hacia el final del párrafo, estamos incluso fuera del dominio de investigación real de HCI y profundizamos en cosas de bajo nivel como E/S y acceso a bases de datos. Todo el último párrafo es perfectamente adecuado para la subcontratación, y no se esperará automáticamente que un candidato a doctor haya hecho todo esto con sus propias manos.
EDIT2: Otra nota, ya que varias de las otras respuestas se refieren a la calidad del código: es cierto que en el caso de contratar estudiantes como se describe anteriormente, la calidad del código producido puede ser menor que la que proporcionaría un programador profesional (normalmente no disponible en la configuración que he descrito en esta respuesta). Sin embargo
Te recomiendo que consideres tus metas profesionales. Si tiene la intención de ingresar a una carrera como desarrollador de software, diría que puede ser ético con los créditos otorgados, pero no es una buena práctica.
He sido gerente de contratación e instructor en desarrollo de software durante las últimas dos décadas, y una constante que he encontrado es que cuanto más educados son los desarrolladores de software, peor es su código.
Pueden resolver problemas complejos en el código, pero su código generalmente no se puede mantener. Esto es algo que no he tenido éxito en corregir. Esto se ha convertido en un problema tal que los currículos de los desarrolladores de software con un doctorado o doble maestría van al final de la pila de currículos, debajo de los candidatos sin títulos.
Estaré en desacuerdo con las otras respuestas casi por completo. Si está en un PHD de CS (a menos que esté estrictamente en Ciencias de la Computación Teórica) y ni siquiera puede codificar sus propios algoritmos durante el PHD, entonces está en el negocio equivocado. Está perfectamente bien colaborar (no pagar) con otras personas para escribir/compartir el código, pero poner a otra persona a codificar por usted (porque usted no puede hacerlo) es una tontería o casi peligrosa. No puede separar el algoritmo del código (a menos que nuevamente esté estrictamente en Ciencias de la Computación Teórica) y el rendimiento del algoritmo (en un experimento real) está en correlación directa con la implementación del algoritmo.
¿Cómo va a verificar si su programador contratado hizo una implementación correcta? No puede, a menos que revise exhaustivamente su código, lo que en realidad podría llevarle más tiempo que implementar su versión del algoritmo. Pero incluso entonces, nunca estarás completamente seguro. ¿Qué vas a hacer cuando pienses en una nueva optimización menor? ¿Escribirle un correo electrónico, esperar a que lo implemente y obtener la respuesta 2 días después? Buena suerte al terminar su trabajo en los próximos 3 años para tal flujo de trabajo. Pero incluso si logras terminarlo, siempre existirá ese 1% de posibilidades de que algo salió mal en su implementación y todas tus hipótesis se esfumarán, cuando alguien más implemente tu algoritmo por su cuenta y demuestre que estás equivocado. ¿Qué harás entonces? ¿Echarle la culpa a él? ¿Cómo podrá responder a las preguntas sobre su trabajo que alguien más hizo por usted? Y digamos que te las arreglas para terminar el primer papel con el ayudante contratado y luego se va a otro trabajo. ¿Qué vas a hacer en tu próximo trabajo? ¿Contratar a alguien más para mantener y expandir el código del programador anterior?
Además, como doctorado o posdoctorado, puede estar a cargo (como gerente técnico) de un programa de investigación cercano a su experiencia que podría ser de una escala significativamente mayor que un trabajo de investigación. Cómo le dirás a tus compañeros o colegas más jóvenes qué hacer, si siempre confías en alguien más para que codifique por ti. ¿Cómo puede separar lo que es factible o no dentro del marco de tiempo del proyecto si nunca implementó ni siquiera sus algoritmos usted mismo?
Cuando sea más senior (posdoctorado y más allá), es posible que otros escriban más código que usted en sus documentos de coautoría. Pero incluso entonces, debe poder verificar su código en busca de errores, inconsistencias y debe poder predecir cómo funcionará el código/algoritmo en casos de prueba seleccionados (a menos que nuevamente esté estrictamente en Ciencias de la Computación Teórica). Esto no es algo que se aprende mediante pseudocódigo, abstracción de alto nivel o atajos, sino algo que se aprende pagando horas de depuración, codificación y experimentos fallidos. No puedes obtener un doctorado en Matemáticas dejando que otra persona haga las pruebas por ti. ¿Por qué asumes que CS es diferente?
Si la mayor parte del trabajo de programación pudiera caber fácilmente en una biblioteca general, puede apoyar a alguien para que haga una biblioteca de código abierto.
No es una cuestión ética reutilizar software de código abierto.
Pero asegúrese de que este software esté bien documentado y disponible para ayudar a otras personas que trabajan en su dominio.
ff524
ff524
J...
steve jesop