Software

El desarrollo de software está cambiando a un ritmo cada vez más frenético y hoy es totalmente diferente de lo que hasta hace poco podíamos considerar el modelo "tradicional" del negocio. Hoy no basta con estar presente en Internet, hay que operar en Internet. Por este motivo las web actuales integran la lógica del negocio y las aplicaciones de escritorio integran los protocolos y los estándares de la web. Mas que una integración es realmente una fusión de ambos paradigmas.
 
Por otra parte el hardware avanza constantemente y en los últimos años las aplicaciones los dispositivos móviles (smarphones y tablets) practicamentente triplican el parque de ordenadores. Se espera que esta tendencia se mantenga y además el tipo de dispositivo aumenta, ya tenemos las televisiones y los más variopintos appcesorios (relojes, pulseras, bolígrafos, camaras fotográficas y un largo etc. que incluye prácticamente todo lo que podemos imaginar). Por muy dispares que sean todos son capaces de compartir información entre sí y pueden ser utilizados en todos los aspectos de la vida cotidiana, sea de forma profesional o personal.
 
Esto supone un nuevo reto para la industria del software: las aplicaciones tienen que ser capacer de ejecutarse en todos los dispositivos posibles y lo que es más importante los criterios de usabilidad lo marcan los usuarios. Atrás van quedando los tiempos de instalaciones y parametrizaciones complicadas, con un manual de uso más o menos extenso. Ahora el usuario está acostumbrado a determinadas normas de uso y o somos los creadores del nuevo Angry Birds o tenemos que ajustarnos a la forma de fncionamiento que se espera de nuestros desarrollos.
 
Por tanto en el desarollo de software tenemos tres puntos que considero básicos:
  1. Internet
  2. Integración fluida entre el escritorio, los navegadores web y las app para dispositivos móviles
  3. Proporcionar al usuario una experiencia de uso que cumpla sus expectativas

Para lograr triunfar en este empeño debemos adaptar nuestro entorno de desarrollo y pruebas a los requerimientos de nuestro proyecto y que podamos escalar con las mínimas modificaciones a las necesidades de la fase de producción. Por otro lado las herramientas (IDEs, lenguajes de programación, motores de B.B.D.D, etc) que utilicemos deben ser universales en el sentido que permitan ejecutar nuestro código en cualquier entorno, dispositivo y/o sistema operativo que requiera nuestro proyecto. Solo en ese caso seremos capaces de gestionar adecuadamente, con unos costes y en unos plazos razonables el ciclo de vida de nuestros desarrollos y aplicaciones. No hacerlo, nos aislará de la inmensa mayoría de usuarios.

 

Por suerte actualmente existen soluciones tecnológicas que permiten afrontar con éxito estos retos.


Tenemos varios aspectos importantes:

Acceso a Internet: Siempre que sea posible debe ser mediante fibra óptica, cable o equivalente; para tener garantizado el ancho de banda y velocidad necesarios. La diferencia entre operadores es mínima en cuanto a precios y calidad de servicios, exceptuando ofertas puntuales para captar nuevos clientes. El factor determinante en este caso es la cobertura y llegado el caso mi experiencia me dice que es preferible un operador real a uno "virtual" que utilice la infraestrutura de otro. La diferencia la notaremos cuando ocurra alguna incidencia.

Hosting Web: Actualmente es posible encontrar todo tipo de servicios y precios. Según mi experiencia las compañías de EE.UU. suelen ofrecer más recursos y servicios por el mismo precio y factores como distancia, diferencia horaria o idioma no son relevantes. De hecho muchos de ellos tiene servidores en Europa. Es más importante poder ir ampliando recursos de una forma inmediata, sin interrupciones. De esta forma forma el trabajo realizado durante el desarrollo se escala a producción sin apenas modificaciones. Mi preferencia personal es Arvixe, su plan personal tiene todos los servicios y recursos que podamos necesitar, incluyendo streaming por un precio más que ajustado y pasar a un plan superior es automatico. En otros proveedores como por ejemplo Bluehost el proceso es más largo y complicado, llegando incluso a cambiar a otro proveedor dentro del grupo.


Entornos de desarrollo Web: Hace mucho tiempo que las páginas web han dejado de ser tener un función presencial. Ahora son una fuente de ingresos, gestionan un gran número de visitantes y usuarios e incluso funcionan como herramientas a nivel empresarial. Todas estas funciones se implementan sobre una estructura común (como los cimientos de un edificio), por tanto casi nunca es necesario partir de cero. Esta alternativa solo es válida para casos extremadamente sencillos o extremadamente complicados. Lo habitual es utilizar gestores de contenido (CMS) que nos ofrecen un desarrollo previo adecuado y optimizado para nuestras necesidades.
 
Hay todo tipo CMS dependiendo de nuestras necesides podemos utilizar desde los más básicos que a costa de mas trabajo nuestro no ofrecen más libertad en el producto final hasta los más sofisticados que están listos para ser usados desde el primer momento, pero si necesitamos hacer algun cambio será mucho más complicado. Siguiendo con la analogía de la construcción podemos construir nuestro edificio con ladrillos, vigas, paneles, etc. o comprarlo ya terminado. En este último caso habrá cambios que simplemente no podremos hacer. Lo que rara ves tiene sentido es fabricar incluso los ladrillos.En este caso hay prácticamente un CMS adecuado para cada proyecto.
 
Mi preferencia estrictamente personal es CMS Made Simple que creo una opción muy equilibrada entre funcionalidades de serie y posibilidades de modificación, ampliacion y personalizacion. La mayoría de los CMS son gratuitos y se paga si queremos soporte profesional, aunqe en estos casos hay que comparar las posibles ventajas de los CMS comerciales.Finalmente la disponibilidad del CMS que elijamos es determinante a la hora de escoger un proveedor de hosting.
 
También podemos disponer del mismo servicio en nuestro ordenador or red local a través de Softaculous, lo cual puede ser una alternativa interesante en muchos casos, equivalente a tener nuestro propio hosting para desarrollo, demos, etc.
 
 
Entornos de desarrollo de aplicaciones: Tradicionalmente cada plataforma (PC, Mac, IOS, Android) tiene sus propias herramientas y lenguajes específicos. Lo habitual es que estemos especializados en alguno en particular y los desarrollos multiplataforma implican la coordinación de diferentes equipos lo que equivale a mas complicaciones y mayor coste.
 
No soy partidario de las soluciones "universales" estilo java, porque al final terminamos dependiendo de máquinas virtuales y runtimes de terceros que pueden implementar o no la funcionalidad que necesitamos, o lo que es peor dejar de soportarla. En el caso de java esto ya ha sucedido.
 
Soy partidario de generar código nativo siempre que sea posible y que la aplicación no requiera de nada que no sean los servicios propios del S.O donde se ejecuta (en otras palabras, .Net no es una opción para mí). Hasta ahora solo conozco un entorno capaz de hacer eso RAD Studio XE5 de Embarcadero y que desde que los "Turbo" de Borland es mi entorno principal de desarrollo. Es una decisión estrictamente personal, porque creo que cada entorno tiene sus pro y sus contras, es cuestión de costumbre. Al fin y al cabos se trata simplemente de lenguages de programación
 
Experiencia de usuario: Lo único necesario es un cambio de mentalidad y documentarse de lo que desean nuestros usuarios y lógicamente dárselo. Si no es técnicamente posible, extremadamente complicado o no merita la pena tenemos que explicarlo, demostrarlo y ofrecer una alternativa viable para el usuario. Si el usuario no usa la aplicaciój, hemos trabajado en balde. Actualmente deciden ellos y no los desarrolladores.

Creo que con estas bases estamos en una buena posición para acometer proyectos de cualquier complejidad. El límite está en nuestro cerebro, en nuestra capacidad creativa para hacer algo útil e innovador.

 

 

 

 
comments powered by Disqus