El secreto del código simple

¿Existe un atajo para convertirse en un desarrollador 10x? ¿Existe algún secreto mágico que, si solo lo supiera, desbloquearía un mundo completamente nuevo de dominio del desarrollo de software y productividad para usted?
Aquí es donde los que dudan piensan: “¡No hay atajos! ¡Todos necesitan practicar para ser buenos! ” Y eso es bastante cierto, pero ¿qué practican los expertos en productividad de software? ¿Hay algo clave que pueda marcar una gran diferencia?
¡Si! ¡Ahi esta!
Pero incluso si lo comparto con usted, incluso si lo entrego y lo deletreo en detalle para usted, podría llevarle 10 años crecer y apreciar completamente la simplicidad.

Al menos, eso es lo que me pasó. Mi maestro de programación de la escuela secundaria me lo explicó en inglés. Me guiaron paso a paso a través del proceso de aplicarlo usando algún código de ejemplo. Y realmente no se hundió hasta 10 años después. Pero ahora, con el beneficio de la experiencia, es una lección que aprecio profundamente, y aunque sé que es una lección que realmente no puedes apreciar a primera vista, la compartiré contigo.

Este secreto es una diferencia clave entre la productividad promedio y la productividad 10x. Usando el apalancamiento que proporciona este secreto, puede ser más eficiente en órdenes de magnitud.
Puede escribir código que sea más reutilizable y menos propenso a romperse cuando se introducen nuevos requisitos y las cosas cambian en el código circundante.
El secreto para ser 10 veces más productivo es obtener un dominio de la abstracción. Muchos desarrolladores tratan la “abstracción” como si fuera una mala palabra. Escuchará consejos (por lo demás buenos) como “no resumas demasiado pronto” o el famoso “explícito es mejor que implícito” de Zen of Python, lo que implica que lo concreto es mejor que lo abstracto. Y todo eso es un buen consejo, dependiendo del contexto.
Pero las aplicaciones modernas usan una gran cantidad de código. Si imprime el código fuente de las 10 mejores aplicaciones modernas, esas pilas de papel competirían con la altura de los rascacielos, y el software cuesta mucho dinero para mantener. Mientras más código crees, más cuesta.

La abstracción es la clave del código simple

Las abstracciones correctas pueden hacer que el código sea más legible, adaptable y mantenible al ocultar detalles que no son importantes para el contexto actual y al reducir la cantidad de código requerido para hacer el mismo trabajo, a menudo por órdenes de magnitud.
“La simplicidad se trata de
restar lo obvio
y agregar lo significativo”.
~ John Maeda: las leyes de la simplicidad
La abstracción no es una calle de un solo sentido. Realmente está formado por dos conceptos complementarios:
  • Generalización : eliminar las partes repetidas (lo obvio) y ocultarlas detrás de una abstracción.
  • Especialización : aplicar la abstracción para un caso de uso particular, agregando solo lo que debe ser diferente (lo significativo).
Considere el siguiente código:

No hay nada inherentemente incorrecto en el código, pero contiene muchos detalles que pueden no ser importantes para esta aplicación en particular.
  • Incluye detalles de la estructura de datos de contenedor / transporte que se está utilizando (la matriz), lo que significa que solo funcionará con matrices. Contiene una dependencia de forma de estado.
  • Incluye la lógica de iteración, lo que significa que si necesita otras operaciones que también necesiten visitar cada elemento en la estructura de datos, también deberá repetir una lógica de iteración muy similar en ese código. Fuerza la repetición que podría violar SECO (No te repitas).
  • Incluye una asignación explícita, en lugar de describir declarativamente la operación a realizar. Es detallado.
Nada de eso es necesario. Todo se puede ocultar detrás de una abstracción. En este caso, una abstracción que es tan universal, ha transformado la forma en que se construyen las aplicaciones modernas y ha reducido el número de bucles for explícitos que necesitamos escribir.
“Si tocas una cosa con profunda conciencia, tocas todo”.
Thich Nhat Hanh
Usando la operación de mapa, podemos reducir el código a una línea eliminando lo obvio (las partes que es probable que repitamos en un código similar) y enfocándonos en lo significativo (solo las cosas que deben ser diferentes para nuestro uso caso:


Los desarrolladores junior piensan que tienen que escribir mucho código para producir mucho valor.
Desarrolladores senior Comprenda el valor del código que nadie necesitaba escribir.
Imagine ser el codificador que popularizó el uso de la operación de mapas en lenguajes de programación como JavaScript. El mapa extrae detalles como el tipo de datos que está mapeando, el tipo de estructura de datos que contiene los datos y la lógica de iteración requerida para enumerar cada nodo de datos en la estructura de datos. Ha mejorado la eficiencia de cada aplicación que he creado en la última década.
Jeremy Ashkenas popularizó varias de estas operaciones en JavaScript, y allanó el camino para muchos de los excelentes atajos de sintaxis que damos por sentado ahora en JavaScript al ser pioneros en su uso en CoffeeScript. Hizo Underscore, que generó Lodash (todavía el cinturón de utilidades de programación funcional más popular en JavaScript), y Backbone, que popularizó la arquitectura MVC en JavaScript y preparó el escenario para Angular y React.
John Resig creó jQuery, que era tan popular e influyente, que formó la mayor colección de módulos JavaScript encapsulados reutilizables (complementos jQuery) hasta que aparecieron los módulos de nodo estándar y los módulos ES6 varios años después. La API de selección de jQuery fue tan influyente que forma la base de las API de selección DOM de hoy. Todavía me beneficio casi a diario de la API de selección de jQuery cuando pruebo los componentes React .
Las abstracciones correctas son palancas poderosas que pueden impactar dramáticamente la productividad. La abstracción no es una mala palabra. Módulos, funciones, variables, clases: todas estas son formas de abstracción y la razón por la que cualquiera de ellas existe es para facilitar la abstracción y la composición de las abstracciones .
No se puede construir software complejo sin abstracciones. Incluso el lenguaje ensamblador usa abstracciones: nombres para instrucciones, variables para direcciones de memoria, puntos de código para saltar a subrutinas (como llamadas a funciones), etc. El software moderno es un pastel de capas de abstracciones útiles, y esas capas le dan influencia.
“Dame una palanca el tiempo suficiente y un punto de apoyo sobre el cual colocarla, y moveré el mundo”.
~ Arquímedes
La clave de la simplicidad: el secreto que buscamos es cómo reducir la montaña de código que estamos produciendo, cómo hacer mucho más con mucho menos. Cuando domines eso, serás un programador 10x. Lo garantizo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Más info

aceptar