Skip to content

Commit

Permalink
Merge branch 'gh-pages' of github.com:JJ/IV into gh-pages
Browse files Browse the repository at this point in the history
  • Loading branch information
JJ committed Oct 1, 2023
2 parents 95cfde5 + e632779 commit 5d31d9f
Show file tree
Hide file tree
Showing 7 changed files with 587 additions and 108 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@ node_modules/
fatlib/
.idea
.Rproj.user
.RData
101 changes: 56 additions & 45 deletions documentos/proyecto/0.Repositorio.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,15 +27,16 @@ prácticas que puedan retrasar la aceptación de los siguientes objetivos.

## TL;DR

Pensar en una idea o problema a resolver que tenga entidad suficiente para poder
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](1.Infraestructura) tendrás que plantar los
hitos de desarrollo del proyecto y plasmar las necesidades del usuario, y en el
[segundo objetivo](2.Modelo) comenzar a modelizar el problema de forma que
se pueda empezar a trabajar en él en los objetivos siguientes.
aquí. En el [siguiente objetivo](1.Planificacion) 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](2.Modelo) 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.
Expand Down Expand Up @@ -97,7 +98,12 @@ hallar una solución al mismo y mejor entenderás qué sería lo que lo solucion
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; es
decir, tiene que tener descrita correctamente una **lógica de negocio**, que es
el código propio que resuelve el problema.
el código propio que resuelve el problema. 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 nos centremos en lo esencial de nuestro programa, 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).

> Propio quiere decir que toda la lógica de negocio tendrá que ser programada
> por el estudiante, principalmente en el [objetivo 4](4.Tests), y de ahí en
Expand All @@ -124,8 +130,13 @@ 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.

En general, la descripción de la solución del problema (que tiene que pasar por
la lógica de negocio) debe:
En este objetivo no se pide que se especifique la solución al problema. 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 pasar por la lógica de negocio), sea explícitamente
porque sea necesaria en este objetivo, o en objetivos siguientes, debe:

* Incluir palabras como *calcular*, *generar*, *procesar*, *predecir*,
*visualizar* (teniendo en cuenta en esta última que se va a hacer en el
Expand All @@ -144,7 +155,7 @@ se pueda validar como una solución aceptable al problema.
### Dónde buscar proyectos

En clase se hará un [juego de
rol](../../actividades/juego-rol-design-thinking) para enfocar el
rol](../../actividades/juego-rol-design-thinking.md) 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
Expand Down Expand Up @@ -183,10 +194,10 @@ 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 del mismo. 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.
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.

### Preguntas frecuentemente preguntadas

Expand All @@ -211,13 +222,13 @@ bien qué algoritmo se va a usar, o conjunto de procesamiento no trivial, para
hallar la solución. También unos en los cuales una vez obtenido el resultado se
pueda comprobar de forma más o menos independiente.

### ¿Qué tipo de problemas no van a ser adecuados?
#### ¿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*?
#### ¿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 publicación de la
Expand All @@ -232,30 +243,30 @@ 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é necesita la lógica de negocio ser no trivial?
#### ¿Por es necesario que la lógica de negocio ser 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 ser inadecuada?
#### ¿Puede alguna lógica de negocio compleja ser inadecuada?

Si requiere un modelo complejo del programa, o un algoritmo complejo para
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 esos modelos los programe uno.
siempre que se programe el intérprete de ese modelo.

### ¿Qué problemas serán adecuados para la nube?
#### ¿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?
#### ¿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.
Expand All @@ -268,7 +279,7 @@ para aplicar la lógica de negocio.
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](https://github.com/JJ/IV-/blob/master/sesiones/semana-01)
sesión](https://github.com/JJ/IV-/blob/master/sesiones/semana-01.md)
si no has podido asistir a clase.

## Explicación
Expand Down Expand Up @@ -363,30 +374,28 @@ procedimiento.
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
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).
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](https://github.com/JJ/IV-/blob/master/proyectos/objetivo-0),
en la fila correspondiente (que estará ya pre-rellena con tu nombre), 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](https://semver.org/lang/es/). 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.
proyecto](https://github.com/JJ/IV-/blob/master/proyectos/objetivo-0.md), 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](https://semver.org/lang/es/). 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
Expand All @@ -407,8 +416,9 @@ condiciones que se indican en la propia plantilla de envíos:
* Sólo debéis fusionar el PR en vuestro repositorio *cuando haya sido aceptado
por el profesor*.

Se aconseja al estudiante que trate de solucionar los problemas que aparezcan de
la forma más rápida posible.
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.

* En el caso de la entrega en el repositorio de la asignatura, los tests no
tardarán más de un minuto. Si falla, se aconseja que se corrija sobre la
Expand All @@ -420,10 +430,11 @@ la forma más rápida posible.
hecho. Se aconseja *no resolver nunca estas objeciones*, salvo que hayan dado
lugar a cambio en otra línea y por tanto no se haya cerrado. La resolución
rápida de problemas para adquirir un objetivo de aprendizaje es imprescincible
para progresar rápidamente en la asignatura. Una vez hecha la revisión por el
profesor la primera vez, se le notificarán todos los cambios en el PR; se
pide, sin embargo, que cuando la revisión esté completa se solicite, de nuevo
revisión explícitamente en un comentario en el que se mencione al profesor.
para progresar rápidamente en la asignatura.
* Una vez hecha la revisión por el profesor la primera vez, se le notificarán
todos los cambios en el PR; se pide, sin embargo, que cuando la revisión esté
completa se solicite de nuevo revisión explícitamente en un comentario en el
que se mencione al profesor o asignando como revisor al profesor en GitHub.

El `README.md` del proyecto será, efectivamente, la descripción del proyecto en
sí. Documentación adicional (por ejemplo, en la documentación de este objetivo
Expand Down Expand Up @@ -525,7 +536,7 @@ A partir de la entrega, si se tarda más de 17 días en superar el objetivo la
## A donde ir desde aquí

Una vez entregado, puedes comenzar por tu cuenta con [el
siguiente](1.Infraestructura) objetivo. Puedes tener todos los PRs
siguiente](1.Planificacion) 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
Expand Down
33 changes: 20 additions & 13 deletions documentos/proyecto/1.Infraestructura.md
Original file line number Diff line number Diff line change
Expand Up @@ -221,6 +221,8 @@ el mismo todo lo que necesitemos en ese paso siguiente.

## Este objetivo es fundamental para el resto de la asignatura

> Como si hubiera alguno que no lo fuera...
Estamos en un proyecto que se irá desarrollando a lo largo de la asignatura, y
esta es una parte esencial, la planificación del mismo. Esta planificación
tendrá que servir para trabajar ya en el [siguiente objetivo](2.Modelo),
Expand All @@ -247,7 +249,7 @@ En [este vídeo se explica el concepto de producto mínimamente
viable/milestone](https://www.youtube.com/watch?v=aEBv4dT7UGc&t=4s).

Los recursos aportados por los estudiantes de la asignatura están
en [este fichero](1.Infraestructura.recursos). Puedes añadir algunos más que
en [este fichero](1.Infraestructura.recursos.md). Puedes añadir algunos más que
te hayan ayudado si lo deseas.

Como se va a empezar a revisar los PRs de los compañeros, conviene que [mires
Expand All @@ -269,7 +271,7 @@ hagan mejoras en el PR, el estudiante deberá pedir explícitamente revisiones
adicionales con un comentario en el mismo que diga "Listo para revisión".

Subir los fuentes a GitHub y añadir al
[fichero](https://github.com/JJ/IV-/blob/master/proyectos/objetivo-1) el
[fichero](https://github.com/JJ/IV-/blob/master/proyectos/objetivo-1.md) el
nombre del proyecto, el autor y un enlace al pull request mediante el cual se
quiere alcanzar el objetivo y hacer un **pull request** al repositorio en el que
se encuentra ese fichero.
Expand Down Expand Up @@ -453,8 +455,14 @@ correspondiente de la asignatura.

## Plazo de entrega

El plazo para hacer la primera entrega termina **4 semanas** después del
comienzo de las clases.
El plazo aconsejado para hacer la primera entrega termina **4
semanas** después del comienzo de las clases. En años anteriores,

* el 50% lo había entregado en 18 días
* el 75% lo hizo en menos de 25 días
* el 90%, en la quinta semana desde el principio;
* todos los que aprobaron lo habían entregado ya dos meses después del
comienzo de las clases.

Ningún estudiante que aprobó en la convocatoria ordinaria en cursos
anteriores tardó más de 10 semanas en superar este objetivo. A partir
Expand All @@ -464,13 +472,12 @@ superado.

## Corrección entre pares

A partir de este objetivo, se pondrá en práctica la asignación
aleatoria de revisores de cada PR entre los que ya lo hayan
superado. Cuando se haga el PR en el repositorio de la asignatura, se
sacarán hasta cinco nicks aleatoriamente entre las personas que hayan
superado ya el objetivo. No es obligatorio hacerlo para quien se
elija, pero sí se considerará positivamente en la nota final en el
apartado de aprendizaje autónomo.
A partir de este objetivo, se pondrá en práctica la asignación aleatoria de
revisores de cada PR entre los que ya lo hayan superado. Cuando se haga el PR en
el repositorio de la asignatura, se sacarán hasta cinco *nicks*
aleatoriamente. No es obligatorio hacer la revisión para quien se elija, pero sí
se considerará positivamente en la nota final en el apartado de aprendizaje
autónomo.

> Que hagáis estas revisiones es fundamental para que entendáis bien
> el concepto de historia de usuario, así como para poder elegir para
Expand All @@ -480,8 +487,8 @@ apartado de aprendizaje autónomo.
La aprobación final del objetivo es cosa del profesor, pero las revisiones que
te hagan los compañeros podrán ayudar a que avances hacia la consecución del
mismo en este objetivo y el resto. En este en concreto, como se ha repetido,
hace falta que *dos* estudiantes lo revisen y aprueben antes de que sea revisado
y aprobado por el profesor.
hace falta que al menos *dos* estudiantes lo revisen y aprueben antes de que sea
revisado y aprobado por el profesor.

## A donde ir desde aquí

Expand Down
16 changes: 0 additions & 16 deletions documentos/proyecto/1.Infraestructura.recursos.md

This file was deleted.

Loading

0 comments on commit 5d31d9f

Please sign in to comment.