Hacer un proyecto web¶
Ideas, Conceptos y Evaluación¶
Aquí encontrarás propuestas genéricas de sitios web que te servirán de referencia para probar diferentes tecnologías web:
Los conceptos necesarios para implementar un proyecto web los puedes ver en:
Interfaz web (DIW - Diseño de Interfaces Web)
Desarrollo web estático (HTML)
Estilos (CSS)
Desarrollo Cliente (DWeC - Desarrollo Web en Entorno Cliente):
Dinámicas: Javascript
Multimedia: Imágenes, Audio, Video y Animaciones
Desarrollo Servidor (DWeS - Desarrollo Web en Entorno Servidor)
Dinámicas: PHP
Persistencia de Datos
Servicios Web
La evaluación de un proyecto se podría hacer siguiendo la siguiente propuesta:
Nivel de Complejidad¶
Esta propuesta de proyectos web está pensada para ir trabajando de forma secuencial los diferentes niveles de una aplicación web:
Un sitio web estático con cierto dinamismo con JS. El servidor sólo recibe datos y hace cálculos básicos. No hay persistencia de datos ni sesión HTTP.
Añades una relación entre cliente y servidor más directa, usando programación asíncrona, control de estado (sesiones o cookies) y almacenes de datos sencillos (JSON / XML / CSV)
Añades análisis en tus datos, integrando un SGDB en tu aplicación. Además puedes consultar e integrar APIs externas.
No puedes utilizar ningún tipo de framework o librería externa. Lo que estamos trabajando son las tecnologías base.
Son tres niveles de complejidad sucesiva.
Nivel 1. Sitio web Dinámico¶
Tienes varios documentos web y recursos (estilos, scripts, multimedia) bien organizados y enlazados entre sí
Tienes una (o las que quieras) hoja de estilos, para separar contenido de diseño
Tienes una (o más) librerías de funciones JS y uno (o más) programas principales. Separas programación de contenido y diseño
La aplicación web cliente es sobre un formulario, manejando validación y valores recibidos
La aplicación web servidor trabaja mostrando los valores del formulario y validando los datos.
Usas el modelo de eventos y API Web DOM (y nada más)
Nivel 2. Aplicación Web con integración C/S¶
Añades a tu sitio web algún tipo de programación asíncrona
Usas archivos (JSON / XML o similar) para añadir persistencia a tus datos
Usas sesiones o cookies para añadir persistencia a tu conexión HTTP
Usas el modelo de eventos, el API DOM y otras Web APIs
Añadirás una pequeña documentación (varios archivos, con imágenes e índice) de la aplicación (en el directorio /docs) que estará hecha con sphinx.
Nivel 3. Aplicación Web completa¶
Añades conexión y consulta con bases de datos
Usas APIS avanzadas del navegador
Usas APIS externas según tus necesidades
Generas tus propias APIs
Añades recursos multimedia integrados (audio, video e imágenes)
Para enviar tu proyecto web lo ideal es usar un sistema de control de versiones, es decir enviar el url público de tu código fuente. La otra opción es enviar por correo tu proyecto web empaquetado y comprimido (en formato zip, que es estándar).
Tener un plan¶
El nivel de desarrollo del sitio web depende mucho de tu formación, experiencia y sobre todo, del tiempo disponible. Si sabes de cuantas horas estás hablando, sabrás de cuánto dinero estamos hablando (que al final importa). Para determinar el alcance de tu proyecto no empieces antes de saber el número de horas disponibles.
Para un sitio web básico podrías pensar en estos pasos (más o menos):
Piensas antes de hacer. Es ideal hacerlo en papel y un pequeño mapa mental (esquema del sitio web)
Empiezas con el contenido HTML.
Añades Recursos Multimedia (URLs externos o Recursos Locales)
Añades estilo (CSS) y diseño (maquetación)
Añades programación cliente (JS)
Usando Formularios (o botones)
Usando Eventos y DOM
Usando programación asíncrona y APIs
Añades programación servidor (PHP o puede ser otro):
Programación
Servicios (APIs internas o externas)
Acceso a Datos (en Archivos o BD)
Lo de la dedicación al proyecto es difícil de prever. Yo estimaría al menos una dedicación mínima estimada (ojo que depende de la complejidad) de 2 horas por paso para tener lo antes posible un prototipo (un producto mínimo viable le vamos a llamar). Luego ya, según el tiempo que le dediques, lo irás mejorando (cuanto más le dediques, mejor va a quedar, y obviamente más va a costar).
Lo ideal es tener un PMV (prototipo mínimo viable) o POC (Proof Of Concept) lo antes posible. Mejor menos cosas, pero mejor hechas.
Algunos hitos importantes de tu proyecto podrían ser:
Tener un plan sencillo. Ideal en papel. Planificar el proyecto no te debe llevar más del 10% del total
PMV (Prototipo Mínimo Viable). Desarrollar la aplicación mínima que te permita ir añadiendo funcionalidad. Ideal tener un PMV antes del 50% del avance del proyecto
Repetir hasta tener un producto final que puedas presentar. En el caso del servidor, si no tienes un servidor público revisaré simplemente el código (o lo ejecuto en mi entorno de desarrollo).
Es decir, en un proyecto tipo de 30h, podrías pensar que:
No más de 3 h «pensando» en el proyecto. Pero la hora 1 desde luego tiene que ser de planificación
Tener un PMV antes de la hora 15. Ojo que implica que investigues el tema, que tengas toda la estructura web, el diseño, los formularios y la arquitectura de la aplicación
Y con las 15 horas que te quedan puedes repetir lo mismo pero en bloques más pequeños. Por ejemplo te daría para 3 bloques de 5 horas.
Esto es una teoría muy genérica (basada en sprints) pero que te pueden ayudar a empezar.