Percepciones erróneas sobre el desarrollo de aplicaciones web

by Eran Galperin - 18 Agosto 2008

Python Syntax

Durante el tiempo en que me dedicado a crear aplicaciones para la web, he leído y oído muchas suposiciones sobre prácticas y tecnologías de desarrollo. Ésta es mi lista de percepciones erróneas sobre el desarrollo de aplicaciones (web):

1. El código orientado a objetos es menos eficiente que el código por procedimientos

Este es el argumento número uno en contra del diseño orientado a objetos (OO) de los adalides de la programación por procedimientos. Este argumento se basa más en intuición que en hechos. Se usan habitualmente los mismos ejemplos para comparar código por procedimientos con su equivalente OO, en los cuales el código procesal sale triunfante como más conciso y efectivo.


//Procedural, quick and to the point!
$string = ‘hello world’;
echo $string;

//OO, verbose and ineffecient…
class Speaker {
public function say($string) {
echo $string;
}
}

$me = new Speaker();
$me -> say(‘hello world’);

En realidad, este ejemplo es como comparar manzanas con naranjas. Ambos enfoques utilizan ‘eco’ para mostrar una cadena de caracteres, sólo que en el código OO se lo incluye dentro del método de una clase. Un ejemplo más apropiado para el código por procedimientos sería:

function say($string) {
echo $string;
}

say(‘hello string’);

El cual es muy similar al código OO escrito con anterioridad. En realidad la estructura de una aplicación sólida en OO no se diferencia demasiado de la de los paradigmas por procedimientos/funciones, como mi segundo ejemplo sugiere, y se basa principalmente en la habilidad y experiencia del programador.

La metodología OO sin embargo provee de más herramientas a los lenguajes para lidiar con las complejidades del código y permitir la reutilización del mismo, por lo tanto para usar únicamente programación por procedimientos se requiere de mayor disciplina y experiencia.

En realidad, es la eficacia del intérprete del lenguaje usado la que determinará diferencias de rendimiento entre el código por procedimientos y el OO. No hay diferencias visibles entre ambas metodologías para su uso normal en aplicaciones web. En el ambiente web las operaciones de IO, tales como peticiones al servidor o consultas a la base de datos, son generalmente el cuello de botella en su funcionamiento/escalabilidad.

Como es imposible conocer por adelantado cuáles serán los cuellos de botella (solo se pueden hacer conjeturas), intento seguir las Reglas de Optimización:

1. Primer regla de optimización: – No
2. Segunda regla de optimización: – No…. Todavía
3. Tercer regla de optimización: – Analizar el rendimiento de la aplicación antes de optimizar

Es mucho más importante elegir una metodología que promueva un código más estructurado y fácil de mantener, como lo es la programación orientada a objetos, que el tener pequeñas mejoras en el rendimiento. Con un diseño bien estructurado, analizar el rendimiento de una aplicación y corregir su código es un proceso relativamente sencillo.

2. El backend es la parte más importante del desarrollo

Veo a menudo que HTML, CSS y Javascript son tratados como leguajes de segunda clase. A pesar de que HTML y CSS no son lenguajes de programación per-se, su semántica y correcta puesta en práctica en diversos exploradores requiere de mucha experiencia y habilidad, frecuentemente ausentes en desarrolladores que de otro modo serían excelentes programadores web.

Es común delegar la puesta en práctica de estos lenguajes de marcado a los diseñadores web, desarrolladores de “aplicaciones cliente” (los cuales son considerados de nivel inferior) o a herramientas de auto-generación de código.

Ambos enfoques son erróneos, el cliente es un aspecto importante del proceso del desarrollo web, especialmente debido al ambiente único en que un sitio web o aplicación funciona en la Internet – el explorador con sus numerosas variantes, cada una con su propio conjunto de problemas y apremios.


Javascript (o DHTML) es otro dominio que es menospreciado pero que se ha convertido en un requisito tan común en la creación de aplicaciones ricas (rich applications) en Internet. Muchos desarrolladores web con antecedentes en lenguajes de servidor tienen una aversión intrínseca al Javascript debido a su extraña sintaxis OO, las dificultades que se encuentran al depurar errores (debugging) y su falta de uniformidad en los diversos exploradores. Admito que en su momento pensé lo mismo, no obstante por necesidad Javascript empezó a gustarme y ahora lo considero una habilidad imprescindible para cualquier desarrollador web serio.

No menosprecie los lenguajes del cliente. A veces los desafíos más grandes para un desarrollador web se encuentran justamente en ellos.

3. Los diseñadores gráficos son entendidos en el diseño de interfaces.

* Esto es más relevante en el caso de aplicaciones web que en sitios web.

A pesar de que existe una conexión entre el diseño gráfico y el diseño de Interfaces con el Usuario (UI), por naturaleza los diseñadores gráficos no son idóneos en el diseño de UIs. No me canso de hacer énfasis en ello. El diseño de interfaces y la experiencia del usuario es una competencia distinta al diseño gráfico. La forma en que el usuario empleará un sitio/aplicación es distinto de cómo será visto. Son conceptos relacionados – pero no iguales.

Citando a Wikipedia:

Mientras que el diseño gráfico tradicional intenta hacer el objeto o aplicación físicamente atractivo, la meta del diseño de interfaces gráficas es hacer la interacción con el usuario tan simple y eficaz como sea posible.

Los diseñadores gráficos que no poseen experiencia en el diseño de interfaces tienden a preferir estética sobre utilidad, y esto es natural pues es su punto fuerte. Por otro lado, tampoco los programadores (web) son necesariamente buenos diseñadores de interfaces.

El diseño de interfaces gráficas es importante para crear una aplicación usable. Cerciórese de que la persona adecuada esté a cargo de su creación.

4. La existencia de un lenguaje de programación superior

A pesar de que algunos lenguajes de programación son considerados superiores a otros (de mayor nivel, más opciones, mejor sintaxis, etc.), ninguno de ellos puede ser calificado como el lenguaje. Esta discusión es más una declaración de preferencias personales que el reconocimiento de un mérito real.

Todos los lenguajes de programación modernos tienen en general las mismas características y pueden realizar la mayoría de las tareas con similar eficacia. Algunos pueden resolver problemas específicos mejor que otros, no obstante ninguno de ellos hace todo mejor que el resto.

Ciertos lenguajes tienen mayor difusión debido a entornos de desarrollo (frameworks) altamente aclamados creados específicamente para ellos (me estoy refiriendo a Ruby on Rails, por supuesto). Pese a que esta es una discusión de mayor significado, en realidad todos los lenguajes más importantes tienen al menos un entorno serio (Django para Python, Zend Framework / CakePHP / Symphony para PHP).

Utilice el lenguaje con el que usted se sienta más cómodo, pero no ridiculice el resto desde su inexperiencia con ellos.

5. XML es más económico que una base de datos

Las bases de datos son notorias por ser el cuello de botella principal en muchos sitios web/aplicaciones exitosas. Dicha notoriedad incita a los principiantes a buscar capas de persistencia alternativas – siendo XML la más común.

En general, el análisis de un archivo XML es más lento e intensivo en recursos que efectuar una consulta a una base de datos. Esto depende de la complejidad de la consulta, pero es verdad para el 99% de los casos. Además, las bases de datos tienen un lenguaje mucho más completo para buscar, pedir y manipular información.

XML es un formato portable para almacenar datos jerárquicos. Es útil para portar datos entre diversas bases de datos o entre bases de datos e interfaces. No obstante XML no es una base de datos, por lo tanto no lo trate como tal.

Si tiene más ideas para agregar a esta lista, me encantaría saber su opinión.

2 Comments on “Percepciones erróneas sobre el desarrollo de aplicaciones web”

  1. Enrique Place Says:

    Felicitaciones, muy buen artículo, opino exactamente. 😉

    Ya me ha pasado de conocer proyectos muy grandes desarrollados en PHP en modalidad “extrema optimización” (muy probablemente sin verificar cuanto se mejora) pero que el costo se le ha movido hacia el lado de lo complicado que se volvió agregar nuevas funcionalidades (lo que genera un peligro a la hora de ser competitivos en un mercado cambiante).

  2. Domain Flipping Says:

    You have a great blog here and it is Nice to read some well written posts that have some relevancy…keep up the good work 😉

Leave a Reply