Un idioma para gobernarlos a todos

Bajo una capa de código, hay un lenguaje deseoso de ser aprendido.

Un idioma para gobernarlos a todos

En el momento de escribir este artículo, la búsqueda "¿qué lenguaje de programación deberías aprender primero?" arroja 517 millones de resultados. Cada uno de estos sitios elogia un lenguaje específico, y el 90% de ellos, al final, recomendará Python o JavaScript.

Sin más preámbulos, me gustaría declarar oficialmente que todos estos 517 millones de sitios están equivocados y afirmo que el lenguaje que se debe aprender primero es lógica fundamental.

Simplemente saber programar no es suficiente. El mercado está tan saturado de graduados de universidades y cursos que prácticamente ha dejado de existir el puesto de junior*. Para tener éxito en el mundo actual, debes programar y tener un pensamiento lógico fundamental avanzado.

* aquí y en adelante, por favor, recuerda que esto es una traducción y la situación en el mercado laboral del autor y en tu país puede ser diferente (al igual que otros matices), lo que, sin embargo, no hace que el artículo original sea peor — nota del traductor.

Mi primera clase de informática

Mi primer acercamiento a la informática fue una optativa que tomé en 10° grado. El primer día, al entrar en el aula, me sorprendió ver una gran cantidad de cubos de helado y una variedad de toppings. Después de que todos se acomodaron, la maestra proclamó:

«Hoy vamos a degustar helados hechos por nosotros. Pero con una condición: deben hacer una lista concreta de instrucciones sobre cómo preparar el postre, y yo las seguiré»

«Sin problemas», pensé, «esta clase no tomará mucho tiempo». Aproximadamente un minuto después, yo ya había bosquejado una excelente receta para el helado de mis sueños:

  1. Sacar y poner tres bolas de helado de frambuesa en un tazón
  2. Abrir el jarabe de chocolate y añadir dos cucharadas en el mismo tazón
  3. Añadir crema batida al tazón
  4. Espolvorear todo esto con palitos de azúcar y poner una cereza encima

Mi maestra — el «computador» en esta dulce metáfora — realizó una representación más sarcástica y literal que nunca antes había visto. Comenzó a golpear rítmicamente el cubo de helado con la cuchara para helados, sin siquiera tocar la tapa.

«¡Está bien, está bien, pero primero hay que abrirlo!» — exclamé, tratando de obtener la delicia lo antes posible.

«No escribiste esto en las instrucciones, y no pude hacerte helado. ¡SIGUIENTE!»

Avancemos en el tiempo hasta el intento Nº 2

  1. Abre el helado de frambuesa quitando la tapa
  2. Sacar y poner tres bolas de helado de frambuesa en un tazón
  3. Abrir el jarabe de chocolate y añadir dos cucharadas en el mismo tazón
  4. Añadir crema batida al tazón
  5. Espolvorea todo esto con palitos de azúcar y ponle una cereza encima

Bueno, ahora no debería haber problemas. Incluso me aseguré de que todos los ingredientes para crear mi obra maestra culinaria estuvieran abiertos.

La maestra quitó la tapa, sirvió y puso tres bolas de helado en un tazón. «¡Finalmente, mi hermoso helado se está convirtiendo en realidad!» Luego abrió la salsa de chocolate y añadió dos cucharadas al tazón. No «añadió salsa de chocolate de dos cucharadas», no se malinterpreten, ella, por supuesto, colocó las cucharas en el tazón. Sin salsa en ellas. De nuevo, no me molesté en detallar todo correctamente. Después de que el resto se ejecutó en el mismo sentido, obtuve un tazón con helado y dos cucharas apenas visibles bajo el mar de crema batida. Encima había un par de palitos de azúcar.

Parece que en ese momento finalmente me di cuenta: la computadora es lógica en un vacío. No conoce las circunstancias que la rodean y no hace suposiciones. Solo ejecuta instrucciones claramente formuladas y las sigue palabra por palabra.

Mi resultado final fue el resultado de una larga, pero necesaria serie de pruebas y errores:

  1. Abre, si no se ha hecho ya, cada uno de los siguientes envases: helado de frambuesa, salsa de chocolate, crema batida, palitos de azúcar.
  2. Saca un tazón y colócalo frente a ti
  3. Toma una cuchara para helado y uno por uno coloca tres bolas de helado de frambuesa en el tazón. Vuelve a colocar la cuchara para helado en su sitio.
  4. Toma el frasco de salsa de chocolate, sirve la salsa y vierte en el tazón el contenido de la cuchara. Repite la acción de servir y verter la salsa una vez más. Coloca la cuchara y el frasco en su sitio.
  5. Toma y voltea boca abajo el recipiente de crema batida y, sosteniéndolo sobre el tazón, rocíalo sobre el helado durante 3 segundos, después devuelve el envase a su lugar.
  6. Toma el frasco de palitos de azúcar, vierte unas cuarenta piezas en el tazón y coloca el frasco en su sitio.
  7. Toma una cereza del tazón de cerezas y colócala encima del helado.
  8. Pasa al alumno el tazón con el helado listo y la cuchara.

El último punto fue especialmente importante, ya que sin él, la maestra simplemente comenzó a comer mi helado la penúltima vez.

Pero eso es programación. Crear cuidadosamente un conjunto de instrucciones para el ordenador. En esencia, eso es a lo que se reduce cada lenguaje de programación: a la elaboración de instrucciones.

Carrera en programación

La programación ha llegado al punto en que es difícil hablar de ella como una industria única, así como es complicado utilizar una sola palabra "programador" para describir un puesto. Dos desarrolladores pueden ser igualmente demandados por el mercado, sabiendo lenguajes completamente diferentes, lo que significa que la habilidad de desarrollar es más importante que el conocimiento de un lenguaje específico. Un atributo universal que poseen todos los desarrolladores exitosos es lógica fundamental.

El mejor programador es capaz de mirar el código desde una nueva perspectiva. Y esto es fundamental, porque la mayoría de los productos de software son un conjunto de fragmentos de código defectuoso no documentados. Constantemente necesitan ser ensamblados, tapando vacíos según sea necesario. Aquellos que no pueden conectar puntos dispares con una línea coherente siempre estarán en un segundo plano.

Todo esto me lleva a otra declaración, esta vez en negrita: el conocimiento fundamental siempre ha sido y será primordial para un programador.

Los lenguajes vienen y van. Los frameworks se vuelven obsoletos, y las empresas reaccionan ante la demanda, cambiando el stack de tecnologías utilizadas. ¿Hay algo que nunca cambiará? Sí: el conocimiento fundamental, que precisamente se llama fundamental porque es la base de todo.

Cómo mejorar el conocimiento fundamental

Un idioma para gobernarlos a todosFoto de Christopher Yeshke en Unsplash

Si buscas un punto de partida para mejorar tu pensamiento lógico fundamental, intenta comenzar aquí:

Conoce la complejidad de tu programa

También conocida como Big O "la complejidad del algoritmo" se refiere a la dependencia del tiempo de ejecución de un programa en función del tamaño de sus datos de entrada (n). Mantenerse al tanto de los algoritmos utilizados es un paso importante.

Conoce tus estructuras de datos

Las estructuras de datos son la base de cualquier programa moderno. Saber qué estructura usar en cada caso es una disciplina por sí misma. Las estructuras de datos están directamente relacionadas con la complejidad en tiempo de ejecución y elegir la estructura incorrecta puede causar problemas fundamentales de rendimiento. La búsqueda de un elemento en un arreglo es igual a O(n), lo que indica el alto costo de usar arreglos como datos de entrada. La búsqueda en una tabla hash es O(1), lo que significa que en este caso el tiempo de búsqueda del valor no depende del número de elementos.

En mis entrevistas, he recibido a personas que afirmaban que buscar en un arreglo es más rápido que en una tabla hash. Este era un claro signo de que no debíamos contratarlos: conoce tus estructuras de datos.

Lee / mira / escucha

Sitios como Udemy, Pluralsight y CodeAcademy son una excelente opción para aprender nuevos lenguajes de programación. Pero para los fundamentos, consulta libros sobre principios, prácticas y estilos de codificación generales. Los libros más recomendados son "Patrones de Diseño", "Refactorización. Mejora del código existente", "Código Perfecto", "Código Limpio" y "El Programador Pragmático". Por último, todo desarrollador debería tener una copia de"Algoritmos"a mano.

¡Practica!

No puedes hacer un huevo frito sin romper algunos huevos. Sitios como HackerRank, CodeWars, CoderByte, TopCoder y LeetCode ofrecen miles de interesantes problemas para poner a prueba tu conocimiento sobre estructuras de datos y algoritmos. Intenta resolver el problema que te atraiga, publícalo en Github y luego observa cómo se han aproximado otros a él. Lo que nos lleva al último punto:

Lee el código de otros

El mayor error que puedes cometer en el camino del desarrollo es hacer este camino en soledad. El desarrollo de software es, en gran medida, un trabajo en equipo. Juntos creamos estándares, cometemos errores y, a pesar de todos los fracasos, juntos nos volvemos mejores. El tiempo que dediques a leer el código de otros te recompensará con creces. Solo asegúrate de que sea buen código.

El mejor consejo que puedo darte es: nunca te sientas avergonzado por no saber algo todavía. Como ya se ha mencionado, nuestra industria es enorme y la cantidad de tecnologías es inmensa. Se necesita mucho tiempo y esfuerzo para construir una visión general, aún más para convertirse en un profesional en algo específico, y aún más para perfeccionar tu habilidad en tu campo. Te haré saber cuando yo mismo logre esto.

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster