¿Cuál es la diferencia entre patrones de diseño y algoritmos en la programación de computadoras?

Los algoritmos hacen cosas. Los patrones de diseño son cómo estructura los algoritmos, cómo los llama, qué algoritmos existen en qué clase, etc.

Analogías:

  • Negocios: Los algoritmos son el trabajo que hace un empleado; Los patrones de diseño son la estructura corporativa, las horas de trabajo, la cultura, el proceso de revisión, etc.
  • Fitness: los algoritmos son cómo levantar el peso; los patrones de diseño son la estructura del entrenamiento, la frecuencia con la que vas, etc.
  • Biología: los algoritmos son las funciones de los riñones, cómo late el corazón, cómo se acumula el oxígeno en los pulmones; Los patrones de diseño son cómo se organiza todo en el cuerpo vivo que funciona.
  • Edificio: Los algoritmos son cómo se sueldan los marcos de acero y el tipo de materiales utilizados. El patrón de diseño es el plan de los arquitectos sobre cómo funcionará la estructura en su conjunto.

Para mí siempre es interesante cómo las personas se centran más en los algoritmos. Hacen preguntas de quora al respecto, lo estudian ampliamente en la universidad. Menos personas buscan dominar los patrones de diseño, que es en lo que consiste el 90 por ciento del trabajo real.

Los desarrolladores a los que se les paga por lo que hacen no pasan su tiempo desarrollando o incluso utilizando la mayoría de los algoritmos que podrían haber aprendido en la universidad. Pasan la mayor parte de su tiempo preguntándose cómo diseñar el código. Y los mejores intentan reutilizar los patrones estándar de la industria cuando corresponde.

Un desarrollador joven podría conocer algunos algoritmos, como las mejores formas de buscar y ordenar matrices y recorrer conjuntos de datos. Pero luego toman estos trozos de código y lo introducen en una clase mal nombrada que es difícil de usar y funciona para un solo caso.

Un gran desarrollador sabe cómo tomar el algoritmo y todos los demás algoritmos y organizarlos en clases para que sean fáciles de entender, reutilizables y escalables.

Los patrones de diseño lo llevan de ser un codificador a un compañero de equipo efectivo que contribuye al proyecto de una manera que no solo hace lo que tiene que hacer, sino que no pierde el tiempo de los demás cuando también tienen que cambiar o adaptar el código para su propio uso .

Un algoritmo resuelve un problema. Como, calcular el enésimo dígito de PI.
Un patrón de diseño, permite al usuario hacer un uso productivo de ese algoritmo de diferentes maneras, usándolo con mayor frecuencia una y otra vez, o pasándolo dentro o fuera de problemas mayores.

Un patrón de diseño es una forma de organizar el código, un algoritmo es cómo escribir código para resolver un problema específico.