¿Desarrollar software aumenta el coeficiente intelectual?

¿Desarrollar software aumenta el coeficiente intelectual?

Sí, programar software puede aumentar parcialmente tu coeficiente intelectual, ya que beneficia directamente a la inteligencia lógico-matemática y creativa, las mismas que son evaluadas en los test de coeficiente intelectual.

Cerebro de un programador

Sin embargo, es importante tener en cuenta que desarrollar software va a favorecer a nuestras habilidades cognitivas siempre y cuando se fomenten sobre un entorno de buenas prácticas y aprendizaje continuo.

Buenas prácticas de desarrollo de software que influyen en tu forma de pensar

Cuando ya tenemos un tanto de experiencia desarrollando proyectos de software, ya hemos construido un modelo mental de lo que podría ser un proyecto de software ideal. Pero, ¿qué camino seguir para desarrollar un proyecto de software correctamente?

Puede parecer no muy complicado, pues hoy en día podemos encontrar en internet abundante información acerca de metodologías para desarrollo de proyectos como SCRUM o Programación Extrema. Ambas nos proveen de directrices que debemos seguir durante el ciclo de desarrollo de un proyecto, para garantizar la organización, observación, estimación de tiempos y/o trabajo en equipo.

Buenas prácticas de desarrollo de software

Desde nuestro punto de vista:

Conseguir ser organizado (para ser altamente productivo) puede llegar a ser mucho más difícil que aprender a programar (para quienes están empezando), o dominar una nueva tecnología, pues lo realmente complicado es desarrollar proyectos de forma estructurada, precisa y sobre todo, fácil de leer.

Albert Einstein una vez dijo:

“Si no lo puedes explicar de forma simple, no lo entiendes suficientemente bien.” Albert Einstein

Esto aplica para cualquier área de aprendizaje, por ejemplo, específicamente en el desarrollo de software, si no somos capaces de simplificar nuestro código, y organizarlo de tal forma que un tercero pueda comprender nuestro proyecto, no lo estamos haciendo bien.

En tal sentido, a través de la práctica, debemos conseguir moldear nuestra forma de pensar y hacer las cosas, además, tener en cuenta pautas y directrices proporcionadas por distintos marcos de trabajo, metodologías y/o recomendaciones de expertos aplicados sobre nuestros proyectos. Sin embargo, no es recomendable ni eficiente seguir al pie de la letra tales pautas, pues debemos ser flexibles y no estrictos.

Bob esponja y Patricio programando

A continuación, te describiré 2 buenas prácticas de desarrollo de software que debes tener en cuenta al momento de realizar tus proyectos y que estoy seguro terminarán por cambiar tu forma de pensar.

Simplicidad

¡Haz tu código lo más simple posible!

No es novedad decir que uno de los más grandes problemas de la informática es la complejidad, por ello, la simplicidad es quizá la cualidad más importante y valorada dentro del mundo del software.

Con el tiempo, las computadoras se han vuelto indispensables en nuestras vidas, y han ocasionado un cambio muy importante en la sociedad. En pocas palabras, las computadoras son útiles porque nos permiten hacer más con menos, es decir, hacer muchas tareas utilizando menor cantidad de recurso humano.

Imaginemos que una persona desea hacer todas las operaciones que hace una computadora durante un año, probablemente, le tomaría los años que le quedan de vida, y es que el valor real de una computadora es su rapidez y exactitud. ¡Y eso es genial!

Sin embargo, no podía ser tan perfecto, pues las computadoras tienen un gran defecto: siempre presentan fallas. Quizás aún no hemos sido conscientes de la cantidad de veces que suelen presentar algún desperfecto de software. Si cualquier cosa que se usa con frecuencia presentara tantas fallas como una computadora, estoy seguro que ya nos hubiéramos desecho de ello.

Fallas en las computadoras

La mayoría de personas que conozco, por no decir todas, presentan al menos 1 desperfecto por semana, si no es que más. Podría decir que al menos una vez a la semana he sufrido algún tipo de falla o me he enterado que un amigo o compañero de trabajo ha pasado por lo mismo, eso desde hace aproximadamente 10 años.

Si sacamos cuenta, son 480 formas distintas de averías sólo en mi experiencia. Y eso no es genial.

¿Por qué las computadoras sufren fallas tan continuamente?

Respecto al software, hay una sola razón: malos programadores.

Hace aproximadamente 5 años tenía la sospecha de que el motivo eran los malos programadores; sin embargo, no estaba muy seguro.Ahora, con algunos años más de experiencia en el rubro de la informática y habiendo consultado a muchos expertos por medio de sus publicaciones, ya no tengo dudas.

Puedo decir a cabalidad que son los malos programadores los culpables de las innumerables fallas en las computadoras.

Innumerables fallas en computadoras

¿Qué es un mal programador?

Parece un poco injusto culpar a los programadores de software, aún más cuando la gran mayoría de personas que conozco que se dedican al desarrollo de software de alto nivel son profesionales que tienen bastante desarrollado el pensamiento lógico.

Si la gran mayoría de los programadores son personas bastante lógicas, ¿por qué razón existe software con tantos errores? La razón principal de los errores informáticos es la COMPLEJIDAD.

La fabricación de una computadora es probablemente el proceso más complejo que conozco, pues por cada segundo transcurrido se pueden ejecutar millones de tareas. Además, tiene miles de piezas que deben funcionar de manera sincronizada. Sólo el sistema operativo que usa una computadora consta de decenas de millones de líneas de código. Sólo Windows 10 consta con más de 4 millones de ficheros y más de medio millón de carpetas. Prueba de ello es la siguiente captura:

Cantidad de líneas de código de Window 10

Para que te hagas una idea aún más completa, a continuación te detallo la cantidad de líneas de código por sistema operativo:

Sistema Operativo Lineas de código
Linux 3.1 Kernel 15 millones
Windows XP 40 millones
Windows 7 40 millones
Windows Vista 50 millones
Debian 5.0 (código base) 67 millones
Mac OS X «Lion» 85 millones

Te dejo un dato adicional:

Facebook cuenta con aproximadamente 61 millones de líneas de código y Google posee alrededor de 2 billones de líneas código.Por supuesto que la gran cantidad de servicios que ofrece Google lo justifican.

Cantidad de líneas de código de Google y Facebook

Es tan complejo el software sobre el cual funciona una computadora que probablemente ninguna persona pueda ser capaz de entender el código en su totalidad.

Por todo ello, la programación debe existir en un entorno donde se busque reducir la complejidad y de este modo conseguir la simplicidad. De esta manera, conseguimos que cualquier programador sin talentos extraordinarios tenga la capacidad de seguir trabajando sobre una aplicación. De lo contrario, el código podría llegar a conseguir un nivel de complejidad tan alto que sería casi imposible trabajar sobre él.

En resumen, de eso se trata programar: “Reducir la complejidad hasta conseguir la simplicidad”.

¿Cómo ser un buen programador?

Un buen programador crea cosas que son fáciles de entender, mantener y fáciles de encontrar errores. Pero, no confundas simplicidad con menos líneas de código o con dejar de usar tecnologías modernas. A veces, hacer más simple tu código puede aumentar las líneas de código, sólo asegúrate de siempre documentarlo.

Por lo general, las tecnologías más avanzadas o modernas tienden de forma natural a la simplicidad. Sólo hay que aprender a usarlas correctamente, lo que suele ser un desafío.

Hombre programando software

¿Es más difícil programar de forma simplificada?

Por lo general, pensamos que programar de forma simplificada nos llevará más tiempo que hacerlo de forma rápida, por ejemplo, cuando debemos cumplir con algunas tareas de nuestro trabajo, generalmente, tratamos de hacerlo de forma rápida, sin detenernos a pensar y planificar. ¡No podemos estar más equivocados!

Es más eficiente dedicar un poco más de tiempo a pensar en el problema en búsqueda de la comprensión máxima y de este modo poder plantear una solución simplificada, que escribir de forma rápida para luego detenerse a pensar mucho al mismo tiempo que el código va creciendo y haciéndose más complejo.

Planificación de un proyecto de software

Sólo hay que observar a nuestro alrededor y darnos cuenta del gran problema en que se ha convertido la COMPLEJIDAD en los programas de software.

Existen muchas aplicaciones que han terminado por estancarse al intentar agregar una nueva funcionalidad al horrible, enorme y complejo monstruo de código en que se habían convertido.

Si quieres conocer más acerca de fundamentos y formas de programación simplificada te recomiendo leer el siguiente libro. ¡A mí me encantó!

Code Simplicity The Fundamentals of Software

Code Simplicity: The Fundamentals of Software, escrito por Max Kanat-Alexander.

Jefe técnico de Code Health en Google y ex arquitecto jefe del proyecto Bugzilla. Ha estado arreglando computadoras desde los ocho años y escribiendo software desde los catorce.

Pruebas

Siempre realiza pruebas. ¡No son opcionales!

En realidad, nunca debieron ser una opción, sin embargo, muchos programadores aún desarrollan aplicaciones sin usar ningún tipo de prueba de software, pues los errores de código llegan a ser reportados por el cliente final. Por lo general, esto sucede en el caso de los freelancer promedio.

Programar sin hacer pruebas es como manejar sin cinturón de seguridad o hacer acrobacias en el trapecio sin una red de protección. Actualmente, sigue pendiente adoptar la buena práctica de siempre realizar pruebas de software.

Desarrollar software sin hacer pruebas es como hacer acrobacias sin seguridad

Revisemos algunos antecedentes ocurridos por la ausencia o incorrecto uso de pruebas de software que han ocasionado pérdidas económicas millonarias y en algunos casos han costado la vida de decenas de personas.

Errores informáticos ocurridos por la ausencia o uso incorrecto de pruebas de software

Estoy seguro que los acontecimientos mencionados a continuación te harán reflexionar y darle mucha más importancia a los testeos de software.

Pruebas de software
Fallo en el radar detector de misiles.

Ocurrió en 1983 cuando el sistema de alerta detector de misiles de la Unión Soviética reportó que Estados Unidos había lanzado 5 misiles y estos estaban en curso.

Felizmente, quien estaba a cargo por intuición y/o criterio no ordenó un ataque inmediato en respuesta, dado que consideró extraño el ataque por estar fuera de contexto y además, por la cantidad de misiles, pues no eran los comúnmente empleados para un ataque sorpresa.

Horas más tarde, se confirmó que todo fue ocasionado por un error del sistema radar de misiles. Un error un tanto difícil de detectar en su momento, pues el sistema confundió el reflejo del sol en las nubes en una posición determinada con misiles. Por poco y se termina iniciando la Tercera Guerra Mundial. Sin embargo, quizás pudo evitarse tras hacer una tarea exhaustiva de:

  • Estudio del entorno sobre el cual iba desplegarse el sistema de alerta
  • y
  • la inyección de todos los tipos de variables de entrada que pudieran afectar al sistema.

Ambas son prácticas que forman parte de los testeos de software.

Lanza misiles de Estados Unidos
Destrucción del Mariner I

Ocurrió en 1962 y causó la pérdida de aproximadamente 18.5 millones de dólares. El Mariner I fue la primera misión del programa Mariner en intentar sobrevolar Venus, lamentablemente sin éxito.

A los 293 segundos de despegar se presentó un error de software que desvió su trayectoria. Segundos después se tuvo que enviar un comando para ser destruido y así evitar que su caída ocasione mayores daños.

Posteriormente se determinó el error: Una fórmula en el código que se programó de forma incorrecta.

Explosión de cohete espacial
Therac-25, acelerador lineal de radioterapia

Te preguntarás, ¿qué es un acelerador lineal de radioterapia? Los aceleradores lineales son máquinas que emiten haces de rayos X dirigidos a un tumor desde diferentes ángulos. Lo genial es que estos aparatos son capaces de personalizar los rayos X para que se ajusten a la forma del tumor sin afectar el área circundante.

Entre junio de 1985 y enero de 1987 el Therac-25 producido por AECL(Atomic Energy of Canada Limited) fue partícipe de al menos 6 accidentes y 3 fallecidos por haber recibido una sobredosis de radiación.

Acelerador lineal Therac-25

Luego de las investigaciones se concluyó que las causas principales de los accidentes ocasionados por el Therac-25 fueron las siguientes:

  • Malas prácticas de desarrollo de software.
  • Deficiente análisis de requerimientos
  • Mal diseño del software.

Y por si no fuera suficiente, el software sobre el cual funcionaba el Therac-25 fue desarrollado de una manera en la que era casi imposible identificar y subsanar fallas o errores de forma automática.

Otras causas encontradas:

  • AECL jamás envió a revisar el código fuente a una entidad independiente.
  • No se consideró en el diseño ninguna funcionalidad relacionada a la gestión de riesgos.
  • El sistema no permitía verificar el correcto funcionamiento de los sensores.
  • Existían variables bandera que cambiaban de valor en lugar de mantener valores constantes.
  • Desbordamiento de la variable "class3".
  • Entre otros.
Desbordamiento de la variable class3
Buque Yorktown (CG-48) y su división por cero.

Aunque parezca increíble de creer, el Buque Yorktown, un buque de guerra acreedor de innumerables premios por su excelencia en combate y sobre todo por su equipamiento tecnológico, terminó siendo remolcado debido a un error de software.

En septiembre de 1997, un tripulante ingresó un cero en un campo de la base de datos ocasionando que internamente el sistema ejecute una división por cero, lo que provocó bugs, terminando por generar un desbordamiento del búfer y finalmente una falla en el sistema de propulsión del barco.

Buque Yorktown
Procesador Pentium de Intel con errores de división

En 1993, Intel saca al mercado un nuevo procesador con errores de cálculo. Aunque eran muy difíciles de notar, pues para lograr ver el error había que ejecutar operaciones que necesiten de un resultado bastante exacto.

Pese a ello, Intel tuvo una pérdida de 350 millones de dólares aproximadamente, sin contar el daño a su imagen que muy difícilmente se podría cuantificar.

Procesador Pentium de Intel

Los 5 casos que te he contado son solo algunos de los innumerables errores informáticos que lamentablemente han llegado a costar vidas humanas y son una clara evidencia de la necesidad de escribir software correcto.

Los ingenieros de software, así como los ingenieros de estructuras o ingenieros civiles, deberían ser capaces de demostrar mediante un método, la fiabilidad y cumplimiento de funcionalidades requeridas.

Como te habrás dado cuenta, las pruebas son parte fundamental de cualquier proyecto. ¡No son opcionales!

De acuerdo a lo expuesto por Ilene Burnstein en su libro: “Practical Software Testing”, las pruebas de sofware cuentan con 3 procesos principales:

  • Desarrollo de casos de prueba
  • Ejecución de casos de prueba
  • Análisis de resultados

Si no dedicas un tiempo a construir tus casos de prueba, no lo estás haciendo bien. Es importante construir los casos de pruebas con diversos escenarios que simulen tantos casos como sean posibles. Para nuestra mala suerte es imposible llegar a simular el 100 % de escenarios.

Bien decía Edsger Dijkstra:

“La prueba puede demostrar la presencia de errores en un programa, pero no su ausencia” Edsger Dijkstra (premio Turing en 1972)
Escenificación de como son las pruebas de software en la vida real

Pero así como existen muchos casos de errores informáticos ocasionados por la incorrecta ejecución de pruebas, también hay casos de éxito que son dignos de un premio.

Ejemplo de software más cercanos a la perfección

Hoy en día es posible desarrollar software tan fiable como cualquier otro producto, más aún con el aumento de la capacidad de automatización.

La línea 14 del metro de París se encuentra totalmente automatizada. Los trenes no tienen conductor y son dirigidos por software. Esta línea del tren fue puesta en funcionamiento en 1998.

Línea 14 del metro de París

Si bien es cierto, no se puede garantizar su perfección, han pasado decenas de años y no se han detectado fallas, gracias al exhaustivo trabajo de testeo, que terminó por ejecutar alrededor de 86 mil instrucciones en el proceso de testeo.

Por lo general, los procesos de testeo rigurosos que pueden garantizar un software sin fallas son exigidos en algunos países solo para sistemas que pueden ocasionar pérdidas humanas.

La gran mayoría de empresas de software se niegan a implementar procesos de pruebas tan rigurosos debido al elevado costo que esto implica y también por lo difícil que es encontrar profesionales dedicados al testeo con la formación y experiencia suficiente para tal tarea, pues la implementación de los procesos de pruebas de software pueden llegar a costar igual o más que el desarrollo del software mismo.

Claro que “Uno no aprende hasta que le toca”, como es el caso de INTEL, que tuvo que perder alrededor de 350 millones de dólares debido a un error de cálculo en el software de su procesador. Error que lo llevó a convertirse en una de las empresas informáticas que más presupuesto destina a la investigación de pruebas de software.

Costos de pruebas de software

¿Cuál es el panorama actual de las pruebas de software?

El camino para el desarrollo de un proyecto de software consta de 3 etapas bien definidas:

  • Especificaciones
  • Diseño y codificación
  • Validaciones

En la etapa de validaciones, los ingenieros a cargo se aseguran que el software cumpla con lo planificado en las especificaciones, la forma en que lo hacen es realizando “testing”.

Una vez que el software ha sido validado, se asume que cumple con todas las especificaciones y se vuelve a repetir el ciclo de validación por última vez con la finalidad de comprobar la validación correcta.

Importancia de las pruebas de software

Lo descrito líneas arriba tiene un gran problema de inconsistencia, te lo explico a continuación:

Errores e inconsistencias de las pruebas de software en la actualidad

El problema más importante del método de validación actual “testing”, es que no asegura que el software cumple con lo indicado en las especificaciones. Esto porque la redacción de las especificaciones se hacen en lenguaje natural, con términos que siempre van a tender a la interpretación individual, lo que genera ambigüedades que con toda seguridad serán notadas al finalizar el proyecto.

Un segundo problema es que nunca se llega a probar todos los casos posibles. Supongamos que tenemos un pequeño software que:

  • recibe como entrada cualquier número,
  • suma 10 y
  • devuelve como resultado el valor de la suma.

Sería imposible llegar a probar todos los casos posibles dado que los datos de entrada son infinitos. Es por ello que se ejecuta las pruebas de software solo sobre una muestra de casos seleccionados, que en ocasiones son muestras muy pequeñas. La razón de estas malas prácticas son justificadas por limitantes económicas y de tiempo.En conclusión, no podemos decir que un software es correcto luego de haber finalizado la fase de pruebas, pues no hay pruebas suficientes para tal afirmación.

Si tratamos de ser lógicos (como debemos serlo si nos dedicamos al rubro de la informática), al afirmar que un software es correcto tras haber finalizado la fase de pruebas y no haber encontrado ningún error, estamos incurriendo en lo que se llama: “Falacia de llamada a la ignorancia”

“En lógica, un argumento ad ignorantiam, o argumentum ad ignorantiam, también conocido como llamada a la ignorancia, es una falacia que consiste en sostener la verdad (o falsedad) de una proposición alegando que no existe prueba de lo contrario, o bien alegando la incapacidad o la negativa de un oponente a presentar pruebas convincentes de lo contrario. Esta impaciencia con la ambigüedad suele criticarse con la frase: “la ausencia de prueba no es prueba de ausencia” es decir, se comete esta falacia cuando se infiere la verdad o falsedad de una proposición basándose en la ignorancia existente sobre ella.” Falacia de llamada a la ignorancia

Como te habrás dado cuenta, cometemos muchos errores al aplicar las pruebas de software de manera convencional y muchas veces no somos conscientes de los gastos que esto genera.

Solo para que te hagas una idea:

  • El método convencional de pruebas de software implica la detección de defectos en el software.
  • Posteriormente,se entra en la fase de depuración, es decir, revisar el código a fin de comprender las causas de las fallas y finalmente corregir los defectos del software.
  • Trabajando de esta manera en promedio los programadores emplean un 49.9% de su tiempo depurando sus propios errores.
  • Esto implica a nivel de todo el mundo un gasto de 156 mil millones de dólares anuales.
Costos en la estructura del desarrollo de software
El desarrollo formal como propuesta de solución a las pruebas de software inconsistentes

Como ya hemos visto, uno de los problemas principales es la ambigüedad de las especificaciones que al ser expresadas en un lenguaje natural carecen de exactitud y sentido lógico matemático. Una solución es usar un lenguaje formal, donde no se dé lugar a ambigüedades.

Al usar un método formal para el desarrollo de nuestros proyectos de software se garantiza la certeza de propiedades y/o funcionalidades del software a través de la deducción, en otras palabras, por medio de la matemática( p -> q).

Este método formal demanda mucho más tiempo y presupuesto para su preparación, pues se necesita de mucha más precisión en la elaboración de especificaciones, que a su vez deben ser depuradas de ambigüedades para que al crear código este pueda demostrar su fiabilidad en base a sus especificaciones.

Parece bastante lejos de la realidad llegar a este límite de exigencia para crear software de calidad. Sin embargo, actualmente existen empresas que fundamentan sus sistemas en el desarrollo formal, por lo general, con empresas que se dedican a rubros críticos en donde un pequeño error puede significar la pérdida de vidas humanas al instante.

Sin embargo, a pequeña escala no resulta rentable tal nivel de exigencia; como mínimo debemos cumplir con las pruebas convencionales.

A continuación te comparto una serie de publicaciones de buenas prácticas que no debes dejar pasar si estás buscando desarrollar proyectos de calidad.

Programación y más

Publicaciones sobre Buenas prácticas

¿Cómo beneficia el aprendizaje continuo a nuestro cerebro?

El aprendizaje es como combustible para nuestro cerebro.

En el colegio o universidad nos hemos sacrificado estudiando continuamente y nada de eso ha sido suficiente, pues cada minuto que pasa sale nueva información sin importar la carrera que hayas estudiado.

Siempre habrá algo nuevo por aprender.

Algo a tener en cuenta es que cuando estamos aprendiendo, nuestro cerebro se ve afectado por cambios en las estructuras neuronales.

Con las investigaciones modernas se ha demostrado que el cerebro tiene la capacidad de cambiar y deformarse de forma duradera (plasticidad), y no solo en niños sino también en adultos.

Estos cambios en el cerebro pueden ser ocasionados por las buenas prácticas de aprendizaje continuo, reestructurando las conexiones sinápticas y en ocasiones creando nuevas.

Antiguamente se creía que cuanto más grande o pesado es el cerebro de una persona más inteligente era. Sin embargo, estudios recientes han determinado que las personas con un coeficiente intelectual más alto poseen una red neuronal menos densa pero a la vez mucho más organizada.

Para esta investigación se ha calculado el coeficiente intelectual sobre los siguientes factores:

  • Capacidad de análisis
  • Capacidad de reflexión
  • Resolución de problemas
Cómo beneficia el aprendizaje conitnuo a nuestro cerebro

A continuación, te comento un poco más acerca de la investigación en cuestión:

La inteligencia se basa en la eficiencia neuronal - Erhan Genç

El equipo dirigido por Erhan Genç analizó el cerebro de 259 hombres y mujeres con edades comprendidas entre los 18 y 40 años, y con buen estado de salud, con la finalidad de medir dendritas en la corteza cerebral, es decir, extensiones de células nerviosas que las células utilizan para comunicarse entre sí en el desempeño de la inteligencia.

Previo al estudio, todos los participantes fueron sometidos a un examen de coeficiente intelectual. Tras el estudio de dendritas, se determinó que a mayor coeficiente intelectual menos dendritas hay en su corteza cerebral.

Eficiencia neuronal

En otras palabras, se concluyó que las personas más inteligentes no solo tienen más neuronas sino que tienen menos conexiones dendríticas entre las neuronas al momento de la cognición. Lo que significa que tienen una red neuronal menos densa.

Los estudios fueron validados con una muestra de 500 personas y se obtuvieron las mismas conclusiones.

Erhan Genç, autor principal del estudio concluyó:

Los cerebros inteligentes se caracterizan por una red neuronal delgada pero altamente eficiente. Esto ayuda a lograr un alto nivel de pensamiento mientras se minimiza la actividad neuronal Erhan Genç

¿De qué manera la programación influye en nuestras habilidades mentales?

Cómo ya he mencionado en párrafos anteriores,la programación afecta la forma de pensar de quienes la practican, en ese sentido influye directamente en nuestras habilidades mentales.

¿Pero de qué manera lo hace? Veamos

Un programador piensa de forma muy diferente a los demás, pues por lo general suelen ser más lógicos y más racionales que el promedio, aunque no necesariamente.

Desde que decidimos aprender a programar debemos elegir con qué lenguaje iniciar. Aunque tal elección no sea del todo cierto, pues, por lo general, la gran mayoría de quienes nos dedicamos al mundo del desarrollo de software elegimos nuestro primer lenguaje sin experiencia alguna o hemos sido sometidos y prácticamente obligados a iniciar con un lenguaje de programación impuesto por algún docente, ya sea en el colegio y/o universidad.

Sin embargo, tales limitaciones son cada vez menos frecuentes por la cantidad de información que podemos encontrar en internet y la alta incentivaciòn y promoción del aprendizaje autodidacta.

Jim Carrey programando velozmente

Los paradigmas de los lenguajes de programación ya han moldeado muchas mentes, en algunos casos con más limitaciones que en otros dependiendo del lenguaje con el que se ha iniciado. Con esto no quiero decir que tu primer lenguaje define tu éxito o fracaso, pero sí que los paradigmas con los que uno inicia en el mundo de la programación insertan patrones en nuestro pensamiento.

Si aprendes a programar con COBOL, FORTRAN o PASCAL no significa que estás condenado al fracaso. Sin embargo, las incompatibilidad con tecnologías modernas y la falta de librerías o funciones te limitan en aprendizaje y expansión.

Tampoco quiero dar a entender que los lenguajes de programación con más de 50 años de antigüedad son malos.

Muchos sistemas diseñados para las operaciones y transacciones de la banca, administradoras de fondos de pensiones y las aseguradoras continúan usando COBOL. Y parece que van a continuar usándolo por muchos años más.

Hola mundo con COBOL

Te menciono algunos datos que, por más increíbles que parezcan, son todos ciertos.

El 75% de los datos comerciales se procesan en COBOL (Fuente: Gartner).

Hay 180 mil millones a 200 mil millones de líneas de COBOL en uso en todo el mundo (Gartner).

El 15% de las nuevas aplicaciones están escritas en COBOL (Gartner).

Gartner Group

¿Y qué tan costoso sería entonces la migración de COBOL a sistemas con tecnologías modernas?

Los costos de reemplazo de los sistemas COBOL, estimados en $ 25 por línea, están en los cientos de miles de millones de dólares Tactical Strategy Group

Bien decía Bill Curtis:

Los bancos deben quedarse con las antiguas aplicaciones COBOL ya que estas no tienen los problemas de seguridad y desarrollo que aparecen con los nuevos lenguajes como Java. Bill Curtis, director de operaciones de CAST

A continuación te mencionare 3 formas en que la programación afecta a tu cerebro:

1. Las herramientas que usamos para programar influyen en nuestros modelos mentales

El lenguaje de programación con el que iniciamos no es más que una herramienta, que viene acompañada de paradigmas y modismos que influyen directamente sobre tu forma de pensar. No por nada, Edsger

Dijkstra, uno de los pioneros en el establecimiento de la programación distribuida dijo:

Las herramientas que utilizamos tienen una influencia profunda (y tortuosa) en nuestros hábitos de pensamiento y, por lo tanto, en nuestras habilidades de pensamiento. Edsger Dijkstra

Ahora que sabes lo importante que es el lenguaje de programación con el que iniciemos y de forma general todo el conjunto de herramientas que usamos al programar, te aconsejo que lo primero que tomes en cuenta al elegir tu primer lenguaje de programación sea tu comodidad.

Si estás comenzando, no te dejes llevar por el dinero. Es cierto que hay lenguajes de programación que son mejores pagados que otros, pero el dinero no debe ser tu meta. De ser así podría aconsejarte comenzar a programar con COBOL, PASCAL, FORTRAN, lenguajes que tienen muy poca documentación y que actualmente existen muy pocos que lo practican, razón por lo cual son muy bien remunerados en donde son requeridos.

En realidad, dedicarse al desarrollo de software no solo trae beneficios a tus hábitos de pensamiento y habilidades cognitivas, también puede asegurarte un futuro económico más que estable, pues es un sector muy bien remunerado que actualmente se encuentra en crecimiento.

Ingeniero de software bien remunerado

Hoy es el mejor momento para comenzar. Veamos por qué:

¿Por qué el sector informático es uno de los más recomendados en 2021?

De acuerdo con la Comisión Económica para América Latina y el Caribe (CEPAL) los países de América Latina iniciarán un crecimiento luego de la recesión económica del 2020.

Se estima un crecimiento del 3.7% para el 2021, donde los principales protagonistas serán aquellos que se dedican al mundo digital.

2. Es saludable para el cerebro

Como ya hemos mencionado el aprendizaje tiene efectos positivos en el cerebro. En tal sentido, la programación cuenta como ejercicio mental que favorece de forma directa al cerebro.

Revisemos algunos antecedentes que confirman los beneficios de la programación a la salud del cerebro:

En 1991 una investigación estudió los efectos de la programación de computadoras en los resultados cognitivos y determinó que los estudiantes en áreas relacionadas a la programación obtienen 16 puntos percentiles más que el promedio en tests de coeficiente intelectual.

Otro estudio más grande en 1999 terminó por confirmar que las actividades intelectualmente atractivas sirven para amortiguar a los individuos contra el deterioro cognitivo.

Más tarde, en 2009 un estudio determinó que las personas que participan en actividades estimulantes del cerebro en años posteriores pueden reducir su riesgo e incluso retrasar la aparición de Alzheimer y otros tipos de demencia.

3. Mientras programas estimulas hasta 5 áreas de tu cerebro.

En 2014 un estudio titulado “Comprensión de la comprensión del código fuente con Imágenes de resonancia magnética funcional” utilizó exploraciones de resonancia magnética funcional para observar la actividad cerebral mientras los programadores intentaban trabajar y comprender fragmentos de código.

Se concluyó que 5 áreas del cerebro estaban involucradas:

  • BA 6: Circunvolución frontal media (Atención, lenguaje, memoria de trabajo)
  • BA 21: Circunvolución temporal media (recuperación de la memoria semántica)
  • BA 40: Lóbulo parietal inferior (memoria de trabajo)
  • BA 44: Circunvolución frontal inferior (memoria de trabajo)
  • BA 47: Circunvolución frontal inferior (Lenguaje, memoria de trabajo)

Debemos tener en cuenta que los participantes fueron sometidos a revisar un fragmento de código de 20 líneas, lo que no supone un gran desafío. Y es por ello que no se detectó actividad en áreas del cerebro relacionadas con los cálculos matemáticos.

Lo que sí se pudo notar fue la alta intervención de partes del cerebro que normalmente están asociadas con el procesamiento del lenguaje, la memoria y la atención.

Programar es lo más cercano a tener superpoderes Drew Houston, CEO de Dropbox
Programar es lo más cercano a tener superpoderes
Arrow pointing up
Realizar test ¡Evalúa tu coeficiente intelectual en un instante! Test de CI Internacional.

©2020 - Todos los derechos reservados