Qué hace un programador informático

Me interesaba comprender qué puede hacer un programador informático, la diferencia entre los diversos tipos de lenguajes de programación y el significado de ciertas palabras relacionadas que veo por la red, así que he recopilado una breve lista con lo que procesé. Además, es un sector en crecimiento y donde el teletrabajo es casi la modalidad por defecto.

A qué se dedica un programador informático o web

Un programador o programadora (programmer) conoce al menos un lenguaje en el que dar instrucciones a un sistema informático (ordenador o servidor, teléfono móvil) para que realice determinadas tareas para los usuarios (por ejemplo, mostrar o almacenar información).

Ahora bien, el cerebro del equipo, su CPU, solo entiende el código binario o lenguaje de nivel bajo, por lo que cualquier mensaje deberá traducirse desde el correspondiente lenguaje formal de nivel alto (código fuente o source) o lenguaje ensamblador (intermedio) al lenguaje máquina. Dependiendo del lenguaje simbólico, se traducirá todo por adelantado (a través de un compilador), línea a línea (mediante un intérprete) o mediante un sistema híbrido.

El profesional en programación puede escribir instrucciones siendo específico y considerando posibilidades, así como anticipar o percibir errores (bugs) y testear posibles soluciones. El código evoluciona (iteration).

Con líneas de código se construirá el primer nexo con lo físico (firmware), el sistema operativo de base o bien una colección concreta de instrucciones para un tipo de tarea, conocida como script (si es muy simple) o software.

El software se denomina programa en ordenadores o servidores, aplicación nativa (app) en dispositivos móviles o aplicación web en los navegadores de Internet.

Especialidades de programación informática

Se podría decir que hay diversos tipos de programadores según los criterios de los que se parta. Por ejemplo:

  • El entorno: programadores web (sitios web, web apps), de aplicaciones móviles, programas de escritorio, firmware, sistema operativo, otros.
  • La finalidad: soluciones para empresas (SaaS, ERP) o ecommerce, especialistas en CMS (como WordPress, PrestaShop, Drupal, Moodle, etc.), entretenimiento (videojuegos)…

Abordemos ahora los roles de programadores de software o web y los otros puestos que se relacionan con ellos.

Diferencia entre programador, desarrollador, arquitecto e ingeniero

Para desarrollar software o un sitio web no solo hay que escribir código, sino que existen otras fases previas, paralelas y posteriores como el diseño, análisis, implementación (deployment), optimización, documentación o mantenimiento.

Todo empieza con una hoja de requerimientos, lo que quiere el cliente. Según el proyecto del que se trate, las diversas tareas podrían desempeñarlas diferentes figuras. Los conceptos a menudo se intercambian, aunque para muchos poseen matices relevantes.

  1. Por lo que he deducido, todo aquello que tenga que ver con adaptar el programa lo mejor posible al dispositivo lo dominará el ingeniero de software (engineer), por sus conocimientos técnicos.
  2. Más concretamente, un arquitecto de software (architect) está especializado en determinar qué bloques son mejores (tecnologías, lenguajes, bases de datos) y las conexiones entre ellos para lograr una estructura del sistema que permita cambios en el futuro sin perder calidad.
  3. Un diseñador o desarrollador web o de software (developer) o el analista-programador suele responsabilizarse de que se materialicen los bloques elegidos y sean efectivos. Organiza datos y supervisa el testeo.
  4. Alguien con conocimientos de programación, un programador, escribirá por lo menos parte del código.

A medida que un profesional adquiera más competencias subirá su nivel de título: junior, middle/mid-level, senior, lead.

Programador web: front-end, back-end y full-stack

Para que una página web se muestre, ha tenido que haber programación en varios puntos: en el software del servidor, su base de datos y el sitio web, más en el navegador web del ordenador del usuario/cliente.

Hoy se distinguen dos clases de especialización de la programación web en función de si se centra o no en lo que percibe el usuario:

  • Front-end: lo visual que llegará al navegador del usuario, es decir, la interfaz (UI) y su experiencia con ella (UX).
  • Back-end: aquello que está en los servidores y no nota el usuario.

Últimamente están muy demandados los perfiles que abarcan los dos ámbitos (moverse tanto en frontend como en backend): el programador full-stack.

Otros roles del equipo informático

Por su parte, los administradores de sistemas se encargan de que los equipos informáticos rindan y operen lo mejor posible con su información a salvo. Existen a su vez varios roles específicos como el de administrador de redes, administrador de bases de datos o administrador de seguridad.

Para que los departamentos de desarrollo (programación), administración de sistemas (operaciones) y calidad (QA) se comuniquen satisfactoriamente y hacia un objetivo común de mejora constante, algunos siguen el método DevOps.

Qué hace un programador

En su trabajo, un programador usará ciertos modelos, elementos y herramientas:

  • Un framework o entorno de trabajo, esto es, una guía (opcional) para estructurar el software que se va a escribir. Consiste en una sugerencia más o menos detallada y probada por otros para organizarse, ser productivo y conseguir siempre un resultado muy concreto. Por ejemplo, Spring es un framework para programar ciertas cosas en el lenguaje Java, como lo son Angular para Typescript, Django para Python, Symfony para PHP o Rails para Ruby (alias Ruby on Rails).
  • Asimismo, las bibliotecas (library de ahí librerías) son instrucciones ya listas en código para que se incluya en otros proyectos sin tener que escribir de cero. Solo hay que insertar el texto junto a una presentación o API. Como ejemplo, JQuery y React son bibliotecas para programar en JavaScript.
  • Las bases de datos de donde sale o entra información.
  • Los lenguajes en que se escribe el programa/web y sus interacciones con otros elementos (quizá el de las bases de datos por ejemplo).
  • Para generar el código y ver resultados se usarán una interfaz de línea de comandos (CLI), un editor de texto o, con más utilidades para el trabajo del programador, los IDE.

Podría haber otros puntos que considerar, como el protocolo de transferencia de datos o su seguridad (evitar vulnerabilidades).

Clasificación de los lenguajes informáticos

En función de lo que se quiera construir (build), se elegirán unos lenguajes u otros, aunque bastantes se adaptan a distintos fines y plataformas. Hay decenas y varias generaciones de estos idiomas artificiales. No todos son abiertos. Cada uno implica una curva de aprendizaje. En la respectiva documentación se indican sus fundamentos. Algunos son preferidos, otros detestados.

Perfil de una mujer escribiendo código en un ordenador portátil bajo unas burbujas con lenguajes de programación para ilustrar qué hace un programador informático o web

Muy a grandes rasgos, en su particular sintaxis los lenguajes de programación acostumbran a componerse de indicaciones para elegir qué instrucción ejecutar (condicionales, bucles), formas de guardar datos (variables) y tareas para llegar a soluciones (funciones que implementan algoritmos).

Aquí un resumen de los principales lenguajes informáticos:

  • Lenguajes de marca o marcado para estructurar/jerarquizar el texto: HTML, XHTML.
    • Lenguaje de diseño gráfico para documentos (X)HTML: CSS.
  • Lenguajes de programación:
    • Web frontend (cliente): JavaScript.
    • Web backend (servidor): PHP, Ruby, Perl, ASP…
    • Bases de datos: MySQL y otros.
    • Versátiles: Python, Java, C++, R….
    • De sistema operativo concreto: Swift (Apple).

Habilidades para ser programador

Teniendo en cuenta las tareas que debe desempeñar cada día, fundamentalmente se esperará que al programador le interese la interacción con las máquinas, acepte el reto de resolver problemas para clientes y no le importe pasar horas frente a una pantalla.

A la hora de buscar trabajo, se suele valorar que el candidato tenga a disposición previos proyectos suyos, en plataformas como GitHub.

Puede haber jornadas maratonianas y empresas con una cultura no acorde a nuestra forma de ser, así que no está de más recordar la importancia de la salud física y mental.

Qué hay que estudiar para ser programador

Una vez se haya seleccionado el ámbito que más le llama a uno, habría que analizar las distintas ofertas formativas. Estas son algunas de las más comunes:

  • Fuentes bibliográficas sobre programación.
  • Certificaciones específicas de reconocimiento internacional que otorgan entidades de prestigio: Cisco, AWS, Google, Microsoft, PMI, ISC, SAS… El examen se puede preparar por cuenta propia, a través de una academia o mediante un curso online.
  • Los coding bootcamps son campamentos intensivos para aprender a programar en unos meses. Los hay de menor o mayor calidad.
  • Los cursos en línea en plataformas abiertas o cerradas, algunos de universidades de prestigio (MOOCS).

Algunos puestos se pueden desempeñar sin carrera o título oficial, pero al contratar siempre se pedirá algo para demostrar el conocimiento. Además, es casi una norma que haya pruebas prácticas en las entrevista.

Por cierto, se trata de un ámbito en el que hay que estar actualizado, así que la formación no termina al conseguir un empleo.

Por dónde empezar a ser programador

Se necesita un ordenador y decantarse por un entorno (programas vs web), qué aprender (lenguaje/s) y cómo (oferta formativa).

A cada uno le llamará más una cosa u otra. De lo que he leído, a mí por ejemplo me han intrigado dos caminos. Por un lado, para programar web apps básicas tendría que saber HTML, CSS y JavaScript. O si quisiese analizar datos sería útil Python; podría necesitar otros como MySQL para comunicarme con las bases de datos. He visto artículos que abordan qué lenguajes son mejores para uno u otro cometido.

Además de significar planificación de proyectos en hitos y fases, creo que en este campo existe otra acepción del concepto de hoja de ruta (roadmap): recomendaciones sobre qué lenguajes y en qué orden es mejor ir aprendiendo para hacerse programador o desarrollador de tal o cual cosa. Seguramente cada programador tenga un recorrido ideal que proponer a los demás.

De querer dedicarnos profesionalmente, no tenemos por qué aspirar al rol mejor remunerado y en la mayor empresa. Y programar puede ser una afición sin más objetivo que aprender y entretenerse.

Hacerse programador con 30 años o más

No es fácil, pero hay gente que se plantea cambiar su trayectoria, lo intenta, trabaja muchísimo y con el tiempo lo puede conseguir. En el mundo laboral no hay garantías. Sí me he cruzado con tuits de personas que dicen vivir de ello habiendo entrado a los 40, por ejemplo, sin embargo, no puedo verificarlo.

Lo complicado (a cualquier edad) es dar con un campo y propósito que motiven lo suficiente, porque es probable que la promesa de un puesto, trabajo en remoto y/o buen salario no basten en varios momentos.

¿Para qué programar?

Entre las utilidades de la programación habría varias.

  • Ahorrar tiempo.
  • Automatizar.
  • Evitar errores humanos en la ejecución o el cálculo.
  • Reconocer patrones que una persona no es capaz de advertir.
  • Entretener.

Y estas se pueden concretar en otras inquietudes que tengamos, como ayudar a otros creando el programa de acceso a la mayor base de datos de tal tema favorito o conseguir mediante el análisis de datos que se detecte algo malo antes de que suceda.

Parece un mundo interesante. Espero que la información anterior sirva como punto de partida.

*

Este artículo puede tener errores. Agradeceré que se me indiquen. No soy profesional del sector. Simplemente he intentado llegar a una definición razonable de algunos conceptos y categorizar para situarme.

A %d blogueros les gusta esto: