Cuáles son algunas cosas básicas que debe saber un buen ingeniero informático?


1) Estructuras de Datos y Algoritmos

Si quieres convertirte en programador entonces debes conocer bien las estructuras de datos y los algoritmos; no hay manera de evitarlo. Este es uno de los temas importantes de cualquier entrevista de trabajo de programación y sin conocer las estructuras de datos básicas no es posible escribir una aplicación del mundo real.


Es por eso que cada programador debe poner un esfuerzo serio para aprender las estructuras de datos y algoritmos durante su curso de ciencias de la computación.

Si usted es un programador autodidacta, entonces también debe conocer las estructuras de datos y algoritmos; de hecho, muchos campos de entrenamiento de programación le enseñarán las estructuras de datos y algoritmos como la primera cosa.


2) Control de fuentes

El control de fuentes se utiliza para almacenar el código y si quieres convertirte en un codificador o desarrollador de software, debes conocer herramientas de control de versiones como Git y SVN.

Afortunadamente Git y Github han agilizado el mercado y ahora más del 70% de las organizaciones utiliza Git, por lo que probablemente puedas salir adelante con sólo aprender Git.

Por cierto, debes poner algo de esfuerzo en aprender bien Git, y debes sentirte cómodo con los conceptos avanzados de control de versiones como ramificación y fusión, así como con la propia herramienta usando tanto la línea de comandos como la interfaz gráfica de usuario. Para principiantes,

3) Editores de texto

No hay un solo día en el que no haya utilizado un editor de texto mientras trabajaba como programador. Es una de las herramientas imprescindibles incluso para los no programadores y para cualquiera que trabaje con ordenadores.

Yo he usado sobre todo NotePad en Windows y VI en Linux, pero tienes muchas opciones disponibles en cuanto a editores avanzados como Sublime y NotePad++, que proporcionan funcionalidades similares a las del IDE.

Te sugiero que pases algún tiempo aprendiendo tu editor favorito y los atajos de teclado, los consejos de productividad son algo que puedes aprender.

4) IDEs

El IDE moderno es la herramienta más importante para cualquier programador. Para el programador de C, C++ y C#, la elección es clara: Visual Studio. Y para los desarrolladores de Python, Jupiter Notebook es cada vez mejor.

Para los programadores de Java, hay tres grandes IDEs para elegir: Eclipse, NetBeans e IntelliJ. Aunque Eclipse es mi favorito, IntelliJ IDEA no está nada mal.

5) Base de datos y SQL

SQL es un clásico. Lleva más de 30 años y creo que seguirá existiendo otros 30 años más. Dada la omnipresencia de la base de datos, se espera de un programador que esté familiarizado con los conceptos esenciales de la base de datos como la normalización y el diseño de tablas junto con SQL.

Hay muchas bases de datos, pero con conocer una sola es suficiente. El punto clave es que debe estar familiarizado con la base de datos. Debe saber cómo insertar/actualizar/borrar datos y escribir consultas SQL para recuperarlos.

6) UNIX o Linux

Al igual que SQL, UNIX también ha resistido la prueba del tiempo. También ha existido durante más de 30 años y espero que siga existiendo durante muchos años más. Dado que la mayoría de los programadores tienen que trabajar en una máquina UNIX en algún momento, un buen conocimiento de la línea de comandos Linx va un largo camino.

Le permite trabajar con eficacia. Usted puede buscar archivos, saber lo que está pasando con el sistema mediante la comprobación de su uso de la CPU y la memoria, y realizar tareas básicas y avanzadas.

7) Microsoft Excel

Excel es una de las herramientas rey para los programadores, desarrolladores de software, gerente de proyectos, los comerciantes, y los chicos de negocios. Es mucho más que un software de hoja de cálculo. Proporciona muchas características y funciones útiles para realizar sofisticados análisis de datos.

He utilizado Excel para hacer un seguimiento de los progresos, conciliar datos, analizar datos, comprobar la calidad de los datos y para la planificación de proyectos.

Tiene varios usos y por eso' insto a todos los programadores a aprender Excel en profundidad. En lugar de limitarse a copiar y pegar datos, debe conocer funciones básicas como buscar, ordenar, filtrar y VLOOKUP para comparar cosas.

8) Lenguajes de programación

Como programador, debe conocer un lenguaje de programación: C++ o Java, o quizás Python o JavaScript. Puedes elegir el que quieras pero mi sugerencia personal es que al menos conozcas Java.

Es muy fácil de empezar y por eso es una buena opción para los principiantes. También es inmensamente potente y te permite prácticamente cualquier cosa.

Tiene librerías desde hacer cosas básicas como desarrollo web hasta tareas más complejas con Big Data y demás.

9) Fundamentos de las redes

El mundo de hoy en día está interconectado y en cualquier lugar que vayas, encontrarás redes de ordenadores, empezando por tu casa, donde estás utilizando Wi-Fi a través de muchos dispositivos, a las escuelas, la universidad y las oficinas que utilizan la red de área local (LAN) a Internet.

La mayoría de las aplicaciones que escribirás tampoco serán independientes, sino que serán del tipo cliente-servidor, donde la solicitud irá a través de la red a un servidor. Los clientes accederán a tu aplicación desde cualquier parte del mundo.

La conclusión es que debes entender los fundamentos de las redes para entender, desarrollar y soportar tu aplicación. Si quieres aprender más entonces te sugiero que te unas al curso The Complete Networking Fundamentals en Udemy. Es un buen punto de partida para los principiantes.

10) Lenguajes de scripting

En el punto #8 te pedí que aprendieras un lenguaje de programación, y sin embargo aquí te estoy pidiendo que aprendas un lenguaje de scripting? ¿Por qué? ¿No se puede utilizar el mismo lenguaje de programación como lenguaje de scripting?

Bueno, ciertamente hay algunos lenguajes que son buenos tanto para la codificación OOP como para el scripting como Python, y por eso te pedí que al menos lo aprendieras. Pero si aprendes C/C++ o Java, no puedes hacer algo tan rápido como un desarrollador de Python o Perl.