Objetivo 0: Mecánica de la asignatura + idea para trabajar

Motivación

Esta asignatura tiene una serie de mecanismos específicos para su entrega y evaluación; estos mecanismos son los mismos que se usan en las empresas de desarrollo de software. Con este objetivo se pretende que el estudiante aprenda a usar correctamente estos mecanismos, así cómo el proceso de aprendizaje guiado que se va a llevar en esta asignatura.

A la vez, el estudiante tendrá que describir un problema general de un cliente que se irá resolviendo, a través de la asignatura, usando software. Este problema tendrá que incluir obligatoriamente un componente que se pueda desplegar en la nube. Este es el objetivo secundario: que el estudiante entienda el concepto de “problema”, de “cliente” y de “solución basada en la nube”.

TL;DR

Pensar en un problema a resolver que tenga entidad suficiente para poder llevar a cabo su desarrollo durante el resto de la asignatura.

Hago énfasis en el resto de la asignatura. Realmente tendrás que intentar desarrollar un producto que resuelva parcialmente el problema que has planteado aquí. En el siguiente objetivo tendrás que plantear los hitos de desarrollo del proyecto y reflejar con más detalle qué problemas se van a resolver y para qué clientes y plasmar las necesidades del usuario, y en el segundo objetivo comenzar a modelizar el problema de forma que se pueda empezar a trabajar en él en los objetivos siguientes.

En este caso, no necesariamente trabajarás en tu problema, sino en otro de otro estudiante de la asignatura.

En resumen: vas a tener que vivir con esta idea, trabajar con ella, entender qué problemas plantea, especificarlos y darle cuerpo y realidad el resto de la asignatura. Tenlo en cuenta a la hora de plantearlo. Por eso es muy importante que propongas una idea con la cual te sientas cómoda, entiendas a las personas que quieren que se resuelva el problema y, en general, sientas cierto interés por que efectivamente se resuelva.

El concepto de problema es posiblemente el más importante que tendrás que aprender a usar. Durante esta asignatura tendrás que formular problemas, y reconocer cuando lo estás haciendo. El resto de los objetivos van a ser esencialmente formulaciones de problemas relacionados entre sí (y con el problema del usuario). Consulta el objetivo 2 y el 4 para ver cómo tienes que usar en la práctica este concepto para poder avanzar en el desarrollo de un producto.

En general, vas a tener que aprender una serie de técnicas y metodologías que te serán útiles en tu carrera. No te preocupes, usándolas en la práctica se aprenden rápidamente y sin dolor (y no te haremos exámenes de ello).

Descripción

En este objetivo cero de la asignatura, y punto de partida del proyecto que se desarrollará en la misma, se trata de poner a punto las herramientas que se van a usar para mostrar el progreso del aprendizaje durante el resto del curso, a la vez que se busca que se interioricen una serie de buenas prácticas en desarrollo de software, que están siempre mediados por git en los entornos de trabajo actuales y en general siguen el denominado manifiesto ágil.

Un factor esencial en el desarrollo ágil es la preocupación por la calidad. Las personas formadas en una ingeniería deben ser capaces de proporcionar productos de calidad al cliente, y en esta asignatura se persigue que, en cada uno de los pasos, os preocupéis por la calidad de lo que entregáis. Y la calidad está en el proceso, no en el producto final. Lo que se entrega no tiene tanta importancia como el proceso que hayáis seguido para llegar a ese producto; si lo único para asegurar la calidad es el producto final es imposible hacerlo, por eso *no os fijéis en lo que otras personas han entregado, porque no es eso lo que se evalúa *: la evaluación (como en el desarrollo ágil) consiste en comprobar que el estudiante ha sido capaz de aplicar una serie de metodologías para crear un producto de calidad.

Por eso, se aconseja no os quedéis satisfechos con poner algo que parezca suficiente, sino que comprobéis que efectivamente muestra que habéis comprendido y puesto en práctica lo que se persigue que aprendáis en cada objetivo. En este caso concreto bastará con que repaséis de forma crítica con vosotros mismos la lista de comprobación; más adelante, además, habrá que pasar algunos tests, pero una vez pasados los tests para poder entregar el objetivo, la preocupación por la calidad os pide que efectivamente probéis manualmente que lo que se requiere en cada objetivo es efectivamente lo que estáis entregando. Eso os servirá para asimilar mejor las prácticas de cada objetivo, pero también para evitar trabajo por parte de quien corrige y también por vuestra parte, que tendréis que revisar el trabajo hasta que sea capaz de revisar el objetivo.

Dando los primeros pasos

Para ello, se creará un repositorio que se usará durante el resto de la asignatura para mostrar el avance del proyecto en diferentes hitos en el desarrollo y despliegue de una aplicación. El repositorio contendrá inicialmente:

Sobre el contenido específico de este objetivo

En cuanto a la idea o problema que se quiere resolver, debería ser preferiblemente un problema del cual tengas conocimiento personal. Cuanto más involucrado estés con el problema, o las personas que lo tienen, más interés vas a tener en hallar una solución al mismo y mejor entenderás qué sería lo que lo soluciona.

Otra cuestión es que ese problema tenga entidad suficiente para poder crear, eventualmente, algún tipo de servidor que se pueda desplegar en la nube, o sea válido para superar el resto de los objetivos de la asignatura.

En este objetivo sólo es necesario que la descripción del problema sea correcta, y efectivamente describa un problema o necesidad de un cliente concreto. Pero lo principal es que hay que trabajar con este problema el resto de la asignatura, y el profesor que apruebe el objetivo tiene que asegurarse de que efectivamente se pueda hacer así. Por eso, en caso de que no esté claro a partir de la descripción qué tipo de soluciones se tienen en mente y solo en ese caso, o si se solicita en la revisión, hay que describir la lógica de negocio, que es el código propio que resuelve el problema.

Propio quiere decir que toda la lógica de negocio tendrá que ser programada por el estudiante, principalmente en el objetivo 4, y de ahí en adelante. Es decir, en este punto tienes que tener al menos una idea vaga de cómo resolver el problema mediante código con tus propios medios.

Más adelante, el centrarnos en la lógica de negocio (extraer información del texto de una página web ya descargada, por ejemplo) en vez de en los aspectos mecánicos (cómo obtener el URL de la página y cómo descargársela) permite que pongamos el foco en lo esencial de nuestra aplicación, que es lo que añade valor al cliente (no el hecho de que uno se descargue una página, o extraiga información de un API o como sea).

Sobre la lógica de negocio

Repetimos: en este objetivo no hay que incluir nada relacionado con la solución, sólo con el problema. Pero a petición del profesor, si hay ambigüedad sobre como se puede resolver el mismo, o por el contrario está claro que no hay un problema con suficiente entidad.

En general, el tipo de problemas adecuados para la asignatura requieren, por parte de la solución informática, una parte considerable de “computación” o “procesamiento” o “generación”. Si la idea y la descripción del problema sólo incluye palabras como “almacenamiento” y “búsqueda”, mientras que puede ser una aplicación completa perfectamente válida (dotada de un interfaz de usuario adecuado), los diferentes pasos por los que pasará la resolución del problema en los siguientes objetivos no van a dar mucho de sí en esta asignatura. Es decir, si la primera (o la segunda) solución en la que has pensado pasa por programar una serie de de objetos con un ciclo CRUD (create, read, update y delete), descártala y piensa en otra que sí realice algún tipo de procesamiento.

De la misma forma, aplicaciones que tengan una dependencia externa fuerte (por ejemplo, que necesiten para cada interacción del usuario recoger datos de un API externo, que pidan una gran cantidad de datos al usuario o que simplemente integren una biblioteca externa para llevar a cabo una operación sobre datos también externos) tampoco van a ser buenos proyectos, porque sus pruebas van a ser complicadas y no van a incluir ningún tipo de modelo. Lo esencial siempre es que la aplicación incluya un valor añadido en forma de lógica de negocio, y que se describa correctamente el problema a solucionar de forma que haga falta tal lógica de negocio para solucionarlo.

Insistimos que en este objetivo no se pide que se especifique la solución al problema. El desarrollo ágil va evolucionando la solución al problema en pasos sucesivos, y hablar desde el principio de “la solución” impide que se avance paulatinamente hacia una solución (entre las posibles). Sin embargo, sí habrá que hacerlo más adelante y si se trata de un problema cuyas posibles soluciones no sean válidas para esta asignatura, se rechazará en este objetivo. Por eso hay que pensar en la solución al problema, y en caso de que no quede claro su entidad por la sola descripción del mismo, especificarlo. Y esta descripción (que tiene que incluir la lógica de negocio), sea explícitamente porque sea necesaria en este objetivo, o en objetivos siguientes, debe:

En ningún caso la inclusión de estas palabras implica automáticamente que la lógica de negocio sea correcta. El cálculo debe ser suficientemente complejo, por ejemplo; la generación debe seguir una serie de pasos no triviales. El filtrado si es sólo búsqueda tampoco será suficiente y deberá combinarse con alguna otra operación un poco más compleja.

La lógica de negocio será creada y testeada más adelante, a partir del objetivo 4. Por eso es esencial que sea no trivial, para que los tests efectivamente comprueben que se está resolviendo el problema correctamente. Así mismo, los tests deben servir para validar que se ha resuelto el problema a través del programa, por lo que el problema debe ser formulado de forma que efectivamente el procesamiento de la información que lleva a cabo el programa se pueda validar como una solución aceptable al problema.

Dónde buscar proyectos

En clase se hará un juego de rol para enfocar el problema, o poder hallar uno en caso de que se necesite ayuda.

En general, encontrar un proyecto que se pueda desarrollar en la asignatura es una cuestión personal, sobre todo porque es necesario que se trate de un proyecto donde uno tiene algún interés y conocimiento, y pueda identificar claramente cuales son los retos y qué es lo que funciona y aporta valor al cliente (que puede ser uno mismo). La metodología denominada design thinking te da una serie de pasos para poder entender posibles contextos en los cuales existe un problema, definirlo y proponer posibles soluciones.

En la primera sesión de clase se hará un juego de rol para poder abordar bien la fase de empatía de este proceso. Por tanto, se aconseja muy vivamente que se asista a esta primera clase y se participe en la actividad.

Incluso con interés, un problema adicional es encontrar proyectos en los cuales existan ya datos. No se va a ser suficientemente empático (como pide la metodología de design thinking) en un proyecto que requiera del usuario introducir gran cantidad de datos para obtener un resultado puntual. Por eso, y también porque las fuentes de datos públicos suelen coincidir con problemas y preocupaciones de la ciudadanía, pueden ser interesantes como base para un proyecto en esta asignatura. Por ejemplo, pueden ser interesantes estos portales:

Estos se pueden usar tanto para completar datos de una aplicación, como para crear un backend de la aplicación, siempre que se le añada valor suficiente en forma de una lógica de negocio.

Cuál es el destino final del proyecto

En los últimos objetivos, el proyecto será desplegado en la nube, tras la descripción de la infraestructura virtual que necesitará para ello. El problema que se plantee será tal que pueda ser resuelto de esa forma. No se requerirá que se resuelva el problema totalmente, pero la mejor solución tiene que estar en una infraestructura virtual en la nube.

Este objetivo se puede superar o no

Si no encuentras ningún problema, si no explicas el problema de forma que sea comprensible y quede claro que hay una lógica de negocio sustancial, o si al requerimiento del profesor de que incluyas esta lógica de negocio no eres capaz de probar que la lógica de negocio que tienes en mente tiene la entidad suficiente para la asignatura, este objetivo puede no superarse. Como todos los objetivos, es imprescindible que entiendas una serie de conceptos (qué es un problema, qué es la lógica de negocio, por qué es importante en el desarrollo ágil) y la forma de ver si se comprenden es revisar (en el PR) qué has escrito y cómo respondes a las diferentes sugerencias o comentarios que te haga el profesor.

Evidentemente, al final, como en cualquier asignatura, se pueden entender y saber expresar estos conceptos o no. Si tras un número de revisiones no se ha superado el objetivo, como se explica más abajo, el objetivo se considerará no superado en la convocatoria ordinaria.

Sin embargo, al tratarse de la idea sobre la que se va a trabajar, no se puede continuar con el resto de los objetivos si no se ha superado, así que si se quiere seguir entregando el resto de los objetivos y poder obtener el aprobado en la convocatoria ordinaria habrá que superarlo. La consideración del resto de los objetivos será para la convocatoria ordinaria, a salvo, claro está, de los plazos específicos que se requieren para cada uno de ellos.

Preguntas frecuentemente preguntadas

Considera esto aclaraciones a las posibles revisiones que se puedan hacer a lo enviado. Conviene tenerlas presentes antes de hacer el envío para cubrir este objetivo.

¿Por qué hay que tener familiaridad con el problema?

La ingeniería resuelve un problema para alguien, en nuestro caso por medios informáticos. Durante el curso se va a desarrollar esa solución, y hay que validar que efectivamente resuelva el problema. Si no lo entiendes o no te es cercano, no vas a poder validar la solución, ni entender qué es una posible solución al problema.

¿Qué tipo de problemas son los más adecuados?

Problemas en los que tengas todos los datos necesarios y se sepa más o menos bien qué algoritmo se va a usar, o secuencia de procesamiento no trivial, para hallar la solución. También problemas en los cuales una vez obtenido el resultado se pueda comprobar de forma más o menos independiente si el problema está resuelto o no.

¿Qué tipo de problemas no van a ser adecuados?

Todos los problemas que requieran entradas físicas; todos aquellos en los que el usuario o cliente tenga que introducir mucha información. En general, todo problema que no se entienda bien.

¿Tiene que haber algún negocio para que pueda llamarse lógica de negocio?

No. En inglés se usa a veces business para indicar la parte importante de algo, o la que hace el trabajo. Evidentemente, en una eventual entrega de la aplicación habría que basar un negocio en ella, porque es la que aporta valor al cliente; también con ello se destaca que el código que compone la lógica de negocio es el que aporta valor al cliente; pensando en cómo se puede aportar ese valor puede, a la vez, descubrir diferentes tipos de clientes que puedan estar interesados en la aplicación.

A la vez, se distingue entre clientes (son los que se benefician de alguna forma con la aplicación) y simples usuarios (que pueden beneficiarse o no, pero aportan información que pueda usarse para la lógica de negocio y por lo tanto el cliente).

¿Por qué es necesario que la lógica de negocio sea no trivial?

Porque el estudiante tiene que programar esa lógica de negocio en los tests de los objetivos a partir del cuatro. Si es trivial, ni siquiera requiere tests; si es de almacena y busca, ni siquiera es lógica de negocio.

¿Puede alguna lógica de negocio compleja ser inadecuada?

Si requiere un modelo complejo del problema, o un algoritmo complejo para trabajar con ella, puede ser un problema, porque, insisto, lo tiene que programar el estudiante. Si requiere predicción y por tanto un algoritmo de machine learning, doble problema, porque requiere conjunto de entrenamiento y programar el algoritmo. Se pueden usar, sin embargo, modelos ya entrenados siempre que se programe el intérprete de ese modelo.

¿Qué problemas serán adecuados para la nube?

Cualquiera que requiera muchos usuarios situados en muchos lugares diferentes tendrán que desplegarse en la nube, siempre que los datos que necesite cada usuario estén en el servidor o bien proporcionados por el resto de usuarios. También los que usen datos agregados para generar información para otro cliente.

¿Cuáles serán inadecuados para una infraestructura virtual?

Las que estén dirigidas a un solo cliente, que tenga todos los datos necesarios para aplicar la lógica de negocio.

Prerrequisitos

En estos primeros compases de la asignatura es obligatoria la asistencia a clase. Como la metodología se basa en tratar de ayudar al estudiante a superar el objetivo, lo mejor es intentar el diálogo con el profesor u otros compañeros para probar diferentes ideas o enfoques, y para evitar malas prácticas que puedan retrasar la aceptación de los siguientes objetivos.

  1. Haber rellenado en la hoja de cálculo compartida la equivalencia entre nombre real y nick en GitHub, así como nick en Telegram.
  2. En general, va a ser necesario que entiendas el mecanismo de la asignatura y sus contenidos. Por ello, consulta los objetivos impartidos en la primera sesión si no has podido asistir a clase. Estos objetivos de la sesión se enviarán al canal de tutorías grupales y estarán en el repositorio anual de la asignatura.
  3. Alta en GitHub y uso de las mejores prácticas en la conexión con el mismo, usando conexión via ssh (no https).

Explicación

Primero, hay que configurar correctamente el entorno de desarrollo para este y otros proyectos, lo que incluye

Usar un repositorio de forma correcta no solo permite organizar el trabajo de desarrollo de forma más eficiente, sino que también contribuye a que sea más fácil colaborar a través de él y a la creación de buenos hábitos de trabajo colaborativo. Hay una serie de buenas prácticas, que incluyen, pero no se limitan, a

Material adicional

El proceso de design thinking para decidir sobre qué problema trabajar está descrito también en esta presentación o este tema.

El concepto de lógica de negocio se explica en este vídeo.

Entrega de la práctica

Cada proyecto tendrá su propio repositorio en GitHub. La documentación se incluirá en ficheros con el formato Markdown (en su sabor GitHub, en caso de que se desee). Esta descripción de la aplicación irá evolucionando con los diferentes objetivos.

En este objetivo, los ficheros solicitados se crearán, en general, simplemente respondiendo a las preguntas de creación del repositorio. Sin embargo, adicionalmente hay que incluir en el fichero README.md una descripción de un problema que se vaya a intentar solucionar a lo largo de la asignatura, en las entregas del proyecto que se van a hacer, un proyecto que se desplegará en la nube. A partir de ahora, en todos los objetivos se seguirá el siguiente procedimiento.

Para auxiliar al estudiante en estas labores se ha creado un plugin de git específico para la asignatura. Seguir las instrucciones en el mismo plugin para descargarlo e instalarlo.

  1. En este caso, tras crear el repositorio, se creará una rama específica para este objetivo (a partir de ahora, cada objetivo tendrá su propia rama). Con el plugin de git para IV instalado, esto se hará en este caso con git iv objetivo 0, que creará la rama y se trabajará en la misma.
  2. En esta rama se modificarán los ficheros necesarios para llevar a cabo todo lo requerido, que no se haya hecho en la creación del repo.
  3. Desde esa rama, se creará un pull request al propio repositorio indicando los cambios realizados. Este PR tendrá que ser aprobado por el profesor para que se considere el objetivo alcanzado. También se puede hacer con el plugin (en parte), escribiendo git iv sube-objetivo. El mismo git imprimirá instrucciones que se podrán seguir (pinchando en un enlace) para crear el pull request (de una rama en tu repositorio a la rama principal).
  4. Una vez creada esta rama, se debe copiar el URL de la misma, que será lo que se entregará.

Una vez hecho lo anterior, se añadirá al fichero de entrega del proyecto en el repositorio anual de la asignatura en la fila correspondiente (que estará ya pre-rellena con tu nick de GitHub si lo has proporcionado), el nombre del proyecto, un enlace al PR que has creado desde una rama de tu repositorio y una versión, que seguirá el formato estándar vx.y.z, llamado versionado semántico.

Entre estos números, x sería la versión major que habrá que mantener a 0 durante toda la asignatura. y se denomina minor, y la haremos corresponder a cada uno de los objetivos. El tercer grupo de dígitos, z se llama patchlevel, y será lo que hay que aumentar cada vez que se corrige el PR y se busca que se pasen de nuevo los tests en el repo de la asignatura. No usar el formato correcto lanzará un error en el test que pasa el PR. En este objetivo tendremos, por tanto, que usar el formato v0.0.z.

Para enviar este PR crearás también una rama específica del repositorio de la asignatura, y harás un nuevo PR desde la misma.

Por si queda poco claro, son dos PRs en dos repositorios diferentes. Uno en tu repositorio, desde una rama creada específicamente para cada objetivo a la principal, otro en el de la asignatura, desde una rama también específica del objetivo a la principal.

El sistema de tests asegura la contención de cualquier tipo de cambio por parte del estudiante en el que se haga algo que pueda afectar al repositorio de la asignatura. Por lo tanto se aconseja al estudiante que pruebe y experimente con los envíos, siguiendo únicamente las condiciones que se indican en la propia plantilla de envíos:

Se aconseja al estudiante que trate de solucionar los problemas que aparezcan, bien en los tests o a través de los comentarios del profesor, de la forma más rápida posible.

El README.md del proyecto será, efectivamente, la descripción del mismo. Documentación adicional (por ejemplo, en la documentación de este objetivo mostrar que se han llevado a cabo las configuraciones que se han solicitado) se deben poner en un directorio aparte y enlazarse desde el README.md en un apartado específico (al final del mismo, por ejemplo). Por ejemplo, pantallazos u otro tipo de documentación que pruebe que se ha configurado correctamente git.

En general, el README.md sólo incluirá temas relativos al proyecto en sí. Lo necesario para valorar si se ha alcanzado el objetivo o no deberán ir en documentos aparte, para que se puedan corregir.

Cuando el profesor apruebe el PR en el repositorio del estudiante, se podrá fusionar ese contenido con su rama principal; en ese momento se estimará que se ha alcanzado el objetivo requerido. El profesor revisará, uno por uno, todos los envíos y hará preguntas (que habrá que aclarar generalmente investigando algún aspecto que no quede claro y cambiando el código) o sugerencias, que encaminarán al estudiante a entender mejor los objetivos correspondientes, y eventualmente a superar el objetivo.

Por esto, se puede entregar el objetivo varias veces mejorándolo siguiendo los consejos del profesor. No trates de poner lo que pide en la primera ocasión, ni en la segunda. Trata de entender qué es lo que tienes que aprender en cada objetivo, y transmítelo en lo que entregues. Lo importante siempre es lo que aprendas y apliques la metodología correctamente, no lo que pongas o escribas. Esto se aplica a este objetivo, y por supuesto al resto de la asignatura.

Por si no queda claro, lo que ponga otro compañero o lo que te devuelva una IA generativa en general, va a ser incorrecto, porque es el estudiante el que tiene que aplicar la metodología, y esto no incluye en ningún momento el uso de herramientas generativas para que lo hagan por ti. Si por cualquier razón lees lo que ha puesto otro compañero, que sea para no repetir en ningún caso ni sus decisiones ni sus palabras.

Por eso, no tienes que esperar a tenerlo perfecto para entregarlo; basta con que pase los requisitos mínimos, que se comprueban como tests. No se espera que esté perfecto con la entrega, se espera que con la ayuda del profesor y, a partir del objetivo siguiente, de los compañeros, se alcancen los objetivos de aprendizaje.

Por esto también es importante que asistas a clase, y no dejes el aula cuando terminen las explicaciones. La metodología de esta asignatura está centrada en el estudiante, y en ayudar al estudiante sobre la marcha, cuando se produzca el problema. De esta forma también podrás hacer el envío en clase y que se te corrija sobre la marcha, si es posible.

Importante: el título de este pull request tiene que incluir la cadena [IV-25-26] para que pueda filtrar fácilmente los mensajes recibidos.

El no hacerlo así lanzará también un error en el PR.

Lista de comprobación

Hazte estas preguntas cuando envíes el objetivo. Tendrá que ser positiva la respuesta a todas, si quieres tener posibilidades de superación del objetivo, pero que las marques como conseguidas no garantiza ni tiene relación alguna con la consecución del mismo. Así que marca solamente las que efectivamente hayas superado.

* [ ] ¿Se trata de un problema real del que se tenga conocimiento personal?
* [ ] ¿Se trata de un problema que para solucionar requiera el despliegue
   de una aplicación en la nube?
* [ ] ¿La solución requiere una cierta cantidad de lógica de negocio, en vez
    solucionarse sólo almacenando y buscando?
* [ ] ¿Se ha incluído la configuración del repositorio y se ha enlazado desde el
`README`?
* [ ] ¿Tienes todos los datos necesarios para poder resolver el problema, o vas
a requerir que el usuario los introduzca?
* [ ] ¿Estás marcando al buen tuntún todo?

Lo importante es que hagas esta lista de comprobación. Puedes incluir en el mensaje de commit cuál de estas preguntas estás respondiendo, porque los mensajes e commit explican por qué se ha hecho algo.

Valoración

El alcanzar este objetivo avanzará, aproximadamente, 5% de la parte correspondiente de la asignatura.

Plazos de entrega y superación

Los plazos para la convocatoria ordinaria (a partir del comienzo del curso) son:

En cursos anteriores,

A partir de la entrega, si se tarda más de 17 días en superar el objetivo la probabilidad de aprobar la asignatura en convocatoria ordinaria desciende del 50%. Por esto se establece el plazo máximo. Es conveniente, por lo tanto, que se realicen con celeridad las correcciones siguiendo las indicaciones del profesor.

Cuando no se supera el objetivo en convocatoria ordinaria hay dos opciones:

  1. Continuar entregando los objetivos siguientes. Se tendrá que superar al menos el objetivo 6 para que se considere superada en convocatoria ordinaria.
  2. Dado que la evaluación en la convocatoria extyraordinaria es la misma que en la ordinaria, se puede seguir intentando superar el objetivo y solicitando revisión, aunque en ningún caso se considerará superado en convocatoria ordinaria.

Si no se ha entregado el objetivo en el plazo indicado solo hay una opción, entregarlo, si se quiere seguir optando a la superación del resto de los objetivos. La entrega de cada objetivo es condición necesaria para la entrega de los siguientes. Una vez entregado hay una vez más las dos opciones que se muestran anteriormente.

A donde ir desde aquí

Una vez entregado, puedes comenzar por tu cuenta con el siguiente objetivo. Puedes tener todos los PRs que desees abiertos en tu repositorio.

Se aconseja en todo caso que se inicie el trabajo en ese objetivo inmediatamente en cuanto que se supere este objetivo, no es necesario esperar a que se explique en clase. Se puede solicitar al profesor que lo explique individualmente, si se está en clase, o simplemente leerlo y plantear las dudas que surjan en el grupo de Telegram de la asignatura; si hay suficientes que lo hayan superado y está lejos la siguiente clase se propondrá una tutoría grupal.