jueves, marzo 23, 2017

Sobre tolerancia y soberbia (en el mundo de los programadores)

Participo en un grupo de facebook de programadores y cuando alguien pregunta sobre determinada tecnología, muchas respuestas no son sobre la tecnología que se está preguntando, si no que son "cámbiate a esta otra tecnología que es mejor".

Como viejo en esto de la informática les puedo decir que el lenguaje, la tecnología, el framework, da lo mismo... son sólo un medio, no el fin: Lo esencial es independiente del medio.

Cuando yo comencé, "ventanas" y "objetos" eran ciencia ficción. Por allá por los '90s se programaba de otra manera. Yo aprendí con COBOL, gwBasic y dBase III Plus y en menos de 20 años todo cambió completamente... menos la base. al final todos los lenguajes y la forma de programar se transforma en impulsos eléctricos que determinan lo que hace el programa.

En uno de mis primeros trabajos aprendí "Lotus Notes" una base de datos documental con un lenguaje de programación propio parecido al visual basic. Me especialicé, y gracias a eso pude subir profesionalmente llegando a una empresa mas grande.

De programación estructurada en lenguajes para DOS, había pasado a una programación basada en eventos para Windows.
Hasta que un día la empresa cerró su "linea de producción" de Lotus Notes. Pocos clientes producto del alto costo de las licencias hacían "inviable" esa linea de negocios.
El ultimátum llegó rápido: "Tienes que aprender ASP y SQL, para integrarte a esa área de negocios", tienes a tu disposición todos los libros de ese estante. (Sí, libros... todavía no había google).
Luego vino .NET y Java; y con eso pasé de POE a POO, y de una base de datos documental a una relacional... y al web, lo que "la llevaba" a comienzos de siglo, cuando los teléfonos todavía eran para hablar por teléfono.

Pasarían años antes de mi siguiente desafío y actual especialización: GIS. sistemas de información geográfica: Mapas y bases de datos "espaciales" (no, no galácticas: gDB)... programación con geometría.

A pesar de ser especialista GIS, me tocó trabajar en un proyecto no-GIS que incluía una app, y tras haber participado en el análisis decidimos que la forma mas eficiente de abordarla era como una aplicación híbrida, donde decidí potenciar el HTML5 con AngularJS; así que sumamos a la lista Cordova y angularJS.

¿Apps nativas?, pronto, veo inminente la necesidad de un servicio para notificaciones y eso debe ser en nativo.

Pero, no escribo esto para mostrar mi curriculum, lo hago para llegar a un punto.

Cuando alguien pide ayuda de PHP, salen con que el php no sirve que mejor usen otra cosa; piden ayuda de apps híbridas y salen con que es mejor las apps nativas, si mySQL que mejor posgree, etc. etc.

No hay un lenguaje mejor que otro, no hay un Framework mejor que otro, lo que hay son diferentes necesidades que cubren diferentes tecnologías.

Al principio les hablaba de COBOL, el primer lenguaje unificado para funcionar en computadores (mainframes) de distintas marcas. Fue creado en los '60... si alguien hubiese preguntado en los '90 si estudiar Cobol o visualBasic, probablemente todos hubiesen recomendado vBasic, y probablemente hoy muchos piensen que COBOL es algo que solo se ve en las clases de historia... pero hoy la programación en COBOL es uno de los negocios mas rentables del mundo según wikipedia, donde también dice que Bill Gates dijo "No sé qué lenguajes habrá en el futuro, pero seguro que Cobol estará todavía allí"... el ultimo estándar de COBOL salió el 2014.

Pero claro, no sirve para programas de windows o multimedia o juegos o lo que está de moda... sirve para bancos y grandes compañías que ocupan mainframes para procesar grandes cantidades de datos.

Preguntar si es mejor COBOL o JAVA, es como preguntar si es mejor un destornillador o un martillo... cada herramienta tiene su uso.
Preguntar si es mejor una app híbrida o una app Nativa es lo mismo: Una app nativa puede ser mas eficiente porque no hay un "intermediario" (webview), pero para una empresa su costo es mayor: Dos líneas de desarrollo, cada línea de desarrollo debe aplicar en su versión cada correctivo o evolutivo; cada línea de desarrollo tiene su especialista en Java u Objetive-C.
Para una app que solo debe tomar y mostrar datos no se justifica... por mucho que los datos se desplieguen 0.003 segundos mas rápido, a la hora de evaluar costos y beneficios ganará la híbrida.

Por otro lado en una app que requiera acceso a todas las capacidades del dispositivo, o funcionalidades propias de un OS especifico, probablemente gane la nativa.

Veo con simpatía a newbies en la programación, que con gran soberbia intentan evangelizar en su propia especialización a aquellos que piden ayuda en otras tecnologías, argumentando que su especialización "es mejor"; pero la verdad es que nada es mejor que nada y cada herramienta tiene su propósito y lo importante es aprender la lógica para utilizar cualquiera de ellas y tener la capacidad de adaptación suficiente para el cambio, porque la tecnología es muy cambiante. 

Conviene ser un maestro que ocupa toda las herramientas, en vez de un especialista en martillos, porque si un día se pone de moda usar tornillos en vez de calvos, no te servirá de nada gritar a los 4 vientos que los clavos son mejores.

No se si se entiende la idea...

información de wikipedia de cosas que menciono.
COBOL: https://es.wikipedia.org/wiki/COBOL
DBase: https://es.wikipedia.org/wiki/DBase
GWBasic https://es.wikipedia.org/wiki/GW-BASIC
POE https://es.wikipedia.org/wiki/Programaci%C3%B3n_dirigida_por_eventos
BD Documental https://es.wikipedia.org/wiki/Base_de_datos_documental
GIS https://es.wikipedia.org/wiki/Sistema_de_informaci%C3%B3n_geogr%C3%A1fica

4 comentarios:

Unknown dijo...

Me parecen muy acertados tus puntos, felicidades por un artículo bien escrito.

Y concuerdo contigo, los lenguajes de programación sólo son las herramientas, al final las personas que usan el software, probablemente nunca sabrán (y no les interesa mucho) en que fue programado.

Anónimo dijo...

Vives? Me gustaría un consejo tuyo. Revisando otra cosa llegué a este blog y esta entrada me pareció interesante.

Juan pancho dijo...

Si vivo... no sé como responder, ni si te llegue una notificación o algo con este comentario, si quieres mensaje mas directo mis redes son:
instagam _juanpancho (igual que mi twiter, pero twiter no lo abro nunca)
facebok www.facebook.com/joros

Anónimo dijo...

Perfecto. Te hablo entonces. Gracias!

(Al haber comentado en esta entrada me llegan notificaciones de nuevos comentarios)