Ideas para hacer un Proyecto de Fin de Carrera o Fin de Máster (incluso tesis doctoral) en el área de Ingeniería Software

He recibido 5 correos similares a este:

email_TFG

Antes de dejaros la lista de ideas y sugerencias para Proyecto de Fin de Carrera o Fin de Máster en el área de Ingeniería Software, os comento lo que para mi siempre debería guiar y contemplar un proyecto de este tipo (además de aprender, aplicar conocimientos, etc.), y de ahí, de las siguientes premisas, se extrae la lista de ideas que os propongo:
a) Pragmatismo. Que trate de resolver un problema real. Estamos en una ingeniería ¿no? Y una ingeniería ayuda a mejorar a la sociedad por medio de la mejora de empresas, procesos productivos, etc. Por tanto, en los Proyectos de Fin de Carrera o Fin de Máster que dirijo pido que trabajen en la realidad de las empresas de hoy y sus problemas.
b) Evolución Profesional. Después de un Proyecto de Fin de Carrera o Fin de Máster lo normal es que venga o encontrar un trabajo o mejorar en el actual. Por eso en los Proyecto de Fin de Carrera o Fin de Máster que dirijo animo mucho a que el tema mejore la situación, mejore el CV y en definitiva ponga en mejor situación al alumno frente al mundo laboral. Si esto sucede, que suele ser así, qué mejor prueba de la utilidad del Proyecto.
Como complemento a los anteriores, yo a un Proyecto de Fin de Carrera o Fin de Máster en el área de Ingeniería Software, más hoy, en los tiempos que vivimos, le pido:
c) Difusión. Difusión de los resultados a la comunidad para que el mayor número de personas pueda aprender y beneficiarse de los resultados. Por eso en los Proyecto de Fin de Carrera o Fin de Máster que dirijo animo mucho a que, si hay resultados significativos, estos se difundan en blogs, redes sociales, artículos, charlas, etc.
Dicho esto, te dejo a continuación 7 áreas de las que sacar un proyecto que cumpla las premisas a) y b), de los que espero que, una vez termines el Proyecto de Fin de Carrera o Fin de Máster, al igual que hago yo, ayudes a la comunidad con la c).
En cada una de las áreas siguientes te he dejado varios links para que puedas profundizar en el tema.
No las tomes cómo algo separado, ya que muchas de las siguientes están relacionadas entre sí.

1 – Proyectos de Fin de Carrera o Fin de Máster en el de Área Continuous Delivery y Devops

Las empresas clásicas se basan en dos áreas separadas: una desarrollo software y la otra explotación (operaciones, CPD, operaciones o como cada uno lo llame). El reto ahora y en los próximos años es romper el muro entre desarrollo y explotación, para evitar el desgaste y perdida de tiempo que supone el paso entre departamentos. Los negocios hoy requieren mucha velocidad.
Se necesitan profesionales que ayuden a implantar procesos de Área Continuous Delivery y Devops (un poco más delante, bajo el área 3, te dejo un cuadro de tecnologías relacionadas con esta área), que solucionen el problema anterior y que resuelvan el problema de ¿Tardaríais mucho en pasar a producción un cambio en sólo una línea de código? Aprende entrega continua.
Lo anterior se dice muy rápido, pero dentro de esta área hay mucho, pero mucho, daría para muchos proyectos, empezando por la integración continua (que aunque no la he puesto como área de trabajo da para un proyecto fin de carrera o master, recuerda lo de implantar integración continua desde cero), las pruebas (área que te comento a continuación), cambios organizativos, etc.
El DevOps (development + operations, es decir, desarrollo + operaciones) es algo de lo que todo el mundo habla y de lo que menos te vas a encontrar implantado. ¿Por qué? Porque casi nadie sabe por donde  empezar. Toda ayuda para romper el muro entre desarrollo y explotación es poco. Toda ayuda para eliminar frases como “yo soy de CMMI y tu de ITIL”, “tu no pasas a producción hasta que mi comité lo diga, y si lo dice será los lunes por la noche de 1:00 am a 4:00 am”, “estamos esperando el OK del departamento de pruebas”.
Y para ello, áreas de trabajo complementarias son las 2 siguientes….

2 – Proyectos de Fin de Carrera o Fin de Máster en el Área de Automatización del Testing (en su justa medida y con sentido común)

Creo que ya lo hemos hablado varias veces, el testing siempre ha sido importante pero hoy… es vital. Área emergente. Los dos anteriores tienen poco sentido sin un testing de verdad, no de papel, del de verdad, pensado, con cabeza, automatizado en su justa medida (más abajo te dejo tecnologías relacionadas), que de seguridad.
Se necesitan profesionales que ayuden a automatizar, sistematizar, guiar, etc., las pruebas necesarias para que un cambio en desarrollo pase lo más rápidamente a producción sin riesgos.
Las tecnologías a estudiar en este punto han crecido muchísimo: BDD, Gherkin, Cucumber, etc.

3 – Proyectos de Fin de Carrera o Fin de Máster en el Área de Testing Ágil

Por otro lado, relacionado con el anterior y con la agilidad, hay un tema que lleva ahí demasiado tiempo, que a las empresas les cuesta mucho no solo resolverlo sino hasta verlo: No se puede ser ágil si se prueba en cascada (aunque uses Scrum, iteraciones o Sprints).
Es decir, de nada vale aumentar la velocidad de desarrollo si luego el testing lo para todo.
Podríamos decir que el tema de la agilidad, Scrum, etc., está, más o menos, interiorizado en los equipos, pero el Testing Ágil… se necesitan profesionales que sepan explicar, concienciar e implantar testing ágil.
[box] Las 3 áreas anteriores, están relacionadas con tecnologías de trabajo, objeto de Proyectos de Fin de Carrera o Fin de Máster en el Área en ingeniería software,como las siguientes:
Puppet, simplifica drásticamente la administración de sistemas.
Jenkins, prende a implantar integración continua
Pruebas de regresión.
Maven.
Smoke test. [/box]

4 – Proyectos de Fin de Carrera o Fin de Máster en el Área de equipos de desarrollo Modernos y equipos ágiles

Se necesitan profesionales que sepan orientar y ayudar a crear equipos multifuncionales (en vez de islas separadas y departamentos), equipos que trabajen como una mini empresa autónoma, tomen un requisito y lo dejen ellos solitos en producción. Tema que comentamos ya más despacio en los equipos modernos de desarrollo son multifuncionales, así disparan la velocidad y la productividad y en de qué va eso de “equipo ágil auto-organizado”, que verás que no es nada fácil de lograr, si tiras por este camino lee los anteriores.
Puedes ver claramente, que esta área esta relacionada con las anteriores, y con la siguiente. Retos que aquí se presentan y aspectos a resolver:
–  Dependencias entre miembros del equipo.
–  Evitar los héroes
¡Necesito evitar la dependencia de las personas!
– La persona de testing antes estaba en un departamento separado ¿ahora testing se fusiona con desarrollo?
– Perfiles necesarios en un equipo multifuncional ¿qué perfiles forman el equipo? ¿cuáles no?
– Coaching, motivación

5 – Proyectos de Fin de Carrera o Fin de Máster en el Área de equipos de desarrollo Modernos y equipos ágiles: Large Scale Scrum y Scrum empresas grandes

Lo de los equipos con mucha gente (más de 7) son menos productivos. O por qué tener equipos pequeños es una buena práctica (ágil, además), ya lo sabe todo el mundo (creo, o debería saberlo). Pero ahora el reto está en: “OK, ¿y cómo estructuro una organización con 5, 6 o más equipos de menos de 10 personas”.
Hay información al respecto, como el popular Caso de estudio: Como Spotify organiza, de manera ágil, su departamento de desarrollo software o post como el de Scrum a gran escala (large-scale Scrum) o Scrum en empresas grandes. Pero al tema le queda mucho, se necesitan profesionales que ayuden a potenciar esta área de trabajo, en madurez, estructuración, difusión, etc.
Cada uno tenemos nuestras experiencias en el área, yo tengo muchas, pero el tema no ha calado al “gran público”.

6 – Proyectos de Fin de Carrera o Fin de Máster en el Área de Desarrollo Global para empresas Grandes 

Toda empresa mediana o grande anda dándole vueltas a lo externalizar el desarrollo (no hay día que alguna empresa grande no me hable de ello). Las razones, sintiéndolo mucho, decirlo no me gusta nada: bajar los costes (ya te hablé en vamos a competir por un puesto de trabajo con profesionales de todo el mundo), un programador en Rumanía es más barato que en España y a las empresas se le van los ojos.
Se necesitan profesionales que ayuden y sepan organizar equipos distribuidos físicamente, similar a como desde hace años hace el mundo del software libre, es un reto importante para las empresas. Hasta ahora, la externalización se basaba en contratar una empresa en Rumania, pero aquí me refiero a integrar muchos profesionales (no necesariamente empresas) extranjeros (freelance, contractors, etc.) de mucho valor y de manera autónoma.

7 – Proyectos de Fin de Carrera o Fin de Máster en el Área de  Calidad software

Aquí me refiero a caja blanca, saber inteligentemente qué métricas mirar, calidad del producto software, revisar el diseño.
Se necesitan profesionales, que sepan qué hay que solucionar, cuando, en qué medida. Un reto aquí es el “big data” de métricas, si recuerdas en aquel post de hemos estudiado la calidad de 1000 proyectos GitHub bajo el marco de la ISO 25000 ya hacíamos nosotros un primer estudio a lo «big data».
Te dejo algunos post relacionados: Sólo necesitas dos métricas para hacerte una idea de la calidad del producto software (y del dinero que puedes estar tirando), otro la verdadera calidad software la tienes que ver en los fuentes, en el código. No te fíes de nada más.
 

Javier Garzás

0 comentarios en “Ideas para hacer un Proyecto de Fin de Carrera o Fin de Máster (incluso tesis doctoral) en el área de Ingeniería Software”

  1. Javier,
    muy buen artículo. Yo tutorizo PFCs de estudiantes sobre temas diversos, pero desde hacer 3 o 4 años uso Scrum como modelo para planificar y seguir estos proyectos, además de dirigir un postgrado de agilidad.
    Quería comentar que veo una posible dificultar en la experiencia previa de los alumnos y el tamaño de los PFCs, ya que si no tienen una base sólida en desarrollo de proyectos ágiles con las horas de un PFC y la «rampa de aprendizaje» puede costarles desarrollar una solución completa. En el caso de doctorado lo veo mucho más claro.
    ¡Felicidades por el blog!

  2. Muy buen artículo como siempre Javier. Como siempre aprovecho la ocasión para decir que busco a alguien que me ayude a montar un entorno de Desarrollo/Despliegue continúo para mi tesis así que de ahí puede salir un par de PFC muy majos jejeje

  3. Interesante artículo como siempre y este se cabe aún mas ya que en breve comenzaré el proyecto para la obtención del Grado en Informática.
    Estoy muy interesado en basar el proyecto fin de carrera en el Área de equipos de desarrollo Modernos y equipos ágiles
    ¿Podrías indicarme que bibliografía básica podría utilizar para comenzar?
    Muchas gracias de antemano.

  4. Juan Carlos Ramos Avalos

    Hola soy de Perú y estoy preocupado nose que tema hacer para sustenatar mi tesis en maestría para Ing. de software. Agradesco quien creo este blog.

  5. Hola, necesito por favor si me puede colaborar con una idea de que investigación o proyecto puedo iniciar en mi carrera de ingeniería de sistemas, le agradezco su ayuda,

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Ir arriba