
No se si lo sabeis, pero estoy currando. Bueno, de hecho, os lo podeis imaginar por la cantidad de posts que escribo al día, que deben ser algo así como 0.00003. En mi línea de vida laboral, para no variar, trabajo de Puta Informática. Ahora, eso si, trabajo de Puta Informática de Lujo, lo cual significa que tengo un contrato, que en el trabajo no abusan de mi y que el sueldo es bastante más que aceptable, para que negarlo.
De todos modos, no quiero hablaros de lo bien que me va la vida (pese a que he perdido la paciencia muchas veces en estas ultimas semanas, me va bien, en serio), sino de lo que estoy haciendo. Porque estoy aprendiendo mucho en el campo del desarrollo web. Hasta hoy siempre había querido aprender a desarrollar webs dinámicas (odio el término 2.0, yo no desarrollo webs con los bordes redondeados, coñoya) en PHP, AJAX o lo que fuera.
Es fácil plantearte una meta tal, pero meterte en ello es algo más complejo. Hay que ir despacio, como con todo. Si no tienes paciencia, nunca lograrás aprender nada, y este consejo es extensible hacia otras (todas ellas) áreas de la informática: Leer documentaciones, mirar implementaciones, entender código, es el pan nuestro de cada día del informático programador. Básicamente, y reducido a una sola frase, se trata de saber buscarse la vida.
Sin embargo, la verdad es que si lo que deseamos es que haya avance en lo que se puede hacer, es de cajón que las generaciones futuras no deberian encontrarse los mismos problemas que nosotros. O dicho de otro modo, si yo he hecho un aprendizaje arduo y costoso a base de ensayo y error y tengo la posibilidad de explicarle a otra persona qué he aprendido, estoy haciendo que esa persona pueda continuar el trabajo donde yo lo he dejado. De este modo, estoy dando la posibilidad a esa persona de ir un poco más allá y conseguir mejores resultados que los mios.
Es por eso que me apetece dejar por escrito mi proceso de aprendizaje en el desarrollo web, proceso que, por otra parte, es bastante modesto y que aun está en etapas intermedias. Este ha sido, pues, mi camino:
¿Qué necesitas para aprender y hacer páginas web dinámicas?
Mentalización. Lo primero que tienes que entender, futuro desarrollador web, es que sin paciéncia y dedicación no vas a desarrollar una mierda, como ya he dicho. El mundo de la programación web es en estos momentos enorme. Tienes mil plataformas de desarrollo, miles de maneras de hacer las cosas. Y tendrás que escoger la tuya. Eso ya de por si implica tiempo para informarte sobre las cosas y criterio para tomar decisiones.
A parte de eso, y metiéndonos ya en materia, lo primero que necesitas es aprender a hacer páginas web estáticas y sencillas. En otras palabras, necesitas saber HTML y CSS. No solo los tags HTML y CSS, sino como funciona el HTML, como funciona el CSS y como interpretan ambas cosas los navegadores. Esto es lo más básico y si no tienes esto claro, mal vas a llegar a ninguna parte porque al fin y al cabo, cualquier página web acaba traduciéndose a la generación de código HTML.
Lo segundo que necesitas es un proyecto, una idea. Un “¿Para qué necesitas una página web?”. Tener una idea de página web que puedas concretar en algo, porque si no, irás dando palos de ciego sin llegar a hacer nada. Si realmente no necesitas nada y tan solo quieres aprender, puedes plantearte hacer webs básicas como un publicador de noticias (o un blog, que viene a ser lo mismo), una aplicación para consultar, editar y ampliar una base de datos (por ejemplo de libros) o alguna cosa similar.
Lo tercero es saber programar. Si quieres hacer una web dinámica no basta solo con poner N tags en un archivo y quedarte tan ancho. Probablemente la web deberás hacerla en PHP, Java, Python o vete tu a saber con qué. No es necesário conocer un lenguaje al completo, con todas sus funciones e historias, pero si tener unos mínimos conocimientos de lenguajes orientados a objetos y sobretodo soltura en consultar API’s y referéncias de lenguajes. PHP tiene un buen Reference Manual donde puedes buscar la función que necesitas en cada caso.
Y ahora viene la (primera) complicación. ¿Qué utilizas? Existen varios modos de afrontar esto:
- CMS: Content Management System. Si lo que deseas es tener un site hecho en poco tiempo y no preocuparte realmente de picar código, dispones de estos sistemas. Los más conocidos son Drupal, Joomla o Wordpress, siendo este último un CMS dedicado al blogging. Ésta opción es ideal si no eres muy quisquilloso en cuanto a la funcionalidad de la web. Dichos CMS disponen de cantidades ingentes de módulos para hacer tal o cual cosa. Si eres aventurero, puedes incluso ponerte a retocar código de dichos módulos para adecuar su funcionalidad a lo que tu deseas. Sin embargo, si tienes que tocar mucho código para conseguir el efecto deseado, es que no era lo que buscabas.
- Web Frameworks: Zend Framework, CakePHP, Zope, Ruby on Rails… Hay infinidad de frameworks de distintos lenguajes (Java, PHP, Python, Ruby). Son librerias que ofrecen utilidades para hacer websites de modo que el programador puede centrarse únicamente en la lógica (funcionamiento) del site y en su diseño, sin tener que pensar en como generar el código HTML. Digamos que el framework se ocupa de la gestión de eventos de “bajo nivel” de la página como por ejemplo efectuar la autenticación de contraseña de un usuario o la generación de un formulario web. Agiliza el desarrollo y permite una gran manipulación y libertad a la hora de programar la aplicación web.
- CAP: Código A Pelo. Yo lo recomiendo poco. Actualmente, una aplicación web es una cosa bastante compleja. Hay que tener en cuenta muchos detalles como por ejemplo, como proteges los datos de los usuarios o como gestionas la base de datos. Pensar en todos esos detalles Y además pensar en cómo debe funcionar la página puede ser una tarea titánica. La ventaja de hacerlo así es que tienes absoluto control sobre el site y no dependes de ningún código escrito por terceras personas. No obstante, los frameworks son suficientemente fiables como para que no se deba utilizar esta opción.
Muy bien, así pues, una vez explicadas un poco por encima las opciones, debemos decidirnos. En mi caso, por cuestiones de trabajo (no del actual, sino uno anterior), tuve que decantarme por los CMS. En concreto elegí drupal y la verdad es que he quedado muy contento con las cosas que pueden conseguirse con ese sistema. Tiene muchos módulos y una comunidad más o menos constante y rápida que los mantiene y además la documentación empieza a estar muy bien (antes apestaba, sinceramente). En el curro actual he tenido que usarlo (y también en otra web) y ha dado muy buenos resultados. Hay que leer mucho (ya lo habia avisado antes
) para entender como funcionan las partes de drupal, pero la verdad es que una vez sabes como funciona, drupal puede llegar a ser muy potente.
Sin embargo, una vez alcanzado un cierto aprendizaje sobre drupal, la verdad es que hacer según que cosas es algo complicado. Es cuando llegas a este punto que empiezas a mirarte frameworks. A mi me gusta el PHP por encima de otros lenguajes porque es sencillo, porque lo conozco y porque es muy utilizado, lo cual demuestra que es fiable. Empecé mirandome tres plataformas, Ruby on Rails, CakePHP y Zend Framework. La primera trabaja con el lenguaje Ruby. Las otras dos con PHP. Obviamente, aunque Ruby me ha gustado como lenguaje, lo he dejado porque presenta un problema y es que necesita un servidor propio, no sirve un server apache. Como no puedo montar un servidor en mi casa y tengo que contratar un hosting, y el susodicho hosting no ofrece soporte Ruby on Rails, pues no puedo usarlo.
Entre los otros dos, la verdad es que estaba dividido. Ambos me parecían interesantes, pero solo tengo tiempo para prestarle atención a uno. Y el elegido fue Zend Framework. Al principio me costó mucho, pero a base de buscar tutoriales, he podido ir aprendiendo. Me ha llevado varias horas (por lo que tengo medido, probablemente un día y pico juntando todas las horas), pero estoy empezando ya a tener cosas un poco concretas. La verdad es que es más sencillo de lo que me esperaba y aunque avanzo poco a poco, ya voy consiguiendo resultados.
Sin embargo, tanto al usar drupal como al usar ZF, una cosa ha sido invariablemente esencial. Tienes que buscar y aprender por tu cuenta. Busca tutoriales, HOW-TOs, documentaciones, APIs… Busca y no te dediques solo a copiar, sino que intenta aprender por qué hacen lo que hacen en esos ejemplos ayudandote de las documentaciones.
Y hasta aquí llego por hoy. Simplemente tenía ganas de escribir lo mucho que estoy aprendiendo estos días y que pese a la cantidad de faena que tengo (sobretodo por la uni), me lo estoy pasando teta. Para otro día: OpenGL, como dibujar tu propia Matanza de Texas en 3D.
Se despide,
Pryrios de Hyperion