29 noviembre 2011

Computación: una carrera con amplias posibilidades

Es conocida en el ámbito académico la anécdota de Edsger Dijkstra, un holandés pionero de la computación fallecido ya hace algunos años. Se cuenta que allá en 1957, cuando Dijkstra estaba realizando sus papeles para el matrimonio, le preguntaron cuál era su profesión y él respondió: “Programador”. La profesión en esa fecha no era reconocida por las autoridades del municipio de Amsterdam y le obligaron a cambiarla por la de Físico Teórico que era lo que se mencionaba en su título universitario. Cincuenta y cuatro años después pasa algo similar. Bajo el término Informático o Ingeniero de Sistemas intentamos describir lo que hacemos: trabajar con computadoras, aunque esos nombres no describan propiamente el trabajo que algunos hacemos, es decir, programar.

¿Qué hacen esas personas que trabajan con computadoras? Haré un intento por explicarlo.

En general se puede decir que hay tres tipos de personas que se interesan por computación a nivel profesional: (a) los usuarios expertos; (b) los programadores; y (c) los científicos.

Los usuarios expertos son curiosos. Les gusta siempre estar al día en el software que existe y saben mucho sobre el software que está instalado en sus máquinas, comenzando por el sistema operativo. Si uno quiere instalar un software en su máquina, hay que acudir a ellos, pueden decir qué diferencias tienen las distintas versiones, las distintas marcas de productos, etc. Si tienes problemas, también puedes acudir a ellos. Los problemas más simples los resuelven inmediatamente y no descansan hasta resolver los más complejos. ¿Un virus en tu máquina? Probablemente ellos van a saber qué antivirus te conviene usar y cómo hacer que tu máquina sea inmune a virus. Estas personas se van a sentir cómodas en materias donde se experimenta con tecnología en la universidad al estudiar una carrera de computación. Se van a aburrir un poco en las materias de programación o de matemáticas. Se desempeñan cómodamente en el campo profesional como administradores de sistemas, apoyando a usuarios comunes en el uso de las computadoras (no funciona la impresora, mi máquina está lenta), instalando y armando infraestructura tecnológica en las oficinas. Hoy en día este tipo de personas también tiene un lugar de trabajo como ingenieros de calidad en las empresas de desarrollo de software. Se ocupan de certificar la calidad del producto de software que se desarrolla en la empresa.

Los programadores son las personas que escriben software. Su típica curiosidad les hace pensar en las técnicas y herramientas que otros programadores usaron para lograr un determinado efecto en un programa o cómo desarrollar las propias para lograrlo. Por ejemplo, “doble click en el ícono y una figura se mueve en la pantalla mostrando que la aplicación se está activando”. ¿Cómo lo hicieron? Yo quiero hacer lo mismo para mi programa. A estas personas les gusta la precisión:, saber exactamente qué pasos seguir para hacer algo, cualquier cosa. Por ejemplo, una receta de cocina que diga “una pizca de sal” no los deja conformes;, necesitan saber cuánto exactamente de sal, ¿10g son suficientes? ¿hay que ponerlos antes o después? Necesitan tener una buena imaginación que les permita representar el contexto de una aplicación en líneas de código de software que, aparte de funcionar bien en la computadora, tiene que tener características internas que lo hagan fácil de mantener y cambiar. Necesitan pensar en un buen uso de los recursos para poder hacer que sus aplicaciones no desperdicien, por ejemplo, memoria o preciado tiempo de procesamiento. En las computadoras modernas, necesitan pensar en múltiples agentes de procesamiento trabajando a la vez. Llevando este problema a metáfora de una fábrica y suponiendo que se producen cajas y puede haber muchas máquinas produciendo, hay que acumularlas, ordenarlas marcarlas, para, luego de producirlas, para llevarlas al mercado. Hay que armar una línea de producción de tal forma que se pueda aprovechar la velocidad de tener múltiples máquinas funcionando al mismo tiempo. El hardware de hoy en día tiene múltiples CPUs y coordinar su procesamiento actualmente es un problema complejo en programación, y hay técnicas para manejarlo.

En el tercer tipo están los científicos. Aquellos que por su capacidad de abstracción y lógica pueden enfrentar problemas complejos y desconocidos y formular teorías sobre los fenómenos involucrados, en nuestro caso, computacionales. Son los que como en todo quehacer humano se preguntan el por qué de todo lo que pasa a su alrededor, investigan, se explican y explican esas observaciones a otras personas. Los científicos tienen que entender lo fundamental de un problema, desglosar sus elementos. Por ejemplo, un lenguaje de programación es un sistema lógico que permite expresar consistentemente un cálculo o un modelo de una parte del mundo real. ¿Hay un lenguaje de programación que pueda representar muy naturalmente cualquier modelo? Si no lo hay, ¿por qué? ¿Cuáles las diferencias fundamentales entre ellos? O, por ejemplo, se desea hacer un modelo para la distribución óptima de un producto en la ciudad. ¿Cómo representar la ciudad en el modelo? ¿Cómo representar el recorrido de un punto a otro? Y, finalmente, escribir un conjunto de pasos (algoritmo) que dados dos puntos cualesquiera de la ciudad permita encontrar el recorrido que tome el menor tiempo o la menor distancia posible. El problema es complejo, se requiere estudiar Matemática y Lógica para poder entenderlo y elaborarlo. Por otro lado, como una alternativa relacionada al aspecto científico, muchas áreas de trabajo modernas rayan entre una disciplina científica que no es computación y la computación propiamente dicha. En el caso de la distribución de productos, es optimización combinatoria, una rama de la Matemática. En el caso de problemas de moléculas y las distintas formas de combinarse se trata, más bien por ejemplo, de Biología Computacional.

¿Te reconociste en alguna de estos tipos de personalidades? Puede pasar que reconoces más de una en tu personalidad. Si eres estudiante y tienes que elegir una carrera universitaria o estás a punto de salir de la universidad y empezar tu carrera profesional, tal vez quieras detenerte un poco y pensar en estas posibilidades. Finalmente, esto va a definir las próximas décadas de tu vida, donde vas a buscar tu realización personal y, para lograrla, tienes que estar motivado. Nada más motivador que elegir algo para lo que pareces haber nacido y que puedes hacer con tal naturalidad, que te puedes concentrar en desarrollarte al máximo. Si lo haces, las oportunidades en computación son globales, no están restringidas al contexto local, ¡puedes afectar positivamente la vida de millones de individuos con tu trabajo!

¿Todavía tienes la idea de que quienes estudian computación son esos chicos de lentes, con capacidades sociales limitadas, que se encierran en sus cuartos u oficinas para desarrollar sus locas ideas? Ese panorama está cada vez más alejado de la realidad. La computación hoy en día se trabaja socialmente. Un buen profesional del área tiene que ser capaz de interactuar diariamente con individuos de distintos tipos. Interactuamos con individuos que no saben computación, para discutir las características de un producto informático y entender cómo los seres humanos usamos tecnología para que un universo cada vez más amplio de personas pueda usar nuestras aplicaciones informáticas. También interactuamos con nuestro grupo de programadores sobre la estructura y diseño de la aplicación informática.

Los artefactos tecnológicos que requieren software son cada vez más baratos y están al alcance de más personas de todas las edades y contextos sociales. Todo esto da un panorama amplio de posibilidades para desarrollar tu carrera profesional y sentir que puedes hacer algo importante por este mundo al elegir la profesión de Informático o Ingeniero de Sistemas, o lo que le llamen en la universidad que tienes al alcance.

No hay comentarios:

Publicar un comentario