¿Es una buena idea trabajar en un proyecto de código abierto existente como mi tesis principal?

A2A.

Yo diría: Sí, si sabes lo que estás haciendo.

Elaborar:

  • Si está seguro de que no se verá atraído por una gran cantidad de trabajo no académico.
  • Si está seguro de que podría ser útil para la comunidad a largo plazo.

Los proyectos de código abierto tienen muchas rutinas administrativas. Si bien puede ser interesante para usted y para su carrera pasar por eso, ese tipo de trabajo no se parece en absoluto a un trabajo de tesis.

Por otro lado, tener su código aceptado en un proyecto de código abierto es una prueba sólida del hecho de que su resultado es útil. Especialmente si las personas comienzan a depender de él, lo que probablemente sea evidente por la cantidad de cambios / comentarios / informes de errores.

En la práctica, lo anterior se traduce libremente en: agregar una característica nueva y algo independiente a un proyecto de código abierto es una buena idea para una tesis .

El doctorado de mi mentor de aprendizaje automático tesis ha estado agregando un visualizador de diseño gráfico no estándar para GraphViz. Desde mi punto de vista, esa ha sido una historia de éxito.

Depende. El proyecto de código abierto le brinda una especie de apalancamiento: puede lograr algo más interesante y extenso utilizando el código existente. Por otro lado, también viene con un código fijo ya que necesita acostumbrarse a la base de código, descubrir una característica para trabajar, etc.

Para una tesis, su objetivo es lograr algo novedoso y no trivial en una pequeña cantidad de tiempo. Con esto en mente, un gran costo inicial realmente puede descarrilar su esfuerzo: si no tiene cuidado, pasará más tiempo lidiando con dificultades incidentales de la base de código existente que trabajando en algo nuevo.

Entonces, en el caso normal, le recomendaría encarecidamente que trabaje en algo propio. Después de todo, para una tesis, solo necesitará una prueba de concepto. Esto también le dará una buena cantidad de control creativo, lo que probablemente hará que el proyecto sea más agradable.

Sin embargo, consideraría seriamente trabajar en un proyecto existente si puede encontrar un mentor . Simplemente elija un proyecto que le guste con una buena comunidad y envíe un correo electrónico a su lista de correo. Lo más probable es que alguien estará encantado de ayudarlo a encontrar algo interesante para trabajar y lo ayudará a navegar a través de la complejidad inicial de la base de código, disminuyendo el costo inicial. Con un mentor como este, probablemente lograrás algo más impresionante en la misma cantidad de tiempo que si estuvieras partiendo por tu cuenta.

Por supuesto, también debe verificar que contar con la ayuda de un mentor como este en su tesis está bien por su departamento y no infringe ninguna regla. Lo más probable es que, siempre que reconozca la ayuda y haga el trabajo usted mismo, está bien, pero probablemente debería asegurarse.

Creo que es mejor implementar algo desde cero para una tesis senior a menos que tenga una idea para una contribución a un proyecto de código abierto que sea tan modular y tan autónomo que básicamente equivale a implementar algo tangible desde cero, pero utilizando el código existente del proyecto como usaría una biblioteca.

Desea demostrar su capacidad para diseñar software a un alto nivel, para crear una buena arquitectura para algo en lo que otras personas además de usted puedan estar interesadas. Desea demostrar una capacidad para seleccionar características y determinar un alcance razonable para su proyecto de tal manera que Es ambicioso pero exitoso.

Sería difícil demostrar este tipo de habilidades mientras se trabaja con el código de otra persona.

En general, solo si puede encontrar ayuda para navegar el proyecto de código abierto. Aprender los entresijos del software existente puede ser un desafío.

Por ejemplo, muchos de mis estudiantes que trabajan en la investigación SDN usan Mininet, POX y OVS. Todos estos son proyectos de código abierto. Mininet y POX proporcionan una extensibilidad que es buena para la investigación. También tienen un campo comunitario con investigadores cooperativos. Estos investigadores realmente te ayudan a navegar. OVS fue creado para ser un código de calidad de producción y no es tan fácil de navegar como un principiante. La comunidad todavía es activa y útil, pero no está muy centrada en la investigación.

Creo que es fantástico cuando un trabajo académico se relaciona con aplicaciones del mundo real, no deja dudas de que el área de investigación es de cierta importancia.

Sin embargo, me preocupa que los detalles de la pregunta tengan el carro antes que el caballo. Una tesis debe, ante todo, investigar algo de mérito científico, y cortar el punto X de la lista de problemas pendientes de algunos proyectos no le dará eso. Sugeriría encontrar primero el área que desea investigar (probar un caso particular de algún método que aún no se haya probado en todo, ver cómo una técnica asociada con un campo podría aplicarse a otro, etc.), y luego buscar para aplicaciones prácticas solo después de que se haya decidido por él.

Si bien resuelve un problema práctico de ingeniería en el proceso, su tesis final será juzgada por sus métodos de investigación documentados y no por su hack-fu, por impresionante que pueda ser. Si no se encuentran aplicaciones adecuadas, estudie su área de interés con su propio código de prueba de concepto, la aplicación práctica exacta es secundaria en un contexto de tesis.

Si puede encontrar un problema académicamente interesante y ver una oportunidad para investigarlo mediante el uso de una aplicación del mundo real como un recipiente para la prueba, le digo que verifique con su institución que todas las luces estén en verde y luego anítelo.

Si le resulta difícil encontrar algún problema científico en general, y trata de extraer uno de la lista de tareas pendientes de un proyecto de código abierto, creo que esa es una razón para considerar cuidadosamente qué es exactamente lo que estaría investigando .
También podría ser una razón para hablar con un asesor sobre cómo puede enmarcar una pregunta de investigación adecuada en función de sus intereses; debería ser perfectamente posible, pero si intenta hacerlo todo usted mismo, el resultado puede ser desproporcionadamente malo en en comparación con su esfuerzo y logros prácticos, simplemente porque comenzó desde el ángulo de ataque equivocado.

En mi opinión, depende principalmente de tus objetivos después de la graduación.

Supongo que preferirías trabajar por tu cuenta si planeas una carrera más académica. Esto es algo que has hecho y de lo que eres responsable, y así sucesivamente. Es parte de su cartera de investigación, por falta de una mejor redacción.

Sin embargo, si va a buscar trabajo de programación, la mayoría del trabajo estará en un equipo con estándares preexistentes. Ser capaz de mostrarle a un posible empleador no solo lo que has hecho, sino también cómo manejaste las limitaciones y críticas del equipo (es decir, un archivo de lista de correo), es valioso, si lo haces bien.

Las otras respuestas también son importantes. Esto es algo que pensé que era importante y que no había sido mencionado.

Idealmente, una tesis de investigación debería ser publicable, pero a nivel de pregrado, esto no es esencial. Es mejor divertirse ante todo. Dependiendo de lo que sea, algo así puede no conducir a resultados de investigación realmente originales, pero definitivamente debería probar sus habilidades. Si planea ingresar a la industria, es una gran opción porque muestra que puede trabajar bien con otros y con el código existente (ninguno de los cuales he sido bueno). Por otro lado, si desea permanecer en la academia, ciertamente no debería perjudicar sus posibilidades.

More Interesting

¿Por qué siento que Agile apesta para el desarrollo de software?

Si tuviera la opción de trabajar para un ingeniero de software, ¿para quién preferiría trabajar y por qué Google, Facebook, Amazon o Apple?

¿Qué modelo de software usa Microsoft?

¿Hay algún buen curso de certificación en Big Data, Machine Learning e IA en Mumbai que pueda mostrar también en mi CV? Actualmente soy ingeniero de software senior. ¿Este cambio de carrera es fluido y está en línea con mis habilidades de TI?

¿Es difícil aprender las pruebas de software?

¿Por qué debería aprender a querer leer como ingeniero de software?

¿Qué debo aprender primero cuando me uno a una compañía de software para acelerar mi crecimiento?

¿Qué tan pronto una compañía producirá un producto que permita que una aplicación común de Windows escrita en Visual FoxPro se ejecute en un navegador en cualquier dispositivo?

¿Apple tiene una guía para desarrolladores de Apple Pay?

¿Cuáles son las tecnologías para la computación en la nube? ¿Algún sitio web que los compare?

Cómo obtener una visión general razonable de los métodos y herramientas de programación suficientes para permitirme comprender lo que se requiere para construir una solución de tecnología web como algunos de los sitios principales

Soy un programador profesional. ¿Debo volver y terminar la universidad?

Cómo gestionar un pequeño equipo de personas que creen que son súper estrellas

¿Existe una correlación entre el código feo y el código que se escribió rápidamente?

¿Cuáles son algunas de sus pautas personales para escribir un código bueno y claro?