Desarrollador de software Meta Skills

Aprender de los libros sobre corrección y reconocimiento de patrones.



Un par de ideas sobre cómo construir bien el software.

Recientemente, un amigo preguntó sobre las habilidades específicas que tienen los desarrolladores de software.

¿Cuáles son las habilidades únicas que practican los profesionales del desarrollo?

Basado en mi experiencia, formé la siguiente opinión. La idea que me di cuenta con el tiempo es que me gusta la meta programación. Aprender meta-habilidades, o cómo hacer lo que hacemos mejor, implica leer muchos libros conocidos, teniendo en cuenta el contexto.
Tomé ejemplos concretos de lo que leí a lo largo de los años, los apliqué a mis propias observaciones en esta área y respondí de la manera más pragmática.

En mi opinión, si piensas universalmente, diría que esta es la práctica de la corrección y el reconocimiento de patrones * . Estas son algunas de las habilidades que son exclusivas de los desarrolladores de software.

Corrección


La corrección está muy relacionada con cómo y por qué hacemos las cosas de esta manera, y no de otra manera. En las empresas, esto está más estrechamente relacionado con la exactitud de la tarea que una empresa debe resolver para sus clientes. El software bien escrito se adhiere al mismo pensamiento.

La corrección se considera en desarrollo como cuán correcto es "cómo" para que una solución de negocios pueda continuar resolviendo tareas con un alto nivel de confiabilidad y eficiencia. Este proceso es un equilibrio entre estrategia (diseño) y táctica (ejecución).

Un estudio de lo que es este "cómo" en el vacío se representa mejor en la cuarta parte del primer capítulo de Perlas de programación: escribir programas correctos .

... mantener un código simple suele ser la clave para la corrección.
- John Bentley

Reconocimiento de patrones


El reconocimiento de patrones está fuertemente ligado a organizar esta corrección creando las abstracciones necesarias y los límites de los componentes.

El reconocimiento de patrones conduce al concepto de reutilización para modular y aislar el código. Hacemos un seguimiento de la duplicación, encontramos áreas que pueden reutilizarse y rediseñamos partes complejas del código. Esto es lo que los desarrolladores de software hacen bien. Seguimos los detalles con mucho cuidado. Reconocemos el conocimiento a medida que se crea una y otra vez. Y luego simplificamos.

El reconocimiento de patrones se discute en la comunidad y hay muchas fuentes donde puede leer acerca de los métodos de reconocimiento. Aprendí sobre esto en el segundo capítulo de The Pragmatic Programmer - The Evils Of Duplication ( The Pragmatic Programmer - The Evil of Duplication).

Que sea fácil de reutilizar. No repetir
- Andrew Hunt y Dave Thomas

Observación interesante


Tan pronto como di esta respuesta, mi amigo hizo una contrapregunta.

Si la corrección y el reconocimiento de patrones son estas habilidades, ¿cómo las aprende?

Por supuesto, mi respuesta fue bastante simple:

Encuentre estos libros, configure su entorno y trabaje con ejemplos. Establezca sus expectativas de aprendizaje y aplique estas meta-habilidades mientras proporciona valor a su negocio. Por qué Complejidad Esta es la mejor inversión en capacitación de dominio que conozco. También hace que los desarrolladores tengan más confianza con el tiempo.

Mi crecimiento se ha centrado en estos libros y en estas habilidades específicas. Pero me di cuenta de que hay varias habilidades que hacen una contribución significativa a las meta-habilidades, además de realizar directamente el trabajo. Me interesé en la terminología del meta. Mi trabajo en la descomposición de tareas (corrección) y organización (reconocimiento de patrones) no encontró aplicación en el momento de su publicación. Y casi al mismo tiempo, estaba pensando en escribir este artículo de meta-habilidades.

Un profesor de la Universidad de Stanford enseñó un curso de meta-habilidades y esto llevó a la redacción de un libro en el que incluía algunos de los resultados de su curso. Me sorprendió cuando descubrí que él tiene la misma actitud ante la pregunta que la mía. Por lo tanto, compré un libro y lo leí con entusiasmo. Capítulo trece, una filosofía del diseño del sistema .

Los desarrolladores suelen estar muy centrados en los detalles. Nos encantan los detalles y nos gusta administrar muchos de ellos; Esto es importante para ser un buen ingeniero especialista. Sin embargo, los buenos desarrolladores de software también pueden retroceder un poco de los detalles y pensar en el sistema a un nivel superior.
- John Ousterhout **

Conclusión


En mi opinión, la corrección y el reconocimiento de patrones son habilidades que los desarrolladores de software deben aprender y desarrollar por sí mismos. Como resultado, la calidad del software mejora. Todas las demás habilidades únicas pueden muy bien basarse en lo anterior. Invito a otros a compartir ejemplos de meta habilidades que han desarrollado con el tiempo.

En general, la corrección y el reconocimiento de los patrones están vinculados al resultado de la complejidad (también conocida como carga cognitiva). Debe haber una manera de equilibrar ambos factores de manera competente para reducir la complejidad. Por eso considero que estas habilidades son la esencia principal de todo lo que hacemos.



* Lo interesante es la corrección y el reconocimiento de patrones que están fuertemente relacionados por las prácticas en torno al aprendizaje automático.
** Si quieres saber más sobre lo que está haciendo John, mira su video .
*** Los ingenieros también deben practicar un alto nivel de capacitación y comunicación. Estos conceptos no son exclusivos del software, sino que están fuertemente asociados con las ciencias.

Artículo original

Source: https://habr.com/ru/post/es420923/


All Articles