Desarrollo de interfaces, widgets y otras cositas

danigm's picture

Desde que el principio de los tiempos, cuando se empezaron a utilizar ordenadores y los programadores tenían que definir una interfaz de comunicación entre el usuario y la máquina, el diseño y desarrollo de interfaces ha evolucionado mucho.

En un momento de la historia, aparecieron las pantallas, el ratón y las interfaces de los programas cambiaron drásticamente. Por supuesto sigue habiendo interfaces que son independientes de estos nuevos tipos de dispositivos, pero la mayoría utilizan esta nueva tecnología que enriquece la experiencia de usuario.

Actualmente y sin darnos casi cuenta estamos viviendo dos cambios trascendentales a la hora de desarrollar interfaces. La primera y más obvia es la que los nuevos dispositivos nos están imponiendo, las pantallas táctiles han supuesto un cambio bastante importante, y los diferentes tipos de pantalla también están haciendo que los desarrollos sean cada vez más complejos, ya que podemos estar hablando de una pantalla de un móvil o de una pantalla con una resolución de 1080 panorámica. El segundo cambio, quizás menos obvio, no tiene que ver con el hierro, sino más bien con las herramientas de desarrollo y la forma en la que se diseñan e implementan las interfaces.

Hace ya bastante tiempo, cuando ocurrió el boom de las interfaces gráficas, el uso del ratón, los millones de colores y todas esas cosas, empezaron a surgir muchas bibliotecas gráficas, con muchos widgets y utilidades para facilitar la vida al desarrollador. Cada set de widgets o biblioteca gráfica ofrecía un estilo determinado y todas las aplicaciones tenían un estilo más o menos homogéneo, surgieron los temas para personalizar y todas esas cosas tan antiguas.

Sin embargo las aplicaciones web llegaron, apareció el 2.0 y se comenzaron a desarrollar interfaces más vistosas y llamativas utilizando lo que la web nos daba, el html y el css se convirtieron en el estándar de desarrollo de interfaces y a día de hoy creo que puedo decir sin temor a equivocarme, que la mayoría de interfaces gráficas se están desarrollando con esta tecnología.

En el desarrollo web sólo tenemos HTML + CSS + javascript, y los widgets que implementan la mayoría de los navegadores son muy limitados, tenemos botones, enlaces, imágenes, listas, tablas, campos de formularios básicos y poco más. A la hora de hacer aplicaciones más ricas los desarrolladores han tirado hacia adelante y utilizando la tecnología web se han implementado interfaces mucho más complejas.

Por suerte o por desgracia, hoy en día aún no hay un estándar de widgets o biblioteca de interfaz que se haya impuesto o que los desarrolladores sopesen a la hora de crear una interfaz web. Muchos lo han intentado y estoy seguro de que hay bibliotecas de widgets web muy buenas, pero a día de hoy, la mayoría de los nuevos desarrollos web se implementan su propia interfaz, a base de elementos básicos y reutilización básica de css + javascript, copy & paste y esas técnicas tan nuestras.

Sin embargo y dado el momento histórico en el que nos encontramos, creo que hay gente que va por un camino bastante interesante. Estoy hablando de twitter bootstrap, una "biblioteca web" que te permite desarrollar una interfaz web muy rica, compatible con múltiples navegadores y adaptable a diferentes tamaños de pantalla, sin tener que preocuparte en un principio por el diseño, el css, el javascript o lo que sea.

Lo bueno de twitter bootstrap es que en un principio quita al programador el problema de tener que diseñar una aplicación bonita. Por defecto es bonito y es muy fácil de utilizar. El desarrollo web, y como ya he comentado antes, el nuevo modelo de desarrollo de interfaces gráficas, centran muchísimo la atención en el diseño, y por tanto, los programadores, cada vez más, estamos derivando a diseñadores y los diseñadores a programadores. Este tipo de tecnologías ayudan a separar otra vez estos dos roles tan dispares y que hoy en día son tan necesarios en una misma persona.

En el escritorio también están surgiendo muchos cambios. En gnome por ejemplo ya no se tira tanto de los widgets básicos de GTK+, sino que se desarrollan aplicaciones más personalizadas, con un tipo de desarrollo más parecido a lo que es la web y se utilizan tecnologías como Clutter para tener más control sobre la interfaz. Y la tecnología web también ha calado en el desarrollo de aplicaciones de escritorio, teniendo hoy en día muchas aplicaciones cuya interfaz no es más que html+css+javascript que se ejecuta en un entorno controlado con webkit.

Como desarrollador no puedo obviar la potencia y control que tenemos hoy en día sobre las interfaces y aplicaciones, sin embargo, con todo este cambio, cada vez más empiezo a echar de menos la simpleza y la facilidad para crear una simple interfaz sin tener que preocuparme del color de fondo o del alto de las filas.

Quizás hoy en día nos estemos centrando demasiado en la parte estética de las interfaces gráficas en lugar de en la parte funcional y esto nos está dando muchos dolores de cabeza y también mucha diversión a los desarrolladores. No tengo ni idea de por dónde va a tirar esto, a lo mejor llega el momento en el que empezamos a tender a unificar interfaces y a simplificar, convirtiendo la web en simples bases de datos y el navegador en una gran biblioteca gráfica. O quizás se tienda cada vez más al control total y cada aplicación sea un mundo diferente, pintando y dibujando a base de directivas básicas.

Muchas veces, los desarrolladores de interfaces vamos cogiendo lo que nos llega, y desarrollando ya sea web, gtk+, qt, qml, android o lo que sea, pero de vez en cuando, es bueno pararse, mirar hacia atrás, mirar hacia delante y valorar si tiene algún sentido lo que estamos haciendo hoy en día.

Todos los datos y reflexiones de este artículo son completamente inventados en base a experiencia personal y lo que veo por internet. Es posible que yo viva en una realidad no global y que cuando digo la mayoría en realidad sea mentira.

Comments

1
Eduardo Robles Elvira's picture

Muy interesante y amena lectura resulta de este artículo. La verdad es que vivimos una época interesante con el boom de los tablets, las aplicaciones tácticales y web. Quien sabe qué nos depara el futuro, a lo mejor volvemos a las interfaces de comandos pero de voz y empieza el boom de las interfaces como siri pero para las gafas de google y de repente nos vemos todo el mismo lío interfaz/backend pero en una dimensión no gráfica.

En el mundo de la informática como también pasa en otros campos, las antiguas ideas al final vuelven a aparecer de nuevo, las ideas se van rejuntando según la tecnología del momento y van surgiendo nuevas tecnologías a partir de eso. El avance en nuestro campo no suele ocurrir mediante saltos al vacío, sino como en una cuesta, eso sí, muy empinada.