Cosas que he aprendido sobre desarrollo web

Tanto en mi primer blog como en Sentido Web, el motivo fundamental ha sido compartir conocimientos con los demás. No hablo de enseñar, sino de aprender y compartir. Pero de donde más se aprende es de la experiencia que se adquiere trabajando y dándote de bruces con situaciones o problemas. Y basándome en mi experiencia, que ni es la mejor ni la más extensa, me gustaría compartir qué cosas he ido aprendiendo sobre desarrollo web.

Vales lo que sabes

Para dedicarse al desarrollo web hay que tocar todos los palos, no vale con saber sólo HTML y CSS o sólo Javascript (o JQuery) o sólo PHP. Está claro que no todo el mundo sabe diseñar, pero si debería saber maquetar. Y una maquetación no es nada sin la parte cliente, porque siempre es necesario cierta interacción. Y ahora no hay ni una sola aplicación web que no requiera una aplicación en el servidor, ya sea en PHP o Java o la que más te guste.

Es absolutamente necesario aprender día a día, porque lo que hoy es actualidad, dentro de unos meses estará deprecated. Suscríbete a unos cuantos blogs y aprende algo nuevo cada día.

No es jQuery todo lo que reluce

jQuery está genial, pero nos olvidamos de algo muy importante: el Javascript. Hay algunos que sólo se preocupan de aprender jQuery, cuando lo realmente importante es aprender Javascript. Si sabes manejarte en Javascript, te da igual usar jQuery, Mootools o simplemente hacer tus propias librerías. Además, no se puede aprender realmente jQuery si no conoces la base.

Lógicamente, esto es extensible a cualquier framework Javascript, los cuales nos facilitan mucho la vida, pero también su mal uso hace que caigamos en vicios a la hora de programación, por ejemplo:

$('#id').fn();
$('#id').bar();
// en vez de
$obj = $('#id');
$obj.fn();
$obj.bar();

No sólo de SQL vive la BD

Viva el noSQL. Se nos enseña todo sobre el SQL y las bases de datos relacionales, pero no siempre es necesario o recomendable usar las bases de datos relacionales. Cada día se habla más del noSQL, y no en plan moda con el cloud computing, sino con datos y casos prácticos.

El noSQL es bastante útil para temas de rendimiento, aunque existen otras alternativas como Sphinx o HBase que también nos pueden venir muy bien.

Cachea, cachea

Cachear es una parte fundamental de cualquier desarrollo, evita que la BD se cargue de consultas repetitivas, mejora el rendimiento y ahorra recursos. No hablo únicamente de grandes aplicaciones, en cualquier cosa debería plantearse el cachear el contenido. Importante son las llamadas Ajax, los plugins de WordPress que acceden a contenidos externos u otros desarrollos parecidos.

Divide y vencerás

Grandes problemas, pequeñas soluciones… bueno, muchas pequeñas soluciones. Dividir los problemas en pequeñas tareas será la solución más óptima que encontraremos.

Uno de los mayores problemas con los que nos encontramos en nuestras aplicaciones son las consultas lentas a la BD. Cuando nos enseñan bases de datos algo en lo que insisten es en la normalización y en las joins. Las joins pueden ser un problema cuando se trata de tablas muy grandes y tenemos que juntarlas. Por ejemplo, tenemos dos tablas que se unen mediante una primary key y una foreign key, la consulta sería algo así:

/* Da igual usar left joins, sigue siendo lento */
select * from tablaA as A, tablaB as B where A.id = B.idA and A.campo = 'lo que sea'

En los casos en que las tablas son muy grandes, es preferible obtener primero los IDs de una tabla y luego realizar la consulta sobre una de las tablas:

/* Obtengo los IDs */
select id from tablaA where campo = 'lo que sea';
/* Almaceno los IDs obtenidos y ejecuto la query principal */
select * from tablaB where id in (id1, id2, id3, id4, id5, ..., idN)

Y si por algún motivo hay que juntar los datos de tablaA y tablaB, se realiza mediante código.

Un clásico, no reinventes la rueda

Esta premisa es aplicable a muchos aspectos. Hay herramientas que ya hacen lo que queremos nosotros: blogs, redes sociales, agregadores, portales, … a no ser que quieras algo realmente específico y muy personalizable, es recomendable que uses las herramientas que ya existen, las cuales tienen detrás a mucha gente desarrollando, y es bastante posible que lo hagan mejor que nosotros.

Otro tema que incluir es el de los frameworks, algunos están en contra de su uso, pero yo creo que usar un buen framework es bastante útil. Si nos ponemos a pensar, un framework es la base para desarrollar un proyecto, y queramos o no, o usamos una base ya hecha o no la creamos nosotros: necesitaremos la capa de abstracción de la BD, seguridad, logs, cache, MVC… al final nos crearemos nuestro propio framework, el problema está en realizarlo correctamente o en elegir un framework que sea eficiente.

Lo quieras o no, habrá cambios

Desarrolla tu aplicación pensando en el futuro, en las posibles mejoras o características nuevas que tendrá. Sé realista, tampoco te tienes que ir al extremo más lejano, basa tus expectativas en datos objetivos. Siempre habrá que realizar mejoras, nos encontraremos con fallos, porque toda aplicación web tiene sus bugs. Querremos quitar cosas y añadir otras nuevas.

Para no volverte loco con los cambios, o que se vuelva loco el que tenga que encargarse de tu código, es absolutamente necesario usar el patrón MVC, comentar bien el código, tener una herramienta de gestión de errores y tareas, y un SVN o similar.

Conclusiones

No dejes de aprender, ten cuidado de las “modas”, desarrolla eficientemente y huye de comerciales y vende motos.

¡Ah!, se me olvidaba, como diría un amigo: haz lo que yo te diga, no lo que yo haga.

Similar Posts

7 Comments

  1. Buen artículo.

    No sabía nada del noSQL asi que estuve investigando un poco, por lo que veo es algo que desde mi modesto punto de vista todavía no me hace falta 😀

    Me gusta mucho JQuery y realmente peco bastante, ya que empecé a usarlo mucho con este framework y las bases no las tengo tan frescas asi que casi siempre voy a lo “rápido”.

    A veces es difícil no reinventar la rueda, aunque como framework uso CodeIgniter.

    Tendría que mirar más el tema de cacheo…

  2. Hola Josepzin

    noSQL es algo que sea realmente necesario para aplicaciones normales, pero si puede ser muy útil para proyectos en el que el rendimiento es algo fundamental.

    Saludos

  3. Hola muy buen articulo, sobre cada punto, podrías poner mas ejemplos prácticos, por ejemplo lo del cacheo en nuestras consultas, consultas largas, etc.

    Un saludo y gracias por compartir.

  4. Hola Eduardo

    Estos son consejillos genéricos que se pueden aplicar a aplicaciones, pero cada aplicación es particular. Si quieres algún consejo más determinado no dudes en escribirme en los comentarios o por contacto.

    Saludos

  5. Para cuando egrese de Tec realice mi tesis “Diferencias Entre Herramientas de Desarrollo Web”, ya tenía un par de año estudiando Web como hobbie, al realizar la tesis me di cuenta como comentas que no es que puedas hacer paginas mejores en flash(que por lo visto ya se están pasando de MODA), o en aquel entonces el dificilísimo JavaScript que solo se utilizaba para poner un Title Animado o a lo mucho validar un form, tras estudiar detalladamente cada unos de mis temas (HTML, JS, CSS, Flash(5 en aquel entonces),PHP/MySQL) me di cuenta que no hay diferencias que marcar, ya que cada una de las tecnologías que se usan en web de lado cliente son complementarias y cada una enriquecen una web y sacian las deficiencias de la otra, si se puede omitir aprender algo y donde se pueden marcar diferencias son en tecnologías clientes ya que todas prácticamente son lo mismo obio algunas con sus ventajas pero todas el final es crear un Código HTML de forma dinámica y enviarlo al cliente.
    Yo creo que todo buen desarrollador web, tiene que aprender, XHTML , JS, CSS, y un leguaje servidor mi predilecto PHP.
    Divide y vencerás concepto básico de la programación Estructurada en funciones, no veo muy viables los ejemplos de SQL y noSQL, al igual que el “cruzar” datos con codificación si es que en un momento estás hablando de programación en capas lo cual te lleva a una contradicción
    El uso de framework lo comparo con el uso de una calculadora, y como preferencia prefiero evitar su uso, y buscar la forma de hacer mi framework, que la verdad no es difícil solo hay que buscar las mejores formas de hacer las cosas, pensar a futuro, saber dividir y sobre todo ser ordenado, creo que en la actualidad el software se esta Industrializando, al punto de que todo se hace a lo rápido y por desgracias muchas veces a lo malecho, costando eficiencia en ejecución por rapidez en el desarrollo, muchos prefiere aprender un framework que perder tiempo en aprender un lenguaje, algo que considero un gan error, tan solo cuanto tardo JS para que nos diéramos cuenta de lo que puede hacerse, todo porque en sus primeros días se consideraba un lenguaje que solo servia para validar, y todo se basaba en un copy/paste que por desgracia veo que la historia se esta repitiendo con jquery

  6. perdon releyendo el comentario me di cuenta de un error, en “y donde se pueden marcar diferencias son en tecnologías clientes ya que todas prácticamente son lo mismo obio algunas con sus ventajas” me refiria a Tec. de lado Servidor, la de cliente son complementarias mientras que las de lado servidor son comparativas

  7. Hola Pakos

    Tu ejemplo de la calculadora, permíteme que también lo utilice: tu cuando tienes que hacer una raíz cuadrada usas una calculadora, no usas un lápiz y papel, lo mismo con los frameworks.

    El tema de noSQL y mezclar los datos obtenidos por consultas no suelen ser necesarios salvo en temas de grandes aplicaciones y rendimiento. Quizás no siga el modelo de capas, pero te aseguro que es necesario.

    Saludos

Comments are closed.